From 115dd772216dc43c8b43912050f4e428ecf81a5d Mon Sep 17 00:00:00 2001 From: Jens Ahrensfeld Date: Wed, 15 Jun 2022 06:10:40 +0000 Subject: [PATCH] - fractional interpolation working git-svn-id: http://moon:8086/svn/software/trunk/libsrc/cpp@973 b431acfa-c32f-4a4a-93f1-934dc6c82436 --- radio/interpolation/Farrow.hpp | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/radio/interpolation/Farrow.hpp b/radio/interpolation/Farrow.hpp index b1922ae..e4e12ee 100644 --- a/radio/interpolation/Farrow.hpp +++ b/radio/interpolation/Farrow.hpp @@ -73,20 +73,29 @@ public: bool process_new(RealScalar dmu) { +#if 0 + while(m_bufferIn.len()) + { + ComplexScalar xout; + m_bufferIn.consume(1); + m_bufferIn.read(&xout, 1, false); + m_bufferOut.write(&xout, 1); + std::cout << "xout: " << xout << std::endl; + }; + std::cout << "----- SKIP -----" << std::endl; + +#else while(true) { - radio_float_t mu = m_interpolator.getMu(); size_t adv = m_interpolator.getAdv(); - if (m_bufferIn.len() < adv) - { - std::cout << "----- SKIP -----" << std::endl; - break; - } + radio_float_t mu = m_interpolator.getMu(); if (adv) { - ComplexScalar xout; - m_bufferIn.consume(adv); - m_bufferIn.read(&xout, 1, false); + if (m_bufferIn.len() < adv) + { + break; + } + ComplexScalar xout = m_bufferIn.readAt(adv-1); FirComplex::feed(xout); // Partial filter responses @@ -95,13 +104,15 @@ public: m_h[i] = FirComplex::processReal(column(m_coeff, i)); } } - m_interpolator.process(dmu); // Combine ComplexScalar yout = horner(mu); m_bufferOut.write(&yout, 1); + m_interpolator.process(dmu); + } +#endif return true; }