diff --git a/ground/gcs/src/plugins/config/configoplinkwidget.cpp b/ground/gcs/src/plugins/config/configoplinkwidget.cpp index 611cb7a17..64b39d016 100644 --- a/ground/gcs/src/plugins/config/configoplinkwidget.cpp +++ b/ground/gcs/src/plugins/config/configoplinkwidget.cpp @@ -41,7 +41,6 @@ // Channel range and Frequency display static const int MAX_CHANNEL_NUM = 250; static const int MIN_CHANNEL_RANGE = 10; -static const float FIRST_FREQUENCY = 430.000; static const float FREQUENCY_STEP = 0.040; ConfigOPLinkWidget::ConfigOPLinkWidget(QWidget *parent) : ConfigTaskWidget(parent, false), statusUpdated(false) @@ -76,6 +75,7 @@ ConfigOPLinkWidget::ConfigOPLinkWidget(QWidget *parent) : ConfigTaskWidget(paren addWidgetBinding("OPLinkSettings", "LinkType", m_oplink->LinkType); addWidgetBinding("OPLinkSettings", "CoordID", m_oplink->CoordID); addWidgetBinding("OPLinkSettings", "CustomDeviceID", m_oplink->CustomDeviceID); + addWidgetBinding("OPLinkSettings", "RFBand", m_oplink->RFBand); addWidgetBinding("OPLinkSettings", "MinChannel", m_oplink->MinimumChannel); addWidgetBinding("OPLinkSettings", "MaxChannel", m_oplink->MaximumChannel); addWidgetBinding("OPLinkSettings", "MaxRFPower", m_oplink->MaxRFTxPower); @@ -111,6 +111,7 @@ ConfigOPLinkWidget::ConfigOPLinkWidget(QWidget *parent) : ConfigTaskWidget(paren // Connect the selection changed signals. connect(m_oplink->Protocol, SIGNAL(currentIndexChanged(int)), this, SLOT(protocolChanged())); connect(m_oplink->LinkType, SIGNAL(currentIndexChanged(int)), this, SLOT(linkTypeChanged())); + connect(m_oplink->RFBand, SIGNAL(currentIndexChanged(int)), this, SLOT(rfBandChanged())); connect(m_oplink->MinimumChannel, SIGNAL(valueChanged(int)), this, SLOT(minChannelChanged())); connect(m_oplink->MaximumChannel, SIGNAL(valueChanged(int)), this, SLOT(maxChannelChanged())); connect(m_oplink->MainPort, SIGNAL(currentIndexChanged(int)), this, SLOT(mainPortChanged())); @@ -256,6 +257,7 @@ void ConfigOPLinkWidget::updateSettings() m_oplink->UnbindButton->setEnabled(is_enabled && is_bound && !is_coordinator); m_oplink->CustomDeviceID->setEnabled(is_coordinator); + m_oplink->RFBand->setEnabled(is_receiver || is_coordinator); m_oplink->MinimumChannel->setEnabled(is_receiver || is_coordinator); m_oplink->MaximumChannel->setEnabled(is_receiver || is_coordinator); @@ -289,6 +291,27 @@ void ConfigOPLinkWidget::maxChannelChanged() channelChanged(true); } +void ConfigOPLinkWidget::rfBandChanged() +{ + switch (getComboboxSelectedOption(m_oplink->RFBand)) { + case OPLinkSettings::RFBAND_915MHZ: + frequency_base = 900.0f; + frequency_step = FREQUENCY_STEP * 2.0f; + break; + case OPLinkSettings::RFBAND_868MHZ: + frequency_base = 860.0f; + frequency_step = FREQUENCY_STEP * 2.0f; + break; + case OPLinkSettings::RFBAND_433MHZ: + frequency_base = 430.0f; + frequency_step = FREQUENCY_STEP; + break; + } + + // Update frequency display according to the RF band change + updateFrequencyDisplay(); +} + void ConfigOPLinkWidget::channelChanged(bool isMax) { int minChannel = m_oplink->MinimumChannel->value(); @@ -315,9 +338,14 @@ void ConfigOPLinkWidget::channelChanged(bool isMax) m_oplink->MaximumChannel->setValue(maxChannel); m_oplink->MinimumChannel->setValue(minChannel); + updateFrequencyDisplay(); +} + +void ConfigOPLinkWidget::updateFrequencyDisplay() +{ // Calculate and Display frequency in MHz - float minFrequency = FIRST_FREQUENCY + (minChannel * FREQUENCY_STEP); - float maxFrequency = FIRST_FREQUENCY + (maxChannel * FREQUENCY_STEP); + float minFrequency = frequency_base + (m_oplink->MinimumChannel->value() * frequency_step); + float maxFrequency = frequency_base + (m_oplink->MaximumChannel->value() * frequency_step); m_oplink->MinFreq->setText("(" + QString::number(minFrequency, 'f', 3) + " MHz)"); m_oplink->MaxFreq->setText("(" + QString::number(maxFrequency, 'f', 3) + " MHz)"); diff --git a/ground/gcs/src/plugins/config/configoplinkwidget.h b/ground/gcs/src/plugins/config/configoplinkwidget.h index 70043e257..9cdb37ee9 100644 --- a/ground/gcs/src/plugins/config/configoplinkwidget.h +++ b/ground/gcs/src/plugins/config/configoplinkwidget.h @@ -46,6 +46,10 @@ protected: virtual void refreshWidgetsValuesImpl(UAVObject *obj); private: + // Frequency display settings + float frequency_base; + float frequency_step; + Ui_OPLinkWidget *m_oplink; OPLinkStatus *oplinkStatusObj; @@ -68,7 +72,9 @@ private slots: void minChannelChanged(); void maxChannelChanged(); + void rfBandChanged(); void channelChanged(bool isMax); + void updateFrequencyDisplay(); void mainPortChanged(); void flexiPortChanged(); diff --git a/ground/gcs/src/plugins/config/oplink.ui b/ground/gcs/src/plugins/config/oplink.ui index 546fd0a37..7c074263a 100644 --- a/ground/gcs/src/plugins/config/oplink.ui +++ b/ground/gcs/src/plugins/config/oplink.ui @@ -95,22 +95,6 @@ Configuration - - - - - 50 - false - - - - Flexi Port - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - @@ -148,345 +132,6 @@ The device must be rebooted for the binding to take place. - - - - Clear the binding/coordinator ID - - - Unbind - - - - - - - - - - 0 - 0 - - - - - 60 - 16777215 - - - - - 50 - false - - - - Channel 0 is 430 MHz, channel 250 is 440 MHz, and the channel spacing is 40 KHz. - - - 250 - - - - - - - - 0 - 0 - - - - - 16777215 - 16777215 - - - - 440.000 (MHz) - - - - - - - - - - 50 - false - - - - VCP Port - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - 80 - 0 - - - - - 50 - false - - - - Max Chan - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - 80 - 0 - - - - - 50 - false - - - - Min Chan - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 16777215 - 16777215 - - - - Choose the function for the flexi port. - - - - - - - - 16777215 - 16777215 - - - - Set the modem protocol - - - Qt::LeftToRight - - - 0 - - - - - - - - 16777215 - 16777215 - - - - Choose the function for the USB virtual com port. - - - - - - - Com speed in bps. - - - - - - - - - - 0 - 0 - - - - - 60 - 16777215 - - - - - 50 - false - - - - Channel 0 is 430 MHz, channel 250 is 440 MHz, and the channel spacing is 40 KHz. - - - 250 - - - - - - - - 0 - 0 - - - - - 16777215 - 16777215 - - - - 430.000 (MHz) - - - - - - - - - - 50 - false - - - - Protocol - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 50 - false - - - - Com Speed - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 16777215 - 16777215 - - - - Set the maximum TX output power the modem will use (mW) -0 to disable the modem. - - - Qt::LeftToRight - - - 0 - - - - - - - - 50 - false - - - - Link Type - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 50 - false - - - - Device ID - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 16777215 - 16777215 - - - - Configure what type of packets will be sent over the link - - - Qt::LeftToRight - - - 0 - - - @@ -545,6 +190,82 @@ Leave blank to use autogenerated Device ID. + + + + + 50 + false + + + + Main Port + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + + 80 + 0 + + + + + 50 + false + + + + Max Chan + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 16777215 + 16777215 + + + + Set the modem protocol + + + Qt::LeftToRight + + + 0 + + + + + + + + 16777215 + 16777215 + + + + Choose the function for the main port. + + + @@ -567,24 +288,72 @@ Leave blank to use autogenerated Device ID. - - - - - 50 - false - + + + + Qt::Horizontal - - Main Port + + + 40 + 20 + - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - + - - + + + + + + + 0 + 0 + + + + + 60 + 16777215 + + + + + 50 + false + + + + Channel 0 is 430 MHz, channel 250 is 440 MHz, and the channel spacing is 40 KHz. + + + 250 + + + + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + 440.000 (MHz) + + + + + + + 16777215 @@ -592,7 +361,183 @@ Leave blank to use autogenerated Device ID. - Choose the function for the main port. + Choose the function for the flexi port. + + + + + + + Clear the binding/coordinator ID + + + Unbind + + + + + + + + 0 + 0 + + + + + 80 + 0 + + + + + 50 + false + + + + Min Chan + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 50 + false + + + + Protocol + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 50 + false + + + + Com Speed + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Com speed in bps. + + + + + + + + 50 + false + + + + Link Type + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + 0 + 0 + + + + + 60 + 16777215 + + + + + 50 + false + + + + Channel 0 is 430 MHz, channel 250 is 440 MHz, and the channel spacing is 40 KHz. + + + 250 + + + + + + + + 0 + 0 + + + + + 16777215 + 16777215 + + + + 430.000 (MHz) + + + + + + + + + + 50 + false + + + + Device ID + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 50 + false + + + + Flexi Port + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter @@ -615,18 +560,108 @@ Leave blank to use autogenerated Device ID. - - - - Qt::Horizontal - - + + + - 40 - 20 + 16777215 + 16777215 - + + Configure what type of packets will be sent over the link + + + Qt::LeftToRight + + + 0 + + + + + + + + 16777215 + 16777215 + + + + Set the maximum TX output power the modem will use (mW) +0 to disable the modem. + + + Qt::LeftToRight + + + 0 + + + + + + + + 50 + false + + + + RF Band + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 90 + 16777215 + + + + Set the RF Band used. + + + Qt::LeftToRight + + + 0 + + + + + + + + 50 + false + + + + VCP Port + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 16777215 + 16777215 + + + + Choose the function for the USB virtual com port. + +