diff --git a/radio/FirComplex.hpp b/radio/FirComplex.hpp index cd42076..ac48148 100644 --- a/radio/FirComplex.hpp +++ b/radio/FirComplex.hpp @@ -9,6 +9,7 @@ #define _RADIO_FIRCOMPLEX_HPP_ #include +#include namespace Radio { @@ -33,11 +34,31 @@ public: m_state = ComplexScalar(0,0); } + // Feed single scalar void feed(ComplexScalar const &x) { insert_left(m_state, x); } + // Feed from array + void feed(ComplexScalar const *x, size_t len) + { + for (size_t i=0; i < len; i++) + { + feed(*(x++)); + } + } + + // Feed from Processor::Buffer + void feed(Processor::Buffer &buf_in, size_t len) + { + for (size_t i=0; i < len; i++) + { + ComplexScalar x = buf_in.readAt(0); + feed(x); + } + } + ComplexScalar process(CVec const &coeff) { return trans(m_state) * conj(coeff);