/* ============================================================================== This is an automatically generated GUI class created by the Introjucer! Be careful when adding custom code to these files, as only the code within the "//[xyz]" and "//[/xyz]" sections will be retained when the file is loaded and re-saved. Created with Introjucer version: 3.1.0 ------------------------------------------------------------------------------ The Introjucer is part of the JUCE library - "Jules' Utility Class Extensions" Copyright 2004-13 by Raw Material Software Ltd. ============================================================================== */ //[Headers] You can add your own extra header files here... //[/Headers] #include "ControlComponent.h" //[MiscUserDefs] You can add your own user definitions and misc code here... //[/MiscUserDefs] //============================================================================== ControlComponent::ControlComponent (ReceiverInterface *pReceiverControlListener, TransmitterInterface *pTransmitterControlListener) : m_pReceiverControlListener(pReceiverControlListener), m_pTransmitterControlListener(pTransmitterControlListener) { addAndMakeVisible (groupComponent3 = new GroupComponent ("new group", TRANS("Statistics"))); addAndMakeVisible (m_GroupSymbolTimingRecovery2 = new GroupComponent ("Symbol Timing Recovery group", TRANS("AGC"))); addAndMakeVisible (groupComponent = new GroupComponent ("new group", TRANS("Powers"))); addAndMakeVisible (groupDFE = new GroupComponent ("DFE group", TRANS("Decision Feedback Equalizer"))); addAndMakeVisible (groupCMA = new GroupComponent ("CMA group", TRANS("Blind CMA Equalizer"))); addAndMakeVisible (groupCarrierPhaseRecovery = new GroupComponent ("Carrier Phase Recovery group", TRANS("Carrier Phase Recovery"))); addAndMakeVisible (m_GroupSymbolTimingRecovery = new GroupComponent ("Symbol Timing Recovery group", TRANS("Symbol Timing Recovery"))); addAndMakeVisible (toggleButtonCPREnable = new ToggleButton ("CPR Button")); toggleButtonCPREnable->setTooltip (TRANS("CPR Enable")); toggleButtonCPREnable->setButtonText (TRANS("On")); toggleButtonCPREnable->addListener (this); addAndMakeVisible (toggleButtonDFEEnable = new ToggleButton ("DFE Button")); toggleButtonDFEEnable->setButtonText (TRANS("On")); toggleButtonDFEEnable->addListener (this); addAndMakeVisible (toggleButtonSTREnable = new ToggleButton ("STR Button")); toggleButtonSTREnable->setTooltip (TRANS("STR Enable")); toggleButtonSTREnable->setButtonText (TRANS("On")); toggleButtonSTREnable->addListener (this); addAndMakeVisible (m_entrySTRLoopFilterLead_0 = new TextEditor ("STRLoopFilterLead 0")); m_entrySTRLoopFilterLead_0->setTooltip (TRANS("STRLoopFilterLead 0")); m_entrySTRLoopFilterLead_0->setMultiLine (false); m_entrySTRLoopFilterLead_0->setReturnKeyStartsNewLine (false); m_entrySTRLoopFilterLead_0->setReadOnly (false); m_entrySTRLoopFilterLead_0->setScrollbarsShown (false); m_entrySTRLoopFilterLead_0->setCaretVisible (true); m_entrySTRLoopFilterLead_0->setPopupMenuEnabled (true); m_entrySTRLoopFilterLead_0->setText (TRANS("1000.000")); addAndMakeVisible (m_entrySTRLoopFilterLag_0 = new TextEditor ("STRLoopFilterLag 0")); m_entrySTRLoopFilterLag_0->setTooltip (TRANS("STRLoopFilterLag 0")); m_entrySTRLoopFilterLag_0->setMultiLine (false); m_entrySTRLoopFilterLag_0->setReturnKeyStartsNewLine (false); m_entrySTRLoopFilterLag_0->setReadOnly (false); m_entrySTRLoopFilterLag_0->setScrollbarsShown (false); m_entrySTRLoopFilterLag_0->setCaretVisible (true); m_entrySTRLoopFilterLag_0->setPopupMenuEnabled (true); m_entrySTRLoopFilterLag_0->setText (TRANS("1000.000")); addAndMakeVisible (m_entryCPRLoopFilterLead_0 = new TextEditor ("CPRLoopFilterLead 0")); m_entryCPRLoopFilterLead_0->setTooltip (TRANS("CPRLoopFilterLead 0")); m_entryCPRLoopFilterLead_0->setMultiLine (false); m_entryCPRLoopFilterLead_0->setReturnKeyStartsNewLine (false); m_entryCPRLoopFilterLead_0->setReadOnly (false); m_entryCPRLoopFilterLead_0->setScrollbarsShown (false); m_entryCPRLoopFilterLead_0->setCaretVisible (true); m_entryCPRLoopFilterLead_0->setPopupMenuEnabled (true); m_entryCPRLoopFilterLead_0->setText (TRANS("1000.000")); addAndMakeVisible (m_entryCPRLoopFilterLag_0 = new TextEditor ("CPRLoopFilterLag 0")); m_entryCPRLoopFilterLag_0->setTooltip (TRANS("CPRLoopFilterLag 0")); m_entryCPRLoopFilterLag_0->setMultiLine (false); m_entryCPRLoopFilterLag_0->setReturnKeyStartsNewLine (false); m_entryCPRLoopFilterLag_0->setReadOnly (false); m_entryCPRLoopFilterLag_0->setScrollbarsShown (false); m_entryCPRLoopFilterLag_0->setCaretVisible (true); m_entryCPRLoopFilterLag_0->setPopupMenuEnabled (true); m_entryCPRLoopFilterLag_0->setText (TRANS("1000.000")); addAndMakeVisible (m_buttonDfeOnUpdateFromDfeOff = new TextButton ("DFE-off => DFE-on Update button")); m_buttonDfeOnUpdateFromDfeOff->setTooltip (TRANS("DFE-off => DFE-on Update")); m_buttonDfeOnUpdateFromDfeOff->setButtonText (TRANS("Update")); m_buttonDfeOnUpdateFromDfeOff->addListener (this); addAndMakeVisible (m_buttonResetDFE = new TextButton ("DFE Reset button")); m_buttonResetDFE->setButtonText (TRANS("Reset")); m_buttonResetDFE->addListener (this); addAndMakeVisible (m_buttonResetCMA = new TextButton ("CMA Reset button")); m_buttonResetCMA->setButtonText (TRANS("Reset")); m_buttonResetCMA->addListener (this); addAndMakeVisible (groupComponent2 = new GroupComponent ("new group", TRANS("SNR"))); addAndMakeVisible (m_entryCmaMu = new TextEditor ("CMA Adaption Rate")); m_entryCmaMu->setMultiLine (false); m_entryCmaMu->setReturnKeyStartsNewLine (false); m_entryCmaMu->setReadOnly (false); m_entryCmaMu->setScrollbarsShown (true); m_entryCmaMu->setCaretVisible (true); m_entryCmaMu->setPopupMenuEnabled (true); m_entryCmaMu->setText (String::empty); addAndMakeVisible (m_entryDfeMu = new TextEditor ("DFE Adaption Rate")); m_entryDfeMu->setMultiLine (false); m_entryDfeMu->setReturnKeyStartsNewLine (false); m_entryDfeMu->setReadOnly (false); m_entryDfeMu->setScrollbarsShown (true); m_entryDfeMu->setCaretVisible (true); m_entryDfeMu->setPopupMenuEnabled (true); m_entryDfeMu->setText (String::empty); addAndMakeVisible (m_labelPowerRF = new Label ("RF-Power", TRANS("-120"))); m_labelPowerRF->setTooltip (TRANS("RF-Power")); m_labelPowerRF->setFont (Font (15.00f, Font::plain)); m_labelPowerRF->setJustificationType (Justification::centredRight); m_labelPowerRF->setEditable (false, false, false); m_labelPowerRF->setColour (TextEditor::textColourId, Colours::black); m_labelPowerRF->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); addAndMakeVisible (m_labelPowerDDC = new Label ("DDC-Power", TRANS("-120"))); m_labelPowerDDC->setTooltip (TRANS("DDC-Power")); m_labelPowerDDC->setFont (Font (15.00f, Font::plain)); m_labelPowerDDC->setJustificationType (Justification::centredRight); m_labelPowerDDC->setEditable (false, false, false); m_labelPowerDDC->setColour (TextEditor::textColourId, Colours::black); m_labelPowerDDC->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); addAndMakeVisible (m_labelPowerMF = new Label ("MF-Power", TRANS("-120"))); m_labelPowerMF->setTooltip (TRANS("MF-Power")); m_labelPowerMF->setFont (Font (15.00f, Font::plain)); m_labelPowerMF->setJustificationType (Justification::centredRight); m_labelPowerMF->setEditable (false, false, false); m_labelPowerMF->setColour (TextEditor::textColourId, Colours::black); m_labelPowerMF->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); addAndMakeVisible (m_labelPowerCPR = new Label ("CPR-Power", TRANS("-120"))); m_labelPowerCPR->setTooltip (TRANS("CPR-Power")); m_labelPowerCPR->setFont (Font (15.00f, Font::plain)); m_labelPowerCPR->setJustificationType (Justification::centredRight); m_labelPowerCPR->setEditable (false, false, false); m_labelPowerCPR->setColour (TextEditor::textColourId, Colours::black); m_labelPowerCPR->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); addAndMakeVisible (m_labelPowerAGC2 = new Label ("AGC-2-Power", TRANS("-120"))); m_labelPowerAGC2->setTooltip (TRANS("AGC-2-Power")); m_labelPowerAGC2->setFont (Font (15.00f, Font::plain)); m_labelPowerAGC2->setJustificationType (Justification::centredRight); m_labelPowerAGC2->setEditable (false, false, false); m_labelPowerAGC2->setColour (TextEditor::textColourId, Colours::black); m_labelPowerAGC2->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); addAndMakeVisible (m_labelPowerEQ = new Label ("EQ-Power", TRANS("-120"))); m_labelPowerEQ->setTooltip (TRANS("EQ-Power")); m_labelPowerEQ->setFont (Font (15.00f, Font::plain)); m_labelPowerEQ->setJustificationType (Justification::centredRight); m_labelPowerEQ->setEditable (false, false, false); m_labelPowerEQ->setColour (TextEditor::textColourId, Colours::black); m_labelPowerEQ->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); addAndMakeVisible (m_labelSnrCurrent = new Label ("SNR Current", TRANS("-120"))); m_labelSnrCurrent->setTooltip (TRANS("SNR Current")); m_labelSnrCurrent->setFont (Font (15.00f, Font::plain)); m_labelSnrCurrent->setJustificationType (Justification::centredRight); m_labelSnrCurrent->setEditable (false, false, false); m_labelSnrCurrent->setColour (TextEditor::textColourId, Colours::black); m_labelSnrCurrent->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); addAndMakeVisible (m_labelSnrCma = new Label ("SNR CMA", TRANS("-120"))); m_labelSnrCma->setTooltip (TRANS("SNR CMA")); m_labelSnrCma->setFont (Font (15.00f, Font::plain)); m_labelSnrCma->setJustificationType (Justification::centredRight); m_labelSnrCma->setEditable (false, false, false); m_labelSnrCma->setColour (TextEditor::textColourId, Colours::black); m_labelSnrCma->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); addAndMakeVisible (m_labelSnrDfeOn = new Label ("SNR-DEF-On", TRANS("-120"))); m_labelSnrDfeOn->setTooltip (TRANS("SNR-DEF-On")); m_labelSnrDfeOn->setFont (Font (15.00f, Font::plain)); m_labelSnrDfeOn->setJustificationType (Justification::centredRight); m_labelSnrDfeOn->setEditable (false, false, false); m_labelSnrDfeOn->setColour (TextEditor::textColourId, Colours::black); m_labelSnrDfeOn->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); addAndMakeVisible (m_labelSnrDfeOff = new Label ("SNR-DEF-Off", TRANS("-120"))); m_labelSnrDfeOff->setTooltip (TRANS("SNR-DEF-Off")); m_labelSnrDfeOff->setFont (Font (15.00f, Font::plain)); m_labelSnrDfeOff->setJustificationType (Justification::centredRight); m_labelSnrDfeOff->setEditable (false, false, false); m_labelSnrDfeOff->setColour (TextEditor::textColourId, Colours::black); m_labelSnrDfeOff->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); addAndMakeVisible (m_labelSnrSymbolMag = new Label ("SNR Symbol Magnitude", TRANS("-120"))); m_labelSnrSymbolMag->setTooltip (TRANS("SNR Symbol Magnitude")); m_labelSnrSymbolMag->setFont (Font (15.00f, Font::plain)); m_labelSnrSymbolMag->setJustificationType (Justification::centredRight); m_labelSnrSymbolMag->setEditable (false, false, false); m_labelSnrSymbolMag->setColour (TextEditor::textColourId, Colours::black); m_labelSnrSymbolMag->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); addAndMakeVisible (m_labelSnrSymbolPhase = new Label ("SNR Symbol Phase", TRANS("-120"))); m_labelSnrSymbolPhase->setTooltip (TRANS("SNR Symbol Phase")); m_labelSnrSymbolPhase->setFont (Font (15.00f, Font::plain)); m_labelSnrSymbolPhase->setJustificationType (Justification::centredRight); m_labelSnrSymbolPhase->setEditable (false, false, false); m_labelSnrSymbolPhase->setColour (TextEditor::textColourId, Colours::black); m_labelSnrSymbolPhase->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); addAndMakeVisible (m_labelNoiseStr = new Label ("SNR STR", TRANS("-120"))); m_labelNoiseStr->setTooltip (TRANS("SNR STR")); m_labelNoiseStr->setFont (Font (15.00f, Font::plain)); m_labelNoiseStr->setJustificationType (Justification::centredRight); m_labelNoiseStr->setEditable (false, false, false); m_labelNoiseStr->setColour (TextEditor::textColourId, Colours::black); m_labelNoiseStr->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); addAndMakeVisible (m_labelSymbolReceivedCount = new Label ("Number of Symbols Received", TRANS("0"))); m_labelSymbolReceivedCount->setTooltip (TRANS("Number of Symbols Received")); m_labelSymbolReceivedCount->setFont (Font (15.00f, Font::plain)); m_labelSymbolReceivedCount->setJustificationType (Justification::centredRight); m_labelSymbolReceivedCount->setEditable (false, false, false); m_labelSymbolReceivedCount->setColour (TextEditor::textColourId, Colours::black); m_labelSymbolReceivedCount->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); addAndMakeVisible (m_buttonResetReset = new TextButton ("Receiver Reset")); m_buttonResetReset->setTooltip (TRANS("Receiver Reset")); m_buttonResetReset->setButtonText (TRANS("Reset")); m_buttonResetReset->addListener (this); addAndMakeVisible (m_entryAgcMu_0 = new TextEditor ("AGC Adaption Rate 0")); m_entryAgcMu_0->setTooltip (TRANS("AGC Adaption Rate 0")); m_entryAgcMu_0->setMultiLine (false); m_entryAgcMu_0->setReturnKeyStartsNewLine (false); m_entryAgcMu_0->setReadOnly (false); m_entryAgcMu_0->setScrollbarsShown (false); m_entryAgcMu_0->setCaretVisible (true); m_entryAgcMu_0->setPopupMenuEnabled (true); m_entryAgcMu_0->setText (TRANS("0.000001")); addAndMakeVisible (toggleButtonCmaTrainingEnable = new ToggleButton ("CMA Enable Training")); toggleButtonCmaTrainingEnable->setTooltip (TRANS("CMA Enable Training")); toggleButtonCmaTrainingEnable->setButtonText (TRANS("Learn")); toggleButtonCmaTrainingEnable->addListener (this); addAndMakeVisible (toggleButtonDfeTrainingEnable = new ToggleButton ("DFE Enable Training")); toggleButtonDfeTrainingEnable->setTooltip (TRANS("DFE Enable Training")); toggleButtonDfeTrainingEnable->setButtonText (TRANS("Learn")); toggleButtonDfeTrainingEnable->addListener (this); addAndMakeVisible (m_buttonDfeOffUpdateFromCma = new TextButton ("CMA => DFE-off Update button")); m_buttonDfeOffUpdateFromCma->setTooltip (TRANS("CMA => DFE-off Update")); m_buttonDfeOffUpdateFromCma->setButtonText (TRANS("=> DFE")); m_buttonDfeOffUpdateFromCma->addListener (this); addAndMakeVisible (m_entryNumBitsPerSymbol = new TextEditor ("NumBitsPerSymbol")); m_entryNumBitsPerSymbol->setTooltip (TRANS("NumBitsPerSymbol")); m_entryNumBitsPerSymbol->setMultiLine (false); m_entryNumBitsPerSymbol->setReturnKeyStartsNewLine (false); m_entryNumBitsPerSymbol->setReadOnly (false); m_entryNumBitsPerSymbol->setScrollbarsShown (false); m_entryNumBitsPerSymbol->setCaretVisible (true); m_entryNumBitsPerSymbol->setPopupMenuEnabled (true); m_entryNumBitsPerSymbol->setText (TRANS("2")); addAndMakeVisible (m_entrySymbolRate_rx = new TextEditor ("Symbolrate RX")); m_entrySymbolRate_rx->setTooltip (TRANS("Symbolrate RX")); m_entrySymbolRate_rx->setMultiLine (false); m_entrySymbolRate_rx->setReturnKeyStartsNewLine (false); m_entrySymbolRate_rx->setReadOnly (false); m_entrySymbolRate_rx->setScrollbarsShown (false); m_entrySymbolRate_rx->setCaretVisible (true); m_entrySymbolRate_rx->setPopupMenuEnabled (true); m_entrySymbolRate_rx->setText (TRANS("192000.000")); addAndMakeVisible (m_entryDdcFrequency_rx = new TextEditor ("DDC Frequency RX")); m_entryDdcFrequency_rx->setTooltip (TRANS("DDC Frequency RX")); m_entryDdcFrequency_rx->setMultiLine (false); m_entryDdcFrequency_rx->setReturnKeyStartsNewLine (false); m_entryDdcFrequency_rx->setReadOnly (false); m_entryDdcFrequency_rx->setScrollbarsShown (false); m_entryDdcFrequency_rx->setCaretVisible (true); m_entryDdcFrequency_rx->setPopupMenuEnabled (true); 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", TRANS("-999.000000"))); m_labelDdcDeltaFreq->setTooltip (TRANS("DDC Frequency Offset")); m_labelDdcDeltaFreq->setFont (Font (15.00f, Font::plain)); m_labelDdcDeltaFreq->setJustificationType (Justification::centredRight); m_labelDdcDeltaFreq->setEditable (false, false, false); m_labelDdcDeltaFreq->setColour (TextEditor::textColourId, Colours::black); m_labelDdcDeltaFreq->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); addAndMakeVisible (m_labelStrDeltaFreq = new Label ("STR Frequency Offset", TRANS("-999.000000"))); m_labelStrDeltaFreq->setTooltip (TRANS("STR Frequency Offset")); m_labelStrDeltaFreq->setFont (Font (15.00f, Font::plain)); m_labelStrDeltaFreq->setJustificationType (Justification::centredRight); m_labelStrDeltaFreq->setEditable (false, false, false); m_labelStrDeltaFreq->setColour (TextEditor::textColourId, Colours::black); m_labelStrDeltaFreq->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); addAndMakeVisible (m_labelCprState = new Label ("CPR state", TRANS("Tracking"))); m_labelCprState->setTooltip (TRANS("CPR state")); m_labelCprState->setFont (Font (15.00f, Font::bold)); m_labelCprState->setJustificationType (Justification::centred); m_labelCprState->setEditable (false, false, false); m_labelCprState->setColour (Label::backgroundColourId, Colours::white); m_labelCprState->setColour (TextEditor::textColourId, Colours::black); m_labelCprState->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); addAndMakeVisible (m_labelStrState = new Label ("STR state", TRANS("Tracking"))); m_labelStrState->setTooltip (TRANS("STR state")); m_labelStrState->setFont (Font (15.00f, Font::bold)); m_labelStrState->setJustificationType (Justification::centred); m_labelStrState->setEditable (false, false, false); m_labelStrState->setColour (Label::backgroundColourId, Colours::white); m_labelStrState->setColour (TextEditor::textColourId, Colours::black); m_labelStrState->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); addAndMakeVisible (toggleButtonAgcEnable = new ToggleButton ("AGC Enable")); toggleButtonAgcEnable->setTooltip (TRANS("AGC Enable")); toggleButtonAgcEnable->setButtonText (TRANS("On")); toggleButtonAgcEnable->addListener (this); addAndMakeVisible (m_labelAgcState = new Label ("AGC state", TRANS("Tracking"))); m_labelAgcState->setTooltip (TRANS("AGC state")); m_labelAgcState->setFont (Font (15.00f, Font::bold)); m_labelAgcState->setJustificationType (Justification::centred); m_labelAgcState->setEditable (false, false, false); m_labelAgcState->setColour (Label::backgroundColourId, Colours::white); m_labelAgcState->setColour (TextEditor::textColourId, Colours::black); m_labelAgcState->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); addAndMakeVisible (toggleButtonAgcMuForceTrack = new ToggleButton ("AGC Force Track")); toggleButtonAgcMuForceTrack->setTooltip (TRANS("AGC Force Tracking Mode")); toggleButtonAgcMuForceTrack->setButtonText (TRANS("Track")); toggleButtonAgcMuForceTrack->addListener (this); addAndMakeVisible (m_labelDdcMinI = new Label ("Ddc-Minimum", TRANS("-1"))); m_labelDdcMinI->setTooltip (TRANS("Ddc-Minimum")); m_labelDdcMinI->setFont (Font (15.00f, Font::plain)); m_labelDdcMinI->setJustificationType (Justification::centredRight); m_labelDdcMinI->setEditable (false, false, false); m_labelDdcMinI->setColour (TextEditor::textColourId, Colours::black); m_labelDdcMinI->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); addAndMakeVisible (m_labelDdcMaxI = new Label ("DDC-Maximum", TRANS("-120"))); m_labelDdcMaxI->setTooltip (TRANS("DDC-Maximum")); m_labelDdcMaxI->setFont (Font (15.00f, Font::plain)); m_labelDdcMaxI->setJustificationType (Justification::centredRight); m_labelDdcMaxI->setEditable (false, false, false); m_labelDdcMaxI->setColour (TextEditor::textColourId, Colours::black); m_labelDdcMaxI->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); addAndMakeVisible (m_labelDdcMinQ = new Label ("Ddc-Minimum", TRANS("-1"))); m_labelDdcMinQ->setTooltip (TRANS("Ddc-Minimum")); m_labelDdcMinQ->setFont (Font (15.00f, Font::plain)); m_labelDdcMinQ->setJustificationType (Justification::centredRight); m_labelDdcMinQ->setEditable (false, false, false); m_labelDdcMinQ->setColour (TextEditor::textColourId, Colours::black); m_labelDdcMinQ->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); addAndMakeVisible (m_labelDdcMaxQ = new Label ("DDC-Maximum", TRANS("-120"))); m_labelDdcMaxQ->setTooltip (TRANS("DDC-Maximum")); m_labelDdcMaxQ->setFont (Font (15.00f, Font::plain)); m_labelDdcMaxQ->setJustificationType (Justification::centredRight); m_labelDdcMaxQ->setEditable (false, false, false); m_labelDdcMaxQ->setColour (TextEditor::textColourId, Colours::black); m_labelDdcMaxQ->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); addAndMakeVisible (m_labelDdcMinMag = new Label ("Ddc-Minimum", TRANS("-1"))); m_labelDdcMinMag->setTooltip (TRANS("Ddc-Minimum")); m_labelDdcMinMag->setFont (Font (15.00f, Font::plain)); m_labelDdcMinMag->setJustificationType (Justification::centredRight); m_labelDdcMinMag->setEditable (false, false, false); m_labelDdcMinMag->setColour (TextEditor::textColourId, Colours::black); m_labelDdcMinMag->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); addAndMakeVisible (m_labelDdcMaxMag = new Label ("DDC-Maximum", TRANS("-120"))); m_labelDdcMaxMag->setTooltip (TRANS("DDC-Maximum")); m_labelDdcMaxMag->setFont (Font (15.00f, Font::plain)); m_labelDdcMaxMag->setJustificationType (Justification::centredRight); m_labelDdcMaxMag->setEditable (false, false, false); m_labelDdcMaxMag->setColour (TextEditor::textColourId, Colours::black); m_labelDdcMaxMag->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); addAndMakeVisible (m_labelDdcPhiMinI = new Label ("Ddc-Minimum", TRANS("-1"))); m_labelDdcPhiMinI->setTooltip (TRANS("Ddc-Minimum")); m_labelDdcPhiMinI->setFont (Font (15.00f, Font::plain)); m_labelDdcPhiMinI->setJustificationType (Justification::centredRight); m_labelDdcPhiMinI->setEditable (false, false, false); m_labelDdcPhiMinI->setColour (TextEditor::textColourId, Colours::black); m_labelDdcPhiMinI->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); addAndMakeVisible (m_labelDdcPhiMaxI = new Label ("DDC-Maximum", TRANS("-120"))); m_labelDdcPhiMaxI->setTooltip (TRANS("DDC-Maximum")); m_labelDdcPhiMaxI->setFont (Font (15.00f, Font::plain)); m_labelDdcPhiMaxI->setJustificationType (Justification::centredRight); m_labelDdcPhiMaxI->setEditable (false, false, false); m_labelDdcPhiMaxI->setColour (TextEditor::textColourId, Colours::black); m_labelDdcPhiMaxI->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); addAndMakeVisible (m_labelDdcPhiMinQ = new Label ("Ddc-Minimum", TRANS("-1"))); m_labelDdcPhiMinQ->setTooltip (TRANS("Ddc-Minimum")); m_labelDdcPhiMinQ->setFont (Font (15.00f, Font::plain)); m_labelDdcPhiMinQ->setJustificationType (Justification::centredRight); m_labelDdcPhiMinQ->setEditable (false, false, false); m_labelDdcPhiMinQ->setColour (TextEditor::textColourId, Colours::black); m_labelDdcPhiMinQ->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); addAndMakeVisible (m_labelDdcPhiMaxQ = new Label ("DDC-Maximum", TRANS("-120"))); m_labelDdcPhiMaxQ->setTooltip (TRANS("DDC-Maximum")); m_labelDdcPhiMaxQ->setFont (Font (15.00f, Font::plain)); m_labelDdcPhiMaxQ->setJustificationType (Justification::centredRight); m_labelDdcPhiMaxQ->setEditable (false, false, false); m_labelDdcPhiMaxQ->setColour (TextEditor::textColourId, Colours::black); m_labelDdcPhiMaxQ->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); addAndMakeVisible (m_entryAgcMu_1 = new TextEditor ("AGC Adaption Rate 1")); m_entryAgcMu_1->setTooltip (TRANS("AGC Adaption Rate 1")); m_entryAgcMu_1->setMultiLine (false); m_entryAgcMu_1->setReturnKeyStartsNewLine (false); m_entryAgcMu_1->setReadOnly (false); m_entryAgcMu_1->setScrollbarsShown (false); m_entryAgcMu_1->setCaretVisible (true); m_entryAgcMu_1->setPopupMenuEnabled (true); m_entryAgcMu_1->setText (TRANS("0.000001")); addAndMakeVisible (m_entryCPRLoopFilterLead_1 = new TextEditor ("CPRLoopFilterLead 1")); m_entryCPRLoopFilterLead_1->setTooltip (TRANS("CPRLoopFilterLead 1")); m_entryCPRLoopFilterLead_1->setMultiLine (false); m_entryCPRLoopFilterLead_1->setReturnKeyStartsNewLine (false); m_entryCPRLoopFilterLead_1->setReadOnly (false); m_entryCPRLoopFilterLead_1->setScrollbarsShown (false); m_entryCPRLoopFilterLead_1->setCaretVisible (true); m_entryCPRLoopFilterLead_1->setPopupMenuEnabled (true); m_entryCPRLoopFilterLead_1->setText (TRANS("1000.000")); addAndMakeVisible (m_entryCPRLoopFilterLag_1 = new TextEditor ("CPRLoopFilterLag 1")); m_entryCPRLoopFilterLag_1->setTooltip (TRANS("CPRLoopFilterLag 1")); m_entryCPRLoopFilterLag_1->setMultiLine (false); m_entryCPRLoopFilterLag_1->setReturnKeyStartsNewLine (false); m_entryCPRLoopFilterLag_1->setReadOnly (false); m_entryCPRLoopFilterLag_1->setScrollbarsShown (false); m_entryCPRLoopFilterLag_1->setCaretVisible (true); m_entryCPRLoopFilterLag_1->setPopupMenuEnabled (true); m_entryCPRLoopFilterLag_1->setText (TRANS("1000.000")); addAndMakeVisible (m_entrySTRLoopFilterLead_1 = new TextEditor ("STRLoopFilterLead 1")); m_entrySTRLoopFilterLead_1->setTooltip (TRANS("STRLoopFilterLead 1")); m_entrySTRLoopFilterLead_1->setMultiLine (false); m_entrySTRLoopFilterLead_1->setReturnKeyStartsNewLine (false); m_entrySTRLoopFilterLead_1->setReadOnly (false); m_entrySTRLoopFilterLead_1->setScrollbarsShown (false); m_entrySTRLoopFilterLead_1->setCaretVisible (true); m_entrySTRLoopFilterLead_1->setPopupMenuEnabled (true); m_entrySTRLoopFilterLead_1->setText (TRANS("1000.000")); addAndMakeVisible (m_entrySTRLoopFilterLag_1 = new TextEditor ("STRLoopFilterLag 1")); m_entrySTRLoopFilterLag_1->setTooltip (TRANS("STRLoopFilterLag 1")); m_entrySTRLoopFilterLag_1->setMultiLine (false); m_entrySTRLoopFilterLag_1->setReturnKeyStartsNewLine (false); m_entrySTRLoopFilterLag_1->setReadOnly (false); m_entrySTRLoopFilterLag_1->setScrollbarsShown (false); m_entrySTRLoopFilterLag_1->setCaretVisible (true); m_entrySTRLoopFilterLag_1->setPopupMenuEnabled (true); m_entrySTRLoopFilterLag_1->setText (TRANS("1000.000")); addAndMakeVisible (toggleButtonSTRLoopFilterForceTrack = new ToggleButton ("STR Track")); toggleButtonSTRLoopFilterForceTrack->setTooltip (TRANS("STR Force Tracking Mode")); toggleButtonSTRLoopFilterForceTrack->setButtonText (TRANS("Track")); toggleButtonSTRLoopFilterForceTrack->addListener (this); addAndMakeVisible (toggleButtonCPRLoopFilterForceTrack = new ToggleButton ("CPR Track")); toggleButtonCPRLoopFilterForceTrack->setTooltip (TRANS("STR Force Tracking Mode")); toggleButtonCPRLoopFilterForceTrack->setButtonText (TRANS("Track")); toggleButtonCPRLoopFilterForceTrack->addListener (this); addAndMakeVisible (toggleButtonDfeAutoUpdateEnable = new ToggleButton ("DFE Enable Training")); toggleButtonDfeAutoUpdateEnable->setTooltip (TRANS("DFE Enable Training")); toggleButtonDfeAutoUpdateEnable->setButtonText (TRANS("Auto Upd.")); toggleButtonDfeAutoUpdateEnable->addListener (this); addAndMakeVisible (m_labelEbN0 = new Label ("SNR STR", TRANS("-120"))); m_labelEbN0->setTooltip (TRANS("SNR STR")); m_labelEbN0->setFont (Font (15.00f, Font::plain)); m_labelEbN0->setJustificationType (Justification::centredRight); m_labelEbN0->setEditable (false, false, false); m_labelEbN0->setColour (TextEditor::textColourId, Colours::black); m_labelEbN0->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); addAndMakeVisible (m_labelFrameTotalCount = new Label ("FrameTotalCount", TRANS("0"))); m_labelFrameTotalCount->setTooltip (TRANS("Number of Frames Received")); m_labelFrameTotalCount->setFont (Font (15.00f, Font::plain)); m_labelFrameTotalCount->setJustificationType (Justification::centredRight); m_labelFrameTotalCount->setEditable (false, false, false); m_labelFrameTotalCount->setColour (TextEditor::textColourId, Colours::black); m_labelFrameTotalCount->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); addAndMakeVisible (m_labelFrameDataCount = new Label ("FrameDataCount", TRANS("0"))); m_labelFrameDataCount->setTooltip (TRANS("Number of Data Frames Received")); m_labelFrameDataCount->setFont (Font (15.00f, Font::plain)); m_labelFrameDataCount->setJustificationType (Justification::centredRight); m_labelFrameDataCount->setEditable (false, false, false); m_labelFrameDataCount->setColour (TextEditor::textColourId, Colours::black); m_labelFrameDataCount->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); addAndMakeVisible (m_labelFrameIdleCount = new Label ("FrameIdleCount", TRANS("0"))); m_labelFrameIdleCount->setTooltip (TRANS("Number of Idle Frames Received")); m_labelFrameIdleCount->setFont (Font (15.00f, Font::plain)); m_labelFrameIdleCount->setJustificationType (Justification::centredRight); m_labelFrameIdleCount->setEditable (false, false, false); m_labelFrameIdleCount->setColour (TextEditor::textColourId, Colours::black); m_labelFrameIdleCount->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); addAndMakeVisible (m_labelFrameInvalidCount = new Label ("FrameInvalidCount", TRANS("0"))); m_labelFrameInvalidCount->setTooltip (TRANS("Number of Invalid Frames Received")); m_labelFrameInvalidCount->setFont (Font (15.00f, Font::plain)); m_labelFrameInvalidCount->setJustificationType (Justification::centredRight); m_labelFrameInvalidCount->setEditable (false, false, false); m_labelFrameInvalidCount->setColour (TextEditor::textColourId, Colours::black); m_labelFrameInvalidCount->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); addAndMakeVisible (m_labelFrameByteCount = new Label ("FrameByteCount", TRANS("0"))); m_labelFrameByteCount->setTooltip (TRANS("Number of bytes Received")); m_labelFrameByteCount->setFont (Font (15.00f, Font::plain)); m_labelFrameByteCount->setJustificationType (Justification::centredRight); m_labelFrameByteCount->setEditable (false, false, false); m_labelFrameByteCount->setColour (TextEditor::textColourId, Colours::black); m_labelFrameByteCount->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); addAndMakeVisible (m_buttonResetStatistic = new TextButton ("Statistic Reset button")); m_buttonResetStatistic->setButtonText (TRANS("Reset")); m_buttonResetStatistic->addListener (this); addAndMakeVisible (m_sliderCarrierPhase = new Slider ("CarrierPhaseSlider")); m_sliderCarrierPhase->setTooltip (TRANS("Carrier Phase Offset")); m_sliderCarrierPhase->setRange (-3.14159, 3.14159, 0.001); m_sliderCarrierPhase->setSliderStyle (Slider::RotaryVerticalDrag); m_sliderCarrierPhase->setTextBoxStyle (Slider::TextBoxLeft, false, 80, 20); m_sliderCarrierPhase->addListener (this); addAndMakeVisible (m_sliderAwgn_dB = new Slider ("AwgnSlider")); m_sliderAwgn_dB->setTooltip (TRANS("Additive Gaussian Noise")); m_sliderAwgn_dB->setRange (-100, 0, 5); m_sliderAwgn_dB->setSliderStyle (Slider::RotaryVerticalDrag); m_sliderAwgn_dB->setTextBoxStyle (Slider::TextBoxLeft, false, 80, 20); m_sliderAwgn_dB->addListener (this); addAndMakeVisible (m_buttonResetCPR = new TextButton ("CPR Reset button")); m_buttonResetCPR->setButtonText (TRANS("Reset")); m_buttonResetCPR->addListener (this); addAndMakeVisible (m_buttonResetStr = new TextButton ("STR Reset button")); m_buttonResetStr->setButtonText (TRANS("Reset")); m_buttonResetStr->addListener (this); addAndMakeVisible (comboBoxCmaMode = new ComboBox ("CmaMode")); comboBoxCmaMode->setEditableText (false); comboBoxCmaMode->setJustificationType (Justification::centredLeft); comboBoxCmaMode->setTextWhenNothingSelected (String::empty); comboBoxCmaMode->setTextWhenNoChoicesAvailable (TRANS("(no choices)")); comboBoxCmaMode->addItem (TRANS("CMA"), 1); comboBoxCmaMode->addItem (TRANS("MMA"), 2); comboBoxCmaMode->addItem (TRANS("S-MMA"), 3); comboBoxCmaMode->addListener (this); addAndMakeVisible (toggleButtonCMAEnable = new ToggleButton ("CMA Button")); toggleButtonCMAEnable->setButtonText (TRANS("On")); toggleButtonCMAEnable->addListener (this); addAndMakeVisible (m_labelPowerDecision = new Label ("Slicer-Power", TRANS("-120"))); m_labelPowerDecision->setTooltip (TRANS("Slicer-Power")); m_labelPowerDecision->setFont (Font (15.00f, Font::plain)); m_labelPowerDecision->setJustificationType (Justification::centredRight); m_labelPowerDecision->setEditable (false, false, false); m_labelPowerDecision->setColour (TextEditor::textColourId, Colours::black); m_labelPowerDecision->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); addAndMakeVisible (m_labelPowerDecisionMag = new Label ("Slicer-Power Magnitude", TRANS("-120"))); m_labelPowerDecisionMag->setTooltip (TRANS("Slicer-Power Magnitude")); m_labelPowerDecisionMag->setFont (Font (15.00f, Font::plain)); m_labelPowerDecisionMag->setJustificationType (Justification::centredRight); m_labelPowerDecisionMag->setEditable (false, false, false); m_labelPowerDecisionMag->setColour (TextEditor::textColourId, Colours::black); m_labelPowerDecisionMag->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); addAndMakeVisible (m_labelPowerDecisionPhase = new Label ("Slicer-Power Phase", TRANS("-120"))); m_labelPowerDecisionPhase->setTooltip (TRANS("Slicer-Power Phase")); m_labelPowerDecisionPhase->setFont (Font (15.00f, Font::plain)); m_labelPowerDecisionPhase->setJustificationType (Justification::centredRight); m_labelPowerDecisionPhase->setEditable (false, false, false); m_labelPowerDecisionPhase->setColour (TextEditor::textColourId, Colours::black); m_labelPowerDecisionPhase->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); addAndMakeVisible (m_labelNoiseCpr = new Label ("SNR CPR", TRANS("-120"))); m_labelNoiseCpr->setTooltip (TRANS("SNR CPR")); m_labelNoiseCpr->setFont (Font (15.00f, Font::plain)); m_labelNoiseCpr->setJustificationType (Justification::centredRight); m_labelNoiseCpr->setEditable (false, false, false); m_labelNoiseCpr->setColour (TextEditor::textColourId, Colours::black); m_labelNoiseCpr->setColour (TextEditor::backgroundColourId, Colour (0x00000000)); //[UserPreSize] //[/UserPreSize] setSize (800, 1000); //[Constructor] You can add your own custom stuff here.. addChangeListener(this); // Texteditor Listeners m_entryCmaMu->addListener(this); m_entryDfeMu->addListener(this); m_entryAgcMu_0->addListener(this); m_entryAgcMu_1->addListener(this); m_entryCPRLoopFilterLead_0->addListener(this); m_entryCPRLoopFilterLead_1->addListener(this); m_entryCPRLoopFilterLag_0->addListener(this); m_entryCPRLoopFilterLag_1->addListener(this); m_entrySTRLoopFilterLead_0->addListener(this); m_entrySTRLoopFilterLead_1->addListener(this); m_entrySTRLoopFilterLag_0->addListener(this); m_entrySTRLoopFilterLag_1->addListener(this); m_entryNumBitsPerSymbol->addListener(this); m_entryDdcFrequency_rx->addListener(this); m_entrySymbolRate_rx->addListener(this); m_entryDdcFrequency_tx->addListener(this); m_entrySymbolRate_tx->addListener(this); // Texteditor Select All on focus m_entryCmaMu->setSelectAllWhenFocused(true); m_entryDfeMu->setSelectAllWhenFocused(true); m_entryAgcMu_0->setSelectAllWhenFocused(true); m_entryAgcMu_1->setSelectAllWhenFocused(true); m_entryCPRLoopFilterLead_0->setSelectAllWhenFocused(true); m_entryCPRLoopFilterLead_1->setSelectAllWhenFocused(true); m_entryCPRLoopFilterLag_0->setSelectAllWhenFocused(true); m_entryCPRLoopFilterLag_1->setSelectAllWhenFocused(true); m_entrySTRLoopFilterLead_0->setSelectAllWhenFocused(true); m_entrySTRLoopFilterLead_1->setSelectAllWhenFocused(true); m_entrySTRLoopFilterLag_0->setSelectAllWhenFocused(true); m_entrySTRLoopFilterLag_1->setSelectAllWhenFocused(true); m_entryNumBitsPerSymbol->setSelectAllWhenFocused(true); m_entryDdcFrequency_rx->setSelectAllWhenFocused(true); m_entrySymbolRate_rx->setSelectAllWhenFocused(true); m_entryDdcFrequency_tx->setSelectAllWhenFocused(true); m_entrySymbolRate_tx->setSelectAllWhenFocused(true); m_userParamEntryinProgress = false; m_tooltipWindow = new TooltipWindow (this, 500); //[/Constructor] } ControlComponent::~ControlComponent() { //[Destructor_pre]. You can add your own custom destruction code here.. m_tooltipWindow = nullptr; //[/Destructor_pre] groupComponent3 = nullptr; m_GroupSymbolTimingRecovery2 = nullptr; groupComponent = nullptr; groupDFE = nullptr; groupCMA = nullptr; groupCarrierPhaseRecovery = nullptr; m_GroupSymbolTimingRecovery = nullptr; toggleButtonCPREnable = nullptr; toggleButtonDFEEnable = nullptr; toggleButtonSTREnable = nullptr; m_entrySTRLoopFilterLead_0 = nullptr; m_entrySTRLoopFilterLag_0 = nullptr; m_entryCPRLoopFilterLead_0 = nullptr; m_entryCPRLoopFilterLag_0 = nullptr; m_buttonDfeOnUpdateFromDfeOff = nullptr; m_buttonResetDFE = nullptr; m_buttonResetCMA = nullptr; groupComponent2 = nullptr; m_entryCmaMu = nullptr; m_entryDfeMu = nullptr; m_labelPowerRF = nullptr; m_labelPowerDDC = nullptr; m_labelPowerMF = nullptr; m_labelPowerCPR = nullptr; m_labelPowerAGC2 = nullptr; m_labelPowerEQ = nullptr; m_labelSnrCurrent = nullptr; m_labelSnrCma = nullptr; m_labelSnrDfeOn = nullptr; m_labelSnrDfeOff = nullptr; m_labelSnrSymbolMag = nullptr; m_labelSnrSymbolPhase = nullptr; m_labelNoiseStr = nullptr; m_labelSymbolReceivedCount = nullptr; m_buttonResetReset = nullptr; m_entryAgcMu_0 = nullptr; toggleButtonCmaTrainingEnable = nullptr; toggleButtonDfeTrainingEnable = nullptr; m_buttonDfeOffUpdateFromCma = nullptr; m_entryNumBitsPerSymbol = nullptr; m_entrySymbolRate_rx = nullptr; m_entryDdcFrequency_rx = nullptr; m_entrySymbolRate_tx = nullptr; m_entryDdcFrequency_tx = nullptr; m_labelDdcDeltaFreq = nullptr; m_labelStrDeltaFreq = nullptr; m_labelCprState = nullptr; m_labelStrState = nullptr; toggleButtonAgcEnable = nullptr; m_labelAgcState = nullptr; toggleButtonAgcMuForceTrack = nullptr; m_labelDdcMinI = nullptr; m_labelDdcMaxI = nullptr; m_labelDdcMinQ = nullptr; m_labelDdcMaxQ = nullptr; m_labelDdcMinMag = nullptr; m_labelDdcMaxMag = nullptr; m_labelDdcPhiMinI = nullptr; m_labelDdcPhiMaxI = nullptr; m_labelDdcPhiMinQ = nullptr; m_labelDdcPhiMaxQ = nullptr; m_entryAgcMu_1 = nullptr; m_entryCPRLoopFilterLead_1 = nullptr; m_entryCPRLoopFilterLag_1 = nullptr; m_entrySTRLoopFilterLead_1 = nullptr; m_entrySTRLoopFilterLag_1 = nullptr; toggleButtonSTRLoopFilterForceTrack = nullptr; toggleButtonCPRLoopFilterForceTrack = nullptr; toggleButtonDfeAutoUpdateEnable = nullptr; m_labelEbN0 = nullptr; m_labelFrameTotalCount = nullptr; m_labelFrameDataCount = nullptr; m_labelFrameIdleCount = nullptr; m_labelFrameInvalidCount = nullptr; m_labelFrameByteCount = nullptr; m_buttonResetStatistic = nullptr; m_sliderCarrierPhase = nullptr; m_sliderAwgn_dB = nullptr; m_buttonResetCPR = nullptr; m_buttonResetStr = nullptr; comboBoxCmaMode = nullptr; toggleButtonCMAEnable = nullptr; m_labelPowerDecision = nullptr; m_labelPowerDecisionMag = nullptr; m_labelPowerDecisionPhase = nullptr; m_labelNoiseCpr = nullptr; //[Destructor]. You can add your own custom destruction code here.. //[/Destructor] } //============================================================================== void ControlComponent::paint (Graphics& g) { //[UserPrePaint] Add your own custom painting code here.. //[/UserPrePaint] g.fillAll (Colours::white); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("Loop Filter Acquisition [*1E-6]"), 31, 78, 209, 24, Justification::centredLeft, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("Current [dB]"), 348, 472, 156, 24, Justification::centredLeft, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("CMA [dB]"), 348, 496, 156, 24, Justification::centredLeft, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("DFE-on [dB]"), 348, 520, 156, 24, Justification::centredLeft, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("DFE-off [dB]"), 348, 544, 156, 24, Justification::centredLeft, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("Symbol Magnitude [dB]"), 348, 568, 156, 24, Justification::centredLeft, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("Symbol Phase [dB]"), 348, 592, 156, 24, Justification::centredLeft, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("Adaption Rate [*1E-3]"), 23, 358, 145, 24, Justification::centredLeft, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("Adaption Rate [*1E-3]"), 287, 358, 144, 24, Justification::centredLeft, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("RF [dB]"), 84, 472, 84, 24, Justification::centredLeft, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("DDC [dB]"), 84, 496, 84, 24, Justification::centredLeft, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("MF [dB]"), 84, 520, 84, 24, Justification::centredLeft, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("CPR [dB]"), 84, 544, 84, 24, Justification::centredLeft, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("AGC [dB]"), 84, 568, 84, 24, Justification::centredLeft, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("EQ [dB]"), 84, 592, 84, 24, Justification::centredLeft, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("STR [dB]"), 648, 624, 72, 24, Justification::centredLeft, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("Adaption Rate Acquisition [*1E-3]"), 559, 78, 217, 24, Justification::centredLeft, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("# Bits per Symbol"), 356, 736, 140, 24, Justification::centredLeft, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("Symbolrate"), 356, 760, 140, 24, Justification::centredLeft, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("DDC Frequency"), 356, 782, 140, 24, Justification::centredLeft, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("dF [Hz]"), 119, 206, 124, 26, Justification::centredLeft, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("dF [sym/s]"), 383, 206, 124, 26, Justification::centredLeft, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("min"), 348, 820, 36, 20, Justification::centred, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("max"), 428, 820, 36, 20, Justification::centred, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("I"), 300, 844, 44, 20, Justification::centred, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("Q"), 300, 868, 44, 20, Justification::centred, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("Mag"), 300, 892, 44, 20, Justification::centred, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("Phi I"), 300, 916, 44, 20, Justification::centred, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("Phi Q"), 300, 940, 44, 20, Justification::centred, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("Lead"), 104, 104, 36, 24, Justification::centredLeft, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("Lag"), 224, 104, 32, 24, Justification::centredLeft, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("Loop Filter Tracking [*1E-6]"), 31, 142, 209, 24, Justification::centredLeft, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("Lead"), 104, 168, 36, 24, Justification::centredLeft, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("Lag"), 224, 168, 32, 24, Justification::centredLeft, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("Loop Filter Acquisition [*1E-6]"), 295, 78, 209, 24, Justification::centredLeft, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("Lead"), 368, 104, 36, 24, Justification::centredLeft, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("Lag"), 488, 104, 32, 24, Justification::centredLeft, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("Loop Filter Tracking [*1E-6]"), 295, 142, 209, 24, Justification::centredLeft, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("Lead"), 368, 168, 36, 24, Justification::centredLeft, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("Lag"), 488, 168, 32, 24, Justification::centredLeft, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("Adaption Rate Tracking [*1E-3]"), 559, 142, 217, 24, Justification::centredLeft, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("EB/N0 [dB]"), 348, 616, 156, 24, Justification::centredLeft, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("# Symbols"), 640, 288, 120, 24, Justification::centredLeft, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("# Frames"), 640, 312, 120, 24, Justification::centredLeft, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("# Data Frames"), 640, 360, 120, 24, Justification::centredLeft, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("# Idle Frames"), 640, 384, 120, 24, Justification::centredLeft, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("# Bytes"), 640, 408, 120, 24, Justification::centredLeft, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("# Invalid Frames"), 640, 336, 120, 24, Justification::centredLeft, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("Decision [dB]"), 84, 616, 84, 24, Justification::centredLeft, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("Decision Magnitude [dB]"), 84, 640, 164, 24, Justification::centredLeft, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("Decision Phase [dB]"), 84, 664, 164, 24, Justification::centredLeft, true); g.setColour (Colours::black); g.setFont (Font (15.00f, Font::plain)); g.drawText (TRANS("CPR [dB]"), 647, 646, 72, 24, Justification::centredLeft, true); //[UserPaint] Add your own custom painting code here.. //[/UserPaint] } void ControlComponent::resized() { groupComponent3->setBounds (536, 272, 256, 168); m_GroupSymbolTimingRecovery2->setBounds (536, 8, 256, 256); groupComponent->setBounds (16, 448, 248, 248); groupDFE->setBounds (272, 272, 256, 168); groupCMA->setBounds (8, 272, 256, 168); groupCarrierPhaseRecovery->setBounds (8, 8, 256, 256); m_GroupSymbolTimingRecovery->setBounds (272, 8, 256, 256); toggleButtonCPREnable->setBounds (192, 24, 48, 24); toggleButtonDFEEnable->setBounds (280, 296, 64, 24); toggleButtonSTREnable->setBounds (456, 24, 48, 24); m_entrySTRLoopFilterLead_0->setBounds (288, 104, 72, 24); m_entrySTRLoopFilterLag_0->setBounds (408, 104, 72, 24); m_entryCPRLoopFilterLead_0->setBounds (24, 104, 72, 24); m_entryCPRLoopFilterLag_0->setBounds (144, 104, 72, 24); m_buttonDfeOnUpdateFromDfeOff->setBounds (448, 296, 64, 24); m_buttonResetDFE->setBounds (456, 408, 64, 24); m_buttonResetCMA->setBounds (192, 408, 64, 24); groupComponent2->setBounds (272, 448, 256, 232); m_entryCmaMu->setBounds (24, 384, 88, 24); m_entryDfeMu->setBounds (288, 384, 88, 24); m_labelPowerRF->setBounds (24, 472, 58, 24); m_labelPowerDDC->setBounds (24, 496, 58, 24); m_labelPowerMF->setBounds (24, 520, 58, 24); m_labelPowerCPR->setBounds (24, 544, 58, 24); m_labelPowerAGC2->setBounds (24, 568, 58, 24); m_labelPowerEQ->setBounds (24, 592, 58, 24); m_labelSnrCurrent->setBounds (280, 472, 58, 24); m_labelSnrCma->setBounds (280, 496, 58, 24); m_labelSnrDfeOn->setBounds (280, 520, 58, 24); m_labelSnrDfeOff->setBounds (280, 544, 58, 24); m_labelSnrSymbolMag->setBounds (280, 568, 58, 24); m_labelSnrSymbolPhase->setBounds (280, 592, 58, 24); m_labelNoiseStr->setBounds (576, 624, 58, 24); m_labelSymbolReceivedCount->setBounds (544, 288, 90, 24); m_buttonResetReset->setBounds (512, 792, 64, 24); m_entryAgcMu_0->setBounds (560, 104, 64, 24); toggleButtonCmaTrainingEnable->setBounds (24, 320, 64, 24); toggleButtonDfeTrainingEnable->setBounds (280, 320, 64, 24); m_buttonDfeOffUpdateFromCma->setBounds (184, 296, 64, 24); m_entryNumBitsPerSymbol->setBounds (320, 736, 32, 24); m_entrySymbolRate_rx->setBounds (264, 760, 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_labelStrDeltaFreq->setBounds (280, 208, 98, 24); m_labelCprState->setBounds (24, 32, 112, 24); m_labelStrState->setBounds (288, 32, 112, 24); toggleButtonAgcEnable->setBounds (720, 24, 48, 24); m_labelAgcState->setBounds (552, 32, 112, 24); toggleButtonAgcMuForceTrack->setBounds (720, 48, 64, 24); m_labelDdcMinI->setBounds (320, 840, 58, 24); m_labelDdcMaxI->setBounds (408, 840, 58, 24); m_labelDdcMinQ->setBounds (320, 864, 58, 24); m_labelDdcMaxQ->setBounds (408, 864, 58, 24); m_labelDdcMinMag->setBounds (320, 888, 58, 24); m_labelDdcMaxMag->setBounds (408, 888, 58, 24); m_labelDdcPhiMinI->setBounds (320, 912, 58, 24); m_labelDdcPhiMaxI->setBounds (408, 912, 58, 24); m_labelDdcPhiMinQ->setBounds (320, 936, 58, 24); m_labelDdcPhiMaxQ->setBounds (408, 936, 58, 24); m_entryAgcMu_1->setBounds (560, 168, 64, 24); m_entryCPRLoopFilterLead_1->setBounds (24, 168, 72, 24); m_entryCPRLoopFilterLag_1->setBounds (144, 168, 72, 24); m_entrySTRLoopFilterLead_1->setBounds (288, 168, 72, 24); m_entrySTRLoopFilterLag_1->setBounds (408, 168, 72, 24); toggleButtonSTRLoopFilterForceTrack->setBounds (456, 48, 64, 24); toggleButtonCPRLoopFilterForceTrack->setBounds (192, 48, 64, 24); toggleButtonDfeAutoUpdateEnable->setBounds (352, 296, 88, 24); m_labelEbN0->setBounds (280, 616, 58, 24); m_labelFrameTotalCount->setBounds (544, 312, 90, 24); m_labelFrameDataCount->setBounds (544, 360, 90, 24); m_labelFrameIdleCount->setBounds (544, 384, 90, 24); m_labelFrameInvalidCount->setBounds (544, 336, 90, 24); m_labelFrameByteCount->setBounds (544, 408, 90, 24); m_buttonResetStatistic->setBounds (720, 408, 64, 24); m_sliderCarrierPhase->setBounds (568, 480, 150, 24); m_sliderAwgn_dB->setBounds (568, 520, 150, 24); m_buttonResetCPR->setBounds (192, 232, 64, 24); m_buttonResetStr->setBounds (456, 232, 64, 24); comboBoxCmaMode->setBounds (96, 296, 72, 24); toggleButtonCMAEnable->setBounds (24, 296, 64, 24); m_labelPowerDecision->setBounds (24, 616, 58, 24); m_labelPowerDecisionMag->setBounds (24, 640, 58, 24); m_labelPowerDecisionPhase->setBounds (24, 664, 58, 24); m_labelNoiseCpr->setBounds (576, 648, 58, 24); //[UserResized] Add your own custom resize handling here.. //[/UserResized] } void ControlComponent::buttonClicked (Button* buttonThatWasClicked) { //[UserbuttonClicked_Pre] bool isOn = buttonThatWasClicked->getToggleState(); //[/UserbuttonClicked_Pre] if (buttonThatWasClicked == toggleButtonCPREnable) { //[UserButtonCode_toggleButtonCPREnable] -- add your button handler code here.. if (isOn) { m_params.cpr_mode = cpr_mode_enabled; } else { m_params.cpr_mode = cpr_mode_disabled; } m_pReceiverControlListener->setParams(m_params); //[/UserButtonCode_toggleButtonCPREnable] } else if (buttonThatWasClicked == toggleButtonDFEEnable) { //[UserButtonCode_toggleButtonDFEEnable] -- add your button handler code here.. if (isOn) { m_params.eq_mode = eq_mode_dfe; } else { m_params.eq_mode = eq_mode_disabled; } m_pReceiverControlListener->setParams(m_params); //[/UserButtonCode_toggleButtonDFEEnable] } else if (buttonThatWasClicked == toggleButtonSTREnable) { //[UserButtonCode_toggleButtonSTREnable] -- add your button handler code here.. if (isOn) { m_params.str_mode = str_mode_enabled; } else { m_params.str_mode = str_mode_disabled; } m_pReceiverControlListener->setParams(m_params); //[/UserButtonCode_toggleButtonSTREnable] } else if (buttonThatWasClicked == m_buttonDfeOnUpdateFromDfeOff) { //[UserButtonCode_m_buttonDfeOnUpdateFromDfeOff] -- add your button handler code here.. m_pReceiverControlListener->dfeOnUpdateFromDfeOff(); //[/UserButtonCode_m_buttonDfeOnUpdateFromDfeOff] } else if (buttonThatWasClicked == m_buttonResetDFE) { //[UserButtonCode_m_buttonResetDFE] -- add your button handler code here.. m_pReceiverControlListener->dfeReset(); //[/UserButtonCode_m_buttonResetDFE] } else if (buttonThatWasClicked == m_buttonResetCMA) { //[UserButtonCode_m_buttonResetCMA] -- add your button handler code here.. m_pReceiverControlListener->cmaReset(); //[/UserButtonCode_m_buttonResetCMA] } else if (buttonThatWasClicked == m_buttonResetReset) { //[UserButtonCode_m_buttonResetReset] -- add your button handler code here.. m_pReceiverControlListener->reset(); //[/UserButtonCode_m_buttonResetReset] } else if (buttonThatWasClicked == toggleButtonCmaTrainingEnable) { //[UserButtonCode_toggleButtonCmaTrainingEnable] -- add your button handler code here.. if (isOn) { m_params.cmaMode = cma_mode_training_enabled; } else { m_params.cmaMode = cma_mode_training_disabled; } m_pReceiverControlListener->setParams(m_params); //[/UserButtonCode_toggleButtonCmaTrainingEnable] } else if (buttonThatWasClicked == toggleButtonDfeTrainingEnable) { //[UserButtonCode_toggleButtonDfeTrainingEnable] -- add your button handler code here.. if (isOn) { m_params.dfeMode = dfe_mode_training_enabled; } else { m_params.dfeMode = dfe_mode_training_disabled; } m_pReceiverControlListener->setParams(m_params); //[/UserButtonCode_toggleButtonDfeTrainingEnable] } else if (buttonThatWasClicked == m_buttonDfeOffUpdateFromCma) { //[UserButtonCode_m_buttonDfeOffUpdateFromCma] -- add your button handler code here.. m_pReceiverControlListener->dfeOffUpdateFromCma(); //[/UserButtonCode_m_buttonDfeOffUpdateFromCma] } else if (buttonThatWasClicked == toggleButtonAgcEnable) { //[UserButtonCode_toggleButtonAgcEnable] -- add your button handler code here.. if (isOn) { m_params.agc_mode = agc_mode_enabled; } else { m_params.agc_mode = agc_mode_disabled; } m_pReceiverControlListener->setParams(m_params); //[/UserButtonCode_toggleButtonAgcEnable] } else if (buttonThatWasClicked == toggleButtonAgcMuForceTrack) { //[UserButtonCode_toggleButtonAgcMuForceTrack] -- add your button handler code here.. m_params.agcMu_index = (uint32_t)isOn; m_pReceiverControlListener->setParams(m_params); //[/UserButtonCode_toggleButtonAgcMuForceTrack] } else if (buttonThatWasClicked == toggleButtonSTRLoopFilterForceTrack) { //[UserButtonCode_toggleButtonSTRLoopFilterForceTrack] -- add your button handler code here.. m_params.str_loopfilter_coeff_index = (uint32_t)isOn; m_pReceiverControlListener->setParams(m_params); //[/UserButtonCode_toggleButtonSTRLoopFilterForceTrack] } else if (buttonThatWasClicked == toggleButtonCPRLoopFilterForceTrack) { //[UserButtonCode_toggleButtonCPRLoopFilterForceTrack] -- add your button handler code here.. m_params.cpr_loopfilter_coeff_index = (uint32_t)isOn; m_pReceiverControlListener->setParams(m_params); //[/UserButtonCode_toggleButtonCPRLoopFilterForceTrack] } else if (buttonThatWasClicked == toggleButtonDfeAutoUpdateEnable) { //[UserButtonCode_toggleButtonDfeAutoUpdateEnable] -- add your button handler code here.. m_params.dfeAutoUpdateEnable = isOn; m_pReceiverControlListener->setParams(m_params); //[/UserButtonCode_toggleButtonDfeAutoUpdateEnable] } else if (buttonThatWasClicked == m_buttonResetStatistic) { //[UserButtonCode_m_buttonResetStatistic] -- add your button handler code here.. m_pReceiverControlListener->statisticsReset(); //[/UserButtonCode_m_buttonResetStatistic] } else if (buttonThatWasClicked == m_buttonResetCPR) { //[UserButtonCode_m_buttonResetCPR] -- add your button handler code here.. m_pReceiverControlListener->cprReset(); //[/UserButtonCode_m_buttonResetCPR] } else if (buttonThatWasClicked == m_buttonResetStr) { //[UserButtonCode_m_buttonResetStr] -- add your button handler code here.. m_pReceiverControlListener->strReset(); //[/UserButtonCode_m_buttonResetStr] } else if (buttonThatWasClicked == toggleButtonCMAEnable) { //[UserButtonCode_toggleButtonCMAEnable] -- add your button handler code here.. if (isOn) { m_params.eq_mode = eq_mode_cma; } else { m_params.eq_mode = eq_mode_disabled; } m_pReceiverControlListener->setParams(m_params); //[/UserButtonCode_toggleButtonCMAEnable] } //[UserbuttonClicked_Post] //[/UserbuttonClicked_Post] } void ControlComponent::sliderValueChanged (Slider* sliderThatWasMoved) { //[UsersliderValueChanged_Pre] //[/UsersliderValueChanged_Pre] if (sliderThatWasMoved == m_sliderCarrierPhase) { m_params.CPR_phase = (float)sliderThatWasMoved->getValue(); m_pReceiverControlListener->setParams(m_params); } else if (sliderThatWasMoved == m_sliderAwgn_dB) { m_params.awgn_dB = (float)sliderThatWasMoved->getValue(); m_pReceiverControlListener->setParams(m_params); } //[UsersliderValueChanged_Post] //[/UsersliderValueChanged_Post] } void ControlComponent::comboBoxChanged (ComboBox* comboBoxThatHasChanged) { //[UsercomboBoxChanged_Pre] //[/UsercomboBoxChanged_Pre] if (comboBoxThatHasChanged == comboBoxCmaMode) { //[UserComboBoxCode_comboBoxCmaMode] -- add your combo box handling code here.. m_params.cmaType = (cma_type)(comboBoxThatHasChanged->getSelectedItemIndex()); m_pReceiverControlListener->setParams(m_params); //[/UserComboBoxCode_comboBoxCmaMode] } //[UsercomboBoxChanged_Post] //[/UsercomboBoxChanged_Post] } void ControlComponent::mouseDown (const MouseEvent& e) { //[UserCode_mouseDown] -- Add your code here... (void)e; m_buttonResetReset->grabKeyboardFocus(); //[/UserCode_mouseDown] } //[MiscUserCode] You can add your own definitions of your custom methods or any other code here... void ControlComponent::textEditorTextChanged (TextEditor &textEditor) { m_userParamEntryinProgress = textEditor.isTextInputActive(); } void ControlComponent::textEditorReturnKeyPressed (TextEditor &textEditor) { (void)textEditor; m_buttonResetReset->grabKeyboardFocus(); } void ControlComponent::textEditorFocusLost (TextEditor &textEditor) { if (textEditor.getName() == m_entryCmaMu->getName()) { m_params.eqMuCma = (float)1E-3*textEditor.getText().getFloatValue(); } if (textEditor.getName() == m_entryDfeMu->getName()) { m_params.eqMuDfe = (float)1E-3*textEditor.getText().getFloatValue(); } if (textEditor.getName() == m_entryAgcMu_0->getName()) { m_params.agcMu[0] = (float)1E-3*textEditor.getText().getFloatValue(); } if (textEditor.getName() == m_entryAgcMu_1->getName()) { m_params.agcMu[1] = (float)1E-3*textEditor.getText().getFloatValue(); } if (textEditor.getName() == m_entryCPRLoopFilterLead_0->getName()) { m_params.cpr_loopfilter_coeff[0].lead = (float)1E-6*textEditor.getText().getFloatValue(); } if (textEditor.getName() == m_entryCPRLoopFilterLead_1->getName()) { m_params.cpr_loopfilter_coeff[1].lead = (float)1E-6*textEditor.getText().getFloatValue(); } if (textEditor.getName() == m_entryCPRLoopFilterLag_0->getName()) { m_params.cpr_loopfilter_coeff[0].lag = (float)1E-6*textEditor.getText().getFloatValue(); } if (textEditor.getName() == m_entryCPRLoopFilterLag_1->getName()) { m_params.cpr_loopfilter_coeff[1].lag = (float)1E-6*textEditor.getText().getFloatValue(); } if (textEditor.getName() == m_entrySTRLoopFilterLead_0->getName()) { m_params.str_loopfilter_coeff[0].lead = (float)1E-6*textEditor.getText().getFloatValue(); } if (textEditor.getName() == m_entrySTRLoopFilterLead_1->getName()) { m_params.str_loopfilter_coeff[1].lead = (float)1E-6*textEditor.getText().getFloatValue(); } if (textEditor.getName() == m_entrySTRLoopFilterLag_0->getName()) { m_params.str_loopfilter_coeff[0].lag = (float)1E-6*textEditor.getText().getFloatValue(); } if (textEditor.getName() == m_entrySTRLoopFilterLag_1->getName()) { m_params.str_loopfilter_coeff[1].lag = (float)1E-6*textEditor.getText().getFloatValue(); } if (textEditor.getName() == m_entryNumBitsPerSymbol->getName()) { m_params.numBitsPerSymbol = textEditor.getText().getIntValue(); m_pTransmitterControlListener->setNumBitPerSymbol(m_params.numBitsPerSymbol); } if (textEditor.getName() == m_entrySymbolRate_rx->getName()) { m_params.symbolrate = textEditor.getText().getFloatValue(); } if (textEditor.getName() == m_entryDdcFrequency_rx->getName()) { m_params.ddc_freq = textEditor.getText().getFloatValue(); } 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_userParamEntryinProgress = false; } void ControlComponent::receiverStatusChanged(ReceiverInterface *pReceiver) { m_params = pReceiver->getParams(); m_status = pReceiver->getStatus(); sendChangeMessage(); } void ControlComponent::changeListenerCallback(juce::ChangeBroadcaster* source) { (void)source; comboBoxCmaMode->setSelectedItemIndex((int)m_params.cmaType, juce::NotificationType::dontSendNotification); toggleButtonDfeAutoUpdateEnable->setToggleState(m_params.dfeAutoUpdateEnable == true, juce::NotificationType::dontSendNotification); toggleButtonAgcMuForceTrack->setToggleState(m_params.agcMu_index == 1, juce::NotificationType::dontSendNotification); toggleButtonSTRLoopFilterForceTrack->setToggleState(m_params.str_loopfilter_coeff_index == 1, juce::NotificationType::dontSendNotification); toggleButtonCPRLoopFilterForceTrack->setToggleState(m_params.cpr_loopfilter_coeff_index == 1, juce::NotificationType::dontSendNotification); toggleButtonAgcEnable->setToggleState(m_params.agc_mode != agc_mode_disabled, juce::NotificationType::dontSendNotification); toggleButtonCPREnable->setToggleState(m_params.cpr_mode != cpr_mode_disabled, juce::NotificationType::dontSendNotification); toggleButtonSTREnable->setToggleState(m_params.str_mode != str_mode_disabled, juce::NotificationType::dontSendNotification); toggleButtonCMAEnable->setToggleState(m_params.eq_mode == eq_mode_cma, juce::NotificationType::dontSendNotification); toggleButtonDFEEnable->setToggleState(m_params.eq_mode == eq_mode_dfe, juce::NotificationType::dontSendNotification); toggleButtonCmaTrainingEnable->setToggleState(m_params.cmaMode != cma_mode_training_disabled, juce::NotificationType::dontSendNotification); toggleButtonDfeTrainingEnable->setToggleState(m_params.dfeMode == dfe_mode_training_enabled, juce::NotificationType::dontSendNotification); m_labelSymbolReceivedCount->setText(String(m_status.numSymbolsReceived), juce::NotificationType::dontSendNotification); m_labelFrameTotalCount->setText(String(m_status.frameStatRx.numTotalFrame), juce::NotificationType::dontSendNotification); m_labelFrameInvalidCount->setText(String(m_status.frameStatRx.numInvalidFrame), juce::NotificationType::dontSendNotification); m_labelFrameDataCount->setText(String(m_status.frameStatRx.numDataFrame), juce::NotificationType::dontSendNotification); m_labelFrameIdleCount->setText(String(m_status.frameStatRx.numIdleFrame), juce::NotificationType::dontSendNotification); m_labelFrameByteCount->setText(String(m_status.frameStatRx.numDataBytes), juce::NotificationType::dontSendNotification); m_labelNoiseStr->setText(String(m_status.noiseStr, 2), juce::NotificationType::dontSendNotification); m_labelNoiseCpr->setText(String(m_status.noiseCpr, 2), juce::NotificationType::dontSendNotification); if (!m_userParamEntryinProgress) { m_entryNumBitsPerSymbol->setText(String(m_params.numBitsPerSymbol), juce::NotificationType::dontSendNotification); m_entrySymbolRate_rx->setText(String(m_params.symbolrate, 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_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_1->setText(String((float)1E3*m_params.agcMu[1], 3), juce::NotificationType::dontSendNotification); m_entryCPRLoopFilterLead_0->setText(String((float)1E6*m_params.cpr_loopfilter_coeff[0].lead, 3), juce::NotificationType::dontSendNotification); m_entryCPRLoopFilterLead_1->setText(String((float)1E6*m_params.cpr_loopfilter_coeff[1].lead, 3), juce::NotificationType::dontSendNotification); m_entryCPRLoopFilterLag_0->setText(String((float)1E6*m_params.cpr_loopfilter_coeff[0].lag, 3), juce::NotificationType::dontSendNotification); m_entryCPRLoopFilterLag_1->setText(String((float)1E6*m_params.cpr_loopfilter_coeff[1].lag, 3), juce::NotificationType::dontSendNotification); m_entrySTRLoopFilterLead_0->setText(String((float)1E6*m_params.str_loopfilter_coeff[0].lead, 3), juce::NotificationType::dontSendNotification); m_entrySTRLoopFilterLead_1->setText(String((float)1E6*m_params.str_loopfilter_coeff[1].lead, 3), juce::NotificationType::dontSendNotification); m_entrySTRLoopFilterLag_0->setText(String((float)1E6*m_params.str_loopfilter_coeff[0].lag, 3), juce::NotificationType::dontSendNotification); m_entrySTRLoopFilterLag_1->setText(String((float)1E6*m_params.str_loopfilter_coeff[1].lag, 3), juce::NotificationType::dontSendNotification); } m_labelDdcDeltaFreq->setText(String(m_status.deltaFrequencyCPR, 3), juce::NotificationType::dontSendNotification); m_labelStrDeltaFreq->setText(String(m_status.deltaFrequencySTR, 3), juce::NotificationType::dontSendNotification); m_labelPowerRF->setText(String(m_status.powerRF_dB, 2), juce::NotificationType::dontSendNotification); m_labelDdcMinI->setText(String(m_status.ddcMinMax.min.real, 2), juce::NotificationType::dontSendNotification); m_labelDdcMaxI->setText(String(m_status.ddcMinMax.max.real, 2), juce::NotificationType::dontSendNotification); m_labelDdcMinQ->setText(String(m_status.ddcMinMax.min.imag, 2), juce::NotificationType::dontSendNotification); m_labelDdcMaxQ->setText(String(m_status.ddcMinMax.max.imag, 2), juce::NotificationType::dontSendNotification); m_labelDdcMinMag->setText(String(m_status.ddcMinMax.magMin, 2), juce::NotificationType::dontSendNotification); m_labelDdcMaxMag->setText(String(m_status.ddcMinMax.magMax, 2), juce::NotificationType::dontSendNotification); m_labelDdcPhiMinI->setText(String(m_status.ddcMinMax.phiAtMinI, 2), juce::NotificationType::dontSendNotification); m_labelDdcPhiMaxI->setText(String(m_status.ddcMinMax.phiAtMaxI, 2), juce::NotificationType::dontSendNotification); m_labelDdcPhiMinQ->setText(String(m_status.ddcMinMax.phiAtMinQ, 2), juce::NotificationType::dontSendNotification); m_labelDdcPhiMaxQ->setText(String(m_status.ddcMinMax.phiAtMaxQ, 2), juce::NotificationType::dontSendNotification); m_labelPowerDDC->setText(String(m_status.powerDDC_dB, 2), juce::NotificationType::dontSendNotification); m_labelPowerMF->setText(String(m_status.powerMF_dB, 2), juce::NotificationType::dontSendNotification); m_labelPowerCPR->setText(String(m_status.powerCPR_dB, 2), juce::NotificationType::dontSendNotification); m_labelPowerAGC2->setText(String(m_status.powerAGC_dB, 2), juce::NotificationType::dontSendNotification); m_labelPowerEQ->setText(String(m_status.powerEQ_dB, 2), juce::NotificationType::dontSendNotification); m_labelPowerDecision->setText(String(m_status.powerDecison_dB, 2), juce::NotificationType::dontSendNotification); m_labelPowerDecisionMag->setText(String(m_status.powerMagDecision_dB, 2), juce::NotificationType::dontSendNotification); m_labelPowerDecisionPhase->setText(String(m_status.powerPhiDecision_dB, 2), juce::NotificationType::dontSendNotification); m_labelSnrCurrent->setText(String(m_status.snrCurrent_dB, 2), juce::NotificationType::dontSendNotification); m_labelSnrCma->setText(String(m_status.snrCma_dB, 2), juce::NotificationType::dontSendNotification); m_labelSnrDfeOn->setText(String(m_status.snrDfeOn_dB, 2), juce::NotificationType::dontSendNotification); m_labelSnrDfeOff->setText(String(m_status.snrDfeOff_dB, 2), juce::NotificationType::dontSendNotification); m_labelSnrSymbolMag->setText(String(m_status.snrSymbolMagnitude_dB, 2), juce::NotificationType::dontSendNotification); m_labelSnrSymbolPhase->setText(String(m_status.snrSymbolPhase_dB, 2), juce::NotificationType::dontSendNotification); m_labelEbN0->setText(String(m_status.EB_N0, 2), juce::NotificationType::dontSendNotification); // Sliders m_sliderAwgn_dB->setValue(m_params.awgn_dB); m_sliderCarrierPhase->setValue(m_params.CPR_phase); if (m_params.strState == str_state_acquisition) { m_labelStrState->setText("Acquisition", juce::NotificationType::dontSendNotification); m_labelStrState->setColour (Label::backgroundColourId, juce::Colours::lightsalmon); } if (m_params.strState == str_state_track) { m_labelStrState->setText("Track", juce::NotificationType::dontSendNotification); m_labelStrState->setColour (Label::backgroundColourId, juce::Colours::lightgreen); } if (m_params.cprState == cpr_state_acquisition) { m_labelCprState->setText("Acquisition", juce::NotificationType::dontSendNotification); m_labelCprState->setColour (Label::backgroundColourId, juce::Colours::lightsalmon); } if (m_params.cprState == cpr_state_track) { m_labelCprState->setText("Track", juce::NotificationType::dontSendNotification); m_labelCprState->setColour (Label::backgroundColourId, juce::Colours::lightgreen); } if (m_params.agc_state == agc_state_acquisition) { m_labelAgcState->setText("Acquisition", juce::NotificationType::dontSendNotification); m_labelAgcState->setColour (Label::backgroundColourId, juce::Colours::lightsalmon); } if (m_params.agc_state == agc_state_track) { m_labelAgcState->setText("Track", juce::NotificationType::dontSendNotification); m_labelAgcState->setColour (Label::backgroundColourId, juce::Colours::lightgreen); } } //[/MiscUserCode] //============================================================================== #if 0 /* -- Introjucer information section -- This is where the Introjucer stores the metadata that describe this GUI layout, so make changes in here at your peril! BEGIN_JUCER_METADATA END_JUCER_METADATA */ #endif //[EndFile] You can add extra defines here... //[/EndFile]