- switch to use radio_float_t

- RX/TX Buffers: fixed interfacing from radio_float_t  to float I/O

git-svn-id: http://moon:8086/svn/software/trunk/projects/mpsk_rx_gui@931 b431acfa-c32f-4a4a-93f1-934dc6c82436
This commit is contained in:
2022-06-02 08:29:09 +00:00
parent 4f4fc52c01
commit 2acd47103c
6 changed files with 65 additions and 61 deletions
+1 -3
View File
@@ -152,10 +152,8 @@ void MainComponent::audioDeviceIOCallback (const float** inputChannelData,
(void) numInputChannels; (void) numInputChannels;
(void) numOutputChannels; (void) numOutputChannels;
RMap rf((RealScalar*)inputChannelData[0], numSamples);
m_pTransmitterControl->getData(outputChannelData[0], numSamples); m_pTransmitterControl->getData(outputChannelData[0], numSamples);
// m_pReceiver->processPassband(rf, numSamples); m_rxBuf.write(inputChannelData[0], numSamples);
m_rxBuf.write(rf, numSamples);
} }
+5 -6
View File
@@ -1,5 +1,4 @@
#include <cmath> #include <cmath>
#include <float.h>
#include "Receiver.hpp" #include "Receiver.hpp"
#include "MinMaxLemire.h" #include "MinMaxLemire.h"
#include <cpp/radio/Frame.hpp> #include <cpp/radio/Frame.hpp>
@@ -365,7 +364,7 @@ void Receiver::processPassband(RVec const &rf, uint32_t len)
const ScopedLock sl (m_lock); const ScopedLock sl (m_lock);
uint32_t len_down; uint32_t len_down;
float test4normal; radio_float_t test4normal;
if (!m_ReceiverEnable) if (!m_ReceiverEnable)
{ {
@@ -401,7 +400,7 @@ void Receiver::processPassband(RVec const &rf, uint32_t len)
} }
void Receiver::processBaseband(float *pI, float *pQ, uint32_t len) void Receiver::processBaseband(radio_float_t *pI, radio_float_t *pQ, uint32_t len)
{ {
for (uint32_t i=0; i < len/2; i++) for (uint32_t i=0; i < len/2; i++)
{ {
@@ -630,10 +629,10 @@ void Receiver::processBaseband(CVec const &iq, uint32_t len)
// Lock-detector development // Lock-detector development
cpx_t winner_diff = Cpx(0,0); cpx_t winner_diff = Cpx(0,0);
float winner_d = 1000; radio_float_t winner_d = 1000;
int winner_i = 0; int winner_i = 0;
cpx_t diff; cpx_t diff;
float d; radio_float_t d;
for (int i=0; i < 4; i++) for (int i=0; i < 4; i++)
{ {
diff = CpxSubS(IQ_soft, m_trackers_[i]); diff = CpxSubS(IQ_soft, m_trackers_[i]);
@@ -779,7 +778,7 @@ void Receiver::initFilterArm()
} }
// Interface // Interface
void Receiver::setSamplerate(float samplerate_hz) void Receiver::setSamplerate(radio_float_t samplerate_hz)
{ {
const ScopedLock sl (m_lock); const ScopedLock sl (m_lock);
+37 -37
View File
@@ -106,18 +106,18 @@ enum str_state
typedef struct _minmax_t typedef struct _minmax_t
{ {
float min, max; radio_float_t min, max;
} minmax_t; } minmax_t;
typedef struct _cpx_minmax_t typedef struct _cpx_minmax_t
{ {
cpx_t min, max; cpx_t min, max;
float magMin, magMax; radio_float_t magMin, magMax;
float phiAtMinI; radio_float_t phiAtMinI;
float phiAtMaxI; radio_float_t phiAtMaxI;
float phiAtMinQ; radio_float_t phiAtMinQ;
float phiAtMaxQ; radio_float_t phiAtMaxQ;
} cpx_minmax_t; } cpx_minmax_t;
@@ -160,10 +160,10 @@ typedef struct _statistics_t
typedef struct _params_t typedef struct _params_t
{ {
uint32_t numBitsPerSymbol; uint32_t numBitsPerSymbol;
float symbolrate; radio_float_t symbolrate;
float samplerate; radio_float_t samplerate;
float ddc_freq; radio_float_t ddc_freq;
float CPR_phase; radio_float_t CPR_phase;
bool dfeAutoUpdateEnable; bool dfeAutoUpdateEnable;
bool strAutoControlEnable; bool strAutoControlEnable;
bool cprAutoControlEnable; bool cprAutoControlEnable;
@@ -180,9 +180,9 @@ typedef struct _params_t
lead_lag_coeff_t cpr_loopfilter_coeff[2]; lead_lag_coeff_t cpr_loopfilter_coeff[2];
uint32_t cpr_loopfilter_coeff_index; uint32_t cpr_loopfilter_coeff_index;
float eqMuCma; radio_float_t eqMuCma;
float eqMuDfe; radio_float_t eqMuDfe;
float agcMu[2]; radio_float_t agcMu[2];
uint32_t agcMu_index; uint32_t agcMu_index;
enum str_state strState; enum str_state strState;
@@ -196,31 +196,31 @@ typedef struct _status_t
uint32 numSymbolsReceived; uint32 numSymbolsReceived;
frame_statistics_t frameStatRx; frame_statistics_t frameStatRx;
float noiseStr; radio_float_t noiseStr;
float noiseCpr; radio_float_t noiseCpr;
float EB_N0; radio_float_t EB_N0;
float powerRF_dB; radio_float_t powerRF_dB;
float powerDDC_dB; radio_float_t powerDDC_dB;
float powerMF_dB; radio_float_t powerMF_dB;
float powerCPR_dB; radio_float_t powerCPR_dB;
float powerAGC_dB; radio_float_t powerAGC_dB;
float powerEQ_dB; radio_float_t powerEQ_dB;
float powerDecison_dB; radio_float_t powerDecison_dB;
float powerMagDecision_dB; radio_float_t powerMagDecision_dB;
float powerPhiDecision_dB; radio_float_t powerPhiDecision_dB;
float snrCurrent_dB; radio_float_t snrCurrent_dB;
float snrCma_dB; radio_float_t snrCma_dB;
float snrDfeOn_dB; radio_float_t snrDfeOn_dB;
float snrDfeOff_dB; radio_float_t snrDfeOff_dB;
float snrSymbolMagnitude_dB; radio_float_t snrSymbolMagnitude_dB;
float snrSymbolPhase_dB; radio_float_t snrSymbolPhase_dB;
float deltaFrequencyCPR; radio_float_t deltaFrequencyCPR;
float deltaFrequencySTR; radio_float_t deltaFrequencySTR;
float agcGain[2]; radio_float_t agcGain[2];
minmax_t rfMinMax; minmax_t rfMinMax;
cpx_minmax_t ddcMinMax; cpx_minmax_t ddcMinMax;
@@ -235,7 +235,7 @@ public:
ReceiverInterface() {} ReceiverInterface() {}
virtual ~ReceiverInterface() {} virtual ~ReceiverInterface() {}
virtual void setSamplerate(float samplerate_hz) = 0; virtual void setSamplerate(radio_float_t samplerate_hz) = 0;
virtual void setParams(const params_t &params) = 0; virtual void setParams(const params_t &params) = 0;
virtual const params_t& getParams() = 0; virtual const params_t& getParams() = 0;
@@ -278,7 +278,7 @@ public:
~Receiver(void); ~Receiver(void);
void init(); void init();
void free(); void free();
void processBaseband(float *pI, float *pQ, uint32_t len); void processBaseband(radio_float_t *pI, radio_float_t *pQ, uint32_t len);
void processPassband(RVec const &rf, uint32_t len); void processPassband(RVec const &rf, uint32_t len);
void setBufSize(uint32 size); void setBufSize(uint32 size);
uint32 getNumSoftSym(); uint32 getNumSoftSym();
@@ -399,7 +399,7 @@ private:
void initDDC(); void initDDC();
// Interface // Interface
void setSamplerate(float samplerate_hz) override; void setSamplerate(radio_float_t samplerate_hz) override;
void setParams(const params_t &params) override; void setParams(const params_t &params) override;
params_t& getParams() override; params_t& getParams() override;
status_t& getStatus() override; status_t& getStatus() override;
+7 -1
View File
@@ -28,8 +28,14 @@ public:
{ {
} }
void write(RVec const &data, uint32_t len) void write(float const *pData, uint32_t len)
{ {
RVec data(len);
for (int i=0; i < len; i++)
{
data[i] = pData[i];
}
if (m_numfill.get() >= numBuffers) if (m_numfill.get() >= numBuffers)
return; return;
+9 -8
View File
@@ -41,9 +41,9 @@ private:
RVec m_bufferRF; RVec m_bufferRF;
CVec m_bufferSym; CVec m_bufferSym;
CVec m_bufferSymRcf; CVec m_bufferSymRcf;
float m_samplerate; radio_float_t m_samplerate;
float m_ddcFrequency; radio_float_t m_ddcFrequency;
float m_symbolrate; radio_float_t m_symbolrate;
uint32_t m_numBitPerSymbol; uint32_t m_numBitPerSymbol;
radio_float_t *m_pCoeffRCF; radio_float_t *m_pCoeffRCF;
radio_float_t m_kRcf; radio_float_t m_kRcf;
@@ -95,31 +95,31 @@ private:
bufferResize(size); bufferResize(size);
paramChanged(); paramChanged();
} }
void setSamplerate(float samplerate_hz) override void setSamplerate(radio_float_t samplerate_hz) override
{ {
m_samplerate = samplerate_hz; m_samplerate = samplerate_hz;
m_carrierFreq = samplerate_hz/4; m_carrierFreq = samplerate_hz/4;
m_symbolrate = samplerate_hz/4; m_symbolrate = samplerate_hz/4;
paramChanged(); paramChanged();
} }
void setCarrierFrequency(float frequency_hz) override void setCarrierFrequency(radio_float_t frequency_hz) override
{ {
const ScopedLock sl (m_lock); const ScopedLock sl (m_lock);
m_carrierFreq = frequency_hz; m_carrierFreq = frequency_hz;
m_duc.init(m_carrierFreq/m_samplerate, 0); m_duc.init(m_carrierFreq/m_samplerate, 0);
} }
float getCarrierFrequency() override radio_float_t getCarrierFrequency() override
{ {
return m_carrierFreq; return m_carrierFreq;
} }
void setSymbolRate(float symbolrate_bit_per_sec) override void setSymbolRate(radio_float_t symbolrate_bit_per_sec) override
{ {
m_symbolrate = symbolrate_bit_per_sec; m_symbolrate = symbolrate_bit_per_sec;
paramChanged(); paramChanged();
} }
float getSymbolRate() override radio_float_t getSymbolRate() override
{ {
return m_symbolrate; return m_symbolrate;
} }
@@ -132,6 +132,7 @@ private:
paramChanged(); paramChanged();
} }
void getData(float *pRF, uint32_t len) override void getData(float *pRF, uint32_t len) override
{ {
uint32_t res; uint32_t res;
+5 -5
View File
@@ -13,11 +13,11 @@ public:
virtual void reset() = 0; virtual void reset() = 0;
virtual void setBuffersize(uint32_t size) = 0; virtual void setBuffersize(uint32_t size) = 0;
virtual void setSamplerate(float samplerate_hz) = 0; virtual void setSamplerate(radio_float_t samplerate_hz) = 0;
virtual void setCarrierFrequency(float frequency_hz) = 0; virtual void setCarrierFrequency(radio_float_t frequency_hz) = 0;
virtual float getCarrierFrequency() = 0; virtual radio_float_t getCarrierFrequency() = 0;
virtual void setSymbolRate(float symbolrate_bit_per_sec) = 0; virtual void setSymbolRate(radio_float_t symbolrate_bit_per_sec) = 0;
virtual float getSymbolRate() = 0; virtual radio_float_t getSymbolRate() = 0;
virtual void setNumBitPerSymbol(uint32_t numBitPerSymbol) = 0; virtual void setNumBitPerSymbol(uint32_t numBitPerSymbol) = 0;
virtual void getData(float *pRF, uint32_t len) = 0; virtual void getData(float *pRF, uint32_t len) = 0;