diff --git a/src/uas/UASParameterCommsMgr.cc b/src/uas/UASParameterCommsMgr.cc index 594e2447ec69ba805b5eadca58dbed0c95c01429..25e772b3ccb54dac10f7c6f5393566187fe0084f 100644 --- a/src/uas/UASParameterCommsMgr.cc +++ b/src/uas/UASParameterCommsMgr.cc @@ -5,6 +5,8 @@ #include "QGCUASParamManager.h" #include "UASInterface.h" +#define RC_CAL_CHAN_MAX 8 + UASParameterCommsMgr::UASParameterCommsMgr(QObject *parent, UASInterface *uas) : QObject(parent), mav(uas), @@ -212,6 +214,35 @@ void UASParameterCommsMgr::requestParameterUpdate(int component, const QString& } } +void UASParameterCommsMgr::requestRcCalibrationParamsUpdate() +{ + if (!transmissionListMode) { + QString minTpl("RC%1_MIN"); + QString maxTpl("RC%1_MAX"); + QString trimTpl("RC%1_TRIM"); + QString revTpl("RC%1_REV"); + + // Do not request the RC type, as these values depend on this + // active onboard parameter + + for (unsigned int i = 1; i < (RC_CAL_CHAN_MAX+1); ++i) { + qDebug() << "Request RC " << i; + mav->requestParameter(0, minTpl.arg(i)); + QGC::SLEEP::usleep(5000); + mav->requestParameter(0, trimTpl.arg(i)); + QGC::SLEEP::usleep(5000); + mav->requestParameter(0, maxTpl.arg(i)); + QGC::SLEEP::usleep(5000); + mav->requestParameter(0, revTpl.arg(i)); + QGC::SLEEP::usleep(5000); + } + } + else { + qDebug() << __FILE__ << __LINE__ << "Ignoring requestRcCalibrationParamsUpdate because we're receiving params list"; + } +} + + /** * @param component the subsystem which has the parameter * @param parameterName name of the parameter, as delivered by the system diff --git a/src/uas/UASParameterCommsMgr.h b/src/uas/UASParameterCommsMgr.h index 68c908bade48ce361cee10055871064e2c4163c9..03f24bb1d74a3894fecf84d0aa7b1cdba6d7f360 100644 --- a/src/uas/UASParameterCommsMgr.h +++ b/src/uas/UASParameterCommsMgr.h @@ -68,6 +68,9 @@ public slots: /** @brief Request a single parameter update by name */ virtual void requestParameterUpdate(int component, const QString& parameter); + /** @brief Request an update of RC parameters */ + virtual void requestRcCalibrationParamsUpdate(); + virtual void receivedParameterUpdate(int uas, int compId, int paramCount, int paramId, QString paramName, QVariant value); //protected slots: diff --git a/src/ui/QGCPX4VehicleConfig.cc b/src/ui/QGCPX4VehicleConfig.cc index d526ed53b3aeb22082067d04dc6aa7a4074e72f4..708d5a0b7b484a3db9f0d8b4097f68b767368d1f 100644 --- a/src/ui/QGCPX4VehicleConfig.cc +++ b/src/ui/QGCPX4VehicleConfig.cc @@ -13,9 +13,11 @@ #include #include "QGCPX4VehicleConfig.h" -#include "UASManager.h" + #include "QGC.h" #include "QGCToolWidget.h" +#include "UASManager.h" +#include "UASParameterCommsMgr.h" #include "ui_QGCPX4VehicleConfig.h" @@ -976,28 +978,8 @@ void QGCPX4VehicleConfig::writeCalibrationRC() void QGCPX4VehicleConfig::requestCalibrationRC() { - if (!mav ) { - return; - } - - QString minTpl("RC%1_MIN"); - QString maxTpl("RC%1_MAX"); - QString trimTpl("RC%1_TRIM"); - QString revTpl("RC%1_REV"); - - // Do not request the RC type, as these values depend on this - // active onboard parameter - - for (unsigned int i = 1; i < (chanMax+1); ++i) { - qDebug() << "Request RC " << i; - mav->requestParameter(0, minTpl.arg(i)); - QGC::SLEEP::usleep(5000); - mav->requestParameter(0, trimTpl.arg(i)); - QGC::SLEEP::usleep(5000); - mav->requestParameter(0, maxTpl.arg(i)); - QGC::SLEEP::usleep(5000); - mav->requestParameter(0, revTpl.arg(i)); - QGC::SLEEP::usleep(5000); + if (mav) { + mav->getParamCommsMgr()->requestRcCalibrationParamsUpdate(); } } diff --git a/src/ui/QGCVehicleConfig.cc b/src/ui/QGCVehicleConfig.cc index ce923ff49f1b82bfd6635c2b79758caa26927a8b..a296f28ff33026f985150b4e47c5e4b1603abf85 100644 --- a/src/ui/QGCVehicleConfig.cc +++ b/src/ui/QGCVehicleConfig.cc @@ -13,9 +13,11 @@ #include #include "QGCVehicleConfig.h" -#include "UASManager.h" + #include "QGC.h" #include "QGCToolWidget.h" +#include "UASManager.h" +#include "UASParameterCommsMgr.h" #include "ui_QGCVehicleConfig.h" QGCVehicleConfig::QGCVehicleConfig(QWidget *parent) : @@ -972,26 +974,8 @@ void QGCVehicleConfig::writeCalibrationRC() void QGCVehicleConfig::requestCalibrationRC() { - if (!mav) return; - - QString minTpl("RC%1_MIN"); - QString maxTpl("RC%1_MAX"); - QString trimTpl("RC%1_TRIM"); - QString revTpl("RC%1_REV"); - - // Do not request the RC type, as these values depend on this - // active onboard parameter - - for (unsigned int i = 0; i < chanMax; ++i) - { - mav->requestParameter(0, minTpl.arg(i+1)); - QGC::SLEEP::usleep(5000); - mav->requestParameter(0, trimTpl.arg(i+1)); - QGC::SLEEP::usleep(5000); - mav->requestParameter(0, maxTpl.arg(i+1)); - QGC::SLEEP::usleep(5000); - mav->requestParameter(0, revTpl.arg(i+1)); - QGC::SLEEP::usleep(5000); + if (mav) { + mav->getParamCommsMgr()->requestRcCalibrationParamsUpdate(); } }