From 7b3a0e504b0cbebe58dc031358315a2f48a83e57 Mon Sep 17 00:00:00 2001 From: Laurent Lalanne Date: Sat, 31 Oct 2015 15:11:33 +0100 Subject: [PATCH] LP-120 Add conditions for GPS+I2C - SRXL fixes --- .../src/plugins/setupwizard/pages/airspeedpage.cpp | 6 ++++-- .../gcs/src/plugins/setupwizard/pages/gpspage.cpp | 13 ++++++++++++- ground/gcs/src/plugins/setupwizard/setupwizard.cpp | 3 +++ .../setupwizard/vehicleconfigurationhelper.cpp | 13 +++++++++---- 4 files changed, 28 insertions(+), 7 deletions(-) diff --git a/ground/gcs/src/plugins/setupwizard/pages/airspeedpage.cpp b/ground/gcs/src/plugins/setupwizard/pages/airspeedpage.cpp index 74ae4ef70..0f560d4a7 100644 --- a/ground/gcs/src/plugins/setupwizard/pages/airspeedpage.cpp +++ b/ground/gcs/src/plugins/setupwizard/pages/airspeedpage.cpp @@ -40,8 +40,10 @@ void AirSpeedPage::initializePage(VehicleConfigurationSource *settings) // Enable all setItemDisabled(-1, false); if (settings->getInputType() == VehicleConfigurationSource::INPUT_SBUS || - settings->getInputType() == VehicleConfigurationSource::INPUT_DSM) { - // Disable non estimated sensors if ports are taken by receivers + settings->getInputType() == VehicleConfigurationSource::INPUT_DSM || + settings->getInputType() == VehicleConfigurationSource::INPUT_SRXL || + settings->getGpsType() == VehicleConfigurationSource::GPS_UBX_FLEXI_I2CMAG) { + // Disable non estimated sensors if ports are taken by receivers or I2C Mag setItemDisabled(VehicleConfigurationSource::AIRSPEED_EAGLETREE, true); setItemDisabled(VehicleConfigurationSource::AIRSPEED_MS4525, true); if (getSelectedItem()->id() == VehicleConfigurationSource::AIRSPEED_EAGLETREE || diff --git a/ground/gcs/src/plugins/setupwizard/pages/gpspage.cpp b/ground/gcs/src/plugins/setupwizard/pages/gpspage.cpp index 559af2ef4..4fcfb81db 100644 --- a/ground/gcs/src/plugins/setupwizard/pages/gpspage.cpp +++ b/ground/gcs/src/plugins/setupwizard/pages/gpspage.cpp @@ -37,7 +37,18 @@ GpsPage::~GpsPage() void GpsPage::initializePage(VehicleConfigurationSource *settings) { - Q_UNUSED(settings); + // Enable all + setItemDisabled(-1, false); + if (settings->getInputType() == VehicleConfigurationSource::INPUT_SBUS || + settings->getInputType() == VehicleConfigurationSource::INPUT_DSM || + settings->getInputType() == VehicleConfigurationSource::INPUT_SRXL) { + // Disable GPS+I2C Mag + setItemDisabled(VehicleConfigurationSource::GPS_UBX_FLEXI_I2CMAG, true); + if (getSelectedItem()->id() == VehicleConfigurationSource::GPS_UBX_FLEXI_I2CMAG) { + // If previously selected invalid GPS, reset to no GPS + setSelectedItem(VehicleConfigurationSource::GPS_DISABLED); + } + } } bool GpsPage::validatePage(SelectionItem *selectedItem) diff --git a/ground/gcs/src/plugins/setupwizard/setupwizard.cpp b/ground/gcs/src/plugins/setupwizard/setupwizard.cpp index 5d2185b57..fe4b6748a 100644 --- a/ground/gcs/src/plugins/setupwizard/setupwizard.cpp +++ b/ground/gcs/src/plugins/setupwizard/setupwizard.cpp @@ -377,6 +377,9 @@ QString SetupWizard::getSummaryText() case INPUT_DSM: summary.append(tr("Spektrum Satellite")); break; + case INPUT_SRXL: + summary.append(tr("Multiplex SRXL")); + break; default: summary.append(tr("Unknown")); } diff --git a/ground/gcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp b/ground/gcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp index 3ba3b6cfe..dbce5ec5a 100644 --- a/ground/gcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp +++ b/ground/gcs/src/plugins/setupwizard/vehicleconfigurationhelper.cpp @@ -159,13 +159,16 @@ void VehicleConfigurationHelper::applyHardwareConfiguration() } break; case VehicleConfigurationSource::INPUT_SBUS: - // We have to set teletry on flexport since s.bus needs the mainport. + // We have to set teletry on flexiport since s.bus needs the mainport. data.CC_MainPort = HwSettings::CC_MAINPORT_SBUS; data.CC_FlexiPort = HwSettings::CC_FLEXIPORT_TELEMETRY; break; case VehicleConfigurationSource::INPUT_DSM: data.CC_FlexiPort = HwSettings::CC_FLEXIPORT_DSM; break; + case VehicleConfigurationSource::INPUT_SRXL: + data.CC_FlexiPort = HwSettings::CC_FLEXIPORT_SRXL; + break; default: break; } @@ -193,7 +196,7 @@ void VehicleConfigurationHelper::applyHardwareConfiguration() break; case VehicleConfigurationSource::INPUT_SBUS: data.RM_MainPort = HwSettings::RM_MAINPORT_SBUS; - // We have to set telemetry on flexport since s.bus needs the mainport on all but Revo. + // We have to set telemetry on flexiport since s.bus needs the mainport on all but Revo. if (m_configSource->getControllerType() != VehicleConfigurationSource::CONTROLLER_REVO) { data.RM_FlexiPort = HwSettings::RM_FLEXIPORT_TELEMETRY; } @@ -238,6 +241,7 @@ void VehicleConfigurationHelper::applyHardwareConfiguration() AuxMagSettings *magSettings = AuxMagSettings::GetInstance(m_uavoManager); Q_ASSERT(magSettings); AuxMagSettings::DataFields magsData = magSettings->getData(); + magsData.Type = AuxMagSettings::TYPE_GPSV9; magsData.Usage = AuxMagSettings::USAGE_AUXONLY; magSettings->setData(magsData); addModifiedObject(magSettings, tr("Writing External Mag sensor settings")); @@ -247,11 +251,12 @@ void VehicleConfigurationHelper::applyHardwareConfiguration() { gpsData.DataProtocol = GPSSettings::DATAPROTOCOL_UBX; gpsData.UbxAutoConfig = GPSSettings::UBXAUTOCONFIG_AUTOBAUDANDCONFIGURE; - data.RM_FlexiPort = HwSettings::RM_FLEXIPORT_I2C; + data.RM_FlexiPort = HwSettings::RM_FLEXIPORT_I2C; AuxMagSettings *magSettings = AuxMagSettings::GetInstance(m_uavoManager); Q_ASSERT(magSettings); AuxMagSettings::DataFields magsData = magSettings->getData(); - magsData.Usage = AuxMagSettings::USAGE_FLEXONLY; + magsData.Type = AuxMagSettings::TYPE_FLEXI; + magsData.Usage = AuxMagSettings::USAGE_AUXONLY; magSettings->setData(magsData); addModifiedObject(magSettings, tr("Writing I2C Mag sensor settings")); }