diff --git a/flight/targets/boards/pikoblx/firmware/pios_board.c b/flight/targets/boards/pikoblx/firmware/pios_board.c index bf07da223..e2afd5706 100644 --- a/flight/targets/boards/pikoblx/firmware/pios_board.c +++ b/flight/targets/boards/pikoblx/firmware/pios_board.c @@ -223,7 +223,9 @@ void PIOS_Board_Init(void) } #ifdef PIOS_INCLUDE_PPM - PIOS_BOARD_IO_Configure_PPM_RCVR(&pios_ppm_cfg); + if (boardHwSettings.PPMPort == HWPIKOBLXSETTINGS_PPMPORT_ENABLED) { + PIOS_BOARD_IO_Configure_PPM_RCVR(&pios_ppm_cfg); + } #endif #ifdef PIOS_INCLUDE_GCSRCVR diff --git a/ground/gcs/src/plugins/config/configgadgetwidget.cpp b/ground/gcs/src/plugins/config/configgadgetwidget.cpp index e8eca39dd..512aecce4 100644 --- a/ground/gcs/src/plugins/config/configgadgetwidget.cpp +++ b/ground/gcs/src/plugins/config/configgadgetwidget.cpp @@ -44,6 +44,7 @@ #include "configsparky2hwwidget.h" #include "configspracingf3evohwwidget.h" #include "configtinyfishhwwidget.h" +#include "configpikoblxhwwidget.h" #include "defaultconfigwidget.h" #include @@ -270,7 +271,7 @@ void ConfigGadgetWidget::onAutopilotConnect() widget = new ConfigSPRacingF3EVOHWWidget(this); break; case 0x1005: - // widget = new ConfigPikoBLXHWWidget(this); + widget = new ConfigPikoBLXHWWidget(this); break; case 0x1006: widget = new ConfigTinyFISHHWWidget(this); diff --git a/ground/gcs/src/plugins/config/configpikoblxhwwidget.cpp b/ground/gcs/src/plugins/config/configpikoblxhwwidget.cpp index 4c01b3f0f..6267c7698 100644 --- a/ground/gcs/src/plugins/config/configpikoblxhwwidget.cpp +++ b/ground/gcs/src/plugins/config/configpikoblxhwwidget.cpp @@ -50,15 +50,16 @@ ConfigPikoBLXHWWidget::ConfigPikoBLXHWWidget(QWidget *parent) : ConfigTaskWidget addWidgetBinding("HwPikoBLXSettings", "UARTPort", m_ui->cbUART2, 1, 1, true); addWidgetBinding("HwPikoBLXSettings", "UARTPort", m_ui->cbUART3, 2, 1, true); addWidgetBinding("HwPikoBLXSettings", "LEDPort", m_ui->cbLEDPort); - + addWidgetBinding("HwPikoBLXSettings", "PPMPort", m_ui->cbPPMPort); + m_cbUART[0] = m_ui->cbUART1; m_cbUART[1] = m_ui->cbUART2; m_cbUART[2] = m_ui->cbUART3; - - for(quint32 i = 0; i < HwPikoBLXSettings::UARTPORT_NUMELEM; ++i) { + + for (quint32 i = 0; i < HwPikoBLXSettings::UARTPORT_NUMELEM; ++i) { connect(m_cbUART[i], static_cast(&QComboBox::currentIndexChanged), this, &ConfigPikoBLXHWWidget::UARTxChanged); } - + m_ui->commonHWSettings->registerWidgets(*this); connect(m_ui->commonHWSettings, &CommonHWSettingsWidget::USBVCPFunctionChanged, this, &ConfigPikoBLXHWWidget::USBVCPFunctionChanged); @@ -74,10 +75,10 @@ ConfigPikoBLXHWWidget::~ConfigPikoBLXHWWidget() void ConfigPikoBLXHWWidget::refreshWidgetsValuesImpl(UAVObject *obj) { // is this needed? This is to force sane state -// UART1Changed(0); -// UART2Changed(0); -// UART3Changed(0); - +// UART1Changed(0); +// UART2Changed(0); +// UART3Changed(0); + m_ui->commonHWSettings->refreshWidgetsValues(obj); } @@ -88,9 +89,9 @@ void ConfigPikoBLXHWWidget::updateObjectsFromWidgetsImpl() void ConfigPikoBLXHWWidget::updateFeatures() { - quint32 features = CommonHWSettingsWidget::F_USB; + quint32 features = CommonHWSettingsWidget::F_USB; - for(quint32 i = 0; i < HwPikoBLXSettings::UARTPORT_NUMELEM; ++i) { + for (quint32 i = 0; i < HwPikoBLXSettings::UARTPORT_NUMELEM; ++i) { switch (getComboboxSelectedOption(m_cbUART[i])) { case HwPikoBLXSettings::UARTPORT_TELEMETRY: features |= CommonHWSettingsWidget::F_TELEMETRY; @@ -131,13 +132,13 @@ bool ConfigPikoBLXHWWidget::optionConflict(int uartOption, int vcpOption) void ConfigPikoBLXHWWidget::UARTxChanged(int index) { Q_UNUSED(index); - + QComboBox *cbUARTx = qobject_cast(sender()); - - if(!cbUARTx) { + + if (!cbUARTx) { return; } - + // Everything except HwPikoBLXSettings::UARTPORT_DISABLED and HwPikoBLXSettings::UARTPORT_DSM // is allowed on single port only. // HoTT SUMD & SUMH belong to the same receiver group, therefore cannot be configure at the same time @@ -150,8 +151,7 @@ void ConfigPikoBLXHWWidget::UARTxChanged(int index) } if (option != HwPikoBLXSettings::UARTPORT_DISABLED && option != HwPikoBLXSettings::UARTPORT_DSM) { - - for(quint32 i = 0; i < HwPikoBLXSettings::UARTPORT_NUMELEM; ++i) { + for (quint32 i = 0; i < HwPikoBLXSettings::UARTPORT_NUMELEM; ++i) { if (m_cbUART[i] == cbUARTx) { continue; } @@ -180,7 +180,7 @@ void ConfigPikoBLXHWWidget::USBVCPFunctionChanged(int index) int vcpOption = getComboboxSelectedOption(m_ui->commonHWSettings->USBVCPComboBox()); - for(quint32 i = 0; i < HwPikoBLXSettings::UARTPORT_NUMELEM; ++i) { + for (quint32 i = 0; i < HwPikoBLXSettings::UARTPORT_NUMELEM; ++i) { if (optionConflict(getComboboxSelectedOption(m_cbUART[i]), vcpOption)) { setComboboxSelectedOption(m_cbUART[i], HwPikoBLXSettings::UARTPORT_DISABLED); } @@ -188,4 +188,3 @@ void ConfigPikoBLXHWWidget::USBVCPFunctionChanged(int index) updateFeatures(); } - diff --git a/ground/gcs/src/plugins/config/configpikoblxhwwidget.ui b/ground/gcs/src/plugins/config/configpikoblxhwwidget.ui index 6ed410ff8..99736be82 100644 --- a/ground/gcs/src/plugins/config/configpikoblxhwwidget.ui +++ b/ground/gcs/src/plugins/config/configpikoblxhwwidget.ui @@ -282,58 +282,6 @@ - - - - - - - Qt::Vertical - - - QSizePolicy::Fixed - - - - 20 - 115 - - - - - - - - Receiver - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - LED Strip - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - @@ -370,6 +318,68 @@ + + + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 115 + + + + + + + + Receiver + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + LED Strip + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + PPM Port (pad) + + + + + + diff --git a/shared/uavobjectdefinition/hwpikoblxsettings.xml b/shared/uavobjectdefinition/hwpikoblxsettings.xml index b5b813296..73680bcd7 100644 --- a/shared/uavobjectdefinition/hwpikoblxsettings.xml +++ b/shared/uavobjectdefinition/hwpikoblxsettings.xml @@ -1,9 +1,9 @@ Furious FPV Piko BLX Micro Flight Controller hardware configuration - + - +