// -------------------------------------------------------------- #ifndef _RADIO_FORMATTER_HPP_ #define _RADIO_FORMATTER_HPP_ #include #include #include #include "FrameDefs.hpp" #include "Scrambler.hpp" class IFormatter { public: IFormatter() {} virtual ~IFormatter() {} virtual void onFrame(void *pFrame, uint32_t size) = 0; }; class Formatter : public Processor::Block { public: Formatter(IFormatter *pFrameHandler); virtual ~Formatter() = default; void process(void *pData, uint32_t len); frame_statistics_t getStats(); void resetStats(); void process(); private: Scrambler m_scrambler; IFormatter *m_pFrameHandler; frame_t m_frame; uint32_t m_dataCount; uint32_t m_idleCount; frame_statistics_t m_frameStats; void process_idle(uint32_t len); void process_data(uint8_t *pData, uint32_t len); void commit(frame_type frameType, uint32_t m_dataCount); }; // -------------------------------------------------------------- #endif // _RADIO_FORMATTER_HPP_