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