- refactored Symbolizer

- cleaned up

git-svn-id: http://moon:8086/svn/software/trunk/libsrc/cpp@1073 b431acfa-c32f-4a4a-93f1-934dc6c82436
This commit is contained in:
2022-06-24 09:32:39 +00:00
parent 4f07817800
commit 860921eaad
2 changed files with 32 additions and 36 deletions
+26 -30
View File
@@ -27,48 +27,32 @@ void Symbolizer::setNumBitsPerSymbol(uint32_t nBitsPerSym)
} }
} }
void Symbolizer::process(uint8_t src) void Symbolizer::commit(symbol_t sym)
{ {
uint32_t i; symbol_t symbol_encoded = differentialEncode(sym);
static uint32_t dst;
// Speed up
if (m_nBitsPerSym == SIZEOF_DATA_BITS)
{
symbol_t symbol_encoded = differentialEncode((uint32_t)src);
m_buf_out->write(&symbol_encoded, 1); m_buf_out->write(&symbol_encoded, 1);
return; }
}
void Symbolizer::assemble_and_commit(uint8_t data)
{
static symbol_t sym;
// Transmission order MSB first // Transmission order MSB first
for (i=0; i < SIZEOF_DATA_BITS; i++) for (size_t i=0; i < SIZEOF_DATA_BITS; i++)
{ {
dst <<= 1; sym <<= 1;
dst |= (uint32_t)((src >> (SIZEOF_DATA_BITS-1) & 1) != 0); sym |= (symbol_t)((data >> (SIZEOF_DATA_BITS-1) & 1) != 0);
src <<= 1; data <<= 1;
m_symbolBitCount++; m_symbolBitCount++;
if (m_symbolBitCount == m_nBitsPerSym) if (m_symbolBitCount == m_nBitsPerSym)
{ {
symbol_t symbol_encoded = differentialEncode(dst); commit(sym);
m_buf_out->write(&symbol_encoded, 1);
m_symbolBitCount = 0; m_symbolBitCount = 0;
dst = 0; sym = 0;
} }
} }
} }
void Symbolizer::process(void *pSrc, uint32_t len)
{
data_t *pData;
pData = (data_t*)pSrc;
while(len--)
{
process(*(pData++));
}
}
void Symbolizer::prepare() void Symbolizer::prepare()
{ {
// Get buffers // Get buffers
@@ -78,12 +62,24 @@ void Symbolizer::prepare()
void Symbolizer::process() void Symbolizer::process()
{ {
if (m_nBitsPerSym == SIZEOF_DATA_BITS)
{
// Process input // Process input
while(m_buf_in->len()) while(m_buf_in->len())
{ {
uint8_t data; uint8_t data;
m_buf_in->read(&data, 1); m_buf_in->read(&data, 1);
process(data); commit((symbol_t)data);
}
}
else
{
while(m_buf_in->len())
{
uint8_t data;
m_buf_in->read(&data, 1);
assemble_and_commit(data);
}
} }
} }
+2 -2
View File
@@ -12,8 +12,6 @@ class Symbolizer : public Processor::Block
public: public:
Symbolizer(); Symbolizer();
virtual ~Symbolizer() = default; virtual ~Symbolizer() = default;
void process(data_t src);
void process(void *pSrc, uint32_t len);
void setNumBitsPerSymbol(uint32_t nBitsPerSym); void setNumBitsPerSymbol(uint32_t nBitsPerSym);
// Processor::Block // Processor::Block
@@ -28,6 +26,8 @@ private:
Processor::Buffer<uint8_t> *m_buf_in; Processor::Buffer<uint8_t> *m_buf_in;
Processor::Buffer<symbol_t> *m_buf_out; Processor::Buffer<symbol_t> *m_buf_out;
symbol_t differentialEncode(symbol_t symbol); symbol_t differentialEncode(symbol_t symbol);
void commit(symbol_t src);
void assemble_and_commit(uint8_t src);
}; };
// -------------------------------------------------------------- // --------------------------------------------------------------