- 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
+30 -34
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;
static uint32_t dst;
symbol_t symbol_encoded = differentialEncode(sym);
m_buf_out->write(&symbol_encoded, 1);
}
// Speed up
if (m_nBitsPerSym == SIZEOF_DATA_BITS)
{
symbol_t symbol_encoded = differentialEncode((uint32_t)src);
m_buf_out->write(&symbol_encoded, 1);
return;
}
void Symbolizer::assemble_and_commit(uint8_t data)
{
static symbol_t sym;
// Transmission order MSB first
for (i=0; i < SIZEOF_DATA_BITS; i++)
for (size_t i=0; i < SIZEOF_DATA_BITS; i++)
{
dst <<= 1;
dst |= (uint32_t)((src >> (SIZEOF_DATA_BITS-1) & 1) != 0);
src <<= 1;
sym <<= 1;
sym |= (symbol_t)((data >> (SIZEOF_DATA_BITS-1) & 1) != 0);
data <<= 1;
m_symbolBitCount++;
if (m_symbolBitCount == m_nBitsPerSym)
{
symbol_t symbol_encoded = differentialEncode(dst);
m_buf_out->write(&symbol_encoded, 1);
commit(sym);
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()
{
// Get buffers
@@ -78,12 +62,24 @@ void Symbolizer::prepare()
void Symbolizer::process()
{
// Process input
while(m_buf_in->len())
if (m_nBitsPerSym == SIZEOF_DATA_BITS)
{
uint8_t data;
m_buf_in->read(&data, 1);
process(data);
// Process input
while(m_buf_in->len())
{
uint8_t data;
m_buf_in->read(&data, 1);
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:
Symbolizer();
virtual ~Symbolizer() = default;
void process(data_t src);
void process(void *pSrc, uint32_t len);
void setNumBitsPerSymbol(uint32_t nBitsPerSym);
// Processor::Block
@@ -28,6 +26,8 @@ private:
Processor::Buffer<uint8_t> *m_buf_in;
Processor::Buffer<symbol_t> *m_buf_out;
symbol_t differentialEncode(symbol_t symbol);
void commit(symbol_t src);
void assemble_and_commit(uint8_t src);
};
// --------------------------------------------------------------