Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
b8a6f02
Vehicle, Toolbar: update operator control to final MAVLink #2313 spec
Davidsastresas Jun 11, 2026
71b405f
Vehicle, Toolbar: fix operator control request countdown lifecycle
Davidsastresas Jun 11, 2026
3b0ac5d
Vehicle: ack operator control takeover notification
Davidsastresas Jun 11, 2026
1ef74aa
Vehicle: address operator control commands to the system manager comp…
Davidsastresas Jun 12, 2026
b2bc953
Vehicle: use acquire/release ordering for joystick operator control gate
Davidsastresas Jun 12, 2026
20ba03e
Toolbar: warn when secondary GCS range covers unconfigured ids
Davidsastresas Jun 12, 2026
65f500e
GCSControlIndicator.qml: fix labels when no one in control and takeov…
Davidsastresas Jun 14, 2026
62aaea0
GCSControlIndicator.qml: fix width for aditional GCS in range label
Davidsastresas Jun 14, 2026
9fef2cd
GCSControlIndicator.qml: accept space separated too for secondary GCS…
Davidsastresas Jun 17, 2026
d4a345e
Toolbar: redesign GCS control indicator with role-based icons
Davidsastresas Jun 18, 2026
2f2d4cc
GCSControlIndicator.qml: rework GCS control panel:
Davidsastresas Jun 18, 2026
9b5cbd4
GCSControlIndicator.qml: use ToolIndicatorPage expandedComponent
Davidsastresas Jun 18, 2026
a7c59b3
Move Multi-GCS code from vehicle to dedicated GCSControlManager
Davidsastresas Jun 18, 2026
a22d996
GCSControlIndicator.qml: Update styling on some labels
Davidsastresas Jun 18, 2026
d09bb50
Vehicle.cc: Remove no longer used QtCore/QRegularExpression
Davidsastresas Jun 18, 2026
47d0f04
GCSControlManager.cc: Fix comment
Davidsastresas Jun 18, 2026
eb9614c
FirmwarePlugin: GCSControlIndicator.qml available for non debug builds
Davidsastresas Jun 22, 2026
7e7917a
GCSControlManager: stop configuring secondary GCS membership from QGC
Davidsastresas Jul 6, 2026
71b3612
GCSControlManager: surface rejections, gate on SYSTEM_MANAGER, multi-…
Davidsastresas Jul 14, 2026
2303a27
GCSControlManager: log if 2 compids are claiming SYSTEM_MANAGER flag
Davidsastresas Jul 14, 2026
1d59528
Update mavlink tag version
Davidsastresas Jul 15, 2026
ac70f93
GCSControlManager: do not re-prompt if revert popup is active
Davidsastresas Jul 15, 2026
05b46ae
Add autotests for OPERATOR_CONTROL protocol implementation
Davidsastresas Jul 15, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion cmake/CustomOptions.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ option(QGC_ENABLE_QT_VIDEOSTREAMING "Enable QtMultimedia video backend" OFF)
# ============================================================================

set(QGC_MAVLINK_GIT_REPO "https://github.com/mavlink/mavlink.git" CACHE STRING "MAVLink repository URL")
set(QGC_MAVLINK_GIT_TAG "c409cf690454db6d3e004bd14173bc6c7ff1e0ff" CACHE STRING "MAVLink repository commit/tag")
set(QGC_MAVLINK_GIT_TAG "362f7e0f8f37cacd79f85b567a8ae6193e8afbd0" CACHE STRING "MAVLink repository commit/tag")
set(QGC_MAVLINK_DIALECT "all" CACHE STRING "MAVLink dialect")
set(QGC_MAVLINK_VERSION "2.0" CACHE STRING "MAVLink protocol version")

Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
24 changes: 24 additions & 0 deletions resources/gcscontrolIndicator/multigcs_device_alt.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
20 changes: 20 additions & 0 deletions resources/gcscontrolIndicator/multigcs_lock_closed.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
20 changes: 20 additions & 0 deletions resources/gcscontrolIndicator/multigcs_lock_open.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions src/Comms/MockLink/MockLink.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1733,6 +1733,10 @@ void MockLink::_handleCommandLong(const mavlink_message_t &msg)
_handleTakeoff(request);
commandResult = MAV_RESULT_ACCEPTED;
break;
case MAV_CMD_REQUEST_OPERATOR_CONTROL:
// Result is settable so tests can exercise the pending (FAILED) vs rejected paths
commandResult = _requestOperatorControlResult;
break;
case MAV_CMD_MOCKLINK_ALWAYS_RESULT_ACCEPTED:
// Test command which always returns MAV_RESULT_ACCEPTED
commandResult = MAV_RESULT_ACCEPTED;
Expand Down
3 changes: 3 additions & 0 deletions src/Comms/MockLink/MockLink.h
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,8 @@ class MockLink : public LinkInterface
void clearReceivedMavCommandCounts() { _receivedMavCommandCountMap.clear(); _receivedMavCommandByCompCountMap.clear(); _receivedRequestMessageByCompAndMsgCountMap.clear(); }
int receivedMavCommandCount(MAV_CMD command) const { return _receivedMavCommandCountMap.value(command, 0); }
int receivedMavCommandCount(MAV_CMD command, int compId) const { return _receivedMavCommandByCompCountMap.value(command).value(compId, 0); }
/// Result acked for MAV_CMD_REQUEST_OPERATOR_CONTROL (defaults to MAV_RESULT_UNSUPPORTED: not implemented)
void setRequestOperatorControlResult(MAV_RESULT result) { _requestOperatorControlResult = result; }
int receivedRequestMessageCount(int compId, int messageId) const { return _receivedRequestMessageByCompAndMsgCountMap.value(compId).value(messageId, 0); }
void clearReceivedRequestMessageCounts() { _receivedRequestMessageCountMap.clear(); _receivedRequestMessageByCompAndMsgCountMap.clear(); }
int receivedRequestMessageCount(uint32_t messageId) const { return _receivedRequestMessageCountMap.value(messageId, 0); }
Expand Down Expand Up @@ -384,6 +386,7 @@ private slots:
bool _paramRequestReadFailureFirstAttemptPending = false;
bool _hashCheckNoResponse = false;
int _hashCheckRequestCount = 0;
MAV_RESULT _requestOperatorControlResult = MAV_RESULT_UNSUPPORTED;
bool _paramRequestListHashCheckSent = false;
bool _resetSysAutostartOnParamReset = false;

Expand Down
3 changes: 0 additions & 3 deletions src/FirmwarePlugin/FirmwarePlugin.cc
Original file line number Diff line number Diff line change
Expand Up @@ -209,10 +209,7 @@ const QVariantList &FirmwarePlugin::toolIndicators(const Vehicle*)
QVariant::fromValue(QUrl::fromUserInput("qrc:/qml/QGroundControl/Toolbar/EscIndicator.qml")),
QVariant::fromValue(QUrl::fromUserInput("qrc:/qml/QGroundControl/Toolbar/JoystickIndicator.qml")),
QVariant::fromValue(QUrl::fromUserInput("qrc:/qml/QGroundControl/Toolbar/MultiVehicleSelector.qml")),
#ifdef QT_DEBUG
// ControlIndicator is only available in debug builds for the moment
QVariant::fromValue(QUrl::fromUserInput("qrc:/qml/QGroundControl/Toolbar/GCSControlIndicator.qml")),
#endif
});
}

Expand Down
9 changes: 6 additions & 3 deletions src/Toolbar/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,10 @@ qt_add_resources(${CMAKE_PROJECT_NAME} toolbar_gcscontrol_resources
PREFIX "/gcscontrolIndicator"
BASE "${CMAKE_SOURCE_DIR}/resources/gcscontrolIndicator"
FILES
"${CMAKE_SOURCE_DIR}/resources/gcscontrolIndicator/gcscontrol_device.svg"
"${CMAKE_SOURCE_DIR}/resources/gcscontrolIndicator/gcscontrol_gcs.svg"
"${CMAKE_SOURCE_DIR}/resources/gcscontrolIndicator/gcscontrol_line.svg"
"${CMAKE_SOURCE_DIR}/resources/gcscontrolIndicator/multigcs_aircraft.svg"
"${CMAKE_SOURCE_DIR}/resources/gcscontrolIndicator/multigcs_line.svg"
"${CMAKE_SOURCE_DIR}/resources/gcscontrolIndicator/multigcs_device.svg"
"${CMAKE_SOURCE_DIR}/resources/gcscontrolIndicator/multigcs_device_alt.svg"
"${CMAKE_SOURCE_DIR}/resources/gcscontrolIndicator/multigcs_lock_open.svg"
"${CMAKE_SOURCE_DIR}/resources/gcscontrolIndicator/multigcs_lock_closed.svg"
)
Loading
Loading