- blockifized DeSymbolizer, DeFormatter, FrameReceiver

git-svn-id: http://moon:8086/svn/software/trunk/libsrc/cpp@1077 b431acfa-c32f-4a4a-93f1-934dc6c82436
This commit is contained in:
2022-06-24 15:13:44 +00:00
parent 1da7f978ae
commit 8b6d6313e5
5 changed files with 209 additions and 142 deletions
+30 -15
View File
@@ -5,20 +5,16 @@
#include "DeSymbolizer.hpp"
DeSymbolizer::DeSymbolizer(IData *pDataHandler)
: m_pDataHandler(pDataHandler)
, m_dataBitCount(0)
, m_lastSymbol(0)
, m_symbolMask(0)
, m_nBitsPerSym(0)
DeSymbolizer::DeSymbolizer()
: Processor::Block(1, 1)
, m_dataBitCount(0)
, m_lastSymbol(0)
, m_symbolMask(0)
, m_nBitsPerSym(0)
{
setNumBitsPerSymbol(8);
}
DeSymbolizer::~DeSymbolizer()
{
}
void DeSymbolizer::setNumBitsPerSymbol(uint32_t nBitsPerSym)
{
m_nBitsPerSym = nBitsPerSym;
@@ -41,8 +37,9 @@ void DeSymbolizer::process(uint32_t src)
uint32_t symSync;
src = differentialDecode(src);
symSync = src;
const uint8_t preamble_bytes[2] = {(uint8_t)FRAME_PREAMBLE_IV, (uint8_t)(~FRAME_PREAMBLE_IV)};
preamble_soll = ((uint16_t)FRAME_PREAMBLE_IV << 8) | (~(uint16_t)FRAME_PREAMBLE_IV & 0xFF);
preamble_soll = ((uint16_t)preamble_bytes[0] << 8) | ((uint16_t)preamble_bytes[1] & 0xFF);
j = 0;
for (i=0; i < m_nBitsPerSym; i++)
@@ -52,12 +49,12 @@ void DeSymbolizer::process(uint32_t src)
symSync <<= 1;
if (preamble == preamble_soll)
{
preamble = 0;
// We have data sync
// We have bit sync
m_dataBitCount = 0;
m_pDataHandler->onReset();
j = i + 1;
src = symSync;
preamble = 0;
m_buf_out->write(preamble_bytes, sizeof(preamble_bytes));
}
}
@@ -70,13 +67,31 @@ void DeSymbolizer::process(uint32_t src)
m_dataBitCount++;
if (m_dataBitCount == SIZEOF_DATA_BITS)
{
m_pDataHandler->onData(dst);
m_buf_out->write(&dst, 1);
m_dataBitCount = 0;
dst = 0;
}
}
}
void DeSymbolizer::prepare()
{
// Get buffers
m_buf_in = buffer_in<symbol_t>();
m_buf_out = buffer_out<uint8_t>();
}
void DeSymbolizer::process()
{
// Process input
while(m_buf_in->len())
{
symbol_t sym;
m_buf_in->read(&sym, 1);
process(sym);
}
}
uint32_t DeSymbolizer::differentialDecode(uint32_t symbol)
{
uint32_t res;