31#ifndef DW_FRAMEWORK_SYNCPORTHELPER_HPP_
32#define DW_FRAMEWORK_SYNCPORTHELPER_HPP_
34#include <dw/core/container/HashContainer.hpp>
86 auto syncPacket = genericData.template getData<SyncedPacketPayload>();
90 throw Exception(DW_INTERNAL_ERROR,
"SyncPortHelperOutput extractInternalPacket: packet type mismatch");
93 auto packet = syncPacket->data.template getData<T>();
96 throw Exception(DW_INTERNAL_ERROR,
"SyncPortHelperOutput extractInternalPacket: failed to extract underlying data");
99 m_syncPacketBuf[packet] = syncPacket;
108 throw Exception(DW_INTERNAL_ERROR,
"SyncPortHelperOutput getSyncPacket: sync packet not found in packet buffer");
121 m_syncPacketBuf = HeapHashMap<T*, SyncedPacketPayload*>(params.
getPoolCapacity());
126 HeapHashMap<T*, SyncedPacketPayload*> m_syncPacketBuf;
138 , m_dataBuffered(false)
159 auto packet = m_bufferedPacket.template getData<SyncedPacketPayload>();
163 throw Exception(DW_INTERNAL_ERROR,
"SyncPortHelperInput isValidPacketBuffered: packet type mistmatch");
165 return validatePacket(*packet);
170 m_dataBuffered =
false;
171 return m_bufferedPacket;
176 auto syncPacket = genericData.template getData<SyncedPacketPayload>();
180 throw Exception(DW_INTERNAL_ERROR,
"SyncPortHelperInput extractInternalPacket: packet type mistmatch");
183 if (validatePacket(*syncPacket))
185 return syncPacket->data.template getData<T>();
189 m_bufferedPacket = genericData;
190 m_dataBuffered =
true;
217 if (validOffset >= 0)
225 GenericData m_bufferedPacket;
size_t getPoolCapacity() const
T * extractInternalPacket(GenericData genericData)
SyncedPacketPayload * getSyncPacket(T *frame)
void parseDataSynced(const ChannelParams ¶ms) override
uint32_t ChannelPacketTypeID
dw::core::Function< uint32_t(void)> CycleCountFetcher
dwStatus setSyncRetriever(const CycleCountFetcher &func)
ChannelPacketTypeID getNewPacketID(ChannelPacketTypeID packetTypeID)
CycleCountFetcher m_syncCountRetriever
void setSyncCount(uint32_t index)
virtual void parseDataSynced(const ChannelParams ¶ms)
void stampSyncCount(uint32_t &syncCountOut) const