- moved methods from HPP to CPP git-svn-id: http://moon:8086/svn/software/trunk/projects/mpsk_rx_gui@1072 b431acfa-c32f-4a4a-93f1-934dc6c82436
86 lines
2.2 KiB
C++
86 lines
2.2 KiB
C++
#ifndef _TRANSMITTER_HPP_
|
|
#define _TRANSMITTER_HPP_
|
|
|
|
#include <cstdint>
|
|
#include <radio/symbol.h>
|
|
#include <radio/interpolation.h>
|
|
#include <cpp/radio/Frame.hpp>
|
|
|
|
#include "JuceHeader.h"
|
|
#include "LogComponent.h"
|
|
|
|
#include <cpp/radio/Vector.hpp>
|
|
#include <cpp/radio/Nco.hpp>
|
|
#include <cpp/radio/interpolation/UpSampler.hpp>
|
|
|
|
#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 : public TransmitterInterface, public juce::Thread
|
|
{
|
|
const size_t BUFFERSIZE_DATA = 256;
|
|
const size_t BUFFERSIZE_SYMBOL = 8*256;
|
|
|
|
public:
|
|
Transmitter(void);
|
|
~Transmitter(void);
|
|
|
|
void bufferResize(uint32_t size);
|
|
|
|
private:
|
|
CriticalSection m_lock;
|
|
Formatter m_formatter;
|
|
Symbolizer m_symbolizer;
|
|
sym_map_t m_symbolMapper;
|
|
Interpolation::UpSampler m_firUp;
|
|
uint32_t m_bufferSize;
|
|
RVec m_bufferRF;
|
|
CVec m_bufferSym;
|
|
CVec m_bufferSymRcf;
|
|
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;
|
|
radio_float_t m_carrierFreq;
|
|
Nco m_duc;
|
|
|
|
TransmitterBuffer m_txBuf;
|
|
uint32_t m_symCount;
|
|
uint32_t m_upsampleFactor;
|
|
|
|
// Processor Buffers
|
|
Processor::Buffer<uint8_t> m_buffer_data_in;
|
|
Processor::Buffer<uint8_t> m_buffer_symbol_in;
|
|
Processor::Buffer<uint32_t> m_buffer_symbol_out;
|
|
|
|
// Thread
|
|
void run() override;
|
|
|
|
// Transmit symbols
|
|
void transmit();
|
|
|
|
void paramChanged();
|
|
|
|
// TransmitterInterface
|
|
void reset() override;
|
|
void setBuffersize(uint32_t size) override;
|
|
void setSamplerate(radio_float_t samplerate_hz) override;
|
|
void setCarrierFrequency(radio_float_t frequency_hz) override;
|
|
radio_float_t getCarrierFrequency() override;
|
|
void setSymbolRate(radio_float_t symbolrate_bit_per_sec) override;
|
|
radio_float_t getSymbolRate() override;
|
|
void setNumBitPerSymbol(uint32_t numBitPerSymbol) override;
|
|
void getData(float *pRF, uint32_t len) override;
|
|
};
|
|
|
|
#endif // _TRANSMITTER_HPP_
|