From 17313b9be5fb210c2eccd47ad4e240d38081ebdc Mon Sep 17 00:00:00 2001 From: DoinLakeFlyer Date: Tue, 14 Apr 2020 14:12:33 -0700 Subject: [PATCH] Set RC To Param support --- qgroundcontrol.pro | 2 + qgroundcontrol.qrc | 2 + src/QGCApplication.cc | 2 + src/QmlControls/ParameterEditor.qml | 7 +- src/QmlControls/ParameterEditorController.cc | 7 -- src/QmlControls/ParameterEditorController.h | 1 - src/QmlControls/ParameterEditorDialog.qml | 21 +++- .../QGroundControl/Controls/qmldir | 1 + .../RCToParamDialog.FactMetaData.json | 31 ++++++ src/QmlControls/RCToParamDialog.qml | 104 ++++++++++++++++++ src/QmlControls/RCToParamDialogController.cc | 54 +++++++++ src/QmlControls/RCToParamDialogController.h | 59 ++++++++++ src/QmlControls/ScreenTools.qml | 3 + src/Vehicle/Vehicle.cc | 48 ++++++++ src/Vehicle/Vehicle.h | 7 ++ src/comm/MockLink.cc | 20 ++++ src/comm/MockLink.h | 1 + src/uas/UAS.cc | 62 ----------- src/uas/UAS.h | 5 - src/uas/UASInterface.h | 6 - 20 files changed, 353 insertions(+), 90 deletions(-) create mode 100644 src/QmlControls/RCToParamDialog.FactMetaData.json create mode 100644 src/QmlControls/RCToParamDialog.qml create mode 100644 src/QmlControls/RCToParamDialogController.cc create mode 100644 src/QmlControls/RCToParamDialogController.h diff --git a/qgroundcontrol.pro b/qgroundcontrol.pro index f789b9cfe2..e88fd7ea92 100644 --- a/qgroundcontrol.pro +++ b/qgroundcontrol.pro @@ -652,6 +652,7 @@ HEADERS += \ src/QmlControls/QmlObjectListModel.h \ src/QmlControls/QGCGeoBoundingCube.h \ src/QmlControls/RCChannelMonitorController.h \ + src/QmlControls/RCToParamDialogController.h \ src/QmlControls/ScreenToolsController.h \ src/QtLocationPlugin/QMLControl/QGCMapEngineManager.h \ src/Settings/ADSBVehicleManagerSettings.h \ @@ -857,6 +858,7 @@ SOURCES += \ src/QmlControls/QmlObjectListModel.cc \ src/QmlControls/QGCGeoBoundingCube.cc \ src/QmlControls/RCChannelMonitorController.cc \ + src/QmlControls/RCToParamDialogController.cc \ src/QmlControls/ScreenToolsController.cc \ src/QtLocationPlugin/QMLControl/QGCMapEngineManager.cc \ src/Settings/ADSBVehicleManagerSettings.cc \ diff --git a/qgroundcontrol.qrc b/qgroundcontrol.qrc index 60c9112a0a..aa51b6443f 100644 --- a/qgroundcontrol.qrc +++ b/qgroundcontrol.qrc @@ -159,6 +159,7 @@ src/PlanView/RallyPointItemEditor.qml src/PlanView/RallyPointMapVisuals.qml src/QmlControls/RCChannelMonitor.qml + src/QmlControls/RCToParamDialog.qml src/QmlControls/RoundButton.qml src/QmlControls/SectionHeader.qml src/AutoPilotPlugins/Common/SetupPage.qml @@ -278,6 +279,7 @@ src/Settings/PlanView.SettingsGroup.json src/MissionManager/QGCMapCircle.Facts.json src/MissionManager/RallyPoint.FactMetaData.json + src/QmlControls/RCToParamDialog.FactMetaData.json src/Settings/RTK.SettingsGroup.json src/MissionManager/SpeedSection.FactMetaData.json src/MissionManager/StructureScan.SettingsGroup.json diff --git a/src/QGCApplication.cc b/src/QGCApplication.cc index 036e3bc960..1ab8d80cff 100644 --- a/src/QGCApplication.cc +++ b/src/QGCApplication.cc @@ -101,6 +101,7 @@ #include "VehicleObjectAvoidance.h" #include "TrajectoryPoints.h" #include "ValuesWidgetController.h" +#include "RCToParamDialogController.h" #if defined(QGC_ENABLE_PAIRING) #include "PairingManager.h" @@ -540,6 +541,7 @@ void QGCApplication::_initCommon() qmlRegisterType (kQGCControllers, 1, 0, "LogDownloadController"); qmlRegisterType (kQGCControllers, 1, 0, "SyslinkComponentController"); qmlRegisterType (kQGCControllers, 1, 0, "EditPositionDialogController"); + qmlRegisterType (kQGCControllers, 1, 0, "RCToParamDialogController"); #ifndef __mobile__ #ifndef NO_SERIAL_LINK diff --git a/src/QmlControls/ParameterEditor.qml b/src/QmlControls/ParameterEditor.qml index 310dd4cc15..32c2e45853 100644 --- a/src/QmlControls/ParameterEditor.qml +++ b/src/QmlControls/ParameterEditor.qml @@ -28,7 +28,8 @@ Item { property int _rowWidth: 10 // Dynamic adjusted at runtime property bool _searchFilter: searchText.text.trim() != "" ///< true: showing results of search property var _searchResults ///< List of parameter names from search results - property bool _showRCToParam: !ScreenTools.isMobile && QGroundControl.multiVehicleManager.activeVehicle.px4Firmware + property var _activeVehicle: QGroundControl.multiVehicleManager.activeVehicle + property bool _showRCToParam: _activeVehicle.px4Firmware property var _appSettings: QGroundControl.settingsManager.appSettings ParameterEditorController { @@ -133,8 +134,8 @@ Item { } QGCMenuSeparator { visible: _showRCToParam } QGCMenuItem { - text: qsTr("Clear RC to Param") - onTriggered: controller.clearRCToParam() + text: qsTr("Clear all RC to Param") + onTriggered: _activeVehicle.clearAllParamMapRC() visible: _showRCToParam } QGCMenuSeparator { } diff --git a/src/QmlControls/ParameterEditorController.cc b/src/QmlControls/ParameterEditorController.cc index 31b70598bf..8d4a4b84c4 100644 --- a/src/QmlControls/ParameterEditorController.cc +++ b/src/QmlControls/ParameterEditorController.cc @@ -86,13 +86,6 @@ QStringList ParameterEditorController::searchParameters(const QString& searchTex return list; } -void ParameterEditorController::clearRCToParam(void) -{ - if (_uas) { - _uas->unsetRCToParameterMap(); - } -} - void ParameterEditorController::saveToFile(const QString& filename) { if (!filename.isEmpty()) { diff --git a/src/QmlControls/ParameterEditorController.h b/src/QmlControls/ParameterEditorController.h index 5a43a07b9d..41c262c135 100644 --- a/src/QmlControls/ParameterEditorController.h +++ b/src/QmlControls/ParameterEditorController.h @@ -41,7 +41,6 @@ public: Q_INVOKABLE QStringList getGroupsForCategory(const QString& category); Q_INVOKABLE QStringList searchParameters(const QString& searchText, bool searchInName=true, bool searchInDescriptions=true); - Q_INVOKABLE void clearRCToParam(void); Q_INVOKABLE void saveToFile(const QString& filename); Q_INVOKABLE void loadFromFile(const QString& filename); Q_INVOKABLE void refresh(void); diff --git a/src/QmlControls/ParameterEditorDialog.qml b/src/QmlControls/ParameterEditorDialog.qml index 50ea2c91c4..7104fb88d5 100644 --- a/src/QmlControls/ParameterEditorDialog.qml +++ b/src/QmlControls/ParameterEditorDialog.qml @@ -10,6 +10,7 @@ import QtQuick 2.3 import QtQuick.Controls 1.2 import QtQuick.Layouts 1.2 +import QtQuick.Dialogs 1.3 import QGroundControl 1.0 import QGroundControl.Controls 1.0 @@ -125,8 +126,8 @@ QGCViewDialog { Layout.fillWidth: true focus: setFocus inputMethodHints: (fact.typeIsString || ScreenTools.isiOS) ? - Qt.ImhNone : // iOS numeric keyboard has no done button, we can't use it - Qt.ImhFormattedNumbersOnly // Forces use of virtual numeric keyboard + Qt.ImhNone : // iOS numeric keyboard has no done button, we can't use it + Qt.ImhFormattedNumbersOnly // Forces use of virtual numeric keyboard } QGCButton { @@ -286,11 +287,19 @@ QGCViewDialog { } QGCButton { - text: qsTr("Set RC to Param...") - width: _editFieldWidth - visible: _advanced.checked && !validate && showRCToParam - onClicked: controller.setRCToParam(fact.name) + text: qsTr("Set RC to Param") + width: _editFieldWidth + visible: _advanced.checked && !validate && showRCToParam + onClicked: mainWindow.showPopupDialog(rcToParamDialog) } } // Column } + + Component { + id: rcToParamDialog + + RCToParamDialog { + tuningFact: fact + } + } } // QGCViewDialog diff --git a/src/QmlControls/QGroundControl/Controls/qmldir b/src/QmlControls/QGroundControl/Controls/qmldir index 64250fb09f..469d041c8c 100644 --- a/src/QmlControls/QGroundControl/Controls/qmldir +++ b/src/QmlControls/QGroundControl/Controls/qmldir @@ -80,6 +80,7 @@ RallyPointEditorHeader 1.0 RallyPointEditorHeader.qml RallyPointItemEditor 1.0 RallyPointItemEditor.qml RallyPointMapVisuals 1.0 RallyPointMapVisuals.qml RCChannelMonitor 1.0 RCChannelMonitor.qml +RCToParamDialog 1.0 RCToParamDialog.qml RoundButton 1.0 RoundButton.qml SectionHeader 1.0 SectionHeader.qml SetupPage 1.0 SetupPage.qml diff --git a/src/QmlControls/RCToParamDialog.FactMetaData.json b/src/QmlControls/RCToParamDialog.FactMetaData.json new file mode 100644 index 0000000000..63d3af9a6f --- /dev/null +++ b/src/QmlControls/RCToParamDialog.FactMetaData.json @@ -0,0 +1,31 @@ +[ +{ + "name": "Scale", + "shortDescription": "Scale the RC range", + "type": "double", + "min": -1, + "max": 1, + "defaultValue": 1, + "decimalPlaces": 1 +}, +{ + "name": "CenterValue", + "shortDescription": "Parameter value when RC output is 0", + "type": "double", + "min": -180.0, + "max": 180.0, + "decimalPlaces": 7 +}, +{ + "name": "MinValue", + "shortDescription": "Minimum parameter value", + "type": "double", + "decimalPlaces": 7 +}, +{ + "name": "MaxValue", + "shortDescription": "Maximum parameter value", + "type": "double", + "decimalPlaces": 7 +} +] diff --git a/src/QmlControls/RCToParamDialog.qml b/src/QmlControls/RCToParamDialog.qml new file mode 100644 index 0000000000..f7d6a18ce5 --- /dev/null +++ b/src/QmlControls/RCToParamDialog.qml @@ -0,0 +1,104 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Layouts 1.2 +import QtQuick.Controls 2.5 +import QtQuick.Dialogs 1.3 + +import QGroundControl 1.0 +import QGroundControl.Controls 1.0 +import QGroundControl.ScreenTools 1.0 +import QGroundControl.FactSystem 1.0 +import QGroundControl.FactControls 1.0 +import QGroundControl.Controllers 1.0 + +QGCPopupDialog { + property alias tuningFact: controller.tuningFact + + title: qsTr("RC To Param") + buttons: StandardButton.Cancel | StandardButton.Ok + + function accept() { + QGroundControl.multiVehicleManager.activeVehicle.sendParamMapRC(tuningFact.name, scale.text, centerValue.text, tuningID.currentIndex, minValue.text, maxValue.text); + hideDialog() + } + + RCToParamDialogController { + id: controller + } + + ColumnLayout { + spacing: ScreenTools.defaultDialogControlSpacing + + QGCLabel { + Layout.preferredWidth: mainGrid.width + Layout.fillWidth: true + wrapMode: Text.WordWrap + text: qsTr("Bind an RC Channel to a parameter value. Tuning IDs can be mapped to an RC Channel from Radio Setup page.") + } + + QGCLabel { + Layout.preferredWidth: mainGrid.width + Layout.fillWidth: true + text: qsTr("Waiting on parameter update from Vehicle.") + visible: !controller.ready + } + + GridLayout { + id: mainGrid + columns: 2 + rowSpacing: ScreenTools.defaultDialogControlSpacing + columnSpacing: ScreenTools.defaultDialogControlSpacing + enabled: controller.ready + + QGCLabel { text: qsTr("Parameter") } + QGCLabel { text: tuningFact.name } + + QGCLabel { text: qsTr("Tuning ID") } + QGCComboBox { + id: tuningID + Layout.fillWidth: true + currentIndex: 0 + model: [ 1, 2, 3 ] + } + + QGCLabel { text: qsTr("Scale") } + QGCTextField { + id: scale + text: controller.scale.valueString + } + + QGCLabel { text: qsTr("Center Value") } + QGCTextField { + id: centerValue + text: controller.center.valueString + } + + QGCLabel { text: qsTr("Min Value") } + QGCTextField { + id: minValue + text: controller.min.valueString + } + + QGCLabel { text: qsTr("Max Value") } + QGCTextField { + id: maxValue + text: controller.max.valueString + } + } + + QGCLabel { + Layout.preferredWidth: mainGrid.width + Layout.fillWidth: true + wrapMode: Text.WordWrap + text: qsTr("Double check that all values are correct prior to confirming dialog.") + } + } +} diff --git a/src/QmlControls/RCToParamDialogController.cc b/src/QmlControls/RCToParamDialogController.cc new file mode 100644 index 0000000000..a675351652 --- /dev/null +++ b/src/QmlControls/RCToParamDialogController.cc @@ -0,0 +1,54 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +#include "RCToParamDialogController.h" +#include "QGCApplication.h" +#include "ParameterManager.h" + +const char* RCToParamDialogController::_scaleFactName = "Scale"; +const char* RCToParamDialogController::_centerFactName = "CenterValue"; +const char* RCToParamDialogController::_minFactName = "MinValue"; +const char* RCToParamDialogController::_maxFactName = "MaxValue"; + +QMap RCToParamDialogController::_metaDataMap; + +RCToParamDialogController::RCToParamDialogController(void) + : _scaleFact (0, _scaleFactName, FactMetaData::valueTypeDouble) + , _centerFact (0, _centerFactName, FactMetaData::valueTypeDouble) + , _minFact (0, _minFactName, FactMetaData::valueTypeDouble) + , _maxFact (0, _maxFactName, FactMetaData::valueTypeDouble) +{ + if (_metaDataMap.isEmpty()) { + _metaDataMap = FactMetaData::createMapFromJsonFile(QStringLiteral(":/json/RCToParamDialog.FactMetaData.json"), nullptr /* QObject parent */); + } + + _scaleFact.setMetaData (_metaDataMap[_scaleFactName], true /* setDefaultFromMetaData */); + _centerFact.setMetaData (_metaDataMap[_centerFactName]); + _minFact.setMetaData (_metaDataMap[_minFactName]); + _maxFact.setMetaData (_metaDataMap[_maxFactName]); +} + +void RCToParamDialogController::setTuningFact(Fact* tuningFact) +{ + _tuningFact = tuningFact; + emit tuningFactChanged(tuningFact); + + _centerFact.setRawValue(_tuningFact->rawValue().toDouble()); + _minFact.setRawValue(_tuningFact->rawMin().toDouble()); + _maxFact.setRawValue(_tuningFact->rawMax().toDouble()); + + connect(_tuningFact, &Fact::vehicleUpdated, this, &RCToParamDialogController::_parameterUpdated); + qgcApp()->toolbox()->multiVehicleManager()->activeVehicle()->parameterManager()->refreshParameter(FactSystem::defaultComponentId, _tuningFact->name()); +} + +void RCToParamDialogController::_parameterUpdated(void) +{ + _ready = true; + emit readyChanged(true); +} diff --git a/src/QmlControls/RCToParamDialogController.h b/src/QmlControls/RCToParamDialogController.h new file mode 100644 index 0000000000..7f8cb2836b --- /dev/null +++ b/src/QmlControls/RCToParamDialogController.h @@ -0,0 +1,59 @@ +/**************************************************************************** + * + * (c) 2009-2020 QGROUNDCONTROL PROJECT + * + * QGroundControl is licensed according to the terms in the file + * COPYING.md in the root of the source code directory. + * + ****************************************************************************/ + +#pragma once + +#include +#include + +#include "FactSystem.h" + +class RCToParamDialogController : public QObject +{ + Q_OBJECT + +public: + RCToParamDialogController(void); + + Q_PROPERTY(Fact* tuningFact READ tuningFact WRITE setTuningFact NOTIFY tuningFactChanged) + Q_PROPERTY(bool ready MEMBER _ready NOTIFY readyChanged) // true: editing can begin, false: still waiting for param update from vehicle + Q_PROPERTY(Fact* scale READ scale CONSTANT) + Q_PROPERTY(Fact* center READ center CONSTANT) + Q_PROPERTY(Fact* min READ min CONSTANT) + Q_PROPERTY(Fact* max READ max CONSTANT) + + Fact* tuningFact (void) { return _tuningFact; } + Fact* scale (void) { return &_scaleFact; } + Fact* center (void) { return &_centerFact; } + Fact* min (void) { return &_minFact; } + Fact* max (void) { return &_maxFact; } + void setTuningFact (Fact* tuningFact); + +signals: + void tuningFactChanged (Fact* fact); + void readyChanged (bool ready); + +private slots: + void _parameterUpdated(void); + +private: + static QMap _metaDataMap; + + Fact* _tuningFact = nullptr; + bool _ready = false; + Fact _scaleFact; + Fact _centerFact; + Fact _minFact; + Fact _maxFact; + + static const char* _scaleFactName; + static const char* _centerFactName; + static const char* _minFactName; + static const char* _maxFactName; +}; diff --git a/src/QmlControls/ScreenTools.qml b/src/QmlControls/ScreenTools.qml index 5cc5958354..a151a498df 100644 --- a/src/QmlControls/ScreenTools.qml +++ b/src/QmlControls/ScreenTools.qml @@ -46,6 +46,9 @@ Item { /// QFontMetrics::descent for default font at default point size property real defaultFontDescent: 0 + /// The default amount of space in between controls in a dialog + property real defaultDialogControlSpacing: defaultFontPixelHeight / 2 + property real smallFontPointSize: 10 property real mediumFontPointSize: 10 property real largeFontPointSize: 10 diff --git a/src/Vehicle/Vehicle.cc b/src/Vehicle/Vehicle.cc index d9c7adeaff..a3b551805a 100644 --- a/src/Vehicle/Vehicle.cc +++ b/src/Vehicle/Vehicle.cc @@ -4337,6 +4337,54 @@ void Vehicle::updateFlightDistance(double distance) _flightDistanceFact.setRawValue(_flightDistanceFact.rawValue().toDouble() + distance); } +void Vehicle::sendParamMapRC(const QString& paramName, double scale, double centerValue, int tuningID, double minValue, double maxValue) +{ + mavlink_message_t message; + + char param_id_cstr[MAVLINK_MSG_PARAM_MAP_RC_FIELD_PARAM_ID_LEN] = {}; + // Copy string into buffer, ensuring not to exceed the buffer size + for (unsigned int i = 0; i < sizeof(param_id_cstr); i++) { + if ((int)i < paramName.length()) { + param_id_cstr[i] = paramName.toLatin1()[i]; + } + } + + mavlink_msg_param_map_rc_pack_chan(static_cast(_mavlink->getSystemId()), + static_cast(_mavlink->getComponentId()), + priorityLink()->mavlinkChannel(), + &message, + _id, + MAV_COMP_ID_AUTOPILOT1, + param_id_cstr, + -1, // parameter name specified as string in previous argument + static_cast(tuningID), + static_cast(scale), + static_cast(centerValue), + static_cast(minValue), + static_cast(maxValue)); + sendMessageOnLink(priorityLink(), message); +} + +void Vehicle::clearAllParamMapRC(void) +{ + char param_id_cstr[MAVLINK_MSG_PARAM_MAP_RC_FIELD_PARAM_ID_LEN] = {}; + + for (int i = 0; i < 3; i++) { + mavlink_message_t message; + mavlink_msg_param_map_rc_pack_chan(static_cast(_mavlink->getSystemId()), + static_cast(_mavlink->getComponentId()), + priorityLink()->mavlinkChannel(), + &message, + _id, + MAV_COMP_ID_AUTOPILOT1, + param_id_cstr, + -2, // Disable map for specified tuning id + i, // tuning id + 0, 0, 0, 0); // unused + sendMessageOnLink(priorityLink(), message); + } +} + //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- diff --git a/src/Vehicle/Vehicle.h b/src/Vehicle/Vehicle.h index 33cf7ed76e..e8b0d22073 100644 --- a/src/Vehicle/Vehicle.h +++ b/src/Vehicle/Vehicle.h @@ -781,6 +781,13 @@ public: Q_INVOKABLE void gimbalYawStep (int direction); Q_INVOKABLE void centerGimbal (); + /// Sends PARAM_MAP_RC message to vehicle + Q_INVOKABLE void sendParamMapRC(const QString& paramName, double scale, double centerValue, int tuningID, double minValue, double maxValue); + + /// Clears all PARAM_MAP_RC settings from vehicle + Q_INVOKABLE void clearAllParamMapRC(void); + + #if !defined(NO_ARDUPILOT_DIALECT) Q_INVOKABLE void flashBootloader(); #endif diff --git a/src/comm/MockLink.cc b/src/comm/MockLink.cc index f296126750..d7c0d4fc9c 100644 --- a/src/comm/MockLink.cc +++ b/src/comm/MockLink.cc @@ -505,6 +505,10 @@ void MockLink::_handleIncomingMavlinkBytes(const uint8_t* bytes, int cBytes) _handleLogRequestData(msg); break; + case MAVLINK_MSG_ID_PARAM_MAP_RC: + _handleParamMapRC(msg); + break; + default: break; } @@ -517,6 +521,22 @@ void MockLink::_handleHeartBeat(const mavlink_message_t& msg) qCDebug(MockLinkLog) << "Heartbeat"; } +void MockLink::_handleParamMapRC(const mavlink_message_t& msg) +{ + mavlink_param_map_rc_t paramMapRC; + mavlink_msg_param_map_rc_decode(&msg, ¶mMapRC); + + const QString paramName(QString::fromLocal8Bit(paramMapRC.param_id, static_cast(strnlen(paramMapRC.param_id, MAVLINK_MSG_PARAM_MAP_RC_FIELD_PARAM_ID_LEN)))); + + if (paramMapRC.param_index == -1) { + qDebug() << QStringLiteral("MockLink - PARAM_MAP_RC: param(%1) tuningID(%2) centerValue(%3) scale(%4) min(%5) max(%6)").arg(paramName).arg(paramMapRC.parameter_rc_channel_index).arg(paramMapRC.param_value0).arg(paramMapRC.scale).arg(paramMapRC.param_value_min).arg(paramMapRC.param_value_max); + } else if (paramMapRC.param_index == -2) { + qDebug() << QStringLiteral("MockLink - PARAM_MAP_RC: Clear tuningID(%1)").arg(paramMapRC.parameter_rc_channel_index); + } else { + qWarning() << QStringLiteral("MockLink - PARAM_MAP_RC: Unsupported param_index(%1)").arg(paramMapRC.param_index); + } +} + void MockLink::_handleSetMode(const mavlink_message_t& msg) { mavlink_set_mode_t request; diff --git a/src/comm/MockLink.h b/src/comm/MockLink.h index 5b8a32547d..60aa7de9b9 100644 --- a/src/comm/MockLink.h +++ b/src/comm/MockLink.h @@ -192,6 +192,7 @@ private: void _handlePreFlightCalibration (const mavlink_command_long_t& request); void _handleLogRequestList (const mavlink_message_t& msg); void _handleLogRequestData (const mavlink_message_t& msg); + void _handleParamMapRC (const mavlink_message_t& msg); float _floatUnionForParam (int componentId, const QString& paramName); void _setParamFloatUnionIntoMap (int componentId, const QString& paramName, float paramFloat); void _sendHomePosition (void); diff --git a/src/uas/UAS.cc b/src/uas/UAS.cc index 4a263d6d4d..ab6dcc4dfc 100644 --- a/src/uas/UAS.cc +++ b/src/uas/UAS.cc @@ -986,68 +986,6 @@ void UAS::pairRX(int rxType, int rxSubType) } } -void UAS::sendMapRCToParam(QString param_id, float scale, float value0, quint8 param_rc_channel_index, float valueMin, float valueMax) -{ - if (!_vehicle) { - return; - } - - mavlink_message_t message; - - char param_id_cstr[MAVLINK_MSG_PARAM_MAP_RC_FIELD_PARAM_ID_LEN] = {}; - // Copy string into buffer, ensuring not to exceed the buffer size - for (unsigned int i = 0; i < sizeof(param_id_cstr); i++) - { - if ((int)i < param_id.length()) - { - param_id_cstr[i] = param_id.toLatin1()[i]; - } - } - - mavlink_msg_param_map_rc_pack_chan(mavlink->getSystemId(), - mavlink->getComponentId(), - _vehicle->priorityLink()->mavlinkChannel(), - &message, - this->uasId, - _vehicle->defaultComponentId(), - param_id_cstr, - -1, - param_rc_channel_index, - value0, - scale, - valueMin, - valueMax); - _vehicle->sendMessageOnLink(_vehicle->priorityLink(), message); - //qDebug() << "Mavlink message sent"; -} - -void UAS::unsetRCToParameterMap() -{ - if (!_vehicle) { - return; - } - - char param_id_cstr[MAVLINK_MSG_PARAM_MAP_RC_FIELD_PARAM_ID_LEN] = {}; - - for (int i = 0; i < 3; i++) { - mavlink_message_t message; - mavlink_msg_param_map_rc_pack_chan(mavlink->getSystemId(), - mavlink->getComponentId(), - _vehicle->priorityLink()->mavlinkChannel(), - &message, - this->uasId, - _vehicle->defaultComponentId(), - param_id_cstr, - -2, - i, - 0.0f, - 0.0f, - 0.0f, - 0.0f); - _vehicle->sendMessageOnLink(_vehicle->priorityLink(), message); - } -} - void UAS::shutdownVehicle(void) { _vehicle = nullptr; diff --git a/src/uas/UAS.h b/src/uas/UAS.h index e9faa24adf..9a38b6d59e 100644 --- a/src/uas/UAS.h +++ b/src/uas/UAS.h @@ -210,11 +210,6 @@ public slots: void startBusConfig(StartBusConfigType calType); void stopBusConfig(void); - /** @brief Send command to map a RC channel to a parameter */ - void sendMapRCToParam(QString param_id, float scale, float value0, quint8 param_rc_channel_index, float valueMin, float valueMax); - - /** @brief Send command to disable all bindings/maps between RC and parameters */ - void unsetRCToParameterMap(); signals: void imageStarted(quint64 timestamp); /** @brief A new camera image has arrived */ diff --git a/src/uas/UASInterface.h b/src/uas/UASInterface.h index c2aee79c53..e4e141a2aa 100644 --- a/src/uas/UASInterface.h +++ b/src/uas/UASInterface.h @@ -82,12 +82,6 @@ public slots: /** @brief Order the robot to pair its receiver **/ virtual void pairRX(int rxType, int rxSubType) = 0; - /** @brief Send command to map a RC channel to a parameter */ - virtual void sendMapRCToParam(QString param_id, float scale, float value0, quint8 param_rc_channel_index, float valueMin, float valueMax) = 0; - - /** @brief Send command to disable all bindings/maps between RC and parameters */ - virtual void unsetRCToParameterMap() = 0; - signals: /** @brief The robot is connected **/ void connected(); -- GitLab