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.
+
+