From b1f7f5e4bfc0ff648858398c2081af475e70e6ba Mon Sep 17 00:00:00 2001 From: Vladimir Zidar Date: Tue, 30 Aug 2016 01:22:57 +0200 Subject: [PATCH] LP-377 Implement handling of USB_CDC_REQ_SET_LINE_CODING control request for F4 and F1 targets. Removes UsbComBridgeSpeed from hwsettings object. Removes GCS combo boxes related to UsbComBridgeSpeed. Fixes few places where UsbComBridgeSpeed was used for DebugConsole speed config. --- flight/modules/ComUsbBridge/ComUsbBridge.c | 41 ++-------- flight/pios/common/pios_com.c | 24 ++++++ flight/pios/inc/pios_com.h | 3 + flight/pios/inc/pios_usb_defs.h | 3 + flight/pios/stm32f10x/pios_usb_cdc.c | 38 +++++++++ flight/pios/stm32f10x/pios_usbhook.c | 13 +++- flight/pios/stm32f4xx/pios_usb_cdc.c | 29 +++++-- .../gcs/src/plugins/config/cc_hw_settings.ui | 20 ----- .../plugins/config/config_cc_hw_widget.cpp | 1 - .../src/plugins/config/configrevohwwidget.cpp | 21 ++--- .../src/plugins/config/configrevohwwidget.ui | 32 -------- .../plugins/config/configrevonanohwwidget.cpp | 69 ++-------------- .../plugins/config/configrevonanohwwidget.ui | 78 +------------------ .../plugins/config/configsparky2hwwidget.cpp | 16 +--- .../plugins/config/configsparky2hwwidget.ui | 33 -------- shared/uavobjectdefinition/hwsettings.xml | 2 +- 16 files changed, 126 insertions(+), 297 deletions(-) diff --git a/flight/modules/ComUsbBridge/ComUsbBridge.c b/flight/modules/ComUsbBridge/ComUsbBridge.c index 400b921ac..7f4af0e95 100644 --- a/flight/modules/ComUsbBridge/ComUsbBridge.c +++ b/flight/modules/ComUsbBridge/ComUsbBridge.c @@ -42,8 +42,9 @@ static void com2UsbBridgeTask(void *parameters); static void usb2ComBridgeTask(void *parameters); -static void updateSettings(UAVObjEvent *ev); static void usb2ComBridgeSetCtrlLine(uint32_t com_id, uint32_t mask, uint32_t state); +static void usb2ComBridgeSetBaudRate(uint32_t com_id, uint32_t baud); + // **************** // Private constants @@ -105,6 +106,9 @@ static int32_t comUsbBridgeInitialize(void) PIOS_COM_RegisterCtrlLineCallback(vcp_port, usb2ComBridgeSetCtrlLine, usart_port); + PIOS_COM_RegisterBaudRateCallback(vcp_port, + usb2ComBridgeSetBaudRate, + usart_port); } #ifdef MODULE_COMUSBBRIDGE_BUILTIN @@ -127,8 +131,6 @@ static int32_t comUsbBridgeInitialize(void) PIOS_Assert(com2usb_buf); usb2com_buf = pios_malloc(BRIDGE_BUF_LEN); PIOS_Assert(usb2com_buf); - HwSettingsConnectCallback(&updateSettings); - updateSettings(0); } return 0; @@ -186,36 +188,7 @@ static void usb2ComBridgeSetCtrlLine(uint32_t com_id, uint32_t mask, uint32_t st PIOS_COM_SetCtrlLine(com_id, mask, state); } -static void updateSettings(__attribute__((unused)) UAVObjEvent *ev) +static void usb2ComBridgeSetBaudRate(uint32_t com_id, uint32_t baud) { - if (usart_port) { - // Retrieve settings - uint8_t speed; - HwSettingsComUsbBridgeSpeedGet(&speed); - - // Set port speed - switch (speed) { - case HWSETTINGS_COMUSBBRIDGESPEED_2400: - PIOS_COM_ChangeBaud(usart_port, 2400); - break; - case HWSETTINGS_COMUSBBRIDGESPEED_4800: - PIOS_COM_ChangeBaud(usart_port, 4800); - break; - case HWSETTINGS_COMUSBBRIDGESPEED_9600: - PIOS_COM_ChangeBaud(usart_port, 9600); - break; - case HWSETTINGS_COMUSBBRIDGESPEED_19200: - PIOS_COM_ChangeBaud(usart_port, 19200); - break; - case HWSETTINGS_COMUSBBRIDGESPEED_38400: - PIOS_COM_ChangeBaud(usart_port, 38400); - break; - case HWSETTINGS_COMUSBBRIDGESPEED_57600: - PIOS_COM_ChangeBaud(usart_port, 57600); - break; - case HWSETTINGS_COMUSBBRIDGESPEED_115200: - PIOS_COM_ChangeBaud(usart_port, 115200); - break; - } - } + PIOS_COM_ChangeBaud(com_id, baud); } diff --git a/flight/pios/common/pios_com.c b/flight/pios/common/pios_com.c index db7d85f60..b0a394b6c 100644 --- a/flight/pios/common/pios_com.c +++ b/flight/pios/common/pios_com.c @@ -333,6 +333,30 @@ int32_t PIOS_COM_RegisterCtrlLineCallback(uint32_t com_id, pios_com_callback_ctr return 0; } +/** + * Set baud rate callback associated with the port + * \param[in] port COM port + * \param[in] baud_rate_cb Callback function + * \param[in] context context to pass to the callback function + * \return -1 if port not available + * \return 0 on success + */ +int32_t PIOS_COM_RegisterBaudRateCallback(uint32_t com_id, pios_com_callback_baud_rate baud_rate_cb, uint32_t context) +{ + struct pios_com_dev *com_dev = (struct pios_com_dev *)com_id; + + if (!PIOS_COM_validate(com_dev)) { + /* Undefined COM port for this board (see pios_board.c) */ + return -1; + } + + /* Invoke the driver function if it exists */ + if (com_dev->driver->bind_baud_rate_cb) { + com_dev->driver->bind_baud_rate_cb(com_dev->lower_id, baud_rate_cb, context); + } + + return 0; +} static int32_t PIOS_COM_SendBufferNonBlockingInternal(struct pios_com_dev *com_dev, const uint8_t *buffer, uint16_t len) { diff --git a/flight/pios/inc/pios_com.h b/flight/pios/inc/pios_com.h index cf209c2ba..53b2ed079 100644 --- a/flight/pios/inc/pios_com.h +++ b/flight/pios/inc/pios_com.h @@ -37,6 +37,7 @@ typedef uint16_t (*pios_com_callback)(uint32_t context, uint8_t *buf, uint16_t buf_len, uint16_t *headroom, bool *task_woken); typedef void (*pios_com_callback_ctrl_line)(uint32_t context, uint32_t mask, uint32_t state); +typedef void (*pios_com_callback_baud_rate)(uint32_t context, uint32_t baud); struct pios_com_driver { void (*init)(uint32_t id); @@ -47,6 +48,7 @@ struct pios_com_driver { void (*bind_rx_cb)(uint32_t id, pios_com_callback rx_in_cb, uint32_t context); void (*bind_tx_cb)(uint32_t id, pios_com_callback tx_out_cb, uint32_t context); void (*bind_ctrl_line_cb)(uint32_t id, pios_com_callback_ctrl_line ctrl_line_cb, uint32_t context); + void (*bind_baud_rate_cb)(uint32_t id, pios_com_callback_baud_rate baud_rate_cb, uint32_t context); uint32_t (*available)(uint32_t id); }; @@ -59,6 +61,7 @@ extern int32_t PIOS_COM_Init(uint32_t *com_id, const struct pios_com_driver *dri extern int32_t PIOS_COM_ChangeBaud(uint32_t com_id, uint32_t baud); extern int32_t PIOS_COM_SetCtrlLine(uint32_t com_id, uint32_t mask, uint32_t state); extern int32_t PIOS_COM_RegisterCtrlLineCallback(uint32_t usart_id, pios_com_callback_ctrl_line ctrl_line_cb, uint32_t context); +extern int32_t PIOS_COM_RegisterBaudRateCallback(uint32_t usart_id, pios_com_callback_baud_rate baud_rate_cb, uint32_t context); extern int32_t PIOS_COM_SendCharNonBlocking(uint32_t com_id, char c); extern int32_t PIOS_COM_SendChar(uint32_t com_id, char c); extern int32_t PIOS_COM_SendBufferNonBlocking(uint32_t com_id, const uint8_t *buffer, uint16_t len); diff --git a/flight/pios/inc/pios_usb_defs.h b/flight/pios/inc/pios_usb_defs.h index 45eb95656..cca131e85 100644 --- a/flight/pios/inc/pios_usb_defs.h +++ b/flight/pios/inc/pios_usb_defs.h @@ -83,6 +83,9 @@ enum usb_ep_attr { #define htousbl(v) (v) #endif +#define usbstoh(v) htousbs(v) +#define usbltoh(v) htousbl(v) + #define USB_EP_IN(ep) ((uint8_t)(0x80 | ((ep) & 0xF))) #define USB_EP_OUT(ep) ((uint8_t)(0x00 | ((ep) & 0xF))) diff --git a/flight/pios/stm32f10x/pios_usb_cdc.c b/flight/pios/stm32f10x/pios_usb_cdc.c index 4b45cbeff..84255191f 100644 --- a/flight/pios/stm32f10x/pios_usb_cdc.c +++ b/flight/pios/stm32f10x/pios_usb_cdc.c @@ -41,6 +41,7 @@ static void PIOS_USB_CDC_RegisterTxCallback(uint32_t usbcdc_id, pios_com_callback tx_out_cb, uint32_t context); static void PIOS_USB_CDC_RegisterRxCallback(uint32_t usbcdc_id, pios_com_callback rx_in_cb, uint32_t context); +static void PIOS_USB_CDC_RegisterBaudRateCallback(uint32_t usbcdc_id, pios_com_callback_baud_rate baud_rate_cb, uint32_t context); static void PIOS_USB_CDC_TxStart(uint32_t usbcdc_id, uint16_t tx_bytes_avail); static void PIOS_USB_CDC_RxStart(uint32_t usbcdc_id, uint16_t rx_bytes_avail); static uint32_t PIOS_USB_CDC_Available(uint32_t usbcdc_id); @@ -50,6 +51,7 @@ const struct pios_com_driver pios_usb_cdc_com_driver = { .rx_start = PIOS_USB_CDC_RxStart, .bind_tx_cb = PIOS_USB_CDC_RegisterTxCallback, .bind_rx_cb = PIOS_USB_CDC_RegisterRxCallback, + .bind_baud_rate_cb = PIOS_USB_CDC_RegisterBaudRateCallback, .available = PIOS_USB_CDC_Available, }; @@ -68,6 +70,9 @@ struct pios_usb_cdc_dev { pios_com_callback tx_out_cb; uint32_t tx_out_context; + pios_com_callback_baud_rate baud_rate_cb; + uint32_t baud_rate_context; + uint8_t rx_packet_buffer[PIOS_USB_BOARD_CDC_DATA_LENGTH]; /* * NOTE: This is -1 as somewhat of a hack. It ensures that we always send packets @@ -450,4 +455,37 @@ static void PIOS_USB_CDC_CTRL_EP_IN_Callback(void) SetEPTxValid(usb_cdc_dev->cfg->ctrl_tx_ep); } +static void PIOS_USB_CDC_RegisterBaudRateCallback(uint32_t usbcdc_id, pios_com_callback_baud_rate baud_rate_cb, uint32_t context) +{ + struct pios_usb_cdc_dev *usb_cdc_dev = (struct pios_usb_cdc_dev *)usbcdc_id; + + bool valid = PIOS_USB_CDC_validate(usb_cdc_dev); + + PIOS_Assert(valid); + + /* + * Order is important in these assignments since ISR uses _cb + * field to determine if it's ok to dereference _cb and _context + */ + usb_cdc_dev->baud_rate_context = context; + usb_cdc_dev->baud_rate_cb = baud_rate_cb; +} + +void PIOS_USB_CDC_SetLineCoding_Completed() +{ + struct pios_usb_cdc_dev *usb_cdc_dev = (struct pios_usb_cdc_dev *)pios_usb_cdc_id; + + bool valid = PIOS_USB_CDC_validate(usb_cdc_dev); + + if (!valid) { + /* No CDC interface is configured */ + return; + } + + if (usb_cdc_dev->baud_rate_cb) { + usb_cdc_dev->baud_rate_cb(usb_cdc_dev->baud_rate_context, usbltoh(line_coding.dwDTERate)); + } +} + + #endif /* PIOS_INCLUDE_USB_CDC */ diff --git a/flight/pios/stm32f10x/pios_usbhook.c b/flight/pios/stm32f10x/pios_usbhook.c index c1173db7d..55e0e40e5 100644 --- a/flight/pios/stm32f10x/pios_usbhook.c +++ b/flight/pios/stm32f10x/pios_usbhook.c @@ -42,6 +42,8 @@ /* STM32 USB Library Definitions */ #include "usb_lib.h" +static void (*ep0_rxready_cb)(void) = 0; + static ONE_DESCRIPTOR Device_Descriptor; void PIOS_USBHOOK_RegisterDevice(const uint8_t *desc, uint16_t desc_size) @@ -275,7 +277,13 @@ static void PIOS_USBHOOK_SetDeviceAddress(void) * Return : None. *******************************************************************************/ static void PIOS_USBHOOK_Status_In(void) -{} +{ + /* this callback gets executed after sending ZLP and doing In0_Process(), to ack */ + if (ep0_rxready_cb) { + ep0_rxready_cb(); + ep0_rxready_cb = 0; + } +} /******************************************************************************* * Function Name : PIOS_USBHOOK_Status_Out @@ -296,6 +304,7 @@ static void PIOS_USBHOOK_Status_Out(void) *******************************************************************************/ extern uint8_t *PIOS_USB_CDC_SetLineCoding(uint16_t Length); extern const uint8_t *PIOS_USB_CDC_GetLineCoding(uint16_t Length); +extern void PIOS_USB_CDC_SetLineCoding_Completed(); static RESULT PIOS_USBHOOK_Data_Setup(uint8_t RequestNo) { @@ -305,6 +314,7 @@ static RESULT PIOS_USBHOOK_Data_Setup(uint8_t RequestNo) CopyInRoutine = NULL; CopyOutRoutine = NULL; + switch (Type_Recipient) { case (STANDARD_REQUEST | INTERFACE_RECIPIENT): switch (pInformation->USBwIndex0) { @@ -346,6 +356,7 @@ static RESULT PIOS_USBHOOK_Data_Setup(uint8_t RequestNo) switch (RequestNo) { case USB_CDC_REQ_SET_LINE_CODING: CopyOutRoutine = PIOS_USB_CDC_SetLineCoding; + ep0_rxready_cb = PIOS_USB_CDC_SetLineCoding_Completed; break; case USB_CDC_REQ_GET_LINE_CODING: CopyInRoutine = PIOS_USB_CDC_GetLineCoding; diff --git a/flight/pios/stm32f4xx/pios_usb_cdc.c b/flight/pios/stm32f4xx/pios_usb_cdc.c index 099f3ece4..62349b1d9 100644 --- a/flight/pios/stm32f4xx/pios_usb_cdc.c +++ b/flight/pios/stm32f4xx/pios_usb_cdc.c @@ -41,6 +41,7 @@ static void PIOS_USB_CDC_RegisterTxCallback(uint32_t usbcdc_id, pios_com_callback tx_out_cb, uint32_t context); static void PIOS_USB_CDC_RegisterRxCallback(uint32_t usbcdc_id, pios_com_callback rx_in_cb, uint32_t context); static void PIOS_USB_CDC_RegisterCtrlLineCallback(uint32_t usbcdc_id, pios_com_callback_ctrl_line ctrl_line_cb, uint32_t context); +static void PIOS_USB_CDC_RegisterBaudRateCallback(uint32_t usbcdc_id, pios_com_callback_baud_rate baud_rate_cb, uint32_t context); static void PIOS_USB_CDC_TxStart(uint32_t usbcdc_id, uint16_t tx_bytes_avail); static void PIOS_USB_CDC_RxStart(uint32_t usbcdc_id, uint16_t rx_bytes_avail); static uint32_t PIOS_USB_CDC_Available(uint32_t usbcdc_id); @@ -51,6 +52,7 @@ const struct pios_com_driver pios_usb_cdc_com_driver = { .bind_tx_cb = PIOS_USB_CDC_RegisterTxCallback, .bind_rx_cb = PIOS_USB_CDC_RegisterRxCallback, .bind_ctrl_line_cb = PIOS_USB_CDC_RegisterCtrlLineCallback, + .bind_baud_rate_cb = PIOS_USB_CDC_RegisterBaudRateCallback, .available = PIOS_USB_CDC_Available, }; @@ -70,6 +72,8 @@ struct pios_usb_cdc_dev { uint32_t tx_out_context; pios_com_callback_ctrl_line ctrl_line_cb; uint32_t ctrl_line_context; + pios_com_callback_baud_rate baud_rate_cb; + uint32_t baud_rate_context; bool usb_ctrl_if_enabled; bool usb_data_if_enabled; @@ -343,6 +347,21 @@ static void PIOS_USB_CDC_RegisterCtrlLineCallback(uint32_t usbcdc_id, pios_com_c usb_cdc_dev->ctrl_line_cb = ctrl_line_cb; } +static void PIOS_USB_CDC_RegisterBaudRateCallback(uint32_t usbcdc_id, pios_com_callback_baud_rate baud_rate_cb, uint32_t context) +{ + struct pios_usb_cdc_dev *usb_cdc_dev = (struct pios_usb_cdc_dev *)usbcdc_id; + + bool valid = PIOS_USB_CDC_validate(usb_cdc_dev); + + PIOS_Assert(valid); + + /* + * Order is important in these assignments since ISR uses _cb + * field to determine if it's ok to dereference _cb and _context + */ + usb_cdc_dev->baud_rate_context = context; + usb_cdc_dev->baud_rate_cb = baud_rate_cb; +} static bool PIOS_USB_CDC_CTRL_EP_IN_Callback(uint32_t usb_cdc_id, uint8_t epnum, uint16_t len); @@ -488,13 +507,9 @@ static void PIOS_USB_CDC_CTRL_IF_CtrlDataOut(uint32_t usb_cdc_id, const struct u case (USB_REQ_TYPE_CLASS | USB_REQ_RECIPIENT_INTERFACE): switch (req->bRequest) { case USB_CDC_REQ_SET_LINE_CODING: - /* - * If we cared to, this is where we would apply the new line coding - * that is now stored in the line_coding struct. This could be used - * to notify the upper COM layer that the baud rate has changed. This - * may be useful in the case of a COM USB bridge where we would - * auto-adjust the USART baud rate based on the line coding set here. - */ + if (usb_cdc_dev->baud_rate_cb) { + usb_cdc_dev->baud_rate_cb(usb_cdc_dev->baud_rate_context, usbltoh(line_coding.dwDTERate)); + } break; default: /* Unhandled class request */ diff --git a/ground/gcs/src/plugins/config/cc_hw_settings.ui b/ground/gcs/src/plugins/config/cc_hw_settings.ui index ed7a8e079..f5f5ad792 100644 --- a/ground/gcs/src/plugins/config/cc_hw_settings.ui +++ b/ground/gcs/src/plugins/config/cc_hw_settings.ui @@ -254,13 +254,6 @@ - - - - Select the speed here. - - - @@ -268,19 +261,6 @@ - - - - - 55 - 0 - - - - ComUsbBridge speed: - - - diff --git a/ground/gcs/src/plugins/config/config_cc_hw_widget.cpp b/ground/gcs/src/plugins/config/config_cc_hw_widget.cpp index fc827bb00..58c2bf2cb 100644 --- a/ground/gcs/src/plugins/config/config_cc_hw_widget.cpp +++ b/ground/gcs/src/plugins/config/config_cc_hw_widget.cpp @@ -99,7 +99,6 @@ ConfigCCHWWidget::ConfigCCHWWidget(QWidget *parent) : ConfigTaskWidget(parent) addWidgetBinding("GPSSettings", "DataProtocol", m_telemetry->gpsProtocol); } - addWidgetBinding("HwSettings", "ComUsbBridgeSpeed", m_telemetry->comUsbBridgeSpeed); connect(m_telemetry->cchwHelp, SIGNAL(clicked()), this, SLOT(openHelp())); enableSaveButtons(false); populateWidgets(); diff --git a/ground/gcs/src/plugins/config/configrevohwwidget.cpp b/ground/gcs/src/plugins/config/configrevohwwidget.cpp index 5db232191..7047e8f07 100644 --- a/ground/gcs/src/plugins/config/configrevohwwidget.cpp +++ b/ground/gcs/src/plugins/config/configrevohwwidget.cpp @@ -59,19 +59,15 @@ ConfigRevoHWWidget::ConfigRevoHWWidget(QWidget *parent) : ConfigTaskWidget(paren addWidgetBinding("HwSettings", "USB_HIDPort", m_ui->cbUSBHIDFunction); addWidgetBinding("HwSettings", "USB_VCPPort", m_ui->cbUSBVCPFunction); - addWidgetBinding("HwSettings", "ComUsbBridgeSpeed", m_ui->cbUSBVCPSpeed); addWidgetBinding("HwSettings", "TelemetrySpeed", m_ui->cbFlexiTelemSpeed); addWidgetBinding("HwSettings", "GPSSpeed", m_ui->cbFlexiGPSSpeed); - addWidgetBinding("HwSettings", "ComUsbBridgeSpeed", m_ui->cbFlexiComSpeed); addWidgetBinding("HwSettings", "TelemetrySpeed", m_ui->cbMainTelemSpeed); addWidgetBinding("HwSettings", "GPSSpeed", m_ui->cbMainGPSSpeed); - addWidgetBinding("HwSettings", "ComUsbBridgeSpeed", m_ui->cbMainComSpeed); addWidgetBinding("HwSettings", "TelemetrySpeed", m_ui->cbRcvrTelemSpeed); addWidgetBinding("HwSettings", "GPSSpeed", m_ui->cbRcvrGPSSpeed); - addWidgetBinding("HwSettings", "ComUsbBridgeSpeed", m_ui->cbRcvrComSpeed); // Add Gps protocol configuration addWidgetBinding("GPSSettings", "DataProtocol", m_ui->cbMainGPSProtocol); @@ -144,9 +140,6 @@ void ConfigRevoHWWidget::usbVCPPortChanged(int index) bool vcpComBridgeEnabled = isComboboxOptionSelected(m_ui->cbUSBVCPFunction, HwSettings::USB_VCPPORT_COMBRIDGE); - m_ui->lblUSBVCPSpeed->setVisible(vcpComBridgeEnabled); - m_ui->cbUSBVCPSpeed->setVisible(vcpComBridgeEnabled); - if (!vcpComBridgeEnabled && isComboboxOptionSelected(m_ui->cbFlexi, HwSettings::RM_FLEXIPORT_COMBRIDGE)) { setComboboxSelectedOption(m_ui->cbFlexi, HwSettings::RM_FLEXIPORT_DISABLED); } @@ -207,7 +200,6 @@ void ConfigRevoHWWidget::flexiPortChanged(int index) m_ui->cbFlexiTelemSpeed->setVisible(false); m_ui->cbFlexiGPSSpeed->setVisible(false); - m_ui->cbFlexiComSpeed->setVisible(false); m_ui->lblFlexiSpeed->setVisible(true); // Add Gps protocol configuration @@ -245,7 +237,7 @@ void ConfigRevoHWWidget::flexiPortChanged(int index) break; case HwSettings::RM_FLEXIPORT_COMBRIDGE: - m_ui->cbFlexiComSpeed->setVisible(true); + m_ui->lblFlexiSpeed->setVisible(false); if (isComboboxOptionSelected(m_ui->cbMain, HwSettings::RM_MAINPORT_COMBRIDGE)) { setComboboxSelectedOption(m_ui->cbMain, HwSettings::RM_MAINPORT_DISABLED); } @@ -257,7 +249,7 @@ void ConfigRevoHWWidget::flexiPortChanged(int index) } break; case HwSettings::RM_FLEXIPORT_DEBUGCONSOLE: - m_ui->cbFlexiComSpeed->setVisible(true); + m_ui->lblFlexiSpeed->setVisible(false); if (isComboboxOptionSelected(m_ui->cbMain, HwSettings::RM_MAINPORT_DEBUGCONSOLE)) { setComboboxSelectedOption(m_ui->cbMain, HwSettings::RM_MAINPORT_DISABLED); } @@ -313,7 +305,6 @@ void ConfigRevoHWWidget::mainPortChanged(int index) m_ui->cbMainTelemSpeed->setVisible(false); m_ui->cbMainGPSSpeed->setVisible(false); - m_ui->cbMainComSpeed->setVisible(false); m_ui->lblMainSpeed->setVisible(true); // Add Gps protocol configuration @@ -350,7 +341,7 @@ void ConfigRevoHWWidget::mainPortChanged(int index) } break; case HwSettings::RM_MAINPORT_COMBRIDGE: - m_ui->cbMainComSpeed->setVisible(true); + m_ui->lblMainSpeed->setVisible(false); if (isComboboxOptionSelected(m_ui->cbFlexi, HwSettings::RM_FLEXIPORT_COMBRIDGE)) { setComboboxSelectedOption(m_ui->cbFlexi, HwSettings::RM_FLEXIPORT_DISABLED); } @@ -362,7 +353,7 @@ void ConfigRevoHWWidget::mainPortChanged(int index) } break; case HwSettings::RM_MAINPORT_DEBUGCONSOLE: - m_ui->cbMainComSpeed->setVisible(true); + m_ui->lblMainSpeed->setVisible(false); if (isComboboxOptionSelected(m_ui->cbFlexi, HwSettings::RM_FLEXIPORT_DEBUGCONSOLE)) { setComboboxSelectedOption(m_ui->cbFlexi, HwSettings::RM_FLEXIPORT_DISABLED); } @@ -417,14 +408,12 @@ void ConfigRevoHWWidget::rcvrPortChanged(int index) Q_UNUSED(index); m_ui->lblRcvrSpeed->setVisible(true); m_ui->cbRcvrTelemSpeed->setVisible(false); - m_ui->cbRcvrComSpeed->setVisible(false); m_ui->cbRcvrGPSSpeed->setVisible(false); // Add Gps protocol configuration m_ui->cbRcvrGPSProtocol->setVisible(false); m_ui->lblRcvrGPSProtocol->setVisible(false); - switch (getComboboxSelectedOption(m_ui->cbRcvr)) { case HwSettings::RM_RCVRPORT_TELEMETRY: case HwSettings::RM_RCVRPORT_PPMTELEMETRY: @@ -439,7 +428,7 @@ void ConfigRevoHWWidget::rcvrPortChanged(int index) break; case HwSettings::RM_RCVRPORT_COMBRIDGE: case HwSettings::RM_RCVRPORT_PPMCOMBRIDGE: - m_ui->cbRcvrComSpeed->setVisible(true); + m_ui->lblRcvrSpeed->setVisible(false); if (isComboboxOptionSelected(m_ui->cbFlexi, HwSettings::RM_FLEXIPORT_COMBRIDGE)) { setComboboxSelectedOption(m_ui->cbFlexi, HwSettings::RM_FLEXIPORT_DISABLED); } diff --git a/ground/gcs/src/plugins/config/configrevohwwidget.ui b/ground/gcs/src/plugins/config/configrevohwwidget.ui index f9daccfdc..1b11c41d2 100644 --- a/ground/gcs/src/plugins/config/configrevohwwidget.ui +++ b/ground/gcs/src/plugins/config/configrevohwwidget.ui @@ -248,9 +248,6 @@ - - - @@ -579,9 +576,6 @@ - - - @@ -652,9 +646,6 @@ - - - @@ -681,32 +672,9 @@ - - - - true - - - - - - - - 0 - 0 - - - - Speed - - - Qt::AlignBottom|Qt::AlignHCenter - - - diff --git a/ground/gcs/src/plugins/config/configrevonanohwwidget.cpp b/ground/gcs/src/plugins/config/configrevonanohwwidget.cpp index b1d1ba6c7..f5914cc91 100644 --- a/ground/gcs/src/plugins/config/configrevonanohwwidget.cpp +++ b/ground/gcs/src/plugins/config/configrevonanohwwidget.cpp @@ -61,18 +61,12 @@ ConfigRevoNanoHWWidget::ConfigRevoNanoHWWidget(QWidget *parent) : ConfigTaskWidg addWidgetBinding("HwSettings", "USB_HIDPort", m_ui->cbUSBHIDFunction); addWidgetBinding("HwSettings", "USB_VCPPort", m_ui->cbUSBVCPFunction); - addWidgetBinding("HwSettings", "ComUsbBridgeSpeed", m_ui->cbUSBVCPSpeed); addWidgetBinding("HwSettings", "TelemetrySpeed", m_ui->cbFlexiTelemSpeed); addWidgetBinding("HwSettings", "GPSSpeed", m_ui->cbFlexiGPSSpeed); - addWidgetBinding("HwSettings", "ComUsbBridgeSpeed", m_ui->cbFlexiComSpeed); addWidgetBinding("HwSettings", "TelemetrySpeed", m_ui->cbMainTelemSpeed); addWidgetBinding("HwSettings", "GPSSpeed", m_ui->cbMainGPSSpeed); - addWidgetBinding("HwSettings", "ComUsbBridgeSpeed", m_ui->cbMainComSpeed); - - addWidgetBinding("HwSettings", "TelemetrySpeed", m_ui->cbRcvrTelemSpeed); - addWidgetBinding("HwSettings", "ComUsbBridgeSpeed", m_ui->cbRcvrComSpeed); // Add Gps protocol configuration addWidgetBinding("GPSSettings", "DataProtocol", m_ui->cbMainGPSProtocol); @@ -139,9 +133,6 @@ void ConfigRevoNanoHWWidget::usbVCPPortChanged(int index) bool vcpComBridgeEnabled = isComboboxOptionSelected(m_ui->cbUSBVCPFunction, HwSettings::USB_VCPPORT_COMBRIDGE); - m_ui->lblUSBVCPSpeed->setVisible(vcpComBridgeEnabled); - m_ui->cbUSBVCPSpeed->setVisible(vcpComBridgeEnabled); - if (!vcpComBridgeEnabled && isComboboxOptionSelected(m_ui->cbFlexi, HwSettings::RM_FLEXIPORT_COMBRIDGE)) { setComboboxSelectedOption(m_ui->cbFlexi, HwSettings::RM_FLEXIPORT_DISABLED); } @@ -152,11 +143,6 @@ void ConfigRevoNanoHWWidget::usbVCPPortChanged(int index) } enableComboBoxOptionItem(m_ui->cbMain, HwSettings::RM_MAINPORT_COMBRIDGE, vcpComBridgeEnabled); - if (!vcpComBridgeEnabled && isComboboxOptionSelected(m_ui->cbRcvr, HwSettings::RM_RCVRPORT_COMBRIDGE)) { - setComboboxSelectedOption(m_ui->cbRcvr, HwSettings::RM_RCVRPORT_DISABLED); - } - enableComboBoxOptionItem(m_ui->cbRcvr, HwSettings::RM_RCVRPORT_COMBRIDGE, vcpComBridgeEnabled); - // _DEBUGCONSOLE modes are mutual exclusive if (isComboboxOptionSelected(m_ui->cbUSBVCPFunction, HwSettings::USB_VCPPORT_DEBUGCONSOLE)) { if (isComboboxOptionSelected(m_ui->cbMain, HwSettings::RM_MAINPORT_DEBUGCONSOLE)) { @@ -191,7 +177,6 @@ void ConfigRevoNanoHWWidget::flexiPortChanged(int index) m_ui->cbFlexiTelemSpeed->setVisible(false); m_ui->cbFlexiGPSSpeed->setVisible(false); - m_ui->cbFlexiComSpeed->setVisible(false); m_ui->lblFlexiSpeed->setVisible(true); // Add Gps protocol configuration @@ -204,10 +189,6 @@ void ConfigRevoNanoHWWidget::flexiPortChanged(int index) if (isComboboxOptionSelected(m_ui->cbMain, HwSettings::RM_MAINPORT_TELEMETRY)) { setComboboxSelectedOption(m_ui->cbMain, HwSettings::RM_MAINPORT_DISABLED); } - if (isComboboxOptionSelected(m_ui->cbRcvr, HwSettings::RM_RCVRPORT_PPMTELEMETRY) - || isComboboxOptionSelected(m_ui->cbRcvr, HwSettings::RM_RCVRPORT_TELEMETRY)) { - setComboboxSelectedOption(m_ui->cbRcvr, HwSettings::RM_RCVRPORT_DISABLED); - } break; case HwSettings::RM_FLEXIPORT_GPS: // Add Gps protocol configuration @@ -220,16 +201,13 @@ void ConfigRevoNanoHWWidget::flexiPortChanged(int index) } break; case HwSettings::RM_FLEXIPORT_COMBRIDGE: - m_ui->cbFlexiComSpeed->setVisible(true); + m_ui->lblFlexiSpeed->setVisible(false); if (isComboboxOptionSelected(m_ui->cbMain, HwSettings::RM_MAINPORT_COMBRIDGE)) { setComboboxSelectedOption(m_ui->cbMain, HwSettings::RM_MAINPORT_DISABLED); } - if (isComboboxOptionSelected(m_ui->cbRcvr, HwSettings::RM_RCVRPORT_COMBRIDGE)) { - setComboboxSelectedOption(m_ui->cbRcvr, HwSettings::RM_RCVRPORT_DISABLED); - } break; case HwSettings::RM_FLEXIPORT_DEBUGCONSOLE: - m_ui->cbFlexiComSpeed->setVisible(true); + m_ui->lblFlexiSpeed->setVisible(false); if (isComboboxOptionSelected(m_ui->cbMain, HwSettings::RM_MAINPORT_DEBUGCONSOLE)) { setComboboxSelectedOption(m_ui->cbMain, HwSettings::RM_MAINPORT_DISABLED); } @@ -249,7 +227,6 @@ void ConfigRevoNanoHWWidget::mainPortChanged(int index) m_ui->cbMainTelemSpeed->setVisible(false); m_ui->cbMainGPSSpeed->setVisible(false); - m_ui->cbMainComSpeed->setVisible(false); m_ui->lblMainSpeed->setVisible(true); // Add Gps protocol configuration @@ -262,10 +239,6 @@ void ConfigRevoNanoHWWidget::mainPortChanged(int index) if (isComboboxOptionSelected(m_ui->cbFlexi, HwSettings::RM_FLEXIPORT_TELEMETRY)) { setComboboxSelectedOption(m_ui->cbFlexi, HwSettings::RM_FLEXIPORT_DISABLED); } - if (isComboboxOptionSelected(m_ui->cbRcvr, HwSettings::RM_RCVRPORT_PPMTELEMETRY) - || isComboboxOptionSelected(m_ui->cbRcvr, HwSettings::RM_RCVRPORT_TELEMETRY)) { - setComboboxSelectedOption(m_ui->cbRcvr, HwSettings::RM_RCVRPORT_DISABLED); - } break; case HwSettings::RM_MAINPORT_GPS: // Add Gps protocol configuration @@ -278,16 +251,13 @@ void ConfigRevoNanoHWWidget::mainPortChanged(int index) } break; case HwSettings::RM_MAINPORT_COMBRIDGE: - m_ui->cbMainComSpeed->setVisible(true); + m_ui->lblMainSpeed->setVisible(false); if (isComboboxOptionSelected(m_ui->cbFlexi, HwSettings::RM_FLEXIPORT_COMBRIDGE)) { setComboboxSelectedOption(m_ui->cbFlexi, HwSettings::RM_FLEXIPORT_DISABLED); } - if (isComboboxOptionSelected(m_ui->cbRcvr, HwSettings::RM_RCVRPORT_COMBRIDGE)) { - setComboboxSelectedOption(m_ui->cbRcvr, HwSettings::RM_RCVRPORT_DISABLED); - } break; case HwSettings::RM_MAINPORT_DEBUGCONSOLE: - m_ui->cbMainComSpeed->setVisible(true); + m_ui->lblMainSpeed->setVisible(false); if (isComboboxOptionSelected(m_ui->cbFlexi, HwSettings::RM_FLEXIPORT_DEBUGCONSOLE)) { setComboboxSelectedOption(m_ui->cbFlexi, HwSettings::RM_FLEXIPORT_DISABLED); } @@ -304,36 +274,7 @@ void ConfigRevoNanoHWWidget::mainPortChanged(int index) void ConfigRevoNanoHWWidget::rcvrPortChanged(int index) { Q_UNUSED(index); - - m_ui->lblRcvrSpeed->setVisible(true); - m_ui->cbRcvrTelemSpeed->setVisible(false); - m_ui->cbRcvrComSpeed->setVisible(false); - - switch (getComboboxSelectedOption(m_ui->cbRcvr)) { - case HwSettings::RM_RCVRPORT_TELEMETRY: - case HwSettings::RM_RCVRPORT_PPMTELEMETRY: - m_ui->cbRcvrTelemSpeed->setVisible(true); - - if (isComboboxOptionSelected(m_ui->cbFlexi, HwSettings::RM_FLEXIPORT_TELEMETRY)) { - setComboboxSelectedOption(m_ui->cbFlexi, HwSettings::RM_FLEXIPORT_DISABLED); - } - if (isComboboxOptionSelected(m_ui->cbMain, HwSettings::RM_MAINPORT_TELEMETRY)) { - setComboboxSelectedOption(m_ui->cbMain, HwSettings::RM_MAINPORT_DISABLED); - } - break; - case HwSettings::RM_RCVRPORT_COMBRIDGE: - m_ui->cbRcvrComSpeed->setVisible(true); - if (isComboboxOptionSelected(m_ui->cbFlexi, HwSettings::RM_FLEXIPORT_COMBRIDGE)) { - setComboboxSelectedOption(m_ui->cbFlexi, HwSettings::RM_FLEXIPORT_DISABLED); - } - if (isComboboxOptionSelected(m_ui->cbMain, HwSettings::RM_MAINPORT_COMBRIDGE)) { - setComboboxSelectedOption(m_ui->cbMain, HwSettings::RM_MAINPORT_DISABLED); - } - break; - default: - m_ui->lblRcvrSpeed->setVisible(false); - break; - } + /* Nano has no USART at rcvrPort */ } void ConfigRevoNanoHWWidget::openHelp() diff --git a/ground/gcs/src/plugins/config/configrevonanohwwidget.ui b/ground/gcs/src/plugins/config/configrevonanohwwidget.ui index fc249ddf6..dc73e8c65 100644 --- a/ground/gcs/src/plugins/config/configrevonanohwwidget.ui +++ b/ground/gcs/src/plugins/config/configrevonanohwwidget.ui @@ -233,22 +233,6 @@ - - - - - 0 - 0 - - - - Speed - - - Qt::AlignBottom|Qt::AlignHCenter - - - @@ -302,13 +286,6 @@ - - - - true - - - @@ -325,22 +302,6 @@ - - - - - 0 - 0 - - - - Speed - - - Qt::AlignBottom|Qt::AlignLeading|Qt::AlignLeft - - - @@ -401,12 +362,9 @@ - - - - + @@ -419,7 +377,7 @@ - + Protocol @@ -450,9 +408,6 @@ - - - @@ -475,35 +430,6 @@ - - - - 0 - - - 0 - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - diff --git a/ground/gcs/src/plugins/config/configsparky2hwwidget.cpp b/ground/gcs/src/plugins/config/configsparky2hwwidget.cpp index c5a4a4e23..d8545b3a2 100644 --- a/ground/gcs/src/plugins/config/configsparky2hwwidget.cpp +++ b/ground/gcs/src/plugins/config/configsparky2hwwidget.cpp @@ -60,15 +60,12 @@ ConfigSparky2HWWidget::ConfigSparky2HWWidget(QWidget *parent) : ConfigTaskWidget addWidgetBinding("HwSettings", "USB_HIDPort", m_ui->cbUSBHIDFunction); addWidgetBinding("HwSettings", "USB_VCPPort", m_ui->cbUSBVCPFunction); - addWidgetBinding("HwSettings", "ComUsbBridgeSpeed", m_ui->cbUSBVCPSpeed); addWidgetBinding("HwSettings", "TelemetrySpeed", m_ui->cbFlexiTelemSpeed); addWidgetBinding("HwSettings", "GPSSpeed", m_ui->cbFlexiGPSSpeed); - addWidgetBinding("HwSettings", "ComUsbBridgeSpeed", m_ui->cbFlexiComSpeed); addWidgetBinding("HwSettings", "TelemetrySpeed", m_ui->cbMainTelemSpeed); addWidgetBinding("HwSettings", "GPSSpeed", m_ui->cbMainGPSSpeed); - addWidgetBinding("HwSettings", "ComUsbBridgeSpeed", m_ui->cbMainComSpeed); // Add Gps protocol configuration addWidgetBinding("GPSSettings", "DataProtocol", m_ui->cbMainGPSProtocol); @@ -138,9 +135,6 @@ void ConfigSparky2HWWidget::usbVCPPortChanged(int index) bool vcpComBridgeEnabled = isComboboxOptionSelected(m_ui->cbUSBVCPFunction, HwSettings::USB_VCPPORT_COMBRIDGE); - m_ui->lblUSBVCPSpeed->setVisible(vcpComBridgeEnabled); - m_ui->cbUSBVCPSpeed->setVisible(vcpComBridgeEnabled); - if (!vcpComBridgeEnabled && isComboboxOptionSelected(m_ui->cbFlexi, HwSettings::SPK2_FLEXIPORT_COMBRIDGE)) { setComboboxSelectedOption(m_ui->cbFlexi, HwSettings::SPK2_FLEXIPORT_DISABLED); } @@ -185,7 +179,6 @@ void ConfigSparky2HWWidget::flexiPortChanged(int index) m_ui->cbFlexiTelemSpeed->setVisible(false); m_ui->cbFlexiGPSSpeed->setVisible(false); - m_ui->cbFlexiComSpeed->setVisible(false); m_ui->lblFlexiSpeed->setVisible(true); // Add Gps protocol configuration @@ -210,13 +203,13 @@ void ConfigSparky2HWWidget::flexiPortChanged(int index) } break; case HwSettings::SPK2_FLEXIPORT_COMBRIDGE: - m_ui->cbFlexiComSpeed->setVisible(true); + m_ui->lblFlexiSpeed->setVisible(false); if (isComboboxOptionSelected(m_ui->cbMain, HwSettings::SPK2_MAINPORT_COMBRIDGE)) { setComboboxSelectedOption(m_ui->cbMain, HwSettings::SPK2_MAINPORT_DISABLED); } break; case HwSettings::SPK2_FLEXIPORT_DEBUGCONSOLE: - m_ui->cbFlexiComSpeed->setVisible(true); + m_ui->lblFlexiSpeed->setVisible(false); if (isComboboxOptionSelected(m_ui->cbMain, HwSettings::SPK2_MAINPORT_DEBUGCONSOLE)) { setComboboxSelectedOption(m_ui->cbMain, HwSettings::SPK2_MAINPORT_DISABLED); } @@ -236,7 +229,6 @@ void ConfigSparky2HWWidget::mainPortChanged(int index) m_ui->cbMainTelemSpeed->setVisible(false); m_ui->cbMainGPSSpeed->setVisible(false); - m_ui->cbMainComSpeed->setVisible(false); m_ui->lblMainSpeed->setVisible(true); // Add Gps protocol configuration @@ -261,13 +253,13 @@ void ConfigSparky2HWWidget::mainPortChanged(int index) } break; case HwSettings::SPK2_MAINPORT_COMBRIDGE: - m_ui->cbMainComSpeed->setVisible(true); + m_ui->lblMainSpeed->setVisible(false); if (isComboboxOptionSelected(m_ui->cbFlexi, HwSettings::SPK2_FLEXIPORT_COMBRIDGE)) { setComboboxSelectedOption(m_ui->cbFlexi, HwSettings::SPK2_FLEXIPORT_DISABLED); } break; case HwSettings::SPK2_MAINPORT_DEBUGCONSOLE: - m_ui->cbMainComSpeed->setVisible(true); + m_ui->lblMainSpeed->setVisible(false); if (isComboboxOptionSelected(m_ui->cbFlexi, HwSettings::SPK2_FLEXIPORT_DEBUGCONSOLE)) { setComboboxSelectedOption(m_ui->cbFlexi, HwSettings::SPK2_FLEXIPORT_DISABLED); } diff --git a/ground/gcs/src/plugins/config/configsparky2hwwidget.ui b/ground/gcs/src/plugins/config/configsparky2hwwidget.ui index c94ba62ea..f8dd08250 100644 --- a/ground/gcs/src/plugins/config/configsparky2hwwidget.ui +++ b/ground/gcs/src/plugins/config/configsparky2hwwidget.ui @@ -377,39 +377,13 @@ - - - - - - - true - - - - - - - - 0 - 0 - - - - Speed - - - Qt::AlignBottom|Qt::AlignHCenter - - - @@ -504,13 +478,6 @@ - - - - true - - - diff --git a/shared/uavobjectdefinition/hwsettings.xml b/shared/uavobjectdefinition/hwsettings.xml index 2306e0e8e..a9d7b5877 100644 --- a/shared/uavobjectdefinition/hwsettings.xml +++ b/shared/uavobjectdefinition/hwsettings.xml @@ -24,7 +24,7 @@ - +