- 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:
@@ -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
@@ -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
@@ -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 ¶ms) = 0;
|
virtual void setParams(const params_t ¶ms) = 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 ¶ms) override;
|
void setParams(const params_t ¶ms) override;
|
||||||
params_t& getParams() override;
|
params_t& getParams() override;
|
||||||
status_t& getStatus() override;
|
status_t& getStatus() override;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -13,14 +13,14 @@ 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;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user