LibMultiSense
LibMultiSense Documentation
SysDeviceModesMessage.hh
Go to the documentation of this file.
1 
37 #ifndef LibMultiSense_SysDeviceModesMessage
38 #define LibMultiSense_SysDeviceModesMessage
39 
40 #include "utility/Portability.hh"
41 
42 namespace crl {
43 namespace multisense {
44 namespace details {
45 namespace wire {
46 
47 class DeviceMode {
48 public:
49  uint32_t width;
50  uint32_t height;
52  uint32_t disparities;
54 
55  DeviceMode(uint32_t w=0,
56  uint32_t h=0,
57  uint64_t s=0,
58  uint32_t d=0) :
59  width(w),
60  height(h),
61  disparities(d)
62  {
63  supportedDataSources = (uint32_t) (s & 0xFFFFFFFFull);
64  extendedDataSources = (uint32_t) ((s & 0xFFFFFFFF00000000ull) >> 32);
65  };
66 
67 };
68 
70 public:
73 
74  //
75  // Available formats
76 
77  std::vector<DeviceMode> modes;
78 
79  //
80  // Constructors
81 
83  VersionType v) {serialize(r,v);};
85 
86  //
87  // Serialization routine
88 
89  template<class Archive>
90  void serialize(Archive& message,
91  const VersionType version)
92  {
93  uint32_t length = static_cast<uint32_t> (modes.size());
94  message & length;
95  modes.resize(length);
96 
97  //
98  // Serialize by hand here to maintain backwards compatibility with
99  // pre-v2.3 firmware.
100 
101  for(uint32_t i=0; i<length; i++) {
102 
103  DeviceMode& m = modes[i];
104 
105  message & m.width;
106  message & m.height;
107  message & m.supportedDataSources;
108  message & m.disparities; // was 'flags' in pre v2.3
109  }
110 
111  for(uint32_t i=0; i<length; i++) {
112  DeviceMode& m = modes[i];
113  if (version >= 3)
114  {
115  message & m.extendedDataSources;
116  }
117  else
118  {
119  m.extendedDataSources = 0;
120  }
121  }
122  }
123 };
124 
125 }}}} // namespaces
126 
127 #endif
crl::multisense::details::wire::DeviceMode::DeviceMode
DeviceMode(uint32_t w=0, uint32_t h=0, uint64_t s=0, uint32_t d=0)
Definition: SysDeviceModesMessage.hh:55
crl::multisense::details::wire::ID_DATA_SYS_DEVICE_MODES
static CRL_CONSTEXPR IdType ID_DATA_SYS_DEVICE_MODES
Definition: Protocol.hh:219
crl::multisense::details::wire::SysDeviceModes
Definition: SysDeviceModesMessage.hh:69
crl::multisense::details::wire::SysDeviceModes::SysDeviceModes
SysDeviceModes(utility::BufferStreamReader &r, VersionType v)
Definition: SysDeviceModesMessage.hh:82
crl::multisense::details::wire::SysDeviceModes::modes
std::vector< DeviceMode > modes
Definition: SysDeviceModesMessage.hh:77
Portability.hh
CRL_CONSTEXPR
#define CRL_CONSTEXPR
Definition: Portability.hh:49
crl::multisense::details::wire::DeviceMode::width
uint32_t width
Definition: SysDeviceModesMessage.hh:49
crl::multisense::details::wire::DeviceMode::height
uint32_t height
Definition: SysDeviceModesMessage.hh:50
crl
Definition: BufferStream.hh:51
crl::multisense::details::wire::SysDeviceModes::ID
static CRL_CONSTEXPR IdType ID
Definition: SysDeviceModesMessage.hh:71
crl::multisense::details::wire::SysDeviceModes::serialize
void serialize(Archive &message, const VersionType version)
Definition: SysDeviceModesMessage.hh:90
crl::multisense::details::wire::VersionType
uint16_t VersionType
Definition: Protocol.hh:137
crl::multisense::details::wire::DeviceMode::disparities
uint32_t disparities
Definition: SysDeviceModesMessage.hh:52
crl::multisense::details::wire::DeviceMode::supportedDataSources
uint32_t supportedDataSources
Definition: SysDeviceModesMessage.hh:51
crl::multisense::details::wire::DeviceMode::extendedDataSources
uint32_t extendedDataSources
Definition: SysDeviceModesMessage.hh:53
crl::multisense::details::wire::SysDeviceModes::VERSION
static CRL_CONSTEXPR VersionType VERSION
Definition: SysDeviceModesMessage.hh:72
crl::multisense::details::utility::BufferStreamReader
Definition: BufferStream.hh:192
multisense
Definition: MultiSenseChannel.hh:44
crl::multisense::details::wire::DeviceMode
Definition: SysDeviceModesMessage.hh:47
crl::multisense::details::wire::IdType
uint16_t IdType
Definition: Protocol.hh:136
crl::multisense::details::wire::SysDeviceModes::SysDeviceModes
SysDeviceModes()
Definition: SysDeviceModesMessage.hh:84