- refactored Symbolizer -> DeSymbolizer, Symbolizer - Formatter is a Processor::Block - changed retrieval for Processor::Buffer - added Exception.hpp git-svn-id: http://moon:8086/svn/software/trunk/libsrc/cpp@1066 b431acfa-c32f-4a4a-93f1-934dc6c82436
132 lines
2.4 KiB
C++
132 lines
2.4 KiB
C++
// --------------------------------------------------------------
|
|
#ifndef _RADIO_FRAME_HPP_
|
|
#define _RADIO_FRAME_HPP_
|
|
|
|
#include <cstdint>
|
|
#include <radio/radio_types.h>
|
|
#include <radio/cpx.h>
|
|
#include "FrameDefs.hpp"
|
|
#include "Symbolizer.hpp"
|
|
#include "Formatter.hpp"
|
|
#include "DeSymbolizer.hpp"
|
|
#include "DeFormatter.hpp"
|
|
|
|
class FrameReceiver
|
|
{
|
|
public:
|
|
FrameReceiver(IDeFormatter *pRawFrameHandler)
|
|
: m_deformatter(pRawFrameHandler)
|
|
, m_desymbolizer( &m_deformatter)
|
|
, m_framesCount(0)
|
|
, m_byteCount(0)
|
|
{
|
|
}
|
|
|
|
~FrameReceiver()
|
|
{
|
|
}
|
|
|
|
frame_statistics_t getStats()
|
|
{
|
|
return m_deformatter.getStats();
|
|
}
|
|
|
|
void resetStats()
|
|
{
|
|
m_deformatter.resetStats();
|
|
}
|
|
|
|
void setNumBitsPerSymbol(uint32_t nBitsPerSym)
|
|
{
|
|
m_desymbolizer.setNumBitsPerSymbol(nBitsPerSym);
|
|
m_deformatter.resetStats();
|
|
}
|
|
|
|
void process(symbol_t symbol)
|
|
{
|
|
m_desymbolizer.process(symbol);
|
|
}
|
|
|
|
private:
|
|
DeFormatter m_deformatter;
|
|
DeSymbolizer m_desymbolizer;
|
|
uint32_t m_framesCount;
|
|
uint32_t m_byteCount;
|
|
};
|
|
|
|
class UnitFrameTransmitter
|
|
{
|
|
public:
|
|
UnitFrameTransmitter(uint32_t nBitsPerSym, ISymbolizer *pReceiver)
|
|
: m_symbolizer(pReceiver)
|
|
, m_formatter(&m_symbolizer)
|
|
{
|
|
m_symbolizer.setNumBitsPerSymbol(nBitsPerSym);
|
|
}
|
|
~UnitFrameTransmitter()
|
|
{
|
|
}
|
|
|
|
void process()
|
|
{
|
|
{
|
|
uint8_t data[12];
|
|
for (uint32_t i=0; i < sizeof(data); i++)
|
|
{
|
|
data[i] = i;
|
|
}
|
|
m_formatter.process(data, sizeof(data));
|
|
}
|
|
|
|
m_formatter.process(nullptr, 100);
|
|
{
|
|
uint8_t data[100];
|
|
for (uint32_t i=0; i < sizeof(data); i++)
|
|
{
|
|
data[i] = i;
|
|
}
|
|
m_formatter.process(data, sizeof(data));
|
|
}
|
|
m_formatter.process(nullptr, 1);
|
|
}
|
|
|
|
private:
|
|
Symbolizer m_symbolizer;
|
|
Formatter m_formatter;
|
|
};
|
|
|
|
class UnitFrameReceiver : public ISymbolizer, public IDeFormatter
|
|
{
|
|
public:
|
|
UnitFrameReceiver(uint32_t nBitsPerSym)
|
|
: m_deformatter(this)
|
|
, m_desymbolizer(&m_deformatter)
|
|
{
|
|
m_desymbolizer.setNumBitsPerSymbol(nBitsPerSym);
|
|
}
|
|
|
|
~UnitFrameReceiver()
|
|
{
|
|
}
|
|
|
|
private:
|
|
DeFormatter m_deformatter;
|
|
DeSymbolizer m_desymbolizer;
|
|
|
|
void onSymbol(symbol_t symbol) override
|
|
{
|
|
m_desymbolizer.process(symbol);
|
|
}
|
|
|
|
void onData(void *pData, uint32_t size) override
|
|
{
|
|
// Received raw data
|
|
(void)pData;
|
|
(void)size;
|
|
}
|
|
|
|
};
|
|
|
|
// --------------------------------------------------------------
|
|
#endif // _RADIO_FRAME_HPP_
|