AJA NTV2 SDK  17.5.0.1242
NTV2 SDK 17.5.0.1242
ntv2nubtypes.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: MIT */
8 #ifndef __NTV2NUBTYPES_H
9 #define __NTV2NUBTYPES_H
10 
11 #include "ntv2endian.h"
12 #include <vector>
13 
14 #define NTV2NUBPORT 7575 // Default port we listen on
15 
16 #if !defined(NTV2_DEPRECATE_16_3)
17  // In SDK 16.3 or later, client/server RPC implementations are plugins, each with their own protocols/versioning
19 #endif // !defined(NTV2_DEPRECATE_16_3)
20 
21 namespace ntv2nub
22 {
23  const bool kDisableByteSwap (true);
24  const bool kEnableByteSwapIfNeeded (false);
25 
26  inline void PUSHU8(const uint8_t inVal, std::vector<uint8_t> & inArr)
27  {
28  inArr.push_back(inVal);
29  }
30 
31  inline void PUSHU16(const uint16_t inVal, std::vector<uint8_t> & inArr, const bool dontSwap = false)
32  {
33  const uint16_t _u16 ((NTV2HostIsBigEndian || dontSwap) ? inVal : NTV2EndianSwap16HtoB(inVal));
34  const UByte * _pU16 (reinterpret_cast<const UByte*>(&_u16));
35  inArr.push_back(_pU16[0]); inArr.push_back(_pU16[1]);
36  }
37 
38  inline void PUSHU32(const uint32_t inVal, std::vector<uint8_t> & inArr, const bool dontSwap = false)
39  {
40  const uint32_t _u32 ((NTV2HostIsBigEndian || dontSwap) ? inVal : NTV2EndianSwap32HtoB(inVal));
41  const UByte * _pU32 (reinterpret_cast<const UByte*>(&_u32));
42  inArr.push_back(_pU32[0]); inArr.push_back(_pU32[1]);
43  inArr.push_back(_pU32[2]); inArr.push_back(_pU32[3]);
44  }
45 
46  inline void PUSHU64(const uint64_t inVal, std::vector<uint8_t> & inArr, const bool dontSwap = false)
47  {
48  const uint64_t _u64 ((NTV2HostIsBigEndian || dontSwap) ? inVal : NTV2EndianSwap64HtoB(inVal));
49  const UByte * _pU64 (reinterpret_cast<const UByte*>(&_u64));
50  inArr.push_back(_pU64[0]); inArr.push_back(_pU64[1]);
51  inArr.push_back(_pU64[2]); inArr.push_back(_pU64[3]);
52  inArr.push_back(_pU64[4]); inArr.push_back(_pU64[5]);
53  inArr.push_back(_pU64[6]); inArr.push_back(_pU64[7]);
54  }
55 
56  inline void POPU8 (uint8_t & outVal, const std::vector<uint8_t> & inArr, std::size_t & inOutNdx)
57  {
58  outVal = inArr.at(inOutNdx++);
59  }
60 
61  inline void POPU16 (uint16_t & outVal, const std::vector<uint8_t> & inArr, std::size_t & inOutNdx, const bool dontSwap = false)
62  {
63  uint16_t _u16(0);
64  UByte * _pU8(reinterpret_cast<UByte*>(&_u16));
65  _pU8[0] = inArr.at(inOutNdx++); _pU8[1] = inArr.at(inOutNdx++);
66  outVal = (NTV2HostIsBigEndian || dontSwap) ? _u16 : NTV2EndianSwap16BtoH(_u16);
67  }
68 
69  inline void POPU32 (uint32_t & outVal, const std::vector<uint8_t> & inArr, std::size_t & inOutNdx, const bool dontSwap = false)
70  {
71  uint32_t _u32(0);
72  UByte * _pU8(reinterpret_cast<UByte*>(&_u32));
73  _pU8[0] = inArr.at(inOutNdx++); _pU8[1] = inArr.at(inOutNdx++);
74  _pU8[2] = inArr.at(inOutNdx++); _pU8[3] = inArr.at(inOutNdx++);
75  outVal = (NTV2HostIsBigEndian || dontSwap) ? _u32 : NTV2EndianSwap32BtoH(_u32);
76  }
77 
78  inline void POPU64 (uint64_t & outVal, const std::vector<uint8_t> & inArr, std::size_t & inOutNdx, const bool dontSwap = false)
79  {
80  uint32_t _u64(0);
81  UByte * _pU8(reinterpret_cast<UByte*>(&_u64));
82  _pU8[0] = inArr.at(inOutNdx++); _pU8[1] = inArr.at(inOutNdx++);
83  _pU8[2] = inArr.at(inOutNdx++); _pU8[3] = inArr.at(inOutNdx++);
84  _pU8[4] = inArr.at(inOutNdx++); _pU8[5] = inArr.at(inOutNdx++);
85  _pU8[6] = inArr.at(inOutNdx++); _pU8[7] = inArr.at(inOutNdx++);
86  outVal = (NTV2HostIsBigEndian || dontSwap) ? _u64 : NTV2EndianSwap64BtoH(_u64);
87  }
88 
89 } // namespace ntv2nub
90 
91 #endif // __NTV2NUBTYPES_H
ntv2nub::POPU32
void POPU32(uint32_t &outVal, const std::vector< uint8_t > &inArr, std::size_t &inOutNdx, const bool dontSwap=false)
Definition: ntv2nubtypes.h:69
NTV2EndianSwap32HtoB
#define NTV2EndianSwap32HtoB(__val__)
Definition: ntv2endian.h:64
NTV2EndianSwap16BtoH
#define NTV2EndianSwap16BtoH(__val__)
Definition: ntv2endian.h:61
ntv2endian.h
Defines a number of handy byte-swapping macros.
ntv2nub::kDisableByteSwap
const bool kDisableByteSwap(true)
ntv2nub::PUSHU64
void PUSHU64(const uint64_t inVal, std::vector< uint8_t > &inArr, const bool dontSwap=false)
Definition: ntv2nubtypes.h:46
NTV2EndianSwap64BtoH
#define NTV2EndianSwap64BtoH(__val__)
Definition: ntv2endian.h:65
ntv2nub::POPU64
void POPU64(uint64_t &outVal, const std::vector< uint8_t > &inArr, std::size_t &inOutNdx, const bool dontSwap=false)
Definition: ntv2nubtypes.h:78
NTV2NubProtocolVersion
ULWord NTV2NubProtocolVersion
Definition: ntv2nubtypes.h:18
ULWord
uint32_t ULWord
Definition: ajatypes.h:255
ntv2nub
Definition: ntv2nubtypes.h:21
ntv2nub::POPU8
void POPU8(uint8_t &outVal, const std::vector< uint8_t > &inArr, std::size_t &inOutNdx)
Definition: ntv2nubtypes.h:56
ntv2nub::PUSHU32
void PUSHU32(const uint32_t inVal, std::vector< uint8_t > &inArr, const bool dontSwap=false)
Definition: ntv2nubtypes.h:38
UByte
uint8_t UByte
Definition: ajatypes.h:250
NTV2EndianSwap64HtoB
#define NTV2EndianSwap64HtoB(__val__)
Definition: ntv2endian.h:66
NTV2EndianSwap16HtoB
#define NTV2EndianSwap16HtoB(__val__)
Definition: ntv2endian.h:62
NTV2EndianSwap32BtoH
#define NTV2EndianSwap32BtoH(__val__)
Definition: ntv2endian.h:63
ntv2nub::kEnableByteSwapIfNeeded
const bool kEnableByteSwapIfNeeded(false)
ntv2nub::POPU16
void POPU16(uint16_t &outVal, const std::vector< uint8_t > &inArr, std::size_t &inOutNdx, const bool dontSwap=false)
Definition: ntv2nubtypes.h:61
NTV2HostIsBigEndian
#define NTV2HostIsBigEndian
Definition: ntv2endian.h:58
ntv2nub::PUSHU16
void PUSHU16(const uint16_t inVal, std::vector< uint8_t > &inArr, const bool dontSwap=false)
Definition: ntv2nubtypes.h:31
ntv2nub::PUSHU8
void PUSHU8(const uint8_t inVal, std::vector< uint8_t > &inArr)
Definition: ntv2nubtypes.h:26