From 860921eaad3388edfec840e5c679730cce25dbbd Mon Sep 17 00:00:00 2001 From: Jens Ahrensfeld Date: Fri, 24 Jun 2022 09:32:39 +0000 Subject: [PATCH] - refactored Symbolizer - cleaned up git-svn-id: http://moon:8086/svn/software/trunk/libsrc/cpp@1073 b431acfa-c32f-4a4a-93f1-934dc6c82436 --- radio/Symbolizer.cpp | 64 +++++++++++++++++++++----------------------- radio/Symbolizer.hpp | 4 +-- 2 files changed, 32 insertions(+), 36 deletions(-) diff --git a/radio/Symbolizer.cpp b/radio/Symbolizer.cpp index 68e51f1..3a9d5da 100644 --- a/radio/Symbolizer.cpp +++ b/radio/Symbolizer.cpp @@ -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); + } } } diff --git a/radio/Symbolizer.hpp b/radio/Symbolizer.hpp index cc3faf2..a934b7f 100644 --- a/radio/Symbolizer.hpp +++ b/radio/Symbolizer.hpp @@ -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 *m_buf_in; Processor::Buffer *m_buf_out; symbol_t differentialEncode(symbol_t symbol); + void commit(symbol_t src); + void assemble_and_commit(uint8_t src); }; // --------------------------------------------------------------