- Blockfized: use Processor::Blocks Formatter and Symbolizer for processing
- 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
This commit is contained in:
+22
-91
@@ -23,8 +23,11 @@ using namespace Radio;
|
||||
|
||||
// ---------------------------------------------------
|
||||
|
||||
class Transmitter : public TransmitterInterface, public ISymbolizer, public juce::Thread
|
||||
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);
|
||||
@@ -33,8 +36,8 @@ public:
|
||||
|
||||
private:
|
||||
CriticalSection m_lock;
|
||||
Symbolizer m_symbolizer;
|
||||
Formatter m_formatter;
|
||||
Symbolizer m_symbolizer;
|
||||
sym_map_t m_symbolMapper;
|
||||
Interpolation::UpSampler m_firUp;
|
||||
uint32_t m_bufferSize;
|
||||
@@ -54,101 +57,29 @@ private:
|
||||
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
|
||||
{
|
||||
uint32_t data;
|
||||
void run() override;
|
||||
|
||||
data = 0;
|
||||
while(!threadShouldExit())
|
||||
{
|
||||
m_formatter.process(&data, sizeof(data));
|
||||
data++;
|
||||
}
|
||||
}
|
||||
|
||||
// ISymbolizer
|
||||
void onSymbol(symbol_t symbol) override
|
||||
{
|
||||
uint32_t symCountRcf;
|
||||
const ScopedLock sl (m_lock);
|
||||
|
||||
m_bufferSym[m_symCount++] = toComplexScalar(SymMapMap(&m_symbolMapper, symbol));
|
||||
|
||||
if (m_symCount >= m_bufferSize/m_upsampleFactor)
|
||||
{
|
||||
symCountRcf = m_firUp.process(m_bufferSymRcf, m_bufferSym, m_symCount);
|
||||
m_duc.mixComplexRealV(m_bufferRF, m_bufferSymRcf, ComplexScalar(m_kRcf/4, m_kRcf/4), symCountRcf);
|
||||
m_txBuf.write(m_bufferRF, symCountRcf);
|
||||
m_symCount = 0;
|
||||
}
|
||||
}
|
||||
// Transmit symbols
|
||||
void transmit();
|
||||
|
||||
void paramChanged();
|
||||
|
||||
// TransmitterInterface
|
||||
void reset() override
|
||||
{
|
||||
}
|
||||
void setBuffersize(uint32_t size) override
|
||||
{
|
||||
bufferResize(size);
|
||||
paramChanged();
|
||||
}
|
||||
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(radio_float_t frequency_hz) override
|
||||
{
|
||||
const ScopedLock sl (m_lock);
|
||||
m_carrierFreq = frequency_hz;
|
||||
m_duc.init(m_carrierFreq/m_samplerate, 0);
|
||||
}
|
||||
radio_float_t getCarrierFrequency() override
|
||||
{
|
||||
return m_carrierFreq;
|
||||
}
|
||||
|
||||
void setSymbolRate(radio_float_t symbolrate_bit_per_sec) override
|
||||
{
|
||||
m_symbolrate = symbolrate_bit_per_sec;
|
||||
paramChanged();
|
||||
}
|
||||
|
||||
radio_float_t getSymbolRate() override
|
||||
{
|
||||
return m_symbolrate;
|
||||
}
|
||||
|
||||
void setNumBitPerSymbol(uint32_t numBitPerSymbol) override
|
||||
{
|
||||
m_numBitPerSymbol = numBitPerSymbol;
|
||||
if (m_numBitPerSymbol > 16)
|
||||
m_numBitPerSymbol = 16;
|
||||
|
||||
paramChanged();
|
||||
}
|
||||
|
||||
void getData(float *pRF, uint32_t len) override
|
||||
{
|
||||
uint32_t res;
|
||||
|
||||
if (len != m_bufferSize)
|
||||
{
|
||||
memset(pRF, 0, len*sizeof(float));
|
||||
return;
|
||||
}
|
||||
|
||||
res = m_txBuf.read(pRF);
|
||||
|
||||
if (!res)
|
||||
memset(pRF, 0, len*sizeof(float));
|
||||
|
||||
}
|
||||
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_
|
||||
|
||||
Reference in New Issue
Block a user