diff --git a/src/FlightDisplay/FlightDisplayViewMap.qml b/src/FlightDisplay/FlightDisplayViewMap.qml index 9e2c630d4a68462a3419b8b35dff8d5bd8f34e1a..2a174f943a667896e366f07cd3eee9444b5681dd 100644 --- a/src/FlightDisplay/FlightDisplayViewMap.qml +++ b/src/FlightDisplay/FlightDisplayViewMap.qml @@ -48,6 +48,7 @@ FlightMap { property bool _activeVehicleCoordinateValid: _activeVehicle ? _activeVehicle.coordinateValid : false property var activeVehicleCoordinate: _activeVehicle ? _activeVehicle.coordinate : QtPositioning.coordinate() property var _gotoHereCoordinate: QtPositioning.coordinate() + property int _retaskSequence: 0 Component.onCompleted: { QGroundControl.flightMapPosition = center diff --git a/src/FlightDisplay/FlightDisplayViewWidgets.qml b/src/FlightDisplay/FlightDisplayViewWidgets.qml index 370c748f7852ea48c4e55ab015760deb07684f20..77a92f818e2e33afc404054d99b73a4c914c57a7 100644 --- a/src/FlightDisplay/FlightDisplayViewWidgets.qml +++ b/src/FlightDisplay/FlightDisplayViewWidgets.qml @@ -286,6 +286,7 @@ Item { readonly property int confirmEmergencyStop: 6 readonly property int confirmChangeAlt: 7 readonly property int confirmGoTo: 8 + readonly property int confirmRetask: 9 property int confirmActionCode property string confirmText @@ -322,6 +323,9 @@ Item { case confirmGoTo: _activeVehicle.guidedModeGotoLocation(_flightMap._gotoHereCoordinate) break; + case confirmRetask: + _activeVehicle.setCurrentMissionSequence(_flightMap._retaskSequence) + break; default: console.warn("Internal error: unknown confirmActionCode", confirmActionCode) } @@ -355,6 +359,9 @@ Item { case confirmGoTo: _guidedModeBar.confirmText = "move" break; + case confirmRetask: + _guidedModeBar.confirmText = "active waypoint change" + break; } guidedModeButtons.visible = false guidedModeConfirm.visible = true diff --git a/src/FlightMap/MapItems/MissionItemView.qml b/src/FlightMap/MapItems/MissionItemView.qml index 9304953984022c3e1367d08bbc2f3e3107209ccc..b55a07f87a5a266308a3a0293c31f322abc75ad1 100644 --- a/src/FlightMap/MapItems/MissionItemView.qml +++ b/src/FlightMap/MapItems/MissionItemView.qml @@ -42,6 +42,10 @@ MapItemView { z: QGroundControl.zOrderMapItems missionItem: object sequenceNumber: object.sequenceNumber + onClicked: { + parent._retaskSequence = object.sequenceNumber + parent.flightWidgets.guidedModeBar.confirmAction(parent.flightWidgets.guidedModeBar.confirmRetask) + } // These are the non-coordinate child mission items attached to this item Row { @@ -55,8 +59,6 @@ MapItemView { label: object.sequenceNumber isCurrentItem: object.isCurrentItem z: 2 - - onClicked: setCurrentItem(object.sequenceNumber) } } } diff --git a/src/Vehicle/Vehicle.cc b/src/Vehicle/Vehicle.cc index 1bc03457348904b753f75e33139531d7d82b9096..840e6fdf696033b248a2ce9eeba544b099db0cab 100644 --- a/src/Vehicle/Vehicle.cc +++ b/src/Vehicle/Vehicle.cc @@ -1490,6 +1490,16 @@ void Vehicle::emergencyStop(void) sendMessage(msg); } +void Vehicle::setCurrentMissionSequence(int seq) +{ + if (!_firmwarePlugin->sendHomePositionToVehicle()) { + seq--; + } + mavlink_message_t msg; + mavlink_msg_mission_set_current_pack(_mavlink->getSystemId(), _mavlink->getComponentId(), &msg, id(), _compID, seq); + sendMessage(msg); +} + void Vehicle::doCommandLong(int component, MAV_CMD command, float param1, float param2, float param3, float param4, float param5, float param6, float param7) { mavlink_message_t msg; @@ -1511,6 +1521,7 @@ void Vehicle::doCommandLong(int component, MAV_CMD command, float param1, float sendMessage(msg); } + const char* VehicleGPSFactGroup::_hdopFactName = "hdop"; const char* VehicleGPSFactGroup::_vdopFactName = "vdop"; const char* VehicleGPSFactGroup::_courseOverGroundFactName = "courseOverGround"; diff --git a/src/Vehicle/Vehicle.h b/src/Vehicle/Vehicle.h index 560b4ba9c5b01762337c67c6f66730a305a4b430..6167eb72ab963249bdace9c4bd40a7e375e3d477 100644 --- a/src/Vehicle/Vehicle.h +++ b/src/Vehicle/Vehicle.h @@ -356,6 +356,9 @@ public: /// Command vehicle to kill all motors no matter what state Q_INVOKABLE void emergencyStop(void); + /// Alter the current mission item on the vehicle + Q_INVOKABLE void setCurrentMissionSequence(int seq); + bool guidedModeSupported(void) const; bool pauseVehicleSupported(void) const; @@ -430,6 +433,7 @@ public: QString flightMode(void) const; void setFlightMode(const QString& flightMode); + bool hilMode(void); void setHilMode(bool hilMode);