// -------------------------------------------------------------- #ifndef _RADIO_SYMBOLIZER_HPP_ #define _RADIO_SYMBOLIZER_HPP_ #include #include #include "Formatter.hpp" class ISymbolizer { public: ISymbolizer() {} virtual ~ISymbolizer() = default; virtual void onSymbol(symbol_t symbol) = 0; }; class Symbolizer : public IFormatter { public: Symbolizer(ISymbolizer *pSymbolHandler); virtual ~Symbolizer() = default; void process(data_t src); void process(void *pSrc, uint32_t len); void setNumBitsPerSymbol(uint32_t nBitsPerSym); private: uint32_t m_nBitsPerSym; ISymbolizer *m_pSymbolHandler; uint32_t m_symbolBitCount; symbol_t m_lastSymbol; symbol_t m_symbolMask; symbol_t differentialEncode(symbol_t symbol); void onFrame(void *pFrame, uint32_t size) override; }; // -------------------------------------------------------------- #endif // _RADIO_SYMBOLIZER_HPP_