Skip to content

Conversation

@DonLakeFlyer
Copy link
Collaborator

@DonLakeFlyer DonLakeFlyer commented Jan 31, 2026

Also:

  • Major cleanup on logging
  • Much better settings read/save with validation
  • Changes were to comprehensive to maintain conversion of legacy joystick settings. Joysticks will need re-calibration and enabling
  • Settings UI still sucks. I will work on that in another pull

Screenshot 2026-01-31 at 3 28 45 PM

Copilot AI review requested due to automatic review settings January 31, 2026 23:27
@github-actions github-actions bot added the QML label Jan 31, 2026
@DonLakeFlyer
Copy link
Collaborator Author

FYI: Not ready for testing yet. Waiting on Copilot review and then my own re-testing after I fix up whatever it finds.

@DonLakeFlyer
Copy link
Collaborator Author

FYI: @Niki-dev12, @ikalnytskyi, @HTRamsey. Stay tuned for when it's ready for testing.

@github-actions
Copy link
Contributor

github-actions bot commented Jan 31, 2026

Pre-commit Checks Failed

Status Count
Passed 11
Failed 54
Skipped 3
Hook Results
check yaml...............................................................Passed
check json...............................................................Passed
pretty format json.......................................................Failed
check xml................................................................Passed
check for merge conflicts................................................Passed
check for added large files..............................................Passed
trim trailing whitespace.................................................Failed
fix end of files.........................................................Failed
mixed line ending........................................................Passed
TruffleHog...............................................................Passed
clang-format.............................................................Failed
clang-tidy...............................................................Failed
ruff (legacy alias)......................................................Failed
ruff format..............................................................Failed
pyright..................................................................Failed
shellcheck...............................................................Failed
cmake-format.............................................................Failed
cmake-lint...............................................................Failed
Lint GitHub Actions workflow files.......................................Failed
yamllint.................................................................Failed
markdownlint.............................................................Failed
vale.....................................................................Failed
typos....................................................................Failed
Lint QML files...........................................................Failed
Qt static analysis (clazy)...............................................Passed
Check for Q_ASSERT in production code....................................Passed
Check vehicle null safety................................................Failed
Files Modified by Hooks
 .github/workflows/pr-checks.yml                       |  1 -
 src/Joystick/JoystickManager.cc                       |  1 -
 src/Utilities/Compression/CMakeLists.txt              |  2 --
 src/Utilities/Geo/geographiclib.patch                 |  8 ++++----
 src/Utilities/Geo/ogckml22.xsd                        | 10 +++++-----
 src/Vehicle/FactGroups/VehicleGPSAggregateFactGroup.h |  2 +-
 test/AnalyzeView/CMakeLists.txt                       |  1 -
 test/Utilities/FileSystem/QGCFileHelperTest.cc        |  1 -
 8 files changed, 10 insertions(+), 16 deletions(-)

How to Fix

./tools/pre-commit.sh
git add -u && git commit --amend --no-edit

Run ID: 21568280778

This comment was marked as outdated.

@github-actions
Copy link
Contributor

github-actions bot commented Feb 1, 2026

Build Results

Platform Status

Platform Status Details
Linux Passed View
Windows Passed View
MacOS Passed View
Android Passed View

All builds passed.

Test Results

linux_gcc_64: 635 passed, 0 skipped

Total: 635 passed, 0 skipped

Code Coverage

Coverage: 100.0%

No baseline available for comparison

Artifact Sizes

Artifact Size
QGroundControl-aarch64.AppImage 187.36 MB
QGroundControl-installer-AMD64-ARM64.exe 74.73 MB
QGroundControl-installer-AMD64.exe 162.61 MB
QGroundControl-installer-ARM64.exe 75.54 MB
QGroundControl-mac.apk 129.16 MB
QGroundControl-windows.apk 129.15 MB
QGroundControl-x86_64.AppImage 175.20 MB
QGroundControl.apk 287.34 MB
QGroundControl.dmg 312.12 MB

No baseline available for comparison

Updated: 2026-02-01 19:44:33 UTC • Triggered by: Android

@DonLakeFlyer
Copy link
Collaborator Author

DonLakeFlyer commented Feb 1, 2026

@HTRamsey I ended up with a nasty merge conflict with your movedSignificantly change. For now I've removed it. I see the problem you are trying to fix. But it's not quite right. It should be in both stick detect and stick min and should use _calValidMin/MaxValue to determine whether the stick has moved for enough away from center to consider it's position as a min/max value. I'll create an Issue for this once this pull goes in and fix it up in a separate pull

This comment was marked as outdated.

@DonLakeFlyer
Copy link
Collaborator Author

DonLakeFlyer commented Feb 1, 2026

Important things to check:

  • After calibration that the mapped indicators show that the values are mapped to the right channels are going in the right direction up/down, left/right as appropriate for function.
  • Quit QGC, restart and recheck mapped indicators to make sure load/save is working correctly.
  • Changing settings like enabling/disabling a new manual control extension should require you to re-calibrate.
  • Make sure you don't see any warnings in the logs

Also:
* Major cleanup on logging
* Much better settings read/save with validation
* Changes were to comprehensive to maintain conversion of legacy joystick settings. Joysticks will need re-calibration and enabling
@HTRamsey
Copy link
Collaborator

HTRamsey commented Feb 1, 2026

Oh yeah that's fine. I was having trouble figuring out if my calibration problem was SDL related or something else. Also FYI for bottom LS and bottom RS, you seem to have to go the other way from neutral a bit and then go to the target extreme to get it to register correctly.

@DonLakeFlyer
Copy link
Collaborator Author

Also FYI for bottom LS and bottom RS, you seem to have to go the other way from neutral a bit and then go to the target extreme to get it to register correctly.

Hmm, I never noticed that in the like 1000 joystick cals I went through to test this.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 20 out of 20 changed files in this pull request and generated 4 comments.

Comment on lines +78 to +88
Repeater {
model: [
{ name: qsTr("Pitch"), extensionEnabled: controller.pitchExtensionEnabled, mapped: controller.pitchExtensionChannelMapped, value: controller.adjustedPitchExtensionChannelValue, deadband: controller.pitchExtensionDeadband },
{ name: qsTr("Roll"), extensionEnabled: controller.rollExtensionEnabled, mapped: controller.rollExtensionChannelMapped, value: controller.adjustedRollExtensionChannelValue, deadband: controller.rollExtensionDeadband },
{ name: qsTr("Aux 1"), extensionEnabled: controller.aux1ExtensionEnabled, mapped: controller.aux1ExtensionChannelMapped, value: controller.adjustedAux1ExtensionChannelValue, deadband: controller.aux1ExtensionDeadband },
{ name: qsTr("Aux 2"), extensionEnabled: controller.aux2ExtensionEnabled, mapped: controller.aux2ExtensionChannelMapped, value: controller.adjustedAux2ExtensionChannelValue, deadband: controller.aux2ExtensionDeadband },
{ name: qsTr("Aux 3"), extensionEnabled: controller.aux3ExtensionEnabled, mapped: controller.aux3ExtensionChannelMapped, value: controller.adjustedAux3ExtensionChannelValue, deadband: controller.aux3ExtensionDeadband },
{ name: qsTr("Aux 4"), extensionEnabled: controller.aux4ExtensionEnabled, mapped: controller.aux4ExtensionChannelMapped, value: controller.adjustedAux4ExtensionChannelValue, deadband: controller.aux4ExtensionDeadband },
{ name: qsTr("Aux 5"), extensionEnabled: controller.aux5ExtensionEnabled, mapped: controller.aux5ExtensionChannelMapped, value: controller.adjustedAux5ExtensionChannelValue, deadband: controller.aux5ExtensionDeadband },
{ name: qsTr("Aux 6"), extensionEnabled: controller.aux6ExtensionEnabled, mapped: controller.aux6ExtensionChannelMapped, value: controller.adjustedAux6ExtensionChannelValue, deadband: controller.aux6ExtensionDeadband }
]
Copy link

Copilot AI Feb 1, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same issue as the attitude controls repeater: the extension controls Repeater model depends on rapidly-changing controller properties (values/deadbands/mapping), which can trigger repeated model rebuilds and UI churn. Prefer a static model (names/ids) and compute/bind the live controller values inside the delegate.

Copilot uses AI. Check for mistakes.
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tracked in #13917 and will be fixed in alter pull

Comment on lines +44 to +50
Repeater {
model: [
{ name: qsTr("Pitch"), mapped: controller.pitchChannelMapped, value: controller.adjustedPitchChannelValue, deadband: controller.pitchDeadband },
{ name: qsTr("Roll"), mapped: controller.rollChannelMapped, value: controller.adjustedRollChannelValue, deadband: controller.rollDeadband },
{ name: qsTr("Yaw"), mapped: controller.yawChannelMapped, value: controller.adjustedYawChannelValue, deadband: controller.yawDeadband },
{ name: qsTr("Throttle"), mapped: controller.throttleChannelMapped, value: controller.adjustedThrottleChannelValue, deadband: controller.throttleDeadband }
]
Copy link

Copilot AI Feb 1, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using a JS array literal with live controller properties as the Repeater model will cause the entire model (and delegates) to be rebuilt whenever any channel value/deadband/mapped property changes (which is frequent during calibration). Consider using a static model (names/ids only) and bind delegate properties directly to controller values based on index/id to avoid constant delegate destruction/recreation.

Copilot uses AI. Check for mistakes.
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tracked in #13917 and will be fixed in alter pull

@DonLakeFlyer
Copy link
Collaborator Author

This is ready for testing now. @HTRamsey Can you help test RC transmitter.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants