30#ifndef DW_FRAMEWORK_CHANNEL_DRAINER_TEMPLATE_HPP_
31#define DW_FRAMEWORK_CHANNEL_DRAINER_TEMPLATE_HPP_
33#include <dw/sensors/Sensors.h>
34#include <dw/sensors/radar/Radar.h>
35#include <dw/sensors/canbus/CAN.h>
36#include <dw/core/base/Types.h>
53template <
typename OutputProcessedDataType,
typename InputProcessedDataType = OutputProcessedDataType>
64 return DW_NOT_AVAILABLE;
67 if (inputPort->
wait(inTimeout_us) == DW_SUCCESS)
87template <
typename OutputProcessedDataType,
typename ReadProcessedDataFunc,
typename InputProcessedDataType = OutputProcessedDataType>
93 static constexpr char LOG_TAG[] =
"dwChannelDrainerTemplate";
114 dwTime_t& latestTimestamp,
116 bool isDroppingData =
false)
override
122template <
typename OutputProcessedDataType,
typename ReadProcessedDataFunc,
typename InputProcessedDataType>
virtual dwStatus tryRead(ProcessedDataType *outFrame, dwTime_t &latestTimestamp, dwTime_t timeout, bool isDroppingData=false)
dwTime_t m_virtualSyncTime
dwStatus readProcessedData(OutputProcessedDataType *outFrame, dwTime_t &latestTimestamp, dwTime_t timeout, bool isDroppingData=false) override
virtual dwStatus reset() override
dwChannelDrainerTemplate(dwSensorDrainerParams params, std::unique_ptr< ReadProcessedDataFunc > readProcessedDataFunc, InputDataPort inputPort)
virtual ~dwChannelDrainerTemplate()=default
static constexpr char LOG_TAG[]
virtual dwStatus getNextDataTimestamp(dwTime_t &outTimestamp)=0
virtual dwStatus readNextData(dwTime_t inTimeout_us, InputDataPort inputPort)
std::shared_ptr< InputProcessedDataType > m_nextDataEvent
virtual dwStatus getNextData(OutputProcessedDataType *outDataFrame, InputDataPort)=0