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