From 2acd47103c51f2b881e06777223f62f148b08e6f Mon Sep 17 00:00:00 2001 From: Jens Ahrensfeld Date: Thu, 2 Jun 2022 08:29:09 +0000 Subject: [PATCH] - 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 --- Source/MainComponent.cpp | 4 +- Source/Receiver.cpp | 11 +++-- Source/Receiver.hpp | 74 ++++++++++++++++----------------- Source/ReceiverBuffer.hpp | 8 +++- Source/Transmitter.hpp | 17 ++++---- Source/TransmitterInterface.hpp | 12 +++--- 6 files changed, 65 insertions(+), 61 deletions(-) diff --git a/Source/MainComponent.cpp b/Source/MainComponent.cpp index ef96196..6fde0ec 100644 --- a/Source/MainComponent.cpp +++ b/Source/MainComponent.cpp @@ -152,10 +152,8 @@ void MainComponent::audioDeviceIOCallback (const float** inputChannelData, (void) numInputChannels; (void) numOutputChannels; - RMap rf((RealScalar*)inputChannelData[0], numSamples); m_pTransmitterControl->getData(outputChannelData[0], numSamples); -// m_pReceiver->processPassband(rf, numSamples); - m_rxBuf.write(rf, numSamples); + m_rxBuf.write(inputChannelData[0], numSamples); } diff --git a/Source/Receiver.cpp b/Source/Receiver.cpp index af1a2eb..cb51b37 100644 --- a/Source/Receiver.cpp +++ b/Source/Receiver.cpp @@ -1,5 +1,4 @@ #include -#include #include "Receiver.hpp" #include "MinMaxLemire.h" #include @@ -365,7 +364,7 @@ void Receiver::processPassband(RVec const &rf, uint32_t len) const ScopedLock sl (m_lock); uint32_t len_down; - float test4normal; + radio_float_t test4normal; 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++) { @@ -630,10 +629,10 @@ void Receiver::processBaseband(CVec const &iq, uint32_t len) // Lock-detector development cpx_t winner_diff = Cpx(0,0); - float winner_d = 1000; + radio_float_t winner_d = 1000; int winner_i = 0; cpx_t diff; - float d; + radio_float_t d; for (int i=0; i < 4; i++) { diff = CpxSubS(IQ_soft, m_trackers_[i]); @@ -779,7 +778,7 @@ void Receiver::initFilterArm() } // Interface -void Receiver::setSamplerate(float samplerate_hz) +void Receiver::setSamplerate(radio_float_t samplerate_hz) { const ScopedLock sl (m_lock); diff --git a/Source/Receiver.hpp b/Source/Receiver.hpp index fefa2f5..4f7941e 100644 --- a/Source/Receiver.hpp +++ b/Source/Receiver.hpp @@ -106,18 +106,18 @@ enum str_state typedef struct _minmax_t { - float min, max; + radio_float_t min, max; } minmax_t; typedef struct _cpx_minmax_t { cpx_t min, max; - float magMin, magMax; - float phiAtMinI; - float phiAtMaxI; - float phiAtMinQ; - float phiAtMaxQ; + radio_float_t magMin, magMax; + radio_float_t phiAtMinI; + radio_float_t phiAtMaxI; + radio_float_t phiAtMinQ; + radio_float_t phiAtMaxQ; } cpx_minmax_t; @@ -160,10 +160,10 @@ typedef struct _statistics_t typedef struct _params_t { uint32_t numBitsPerSymbol; - float symbolrate; - float samplerate; - float ddc_freq; - float CPR_phase; + radio_float_t symbolrate; + radio_float_t samplerate; + radio_float_t ddc_freq; + radio_float_t CPR_phase; bool dfeAutoUpdateEnable; bool strAutoControlEnable; bool cprAutoControlEnable; @@ -180,9 +180,9 @@ typedef struct _params_t lead_lag_coeff_t cpr_loopfilter_coeff[2]; uint32_t cpr_loopfilter_coeff_index; - float eqMuCma; - float eqMuDfe; - float agcMu[2]; + radio_float_t eqMuCma; + radio_float_t eqMuDfe; + radio_float_t agcMu[2]; uint32_t agcMu_index; enum str_state strState; @@ -196,31 +196,31 @@ typedef struct _status_t uint32 numSymbolsReceived; frame_statistics_t frameStatRx; - float noiseStr; - float noiseCpr; + radio_float_t noiseStr; + radio_float_t noiseCpr; - float EB_N0; - float powerRF_dB; - float powerDDC_dB; - float powerMF_dB; - float powerCPR_dB; - float powerAGC_dB; - float powerEQ_dB; - float powerDecison_dB; - float powerMagDecision_dB; - float powerPhiDecision_dB; + radio_float_t EB_N0; + radio_float_t powerRF_dB; + radio_float_t powerDDC_dB; + radio_float_t powerMF_dB; + radio_float_t powerCPR_dB; + radio_float_t powerAGC_dB; + radio_float_t powerEQ_dB; + radio_float_t powerDecison_dB; + radio_float_t powerMagDecision_dB; + radio_float_t powerPhiDecision_dB; - float snrCurrent_dB; - float snrCma_dB; - float snrDfeOn_dB; - float snrDfeOff_dB; - float snrSymbolMagnitude_dB; - float snrSymbolPhase_dB; + radio_float_t snrCurrent_dB; + radio_float_t snrCma_dB; + radio_float_t snrDfeOn_dB; + radio_float_t snrDfeOff_dB; + radio_float_t snrSymbolMagnitude_dB; + radio_float_t snrSymbolPhase_dB; - float deltaFrequencyCPR; - float deltaFrequencySTR; + radio_float_t deltaFrequencyCPR; + radio_float_t deltaFrequencySTR; - float agcGain[2]; + radio_float_t agcGain[2]; minmax_t rfMinMax; cpx_minmax_t ddcMinMax; @@ -235,7 +235,7 @@ public: 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 const params_t& getParams() = 0; @@ -278,7 +278,7 @@ public: ~Receiver(void); void init(); 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 setBufSize(uint32 size); uint32 getNumSoftSym(); @@ -399,7 +399,7 @@ private: void initDDC(); // Interface - void setSamplerate(float samplerate_hz) override; + void setSamplerate(radio_float_t samplerate_hz) override; void setParams(const params_t ¶ms) override; params_t& getParams() override; status_t& getStatus() override; diff --git a/Source/ReceiverBuffer.hpp b/Source/ReceiverBuffer.hpp index e576eab..958dc40 100644 --- a/Source/ReceiverBuffer.hpp +++ b/Source/ReceiverBuffer.hpp @@ -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) return; diff --git a/Source/Transmitter.hpp b/Source/Transmitter.hpp index 86d2a48..8e28e7f 100644 --- a/Source/Transmitter.hpp +++ b/Source/Transmitter.hpp @@ -41,9 +41,9 @@ private: RVec m_bufferRF; CVec m_bufferSym; CVec m_bufferSymRcf; - float m_samplerate; - float m_ddcFrequency; - float m_symbolrate; + radio_float_t m_samplerate; + radio_float_t m_ddcFrequency; + radio_float_t m_symbolrate; uint32_t m_numBitPerSymbol; radio_float_t *m_pCoeffRCF; radio_float_t m_kRcf; @@ -95,31 +95,31 @@ private: bufferResize(size); paramChanged(); } - void setSamplerate(float samplerate_hz) override + void setSamplerate(radio_float_t samplerate_hz) override { m_samplerate = samplerate_hz; m_carrierFreq = samplerate_hz/4; m_symbolrate = samplerate_hz/4; paramChanged(); } - void setCarrierFrequency(float frequency_hz) override + void setCarrierFrequency(radio_float_t frequency_hz) override { const ScopedLock sl (m_lock); m_carrierFreq = frequency_hz; m_duc.init(m_carrierFreq/m_samplerate, 0); } - float getCarrierFrequency() override + radio_float_t getCarrierFrequency() override { 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; paramChanged(); } - float getSymbolRate() override + radio_float_t getSymbolRate() override { return m_symbolrate; } @@ -132,6 +132,7 @@ private: paramChanged(); } + void getData(float *pRF, uint32_t len) override { uint32_t res; diff --git a/Source/TransmitterInterface.hpp b/Source/TransmitterInterface.hpp index 23dae1f..2993df8 100644 --- a/Source/TransmitterInterface.hpp +++ b/Source/TransmitterInterface.hpp @@ -13,14 +13,14 @@ public: virtual void reset() = 0; virtual void setBuffersize(uint32_t size) = 0; - virtual void setSamplerate(float samplerate_hz) = 0; - virtual void setCarrierFrequency(float frequency_hz) = 0; - virtual float getCarrierFrequency() = 0; - virtual void setSymbolRate(float symbolrate_bit_per_sec) = 0; - virtual float getSymbolRate() = 0; + virtual void setSamplerate(radio_float_t samplerate_hz) = 0; + virtual void setCarrierFrequency(radio_float_t frequency_hz) = 0; + virtual radio_float_t getCarrierFrequency() = 0; + virtual void setSymbolRate(radio_float_t symbolrate_bit_per_sec) = 0; + virtual radio_float_t getSymbolRate() = 0; virtual void setNumBitPerSymbol(uint32_t numBitPerSymbol) = 0; virtual void getData(float *pRF, uint32_t len) = 0; }; -#endif \ No newline at end of file +#endif