- refactored Formatter -> DeFormatter, Formatter

- refactored Symbolizer -> DeSymbolizer, Symbolizer
- Formatter is a Processor::Block
- changed retrieval for Processor::Buffer
- added Exception.hpp

git-svn-id: http://moon:8086/svn/software/trunk/libsrc/cpp@1066 b431acfa-c32f-4a4a-93f1-934dc6c82436
This commit is contained in:
2022-06-24 07:23:01 +00:00
parent 193e6432a4
commit de69d3e845
12 changed files with 317 additions and 251 deletions
-87
View File
@@ -14,10 +14,6 @@ Symbolizer::Symbolizer(ISymbolizer *pSymbolHandler)
setNumBitsPerSymbol(8);
}
Symbolizer::~Symbolizer()
{
}
void Symbolizer::setNumBitsPerSymbol(uint32_t nBitsPerSym)
{
m_symbolBitCount = 0;
@@ -90,87 +86,4 @@ void Symbolizer::onFrame(void *pFrame, uint32_t size)
}
}
DeSymbolizer::DeSymbolizer(IData *pDataHandler)
: m_pDataHandler(pDataHandler)
, 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;
m_symbolMask = 0;
for(uint32_t k=0; k < nBitsPerSym; k++)
{
m_symbolMask <<= 1;
m_symbolMask |= 1;
}
m_dataBitCount = 0;
m_lastSymbol = 0;
}
void DeSymbolizer::process(uint32_t src)
{
uint32_t i, j;
static uint8_t dst;
static uint16_t preamble;
uint16_t preamble_soll;
uint32_t symSync;
src = differentialDecode(src);
symSync = src;
preamble_soll = ((uint16_t)FRAME_PREAMBLE_IV << 8) | (~(uint16_t)FRAME_PREAMBLE_IV & 0xFF);
j = 0;
for (i=0; i < m_nBitsPerSym; i++)
{
preamble <<= 1;
preamble |= (uint32_t)((symSync >> (m_nBitsPerSym-1) & 1) != 0);
symSync <<= 1;
if (preamble == preamble_soll)
{
preamble = 0;
// We have data sync
m_dataBitCount = 0;
m_pDataHandler->onReset();
j = i + 1;
src = symSync;
}
}
// Transmission order MSB first
for (i=j; i < m_nBitsPerSym; i++)
{
dst <<= 1;
dst |= (uint32_t)((src >> (m_nBitsPerSym-1) & 1) != 0);
src <<= 1;
m_dataBitCount++;
if (m_dataBitCount == SIZEOF_DATA_BITS)
{
m_pDataHandler->onData(dst);
m_dataBitCount = 0;
dst = 0;
}
}
}
uint32_t DeSymbolizer::differentialDecode(uint32_t symbol)
{
uint32_t res;
// Differential decode
res = (uint32_t)(m_symbolMask & (symbol - m_lastSymbol));
m_lastSymbol = symbol;
return res;
}
// --------------------------------------------------------------