- 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:
+27
-18
@@ -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
@@ -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;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// --------------------------------------------------------------
|
// --------------------------------------------------------------
|
||||||
|
|||||||
Reference in New Issue
Block a user