- added dedicated entry for DDC frequency and STR rate for each TX and RX

git-svn-id: http://moon:8086/svn/software/trunk/projects/mpsk_rx_gui@868 b431acfa-c32f-4a4a-93f1-934dc6c82436
This commit is contained in:
2022-05-23 15:26:11 +00:00
parent d373328292
commit 41173acc49
4 changed files with 93 additions and 36 deletions
+72 -32
View File
@@ -305,25 +305,45 @@ ControlComponent::ControlComponent (ReceiverInterface *pReceiverControlListener,
m_entryNumBitsPerSymbol->setPopupMenuEnabled (true); m_entryNumBitsPerSymbol->setPopupMenuEnabled (true);
m_entryNumBitsPerSymbol->setText (TRANS("2")); m_entryNumBitsPerSymbol->setText (TRANS("2"));
addAndMakeVisible (m_entrySymbolRate = new TextEditor ("Symbolrate")); addAndMakeVisible (m_entrySymbolRate_rx = new TextEditor ("Symbolrate RX"));
m_entrySymbolRate->setTooltip (TRANS("Symbolrate")); m_entrySymbolRate_rx->setTooltip (TRANS("Symbolrate RX"));
m_entrySymbolRate->setMultiLine (false); m_entrySymbolRate_rx->setMultiLine (false);
m_entrySymbolRate->setReturnKeyStartsNewLine (false); m_entrySymbolRate_rx->setReturnKeyStartsNewLine (false);
m_entrySymbolRate->setReadOnly (false); m_entrySymbolRate_rx->setReadOnly (false);
m_entrySymbolRate->setScrollbarsShown (false); m_entrySymbolRate_rx->setScrollbarsShown (false);
m_entrySymbolRate->setCaretVisible (true); m_entrySymbolRate_rx->setCaretVisible (true);
m_entrySymbolRate->setPopupMenuEnabled (true); m_entrySymbolRate_rx->setPopupMenuEnabled (true);
m_entrySymbolRate->setText (TRANS("192000.000")); m_entrySymbolRate_rx->setText (TRANS("192000.000"));
addAndMakeVisible (m_entryDdcFrequency = new TextEditor ("DDC Frequency")); addAndMakeVisible (m_entryDdcFrequency_rx = new TextEditor ("DDC Frequency RX"));
m_entryDdcFrequency->setTooltip (TRANS("DDC Frequency")); m_entryDdcFrequency_rx->setTooltip (TRANS("DDC Frequency RX"));
m_entryDdcFrequency->setMultiLine (false); m_entryDdcFrequency_rx->setMultiLine (false);
m_entryDdcFrequency->setReturnKeyStartsNewLine (false); m_entryDdcFrequency_rx->setReturnKeyStartsNewLine (false);
m_entryDdcFrequency->setReadOnly (false); m_entryDdcFrequency_rx->setReadOnly (false);
m_entryDdcFrequency->setScrollbarsShown (false); m_entryDdcFrequency_rx->setScrollbarsShown (false);
m_entryDdcFrequency->setCaretVisible (true); m_entryDdcFrequency_rx->setCaretVisible (true);
m_entryDdcFrequency->setPopupMenuEnabled (true); m_entryDdcFrequency_rx->setPopupMenuEnabled (true);
m_entryDdcFrequency->setText (TRANS("192000.000")); m_entryDdcFrequency_rx->setText (TRANS("192000.000"));
addAndMakeVisible (m_entrySymbolRate_tx = new TextEditor ("Symbolrate TX"));
m_entrySymbolRate_tx->setTooltip (TRANS("Symbolrate TX"));
m_entrySymbolRate_tx->setMultiLine (false);
m_entrySymbolRate_tx->setReturnKeyStartsNewLine (false);
m_entrySymbolRate_tx->setReadOnly (false);
m_entrySymbolRate_tx->setScrollbarsShown (false);
m_entrySymbolRate_tx->setCaretVisible (true);
m_entrySymbolRate_tx->setPopupMenuEnabled (true);
m_entrySymbolRate_tx->setText (TRANS("192000.000"));
addAndMakeVisible (m_entryDdcFrequency_tx = new TextEditor ("DDC Frequency TX"));
m_entryDdcFrequency_tx->setTooltip (TRANS("DDC Frequency TX"));
m_entryDdcFrequency_tx->setMultiLine (false);
m_entryDdcFrequency_tx->setReturnKeyStartsNewLine (false);
m_entryDdcFrequency_tx->setReadOnly (false);
m_entryDdcFrequency_tx->setScrollbarsShown (false);
m_entryDdcFrequency_tx->setCaretVisible (true);
m_entryDdcFrequency_tx->setPopupMenuEnabled (true);
m_entryDdcFrequency_tx->setText (TRANS("192000.000"));
addAndMakeVisible (m_labelDdcDeltaFreq = new Label ("DDC Frequency Offset", addAndMakeVisible (m_labelDdcDeltaFreq = new Label ("DDC Frequency Offset",
TRANS("-999.000000"))); TRANS("-999.000000")));
@@ -684,8 +704,10 @@ ControlComponent::ControlComponent (ReceiverInterface *pReceiverControlListener,
m_entrySTRLoopFilterLag_0->addListener(this); m_entrySTRLoopFilterLag_0->addListener(this);
m_entrySTRLoopFilterLag_1->addListener(this); m_entrySTRLoopFilterLag_1->addListener(this);
m_entryNumBitsPerSymbol->addListener(this); m_entryNumBitsPerSymbol->addListener(this);
m_entryDdcFrequency->addListener(this); m_entryDdcFrequency_rx->addListener(this);
m_entrySymbolRate->addListener(this); m_entrySymbolRate_rx->addListener(this);
m_entryDdcFrequency_tx->addListener(this);
m_entrySymbolRate_tx->addListener(this);
// Texteditor Select All on focus // Texteditor Select All on focus
m_entryCmaMu->setSelectAllWhenFocused(true); m_entryCmaMu->setSelectAllWhenFocused(true);
@@ -701,8 +723,10 @@ ControlComponent::ControlComponent (ReceiverInterface *pReceiverControlListener,
m_entrySTRLoopFilterLag_0->setSelectAllWhenFocused(true); m_entrySTRLoopFilterLag_0->setSelectAllWhenFocused(true);
m_entrySTRLoopFilterLag_1->setSelectAllWhenFocused(true); m_entrySTRLoopFilterLag_1->setSelectAllWhenFocused(true);
m_entryNumBitsPerSymbol->setSelectAllWhenFocused(true); m_entryNumBitsPerSymbol->setSelectAllWhenFocused(true);
m_entryDdcFrequency->setSelectAllWhenFocused(true); m_entryDdcFrequency_rx->setSelectAllWhenFocused(true);
m_entrySymbolRate->setSelectAllWhenFocused(true); m_entrySymbolRate_rx->setSelectAllWhenFocused(true);
m_entryDdcFrequency_tx->setSelectAllWhenFocused(true);
m_entrySymbolRate_tx->setSelectAllWhenFocused(true);
m_userParamEntryinProgress = false; m_userParamEntryinProgress = false;
m_tooltipWindow = new TooltipWindow (this, 500); m_tooltipWindow = new TooltipWindow (this, 500);
@@ -755,8 +779,10 @@ ControlComponent::~ControlComponent()
toggleButtonDfeTrainingEnable = nullptr; toggleButtonDfeTrainingEnable = nullptr;
m_buttonDfeOffUpdateFromCma = nullptr; m_buttonDfeOffUpdateFromCma = nullptr;
m_entryNumBitsPerSymbol = nullptr; m_entryNumBitsPerSymbol = nullptr;
m_entrySymbolRate = nullptr; m_entrySymbolRate_rx = nullptr;
m_entryDdcFrequency = nullptr; m_entryDdcFrequency_rx = nullptr;
m_entrySymbolRate_tx = nullptr;
m_entryDdcFrequency_tx = nullptr;
m_labelDdcDeltaFreq = nullptr; m_labelDdcDeltaFreq = nullptr;
m_labelStrDeltaFreq = nullptr; m_labelStrDeltaFreq = nullptr;
m_labelCprState = nullptr; m_labelCprState = nullptr;
@@ -1170,8 +1196,10 @@ void ControlComponent::resized()
toggleButtonDfeTrainingEnable->setBounds (280, 320, 64, 24); toggleButtonDfeTrainingEnable->setBounds (280, 320, 64, 24);
m_buttonDfeOffUpdateFromCma->setBounds (184, 296, 64, 24); m_buttonDfeOffUpdateFromCma->setBounds (184, 296, 64, 24);
m_entryNumBitsPerSymbol->setBounds (320, 736, 32, 24); m_entryNumBitsPerSymbol->setBounds (320, 736, 32, 24);
m_entrySymbolRate->setBounds (264, 760, 88, 24); m_entrySymbolRate_rx->setBounds (264, 760, 88, 24);
m_entryDdcFrequency->setBounds (264, 784, 88, 24); m_entryDdcFrequency_rx->setBounds (264, 784, 88, 24);
m_entrySymbolRate_tx->setBounds (264-2*88, 760, 88, 24);
m_entryDdcFrequency_tx->setBounds (264-2*88, 784, 88, 24);
m_labelDdcDeltaFreq->setBounds (16, 208, 98, 24); m_labelDdcDeltaFreq->setBounds (16, 208, 98, 24);
m_labelStrDeltaFreq->setBounds (280, 208, 98, 24); m_labelStrDeltaFreq->setBounds (280, 208, 98, 24);
m_labelCprState->setBounds (24, 32, 112, 24); m_labelCprState->setBounds (24, 32, 112, 24);
@@ -1525,16 +1553,26 @@ void ControlComponent::textEditorFocusLost (TextEditor &textEditor)
m_pTransmitterControlListener->setNumBitPerSymbol(m_params.numBitsPerSymbol); m_pTransmitterControlListener->setNumBitPerSymbol(m_params.numBitsPerSymbol);
} }
if (textEditor.getName() == m_entrySymbolRate->getName()) if (textEditor.getName() == m_entrySymbolRate_rx->getName())
{ {
m_params.symbolrate = textEditor.getText().getFloatValue(); m_params.symbolrate = textEditor.getText().getFloatValue();
m_pTransmitterControlListener->setSymbolRate(m_params.symbolrate);
} }
if (textEditor.getName() == m_entryDdcFrequency->getName()) if (textEditor.getName() == m_entryDdcFrequency_rx->getName())
{ {
m_params.ddc_freq = textEditor.getText().getFloatValue(); m_params.ddc_freq = textEditor.getText().getFloatValue();
m_pTransmitterControlListener->setCarrierFrequency(m_params.ddc_freq); }
if (textEditor.getName() == m_entrySymbolRate_tx->getName())
{
float symbolrate = textEditor.getText().getFloatValue();
m_pTransmitterControlListener->setSymbolRate(symbolrate);
}
if (textEditor.getName() == m_entryDdcFrequency_tx->getName())
{
float ddc_freq = textEditor.getText().getFloatValue();
m_pTransmitterControlListener->setCarrierFrequency(ddc_freq);
} }
m_pReceiverControlListener->setParams(m_params); m_pReceiverControlListener->setParams(m_params);
@@ -1580,8 +1618,10 @@ void ControlComponent::changeListenerCallback(juce::ChangeBroadcaster* source)
if (!m_userParamEntryinProgress) if (!m_userParamEntryinProgress)
{ {
m_entryNumBitsPerSymbol->setText(String(m_params.numBitsPerSymbol), juce::NotificationType::dontSendNotification); m_entryNumBitsPerSymbol->setText(String(m_params.numBitsPerSymbol), juce::NotificationType::dontSendNotification);
m_entrySymbolRate->setText(String(m_params.symbolrate, 3), juce::NotificationType::dontSendNotification); m_entrySymbolRate_rx->setText(String(m_params.symbolrate, 3), juce::NotificationType::dontSendNotification);
m_entryDdcFrequency->setText(String(m_params.ddc_freq, 3), juce::NotificationType::dontSendNotification); m_entryDdcFrequency_rx->setText(String(m_params.ddc_freq, 3), juce::NotificationType::dontSendNotification);
m_entrySymbolRate_tx->setText(String(m_pTransmitterControlListener->getSymbolRate(), 3), juce::NotificationType::dontSendNotification);
m_entryDdcFrequency_tx->setText(String(m_pTransmitterControlListener->getCarrierFrequency(), 3), juce::NotificationType::dontSendNotification);
m_entryCmaMu->setText(String((float)1E3*m_params.eqMuCma, 3), juce::NotificationType::dontSendNotification); m_entryCmaMu->setText(String((float)1E3*m_params.eqMuCma, 3), juce::NotificationType::dontSendNotification);
m_entryDfeMu->setText(String((float)1E3*m_params.eqMuDfe, 3), juce::NotificationType::dontSendNotification); m_entryDfeMu->setText(String((float)1E3*m_params.eqMuDfe, 3), juce::NotificationType::dontSendNotification);
m_entryAgcMu_0->setText(String((float)1E3*m_params.agcMu[0], 3), juce::NotificationType::dontSendNotification); m_entryAgcMu_0->setText(String((float)1E3*m_params.agcMu[0], 3), juce::NotificationType::dontSendNotification);
+4 -2
View File
@@ -120,8 +120,10 @@ private:
ScopedPointer<ToggleButton> toggleButtonDfeTrainingEnable; ScopedPointer<ToggleButton> toggleButtonDfeTrainingEnable;
ScopedPointer<TextButton> m_buttonDfeOffUpdateFromCma; ScopedPointer<TextButton> m_buttonDfeOffUpdateFromCma;
ScopedPointer<TextEditor> m_entryNumBitsPerSymbol; ScopedPointer<TextEditor> m_entryNumBitsPerSymbol;
ScopedPointer<TextEditor> m_entrySymbolRate; ScopedPointer<TextEditor> m_entrySymbolRate_rx;
ScopedPointer<TextEditor> m_entryDdcFrequency; ScopedPointer<TextEditor> m_entryDdcFrequency_rx;
ScopedPointer<TextEditor> m_entrySymbolRate_tx;
ScopedPointer<TextEditor> m_entryDdcFrequency_tx;
ScopedPointer<Label> m_labelDdcDeltaFreq; ScopedPointer<Label> m_labelDdcDeltaFreq;
ScopedPointer<Label> m_labelStrDeltaFreq; ScopedPointer<Label> m_labelStrDeltaFreq;
ScopedPointer<Label> m_labelCprState; ScopedPointer<Label> m_labelCprState;
+3 -1
View File
@@ -694,6 +694,8 @@ void Receiver::processBaseband(CVec const &iq, uint32_t len)
void Receiver::initDDC() void Receiver::initDDC()
{ {
printf("Receiver::initDDC: ddc_freq=%f\n", m_params.ddc_freq);
m_nco_ddc.init(m_params.ddc_freq/m_params.samplerate, 0); m_nco_ddc.init(m_params.ddc_freq/m_params.samplerate, 0);
} }
@@ -795,7 +797,7 @@ void Receiver::setParams(const params_t &params)
{ {
const ScopedLock sl (m_lock); const ScopedLock sl (m_lock);
params_t lastParams = m_params; params_t lastParams = m_params;
m_params = params; m_params = params;
// DDC frequency has changed // DDC frequency has changed
+14 -1
View File
@@ -28,9 +28,11 @@ 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 setCarrierFrequency(float frequency_hz) = 0;
virtual void setSamplerate(float samplerate_hz) = 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 void setSymbolRate(float symbolrate_bit_per_sec) = 0;
virtual float 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;
@@ -226,11 +228,22 @@ private:
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
{
return m_carrierFreq;
}
void setSymbolRate(float symbolrate_bit_per_sec) override void setSymbolRate(float symbolrate_bit_per_sec) override
{ {
m_symbolrate = symbolrate_bit_per_sec; m_symbolrate = symbolrate_bit_per_sec;
paramChanged(); paramChanged();
} }
float getSymbolRate() override
{
return m_symbolrate;
}
void setNumBitPerSymbol(uint32_t numBitPerSymbol) override void setNumBitPerSymbol(uint32_t numBitPerSymbol) override
{ {
m_numBitPerSymbol = numBitPerSymbol; m_numBitPerSymbol = numBitPerSymbol;