git-svn-id: http://moon:8086/svn/software/trunk/libsrc/cpp@887 b431acfa-c32f-4a4a-93f1-934dc6c82436
This commit is contained in:
2022-05-29 10:33:25 +00:00
parent 9686e79185
commit dcd4bfefc7
7 changed files with 672 additions and 0 deletions
+78
View File
@@ -0,0 +1,78 @@
// --------------------------------------------------------------
#ifndef _RADIO_FORMATTER_HPP_
#define _RADIO_FORMATTER_HPP_
#include <radio/radio_types.h>
#include <radio/cpx.h>
#include "FrameDefs.hpp"
#include "Scrambler.hpp"
class IFormatter
{
public:
IFormatter() {}
virtual ~IFormatter() {}
virtual void onFrame(void *pFrame, uint32_t size) = 0;
};
class Formatter
{
public:
Formatter(IFormatter *pFrameHandler);
~Formatter();
void idle();
void process(uint8_t data);
void process(void *pData, uint32_t len);
frame_statistics_t getStats();
void resetStats();
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 commit(frame_type frameType, uint32_t m_dataCount);
};
class IData
{
public:
IData() {}
virtual ~IData() {}
virtual void onData(data_t data) = 0;
virtual void onReset() = 0;
};
class IDeFormatter
{
public:
IDeFormatter() {}
virtual ~IDeFormatter() {}
virtual void onData(void *pData, uint32_t size) = 0;
};
class DeFormatter : public IData
{
public:
DeFormatter(IDeFormatter *pDataHandler);
~DeFormatter();
void process(uint8_t data);
frame_statistics_t getStats();
void resetStats();
private:
IDeFormatter *m_pDataHandler;
Scrambler m_scrambler;
uint32_t m_dataCount;
frame_t m_frame;
frame_statistics_t m_frameStats;
bool m_enable;
void onData(data_t data) override;
void onReset() override;
};
// --------------------------------------------------------------
#endif // _RADIO_FORMATTER_HPP_