diff --git a/Source/Transmitter.cpp b/Source/Transmitter.cpp index a0b2d7d..2ff9798 100644 --- a/Source/Transmitter.cpp +++ b/Source/Transmitter.cpp @@ -1,5 +1,5 @@ #include "Transmitter.hpp" - +#include Transmitter::Transmitter(void) : Thread("Transmitter") @@ -116,11 +116,38 @@ void Transmitter::paramChanged() m_firUp.init(m_upsampleFactor, m_pCoeffRCF, n_mf); m_duc.init(m_carrierFreq/m_samplerate, 0); - symbol_t sync_syms[4]; // 4 Corners - sync_syms[0] = SymMapDemap(&m_symbolMapper, toCpx(ComplexScalar(+1,+1))); - sync_syms[1] = SymMapDemap(&m_symbolMapper, toCpx(ComplexScalar(-1,+1))); - sync_syms[2] = SymMapDemap(&m_symbolMapper, toCpx(ComplexScalar(-1,-1))); - sync_syms[3] = SymMapDemap(&m_symbolMapper, toCpx(ComplexScalar(+1,-1))); + /****************************************************************/ + /* Setup AGC sync + /****************************************************************/ + const size_t NUM_SYNC_SYMS = 5; + symbol_t sync_syms[NUM_SYNC_SYMS]; // 4 Corners + size_t i=0; + sync_syms[i++] = SymMapDemap(&m_symbolMapper, toCpx(ComplexScalar(+1,-1))); + sync_syms[i++] = SymMapDemap(&m_symbolMapper, toCpx(ComplexScalar(+1,+1))); + sync_syms[i++] = SymMapDemap(&m_symbolMapper, toCpx(ComplexScalar(-1,+1))); + sync_syms[i++] = SymMapDemap(&m_symbolMapper, toCpx(ComplexScalar(-1,-1))); + sync_syms[i++] = SymMapDemap(&m_symbolMapper, toCpx(ComplexScalar(+1,-1))); + + for (i=0; i < NUM_SYNC_SYMS; i++) + { + sync_syms[i] = m_symbolizer.differentialEncode(sync_syms[i]); + } + + DeSymbolizer desym; + sync_t sync; + + memset(sync.data, 0, sizeof(sync.data)); + + desym.setNumBitsPerSymbol(m_numBitPerSymbol); + size_t total = 0; + for (size_t i=0; i < NUM_SYNC_SYMS; i++) + { + size_t written = desym.sym2bytes(sync_syms[i], &sync.data[total]); + total += written; + } + + m_formatter.setSyncData(sync); + /****************************************************************/ } void Transmitter::bufferResize(uint32_t size)