31#ifndef DW_FRAMEWORK_SYNCPORTHELPER_HPP_
32#define DW_FRAMEWORK_SYNCPORTHELPER_HPP_
34#include <dw/core/container/HashContainer.hpp>
84 auto syncPacket = genericData.template getData<SyncedPacketPayload>();
88 throw Exception(DW_INTERNAL_ERROR,
"SyncPortHelperOutput extractInternalPacket: packet type mismatch");
91 auto packet = syncPacket->data.template getData<T>();
94 throw Exception(DW_INTERNAL_ERROR,
"SyncPortHelperOutput extractInternalPacket: failed to extract underlying data");
97 m_syncPacketBuf[packet] = syncPacket;
106 throw Exception(DW_INTERNAL_ERROR,
"SyncPortHelperOutput getSyncPacket: sync packet not found in packet buffer");
119 m_syncPacketBuf = HeapHashMap<T*, SyncedPacketPayload*>(params.
getPoolCapacity());
124 HeapHashMap<T*, SyncedPacketPayload*> m_syncPacketBuf;
134 , m_dataBuffered(false)
155 auto packet = m_bufferedPacket.template getData<SyncedPacketPayload>();
159 throw Exception(DW_INTERNAL_ERROR,
"SyncPortHelperInput isValidPacketBuffered: packet type mistmatch");
161 return validatePacket(*packet);
166 m_dataBuffered =
false;
167 return m_bufferedPacket;
172 auto syncPacket = genericData.template getData<SyncedPacketPayload>();
176 throw Exception(DW_INTERNAL_ERROR,
"SyncPortHelperInput extractInternalPacket: packet type mistmatch");
179 if (validatePacket(*syncPacket))
181 return syncPacket->data.template getData<T>();
185 m_bufferedPacket = genericData;
186 m_dataBuffered =
true;
213 if (validOffset >= 0)
221 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