- 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/Vector.hpp>
|
||||||
#include <cpp/radio/FirComplex.hpp>
|
#include <cpp/radio/FirComplex.hpp>
|
||||||
#include <cpp/radio/processor/src/Buffer.hpp>
|
|
||||||
#include <cpp/radio/processor/src/Block.hpp>
|
#include <cpp/radio/processor/src/Block.hpp>
|
||||||
#include <cpp/radio/interpolation/TimingGenerator.hpp>
|
#include <cpp/radio/interpolation/TimingGenerator.hpp>
|
||||||
|
|
||||||
@@ -43,7 +42,6 @@ public:
|
|||||||
, m_coeff(N, M)
|
, m_coeff(N, M)
|
||||||
, m_b(M)
|
, m_b(M)
|
||||||
, m_h(M)
|
, m_h(M)
|
||||||
, m_buf_in(8*1024)
|
|
||||||
{
|
{
|
||||||
init(M, N);
|
init(M, N);
|
||||||
}
|
}
|
||||||
@@ -61,12 +59,12 @@ public:
|
|||||||
m_coeff.resize(N, M);
|
m_coeff.resize(N, M);
|
||||||
m_b.resize(M);
|
m_b.resize(M);
|
||||||
m_h.resize(M);
|
m_h.resize(M);
|
||||||
// m_buf_in.fill(ComplexScalar(0,0));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void process()
|
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());
|
auto buf_out = dynamic_cast<Processor::Buffer<ComplexScalar>*>(buffer_out());
|
||||||
|
|
||||||
// Process input
|
// Process input
|
||||||
@@ -75,14 +73,14 @@ public:
|
|||||||
size_t adv = m_timingGenerator.getAdv();
|
size_t adv = m_timingGenerator.getAdv();
|
||||||
radio_float_t mu = m_timingGenerator.getMu();
|
radio_float_t mu = m_timingGenerator.getMu();
|
||||||
|
|
||||||
if (m_buf_in.len() < adv)
|
if (m_buf_in->len() < adv)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (adv != 0)
|
if (adv != 0)
|
||||||
{
|
{
|
||||||
m_fir.feed(m_buf_in, adv);
|
m_fir.feed(*m_buf_in, adv);
|
||||||
|
|
||||||
// Partial filter responses
|
// Partial filter responses
|
||||||
for (int i=0; i < m_M; i++)
|
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:
|
private:
|
||||||
TimingGenerator &m_timingGenerator;
|
TimingGenerator &m_timingGenerator;
|
||||||
FirComplex m_fir;
|
FirComplex m_fir;
|
||||||
@@ -157,7 +150,6 @@ private:
|
|||||||
RMat m_coeff;
|
RMat m_coeff;
|
||||||
CVec m_b;
|
CVec m_b;
|
||||||
CVec m_h;
|
CVec m_h;
|
||||||
Processor::Buffer<ComplexScalar> m_buf_in;
|
|
||||||
|
|
||||||
ComplexScalar horner(RealScalar mu)
|
ComplexScalar horner(RealScalar mu)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -25,7 +25,6 @@ public:
|
|||||||
PolyPhase(TimingGenerator &timingGenerator)
|
PolyPhase(TimingGenerator &timingGenerator)
|
||||||
: Processor::Block(1, 1)
|
: Processor::Block(1, 1)
|
||||||
, m_timingGenerator(timingGenerator)
|
, m_timingGenerator(timingGenerator)
|
||||||
, m_buf_in(8*1024)
|
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -45,7 +44,6 @@ public:
|
|||||||
m_M = M;
|
m_M = M;
|
||||||
m_N = N;
|
m_N = N;
|
||||||
m_coeff.resize(N, M);
|
m_coeff.resize(N, M);
|
||||||
// m_buf_in.resize(N);
|
|
||||||
|
|
||||||
pCoeff = (fir_float_t*)malloc((N+1)*M*sizeof(fir_float_t));
|
pCoeff = (fir_float_t*)malloc((N+1)*M*sizeof(fir_float_t));
|
||||||
memset(pCoeff, 0, (N+1)*M*sizeof(fir_float_t));
|
memset(pCoeff, 0, (N+1)*M*sizeof(fir_float_t));
|
||||||
@@ -65,7 +63,8 @@ public:
|
|||||||
|
|
||||||
void process()
|
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());
|
auto buf_out = dynamic_cast<Processor::Buffer<ComplexScalar>*>(buffer_out());
|
||||||
|
|
||||||
// Process input
|
// Process input
|
||||||
@@ -74,14 +73,14 @@ public:
|
|||||||
size_t adv = m_timingGenerator.getAdv();
|
size_t adv = m_timingGenerator.getAdv();
|
||||||
radio_float_t mu = m_timingGenerator.getMu();
|
radio_float_t mu = m_timingGenerator.getMu();
|
||||||
|
|
||||||
if (m_buf_in.len() < adv)
|
if (m_buf_in->len() < adv)
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (adv != 0)
|
if (adv != 0)
|
||||||
{
|
{
|
||||||
m_fir.feed(m_buf_in, adv);
|
m_fir.feed(*m_buf_in, adv);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Polyphase filtering
|
// Polyphase filtering
|
||||||
@@ -94,14 +93,8 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Processor::IBuffer* buffer_in(size_t index=0) override
|
|
||||||
{
|
|
||||||
return &m_buf_in;
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
TimingGenerator &m_timingGenerator;
|
TimingGenerator &m_timingGenerator;
|
||||||
Processor::Buffer<ComplexScalar> m_buf_in;
|
|
||||||
FirComplex m_fir;
|
FirComplex m_fir;
|
||||||
uint32_t m_M;
|
uint32_t m_M;
|
||||||
uint32_t m_N;
|
uint32_t m_N;
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ class Block
|
|||||||
Block(size_t num_in, size_t num_out)
|
Block(size_t num_in, size_t num_out)
|
||||||
: m_num_in(num_in)
|
: m_num_in(num_in)
|
||||||
, m_num_out(num_out)
|
, m_num_out(num_out)
|
||||||
|
, m_buf_in(nullptr)
|
||||||
, m_buf_out(nullptr)
|
, m_buf_out(nullptr)
|
||||||
, m_isBypass(false)
|
, m_isBypass(false)
|
||||||
{
|
{
|
||||||
@@ -22,7 +23,12 @@ class Block
|
|||||||
virtual ~Block() = default;
|
virtual ~Block() = default;
|
||||||
|
|
||||||
virtual void process() = 0;
|
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)
|
IBuffer* buffer_out(size_t index=0)
|
||||||
{
|
{
|
||||||
return m_buf_out;
|
return m_buf_out;
|
||||||
@@ -38,14 +44,20 @@ class Block
|
|||||||
return m_num_out;
|
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:
|
protected:
|
||||||
size_t m_num_in;
|
size_t m_num_in;
|
||||||
size_t m_num_out;
|
size_t m_num_out;
|
||||||
|
IBuffer* m_buf_in;
|
||||||
IBuffer* m_buf_out;
|
IBuffer* m_buf_out;
|
||||||
bool m_isBypass;
|
bool m_isBypass;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user