From 752a2a5268a5caace5a65939cb62f89730af8e1f Mon Sep 17 00:00:00 2001 From: Jens Ahrensfeld Date: Fri, 17 Jun 2022 12:50:28 +0000 Subject: [PATCH] - use Processor::Buffer for AGC - switched to Farrow interpolator git-svn-id: http://moon:8086/svn/software/trunk/projects/mpsk_rx_gui@1030 b431acfa-c32f-4a4a-93f1-934dc6c82436 --- Source/Receiver.cpp | 27 +++++++++++---------------- Source/Receiver.hpp | 7 +++++-- 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/Source/Receiver.cpp b/Source/Receiver.cpp index 3aed778..b63b81e 100644 --- a/Source/Receiver.cpp +++ b/Source/Receiver.cpp @@ -103,7 +103,8 @@ void Receiver::setBufSize(uint32 size) } m_bufsize = size; init(); - m_bb_buffer.resize(size); + m_buffer_agc.resize(size); + m_buffer_bb.resize(size); } uint32 Receiver::getNumSoftSym() @@ -209,9 +210,12 @@ void Receiver::init() // Gardner Symbol Timing Recovery initSTR(); - // Interpolation - m_polyPhase.buffer_out_add(&m_bb_buffer); - m_farrow.buffer_out_add(&m_bb_buffer); + // Processor buffer wiring + m_polyPhase.buffer_in_add(&m_buffer_agc); + m_farrow.buffer_in_add(&m_buffer_agc); + + m_polyPhase.buffer_out_add(&m_buffer_bb); + m_farrow.buffer_out_add(&m_buffer_bb); // Symbol demapper initSymbolMapper(); @@ -463,20 +467,11 @@ void Receiver::processBaseband(CVec const &iq, uint32_t len) // Blind AGC gain adjustment // @2 x symbolrate - Processor::Buffer *next_buf_in = nullptr; - if (RCF_TYPE == RCF_TYPE_POLYPHASE_FARROW) - { - next_buf_in = dynamic_cast*>(m_farrow.buffer_in()); - } - if (RCF_TYPE == RCF_TYPE_POLYPHASE_DISCRETE) - { - next_buf_in = dynamic_cast*>(m_polyPhase.buffer_in()); - } for (n = 0; n < len; n++) { // AGC Blind gain adjustments ComplexScalar iq_agc = toComplexScalar(CpxScaleRealS(toCpx(iq[n]), AGC_GetWeight(&agcBlind))); - next_buf_in->write(&iq_agc, 1); + m_buffer_agc.write(&iq_agc, 1); } // Matched filtering and symbol timing recovery @@ -494,9 +489,9 @@ void Receiver::processBaseband(CVec const &iq, uint32_t len) // Further BB processing // @2 x symbolrate - while(m_bb_buffer.len()) + while(m_buffer_bb.len()) { - ComplexScalar iq_mf = m_bb_buffer.readAt(0); + ComplexScalar iq_mf = m_buffer_bb.readAt(0); // ----------------------------------------------------- // Carrier Derotator diff --git a/Source/Receiver.hpp b/Source/Receiver.hpp index 9850576..ef708bd 100644 --- a/Source/Receiver.hpp +++ b/Source/Receiver.hpp @@ -39,7 +39,7 @@ using namespace Radio; #define EQ_ENABLE 1 #define MODULATION_TYPE MAP_MODE_QAM -#define RCF_TYPE RCF_TYPE_POLYPHASE_DISCRETE +#define RCF_TYPE RCF_TYPE_POLYPHASE_FARROW #define MAX_NUMBITS_PERSYM 16 // --------------------------------------------------- enum eq_mode @@ -398,7 +398,10 @@ private: FrameReceiver m_frameReceiver; params_t m_params; - Processor::Buffer m_bb_buffer; + + // Processor Buffers + Processor::Buffer m_buffer_agc; + Processor::Buffer m_buffer_bb; void timerCallback(); void processBaseband(CVec const &iq, uint32_t len);