- Symbolizer is Processor::Block

- removed ISymbolizer

git-svn-id: http://moon:8086/svn/software/trunk/libsrc/cpp@1069 b431acfa-c32f-4a4a-93f1-934dc6c82436
This commit is contained in:
2022-06-24 08:52:56 +00:00
parent 5bab8d67b3
commit e029a0c985
2 changed files with 35 additions and 30 deletions
+27 -18
View File
@@ -5,11 +5,11 @@
#include "Symbolizer.hpp" #include "Symbolizer.hpp"
Symbolizer::Symbolizer(ISymbolizer *pSymbolHandler) Symbolizer::Symbolizer()
: m_pSymbolHandler(pSymbolHandler) : Processor::Block(1, 1)
, m_symbolBitCount(0) , m_symbolBitCount(0)
, m_lastSymbol(0) , m_lastSymbol(0)
, m_symbolMask(0) , m_symbolMask(0)
{ {
setNumBitsPerSymbol(8); setNumBitsPerSymbol(8);
} }
@@ -35,7 +35,8 @@ void Symbolizer::process(uint8_t src)
// Speed up // Speed up
if (m_nBitsPerSym == SIZEOF_DATA_BITS) if (m_nBitsPerSym == SIZEOF_DATA_BITS)
{ {
m_pSymbolHandler->onSymbol(differentialEncode((uint32_t)src)); symbol_t symbol_encoded = differentialEncode((uint32_t)src);
m_buf_out->write(&symbol_encoded, 1);
return; return;
} }
@@ -48,7 +49,8 @@ void Symbolizer::process(uint8_t src)
m_symbolBitCount++; m_symbolBitCount++;
if (m_symbolBitCount == m_nBitsPerSym) if (m_symbolBitCount == m_nBitsPerSym)
{ {
m_pSymbolHandler->onSymbol(differentialEncode(dst)); symbol_t symbol_encoded = differentialEncode(dst);
m_buf_out->write(&symbol_encoded, 1);
m_symbolBitCount = 0; m_symbolBitCount = 0;
dst = 0; dst = 0;
} }
@@ -67,6 +69,24 @@ void Symbolizer::process(void *pSrc, uint32_t len)
} }
} }
void Symbolizer::prepare()
{
// Get buffers
m_buf_in = buffer_in<uint8_t>();
m_buf_out = buffer_out<symbol_t>();
}
void Symbolizer::process()
{
// Process input
while(m_buf_in->len())
{
uint8_t data;
m_buf_in->read(&data, 1);
process(data);
}
}
uint32_t Symbolizer::differentialEncode(uint32_t symbol) uint32_t Symbolizer::differentialEncode(uint32_t symbol)
{ {
// Differential encode // Differential encode
@@ -75,15 +95,4 @@ uint32_t Symbolizer::differentialEncode(uint32_t symbol)
return m_lastSymbol; return m_lastSymbol;
} }
void Symbolizer::onFrame(void *pFrame, uint32_t size)
{
data_t *pData = (data_t*)pFrame;
while(size)
{
process(*(pData++));
size -= sizeof(data_t);
}
}
// -------------------------------------------------------------- // --------------------------------------------------------------
+8 -12
View File
@@ -7,31 +7,27 @@
#include "Formatter.hpp" #include "Formatter.hpp"
class ISymbolizer class Symbolizer : public Processor::Block
{ {
public: public:
ISymbolizer() {} Symbolizer();
virtual ~ISymbolizer() = default;
virtual void onSymbol(symbol_t symbol) = 0;
};
class Symbolizer : public IFormatter
{
public:
Symbolizer(ISymbolizer *pSymbolHandler);
virtual ~Symbolizer() = default; virtual ~Symbolizer() = default;
void process(data_t src); void process(data_t src);
void process(void *pSrc, uint32_t len); void process(void *pSrc, uint32_t len);
void setNumBitsPerSymbol(uint32_t nBitsPerSym); void setNumBitsPerSymbol(uint32_t nBitsPerSym);
// Processor::Block
void prepare() override;
void process();
private: private:
uint32_t m_nBitsPerSym; uint32_t m_nBitsPerSym;
ISymbolizer *m_pSymbolHandler;
uint32_t m_symbolBitCount; uint32_t m_symbolBitCount;
symbol_t m_lastSymbol; symbol_t m_lastSymbol;
symbol_t m_symbolMask; symbol_t m_symbolMask;
Processor::Buffer<uint8_t> *m_buf_in;
Processor::Buffer<symbol_t> *m_buf_out;
symbol_t differentialEncode(symbol_t symbol); symbol_t differentialEncode(symbol_t symbol);
void onFrame(void *pFrame, uint32_t size) override;
}; };
// -------------------------------------------------------------- // --------------------------------------------------------------