Skip to content

Commit 8b61e7b

Browse files
committed
LP-525 Fixed USB function handling - not allowing USBTelemetry on both, but requiring at least one. Adjusted common option combobox sizes.
1 parent 4bd3df4 commit 8b61e7b

3 files changed

Lines changed: 140 additions & 55 deletions

File tree

ground/gcs/src/plugins/config/commonhwsettingswidget.cpp

Lines changed: 34 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,20 +33,22 @@
3333
#include "uavobjectmanager.h"
3434

3535

36-
CommonHWSettingsWidget::CommonHWSettingsWidget(QWidget *parent) : QWidget(parent)
36+
CommonHWSettingsWidget::CommonHWSettingsWidget(QWidget *parent) : ConfigTaskWidget(parent, Child)
3737
{
3838
m_ui = new Ui_CommonHWSettingsWidget();
3939
m_ui->setupUi(this);
4040

4141
m_ui->cbDSMxBind->addItem(tr("Disabled"), 0);
4242

43-
// combo->addItem(options.at(optionIndex), QVariant(optionIndex));
44-
4543
setFeatures(0);
4644

4745
// Relay signals from private members
4846
connect(m_ui->cbUSBHID, SIGNAL(currentIndexChanged(int)), this, SIGNAL(USBHIDFunctionChanged(int)));
4947
connect(m_ui->cbUSBVCP, SIGNAL(currentIndexChanged(int)), this, SIGNAL(USBVCPFunctionChanged(int)));
48+
49+
// And these are here to handle conflicting VCP & HID options (such as USBTelemetry).
50+
connect(m_ui->cbUSBHID, SIGNAL(currentIndexChanged(int)), this, SLOT(USBHIDComboChanged(int)));
51+
connect(m_ui->cbUSBVCP, SIGNAL(currentIndexChanged(int)), this, SLOT(USBVCPComboChanged(int)));
5052
}
5153

5254
CommonHWSettingsWidget::~CommonHWSettingsWidget()
@@ -73,9 +75,7 @@ void CommonHWSettingsWidget::refreshWidgetsValues(UAVObject *obj)
7375
{
7476
Q_UNUSED(obj);
7577

76-
UAVObjectManager *objMngr = ExtensionSystem::PluginManager::instance()->getObject<UAVObjectManager>();
77-
78-
int option = HwSettings::GetInstance(objMngr)->getDSMxBind();
78+
int option = HwSettings::GetInstance(getObjectManager())->getDSMxBind();
7979

8080
if (m_ui->cbDSMxBind->count() == 0) {
8181
m_ui->cbDSMxBind->addItem(tr("None"), 0);
@@ -141,3 +141,31 @@ QComboBox *CommonHWSettingsWidget::USBVCPComboBox()
141141
{
142142
return m_ui->cbUSBVCP;
143143
}
144+
145+
bool CommonHWSettingsWidget::USBFunctionConflict()
146+
{
147+
return (getComboboxSelectedOption(m_ui->cbUSBHID) == HwSettings::USB_HIDPORT_USBTELEMETRY)
148+
&& (getComboboxSelectedOption(m_ui->cbUSBVCP) == HwSettings::USB_VCPPORT_USBTELEMETRY);
149+
}
150+
151+
void CommonHWSettingsWidget::USBHIDComboChanged(int index)
152+
{
153+
Q_UNUSED(index);
154+
155+
if (USBFunctionConflict()) {
156+
setComboboxSelectedOption(m_ui->cbUSBVCP, HwSettings::USB_VCPPORT_DISABLED);
157+
} else if (getComboboxSelectedOption(m_ui->cbUSBHID) != HwSettings::USB_HIDPORT_USBTELEMETRY) {
158+
setComboboxSelectedOption(m_ui->cbUSBVCP, HwSettings::USB_VCPPORT_USBTELEMETRY);
159+
}
160+
}
161+
162+
void CommonHWSettingsWidget::USBVCPComboChanged(int index)
163+
{
164+
Q_UNUSED(index);
165+
166+
if (USBFunctionConflict()) {
167+
setComboboxSelectedOption(m_ui->cbUSBHID, HwSettings::USB_HIDPORT_DISABLED);
168+
} else if (getComboboxSelectedOption(m_ui->cbUSBVCP) != HwSettings::USB_VCPPORT_USBTELEMETRY) {
169+
setComboboxSelectedOption(m_ui->cbUSBHID, HwSettings::USB_HIDPORT_USBTELEMETRY);
170+
}
171+
}

ground/gcs/src/plugins/config/commonhwsettingswidget.h

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131

3232
class Ui_CommonHWSettingsWidget;
3333

34-
class CommonHWSettingsWidget : public QWidget {
34+
class CommonHWSettingsWidget : public ConfigTaskWidget {
3535
Q_OBJECT
3636

3737
public:
@@ -56,8 +56,14 @@ class CommonHWSettingsWidget : public QWidget {
5656
void USBHIDFunctionChanged(int index);
5757
void USBVCPFunctionChanged(int index);
5858

59+
private slots:
60+
void USBHIDComboChanged(int index);
61+
void USBVCPComboChanged(int index);
62+
5963
private:
6064
Ui_CommonHWSettingsWidget *m_ui;
65+
66+
bool USBFunctionConflict();
6167
};
6268

6369
#endif // COMMONHWSETTINGSWIDGET_H

ground/gcs/src/plugins/config/commonhwsettingswidget.ui

Lines changed: 99 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
<rect>
77
<x>0</x>
88
<y>0</y>
9-
<width>604</width>
10-
<height>189</height>
9+
<width>746</width>
10+
<height>200</height>
1111
</rect>
1212
</property>
1313
<layout class="QGridLayout" name="gridLayout_10">
@@ -24,50 +24,7 @@
2424
</property>
2525
</spacer>
2626
</item>
27-
<item row="4" column="6">
28-
<spacer name="horizontalSpacer_11">
29-
<property name="orientation">
30-
<enum>Qt::Horizontal</enum>
31-
</property>
32-
<property name="sizeHint" stdset="0">
33-
<size>
34-
<width>40</width>
35-
<height>20</height>
36-
</size>
37-
</property>
38-
</spacer>
39-
</item>
40-
<item row="4" column="3">
41-
<spacer name="horizontalSpacer_9">
42-
<property name="orientation">
43-
<enum>Qt::Horizontal</enum>
44-
</property>
45-
<property name="sizeHint" stdset="0">
46-
<size>
47-
<width>40</width>
48-
<height>20</height>
49-
</size>
50-
</property>
51-
</spacer>
52-
</item>
53-
<item row="1" column="1" colspan="5">
54-
<widget class="Line" name="line">
55-
<property name="orientation">
56-
<enum>Qt::Horizontal</enum>
57-
</property>
58-
</widget>
59-
</item>
60-
<item row="0" column="1" colspan="5">
61-
<widget class="QLabel" name="label">
62-
<property name="text">
63-
<string>Options</string>
64-
</property>
65-
<property name="alignment">
66-
<set>Qt::AlignCenter</set>
67-
</property>
68-
</widget>
69-
</item>
70-
<item row="2" column="4" rowspan="5" colspan="2">
27+
<item row="2" column="3" rowspan="5" colspan="2">
7128
<layout class="QGridLayout" name="gridLayout_2">
7229
<property name="verticalSpacing">
7330
<number>-1</number>
@@ -105,7 +62,7 @@
10562
</property>
10663
</widget>
10764
</item>
108-
<item row="8" column="0" colspan="2">
65+
<item row="9" column="0" colspan="2">
10966
<spacer name="verticalSpacer_2">
11067
<property name="orientation">
11168
<enum>Qt::Vertical</enum>
@@ -183,6 +140,38 @@
183140
</property>
184141
</widget>
185142
</item>
143+
<item row="8" column="0">
144+
<spacer name="horizontalSpacer_3">
145+
<property name="orientation">
146+
<enum>Qt::Horizontal</enum>
147+
</property>
148+
<property name="sizeType">
149+
<enum>QSizePolicy::Minimum</enum>
150+
</property>
151+
<property name="sizeHint" stdset="0">
152+
<size>
153+
<width>150</width>
154+
<height>1</height>
155+
</size>
156+
</property>
157+
</spacer>
158+
</item>
159+
<item row="8" column="1">
160+
<spacer name="horizontalSpacer_4">
161+
<property name="orientation">
162+
<enum>Qt::Horizontal</enum>
163+
</property>
164+
<property name="sizeType">
165+
<enum>QSizePolicy::Minimum</enum>
166+
</property>
167+
<property name="sizeHint" stdset="0">
168+
<size>
169+
<width>180</width>
170+
<height>1</height>
171+
</size>
172+
</property>
173+
</spacer>
174+
</item>
186175
</layout>
187176
</item>
188177
<item row="2" column="1" rowspan="5" colspan="2">
@@ -282,7 +271,7 @@
282271
</property>
283272
</widget>
284273
</item>
285-
<item row="4" column="0" colspan="2">
274+
<item row="5" column="0" colspan="2">
286275
<spacer name="verticalSpacer">
287276
<property name="orientation">
288277
<enum>Qt::Vertical</enum>
@@ -298,8 +287,70 @@
298287
</property>
299288
</spacer>
300289
</item>
290+
<item row="4" column="0">
291+
<spacer name="horizontalSpacer">
292+
<property name="orientation">
293+
<enum>Qt::Horizontal</enum>
294+
</property>
295+
<property name="sizeType">
296+
<enum>QSizePolicy::Minimum</enum>
297+
</property>
298+
<property name="sizeHint" stdset="0">
299+
<size>
300+
<width>150</width>
301+
<height>1</height>
302+
</size>
303+
</property>
304+
</spacer>
305+
</item>
306+
<item row="4" column="1">
307+
<spacer name="horizontalSpacer_2">
308+
<property name="orientation">
309+
<enum>Qt::Horizontal</enum>
310+
</property>
311+
<property name="sizeType">
312+
<enum>QSizePolicy::Minimum</enum>
313+
</property>
314+
<property name="sizeHint" stdset="0">
315+
<size>
316+
<width>180</width>
317+
<height>1</height>
318+
</size>
319+
</property>
320+
</spacer>
321+
</item>
301322
</layout>
302323
</item>
324+
<item row="4" column="5">
325+
<spacer name="horizontalSpacer_11">
326+
<property name="orientation">
327+
<enum>Qt::Horizontal</enum>
328+
</property>
329+
<property name="sizeHint" stdset="0">
330+
<size>
331+
<width>40</width>
332+
<height>20</height>
333+
</size>
334+
</property>
335+
</spacer>
336+
</item>
337+
<item row="1" column="1" colspan="4">
338+
<widget class="Line" name="line">
339+
<property name="orientation">
340+
<enum>Qt::Horizontal</enum>
341+
</property>
342+
</widget>
343+
</item>
344+
<item row="0" column="1" colspan="4">
345+
<widget class="QLabel" name="label">
346+
<property name="text">
347+
<string>Options</string>
348+
</property>
349+
<property name="alignment">
350+
<set>Qt::AlignCenter</set>
351+
</property>
352+
</widget>
353+
</item>
303354
</layout>
304355
</widget>
305356
<resources/>

0 commit comments

Comments
 (0)