31#ifndef DW_FRAMEWORK_CHANNEL_PACKET_TYPES_HPP_
32#define DW_FRAMEWORK_CHANNEL_PACKET_TYPES_HPP_
41#include <dw/core/language/Function.hpp>
52 virtual const char*
name()
const = 0;
58 const char*
name() const final
60 return typeid(T).
name();
85 m_typeInfo = &g_typeInfo;
96 if (m_typeInfo ==
nullptr && m_size ==
sizeof(T))
99 return static_cast<T*
>(m_data);
101 else if (m_size !=
sizeof(T))
109 return static_cast<T*
>(m_data);
134#define DW_CHANNEL_PACKET_TYPES_LIST(_s) \
135 _s(DW_IMAGE_HANDLE) \
137 _s(DW_PYRAMID_IMAGE) \
138 _s(DW_FEATURE_ARRAY) \
139 _s(DW_FEATURE_HISTORY_ARRAY) \
140 _s(DW_FEATURE_NCC_SCORES) \
141 _s(DW_SENSOR_NODE_RAW_DATA) \
143 _s(DW_LIDAR_DECODE_PACKET) \
144 _s(DW_EGOMOTION_STATE_HANDLE) \
146 _s(DW_LIDAR_PACKETS_ARRAY) \
147 _s(DW_TRACE_NODE_DATA) \
148 _s(DW_CODEC_PACKET) \
149 _s(DW_SENSOR_SERVICE_RAW_DATA)
158#define DW_CHANNEL_GENERATE_ENUM(x) x,
206template <ChannelPacketTypeID PacketTID>
224 result.typeSize =
sizeof(T);
225 if (specimen !=
nullptr)
227 auto heapCopy = std::make_shared<typename parameter_traits<T>::SpecimenT>(*specimen);
228 result.pCopy = heapCopy;
233 result.pCopy =
nullptr;
251#define DWFRAMEWORK_DECLARE_PACKET_TYPE_RELATION(DATA_TYPE, SPECIMEN_TYPE, PACKET_TYPE_ID) \
254 namespace framework \
257 struct parameter_traits<DATA_TYPE> \
259 using SpecimenT = SPECIMEN_TYPE; \
260 static constexpr ChannelPacketTypeID PacketTID = static_cast<ChannelPacketTypeID>(PACKET_TYPE_ID); \
261 static constexpr bool IsDeclared = true; \
264 struct packet_traits<static_cast<ChannelPacketTypeID>(PACKET_TYPE_ID)> \
266 using PacketT = DATA_TYPE; \
275#define DWFRAMEWORK_DECLARE_PACKET_TYPE_POD(DATA_TYPE) \
278 namespace framework \
281 struct parameter_traits<DATA_TYPE> \
283 using SpecimenT = DATA_TYPE; \
284 static constexpr ChannelPacketTypeID PacketTID = DWFRAMEWORK_PACKET_ID_DEFAULT; \
285 static constexpr bool IsDeclared = true; \
GenericData(void *data, size_t size)
void * getPointer() const
#define DWFRAMEWORK_DECLARE_PACKET_TYPE_POD(DATA_TYPE)
#define DW_CHANNEL_GENERATE_ENUM(x)
#define DW_CHANNEL_PACKET_TYPES_LIST(_s)
static GenericDataReference make_specimen(typename parameter_traits< T >::SpecimenT *specimen)
constexpr uint32_t DWFRAMEWORK_MAX_INTERNAL_TYPES
dw::core::Function< void(NvSciSyncAttrList)> OnSetSyncAttrs
OnSetSyncAttrs setSignalerAttributes
constexpr uint32_t DWFRAMEWORK_SYNCED_PACKET_TYPE_ID_OFFSET
ChannelPacketTypeID packetTypeID
uint32_t ChannelPacketTypeID
constexpr ChannelPacketTypeID DWFRAMEWORK_PACKET_ID_DEFAULT
std::shared_ptr< void > pCopy
OnSetSyncAttrs setWaiterAttributes
static constexpr bool IsDeclared
static constexpr ChannelPacketTypeID PacketTID