From 3c090d204efae8e52b58a422f713bd14e6522598 Mon Sep 17 00:00:00 2001 From: Jens Ahrensfeld Date: Sun, 29 May 2022 13:11:21 +0000 Subject: [PATCH] - renamded git-svn-id: http://moon:8086/svn/software/trunk/projects/mpsk_rx_gui@890 b431acfa-c32f-4a4a-93f1-934dc6c82436 --- Source/{Receiver.h => Receiver.hpp} | 0 Source/{RxBuffer.hpp => ReceiverBuffer.hpp} | 8 +- Source/{Transmitter.h => Transmitter.hpp} | 134 +------------------- Source/TransmitterBuffer.hpp | 115 +++++++++++++++++ Source/TransmitterInterface.hpp | 26 ++++ 5 files changed, 152 insertions(+), 131 deletions(-) rename Source/{Receiver.h => Receiver.hpp} (100%) rename Source/{RxBuffer.hpp => ReceiverBuffer.hpp} (90%) rename Source/{Transmitter.h => Transmitter.hpp} (53%) create mode 100644 Source/TransmitterBuffer.hpp create mode 100644 Source/TransmitterInterface.hpp diff --git a/Source/Receiver.h b/Source/Receiver.hpp similarity index 100% rename from Source/Receiver.h rename to Source/Receiver.hpp diff --git a/Source/RxBuffer.hpp b/Source/ReceiverBuffer.hpp similarity index 90% rename from Source/RxBuffer.hpp rename to Source/ReceiverBuffer.hpp index e3e802a..e576eab 100644 --- a/Source/RxBuffer.hpp +++ b/Source/ReceiverBuffer.hpp @@ -1,12 +1,12 @@ /* - * File: RxBuffer.hpp + * File: ReceiverBuffer.hpp * Author: jens * * Created on 22. Dezember 2014, 15:47 */ -#ifndef RXBUFFER_HPP -#define RXBUFFER_HPP +#ifndef RECEIVERBUFFER_HPP +#define RECEIVERBUFFER_HPP #include @@ -88,5 +88,5 @@ private: }; -#endif /* RXBUFFER_HPP */ +#endif /* RECEIVERBUFFER_HPP */ diff --git a/Source/Transmitter.h b/Source/Transmitter.hpp similarity index 53% rename from Source/Transmitter.h rename to Source/Transmitter.hpp index 4203bf9..ff7db5c 100644 --- a/Source/Transmitter.h +++ b/Source/Transmitter.hpp @@ -1,5 +1,5 @@ -#ifndef _TRANSMITTER_H_ -#define _TRANSMITTER_H_ +#ifndef _TRANSMITTER_HPP_ +#define _TRANSMITTER_HPP_ #include #include @@ -13,135 +13,15 @@ #include #include +#include "TransmitterInterface.hpp" +#include "TransmitterBuffer.hpp" + using namespace Radio; #define TRANSMITTER_RCF_OVERSAMPLING ((uint32_t)32) #define TRANSMITTER_RCF_ROLLOFF ((radio_float_t)0.35) -class Transmitter; // --------------------------------------------------- -class TransmitterInterface -{ -public: - TransmitterInterface() {} - virtual ~TransmitterInterface() {} - - 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 setNumBitPerSymbol(uint32_t numBitPerSymbol) = 0; - virtual void getData(float *pRF, uint32_t len) = 0; - -}; - -class TxBuffer -{ -public: - TxBuffer(uint32_t size, uint32_t numBuffers) - : m_ppBuffer(0) - , m_capacityPerBuffer(0) - , m_numBuffers(0) - , m_pT(0) - { - resize(size, numBuffers); - } - - ~TxBuffer() - { - resize(0, 0); - } - - void write(RVec const &data, uint32_t len) - { - uint32_t i; - - m_pT = Thread::getCurrentThread(); - while (m_numfill.get() >= m_numBuffers) - { - m_pT->wait(100); - if (m_pT->threadShouldExit()) - return; - } - for (i=0; i < len; i++) - { - m_ppBuffer[m_w][i] = data[i]; - } - m_w++; - if (m_w >= m_numBuffers) - m_w = 0; - - m_numfill += 1; - } - - uint32_t read(float *pData) - { - uint32_t i; - - if (m_numfill.get() == 0) - return 0; - - for (i=0; i < m_capacityPerBuffer; i++) - { - pData[i] = m_ppBuffer[m_r][i]; - } - m_r++; - if (m_r >= m_numBuffers) - m_r = 0; - - m_numfill -= 1; - - if (m_pT) - m_pT->notify(); - - return i; - } - - void resize(uint32_t size, uint32_t numBuffers) - { - - uint32_t i; - if ((size != m_capacityPerBuffer) || (numBuffers != m_numBuffers)) - { - if (m_ppBuffer) - { - for (i=0; i < m_numBuffers; i++) - { - delete m_ppBuffer[i]; - } - delete m_ppBuffer; - m_ppBuffer = nullptr; - } - m_r = 0; - m_w = 0; - m_numfill = 0; - } - - m_numBuffers = numBuffers; - m_capacityPerBuffer = size; - - if (!size || !numBuffers) - return; - - m_ppBuffer = new float*[m_numBuffers]; - for (i=0; i < m_numBuffers; i++) - { - m_ppBuffer[i] = new float[m_capacityPerBuffer]; - } - } - -private: - Atomic m_numfill; - float **m_ppBuffer; - uint32_t m_capacityPerBuffer; - uint32_t m_numBuffers; - uint32_t m_r; - uint32_t m_w; - Thread *m_pT; -}; class Transmitter : public TransmitterInterface, public ISymbolizer, public juce::Thread { @@ -170,7 +50,7 @@ private: radio_float_t m_carrierFreq; Nco m_duc; - TxBuffer m_txBuf; + TransmitterBuffer m_txBuf; uint32_t m_symCount; uint32_t m_upsampleFactor; @@ -270,4 +150,4 @@ private: } }; -#endif // _TRANSMITTER_H_ +#endif // _TRANSMITTER_HPP_ diff --git a/Source/TransmitterBuffer.hpp b/Source/TransmitterBuffer.hpp new file mode 100644 index 0000000..83beb67 --- /dev/null +++ b/Source/TransmitterBuffer.hpp @@ -0,0 +1,115 @@ +#ifndef TRANSMITTERBUFFER_HPP +#define TRANSMITTERBUFFER_HPP + +#pragma once + +#include +#include +#include "JuceHeader.h" + +class TransmitterBuffer +{ +public: + TransmitterBuffer(uint32_t size, uint32_t numBuffers) + : m_ppBuffer(0) + , m_capacityPerBuffer(0) + , m_numBuffers(0) + , m_pT(0) + { + resize(size, numBuffers); + } + + ~TransmitterBuffer() + { + resize(0, 0); + } + + void write(Radio::RVec const &data, uint32_t len) + { + uint32_t i; + + m_pT = Thread::getCurrentThread(); + while (m_numfill.get() >= m_numBuffers) + { + m_pT->wait(100); + if (m_pT->threadShouldExit()) + return; + } + for (i=0; i < len; i++) + { + m_ppBuffer[m_w][i] = data[i]; + } + m_w++; + if (m_w >= m_numBuffers) + m_w = 0; + + m_numfill += 1; + } + + uint32_t read(float *pData) + { + uint32_t i; + + if (m_numfill.get() == 0) + return 0; + + for (i=0; i < m_capacityPerBuffer; i++) + { + pData[i] = m_ppBuffer[m_r][i]; + } + m_r++; + if (m_r >= m_numBuffers) + m_r = 0; + + m_numfill -= 1; + + if (m_pT) + m_pT->notify(); + + return i; + } + + void resize(uint32_t size, uint32_t numBuffers) + { + + uint32_t i; + if ((size != m_capacityPerBuffer) || (numBuffers != m_numBuffers)) + { + if (m_ppBuffer) + { + for (i=0; i < m_numBuffers; i++) + { + delete m_ppBuffer[i]; + } + delete m_ppBuffer; + m_ppBuffer = nullptr; + } + m_r = 0; + m_w = 0; + m_numfill = 0; + } + + m_numBuffers = numBuffers; + m_capacityPerBuffer = size; + + if (!size || !numBuffers) + return; + + m_ppBuffer = new float*[m_numBuffers]; + for (i=0; i < m_numBuffers; i++) + { + m_ppBuffer[i] = new float[m_capacityPerBuffer]; + } + } + +private: + Atomic m_numfill; + float **m_ppBuffer; + uint32_t m_capacityPerBuffer; + uint32_t m_numBuffers; + uint32_t m_r; + uint32_t m_w; + Thread *m_pT; +}; + +#endif \ No newline at end of file diff --git a/Source/TransmitterInterface.hpp b/Source/TransmitterInterface.hpp new file mode 100644 index 0000000..23dae1f --- /dev/null +++ b/Source/TransmitterInterface.hpp @@ -0,0 +1,26 @@ +#ifndef TRANSMITTERINTERFACE_HPP +#define TRANSMITTERINTERFACE_HPP + +#pragma once + +#include + +class TransmitterInterface +{ +public: + TransmitterInterface() {} + virtual ~TransmitterInterface() {} + + 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 setNumBitPerSymbol(uint32_t numBitPerSymbol) = 0; + virtual void getData(float *pRF, uint32_t len) = 0; + +}; + +#endif \ No newline at end of file