From 9de592a8c906edcac8304ced3fdcf95281e87d52 Mon Sep 17 00:00:00 2001 From: Jens Ahrensfeld Date: Fri, 17 Jun 2022 11:23:46 +0000 Subject: [PATCH] - Processor::Blocks were assigned in/out buffers from outside git-svn-id: http://moon:8086/svn/software/trunk/libsrc/cpp@1024 b431acfa-c32f-4a4a-93f1-934dc6c82436 --- radio/interpolation/Farrow.hpp | 16 ++++------------ radio/interpolation/PolyPhase.hpp | 15 ++++----------- radio/processor/src/Block.hpp | 18 +++++++++++++++--- 3 files changed, 23 insertions(+), 26 deletions(-) diff --git a/radio/interpolation/Farrow.hpp b/radio/interpolation/Farrow.hpp index ab9abb6..6e141ad 100644 --- a/radio/interpolation/Farrow.hpp +++ b/radio/interpolation/Farrow.hpp @@ -5,7 +5,6 @@ #include #include -#include #include #include @@ -43,7 +42,6 @@ public: , m_coeff(N, M) , m_b(M) , m_h(M) - , m_buf_in(8*1024) { init(M, N); } @@ -61,12 +59,12 @@ public: m_coeff.resize(N, M); m_b.resize(M); m_h.resize(M); -// m_buf_in.fill(ComplexScalar(0,0)); } void process() { - // Get output buffer + // Get buffers + auto m_buf_in = dynamic_cast*>(buffer_in()); auto buf_out = dynamic_cast*>(buffer_out()); // Process input @@ -75,14 +73,14 @@ public: size_t adv = m_timingGenerator.getAdv(); radio_float_t mu = m_timingGenerator.getMu(); - if (m_buf_in.len() < adv) + if (m_buf_in->len() < adv) { break; } if (adv != 0) { - m_fir.feed(m_buf_in, adv); + m_fir.feed(*m_buf_in, adv); // Partial filter responses for (int i=0; i < m_M; i++) @@ -142,11 +140,6 @@ public: } - Processor::IBuffer* buffer_in(size_t index=0) override - { - return &m_buf_in; - } - private: TimingGenerator &m_timingGenerator; FirComplex m_fir; @@ -157,7 +150,6 @@ private: RMat m_coeff; CVec m_b; CVec m_h; - Processor::Buffer m_buf_in; ComplexScalar horner(RealScalar mu) { diff --git a/radio/interpolation/PolyPhase.hpp b/radio/interpolation/PolyPhase.hpp index 59d017c..66c0093 100644 --- a/radio/interpolation/PolyPhase.hpp +++ b/radio/interpolation/PolyPhase.hpp @@ -25,7 +25,6 @@ public: PolyPhase(TimingGenerator &timingGenerator) : Processor::Block(1, 1) , m_timingGenerator(timingGenerator) - , m_buf_in(8*1024) { } @@ -45,7 +44,6 @@ public: m_M = M; m_N = N; m_coeff.resize(N, M); -// m_buf_in.resize(N); pCoeff = (fir_float_t*)malloc((N+1)*M*sizeof(fir_float_t)); memset(pCoeff, 0, (N+1)*M*sizeof(fir_float_t)); @@ -65,7 +63,8 @@ public: void process() { - // Get output buffer + // Get buffers + auto m_buf_in = dynamic_cast*>(buffer_in()); auto buf_out = dynamic_cast*>(buffer_out()); // Process input @@ -74,14 +73,14 @@ public: size_t adv = m_timingGenerator.getAdv(); radio_float_t mu = m_timingGenerator.getMu(); - if (m_buf_in.len() < adv) + if (m_buf_in->len() < adv) { break; } if (adv != 0) { - m_fir.feed(m_buf_in, adv); + m_fir.feed(*m_buf_in, adv); } // Polyphase filtering @@ -94,14 +93,8 @@ public: } } - Processor::IBuffer* buffer_in(size_t index=0) override - { - return &m_buf_in; - } - private: TimingGenerator &m_timingGenerator; - Processor::Buffer m_buf_in; FirComplex m_fir; uint32_t m_M; uint32_t m_N; diff --git a/radio/processor/src/Block.hpp b/radio/processor/src/Block.hpp index ee648cc..b687c63 100644 --- a/radio/processor/src/Block.hpp +++ b/radio/processor/src/Block.hpp @@ -14,6 +14,7 @@ class Block Block(size_t num_in, size_t num_out) : m_num_in(num_in) , m_num_out(num_out) + , m_buf_in(nullptr) , m_buf_out(nullptr) , m_isBypass(false) { @@ -22,7 +23,12 @@ class Block virtual ~Block() = default; virtual void process() = 0; - virtual IBuffer* buffer_in(size_t index=0) = 0; + + IBuffer* buffer_in(size_t index=0) + { + return m_buf_in; + } + IBuffer* buffer_out(size_t index=0) { return m_buf_out; @@ -38,14 +44,20 @@ class Block return m_num_out; } - void buffer_out_add(IBuffer *out) + void buffer_in_add(IBuffer *buf) { - m_buf_out = out; + m_buf_in = buf; + } + + void buffer_out_add(IBuffer *buf) + { + m_buf_out = buf; } protected: size_t m_num_in; size_t m_num_out; + IBuffer* m_buf_in; IBuffer* m_buf_out; bool m_isBypass;