6 #ifndef IFM3D_DESERIALIZE_DESERIALIZE_H
7 #define IFM3D_DESERIALIZE_DESERIALIZE_H
11 #include <ifm3d/deserialize/struct_o3r_ods_extrinsic_calibration_correction_v1.hpp>
12 #include <ifm3d/deserialize/struct_o3r_ods_info_v1.hpp>
13 #include <ifm3d/deserialize/struct_o3r_ods_occupancy_grid_v1.hpp>
14 #include <ifm3d/deserialize/struct_o3r_ods_polar_occupancy_grid_v1.hpp>
15 #include <ifm3d/deserialize/struct_rgb_info_v1.hpp>
16 #include <ifm3d/deserialize/struct_tof_info_v3.hpp>
17 #include <ifm3d/deserialize/struct_tof_info_v4.hpp>
18 #include <ifm3d/fg/buffer.h>
19 #include <ifm3d/fg/organizer_utils.h>
24 using VariantType = std::variant<std::monostate,
30 ODSPolarOccupancyGridV1,
31 ODSExtrinsicCalibrationCorrectionV1>;
35 create_and_read(
const uint8_t* data,
size_t size)
60 case (ifm3d::buffer_id::O3R_ODS_INFO):
61 return create_and_read<ODSInfoV1>(data, size);
62 case (ifm3d::buffer_id::TOF_INFO): {
63 if (TOFInfoV4::IsValid(data, size))
65 return create_and_read<TOFInfoV4>(data, size);
68 if (TOFInfoV3::IsValid(data, size))
70 return create_and_read<TOFInfoV3>(data, size);
73 return std::monostate{};
75 case (ifm3d::buffer_id::RGB_INFO):
76 return create_and_read<RGBInfoV1>(data, size);
77 case (ifm3d::buffer_id::O3R_ODS_OCCUPANCY_GRID):
78 return create_and_read<ODSOccupancyGridV1>(data, size);
79 case (ifm3d::buffer_id::O3R_ODS_POLAR_OCC_GRID):
80 return create_and_read<ODSPolarOccupancyGridV1>(data, size);
81 case (ifm3d::buffer_id::O3R_ODS_EXTRINSIC_CALIBRATION_CORRECTION):
82 return create_and_read<ODSExtrinsicCalibrationCorrectionV1>(data,
85 return std::monostate{};
90 deserialize(
const Buffer& buffer)
92 return deserialize(buffer.Ptr<uint8_t>(0),
BufferId
BufferIds available for use with the default Organizer.
Definition: buffer_id.h:19