- 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
This commit is contained in:
@@ -5,7 +5,6 @@
|
||||
|
||||
#include <cpp/radio/Vector.hpp>
|
||||
#include <cpp/radio/FirComplex.hpp>
|
||||
#include <cpp/radio/processor/src/Buffer.hpp>
|
||||
#include <cpp/radio/processor/src/Block.hpp>
|
||||
#include <cpp/radio/interpolation/TimingGenerator.hpp>
|
||||
|
||||
@@ -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<Processor::Buffer<ComplexScalar>*>(buffer_in());
|
||||
auto buf_out = dynamic_cast<Processor::Buffer<ComplexScalar>*>(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<ComplexScalar> m_buf_in;
|
||||
|
||||
ComplexScalar horner(RealScalar mu)
|
||||
{
|
||||
|
||||
@@ -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<Processor::Buffer<ComplexScalar>*>(buffer_in());
|
||||
auto buf_out = dynamic_cast<Processor::Buffer<ComplexScalar>*>(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<ComplexScalar> m_buf_in;
|
||||
FirComplex m_fir;
|
||||
uint32_t m_M;
|
||||
uint32_t m_N;
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user