Merge release/9.1 into maintenance-10.x#11681
Conversation
…roxh7-v2 AEDROXH7: fix LED strip DMA conflict with motor outputs
The fixed-wing waypoint cross-track controller (nav_fw_wp_tracking_accuracy) kept its rate/error state in function-local statics that were never reset. After a turn or loiter, where the controller is disengaged (needToCalculateCircularLoiter), the first sample on the next leg was computed from stale data from the previous leg, causing a small heading twitch when rejoining the course line. Re-seed the controller state to the current cross-track error while it is not actively steering, so it re-engages cleanly on the next leg.
When a WP mission JUMP activated its target waypoint, isWaypointReached() could read a wpTurnSmoothingActive flag left over from the previous waypoint. The JUMP defers target setup by one navigation loop, and in that gap the FW position controller re-arms the flag from the previous waypoint's geometry. With nav_fw_wp_turn_smoothing = CUT this marks the jump target as reached on its first loop (and cascades the following WP via the bearing-miss check), so the mission jumps to target+1 instead of the target. Reset wpTurnSmoothingActive when a new active waypoint is set so a freshly activated waypoint cannot inherit the previous waypoint's smoothing-reached state. Turn smoothing is otherwise unchanged: the FW controller recomputes the flag every position update from the new waypoint geometry. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…tate-reset Fixed wing nav: reset WP cross-track tracking state on re-engagement
FW nav: fix WP JUMP target skipped by stale turn-smoothing flag
Removed a link to a specific OLED display from the documentation. Resolves iNavFlight#11660
…ase-link Remove outdated OLED display link from Display.md
_logBufferHex() sized a stack buffer using two `const size_t` locals (charsPerByte, maxBytes). In C, const-qualified objects are not integer constant expressions, so the array size expression was technically a variable-length array; recent AppleClang treats reliance on its extension that folds such expressions back to a constant as an error under -Werror -Wgnu-folding-constant, breaking build-SITL-Mac. Replace the const locals with a local enum, whose members are genuine integer constant expressions in C. The buffer size and behavior are unchanged (13 + 5*8 + 1 = 54 bytes either way).
STATIC_ASSERT expands to a typedef of a char array sized by the condition, a common compile-time-assertion trick. This call site's condition compared GPS_DEGREES_DIVIDER (already 10000000L) against the floating-point literal 1e7. Per C11 6.6p6, integer constant expressions may not contain floating constants, so despite being trivially foldable, AppleClang's -Wgnu-folding-constant -Werror rejects it. Replace 1e7 with 10000000L to match GPS_DEGREES_DIVIDER's own literal form, making the condition a pure integer constant expression. No change to the assertion's truth value or any runtime behavior.
…la-error-9.1 Fix build-SITL-Mac VLA-folding-constant error in log.c (9.1 backport)
# Conflicts: # lib/main/STM32F7/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usb.c # src/main/navigation/navigation_fixedwing.c
PR iNavFlight#11626 (merged 2026-06-06) committed literal <<<<<<</=======/>>>>>>> conflict markers, duplicating the entire "Alert and Warning" section. Deduplicate and remove the markers.
PR Summary by QodoBackport release/9.1 fixes and targets into maintenance-10.x
AI Description
Diagram
High-Level Assessment
Files changed (27)
|
Code Review by Qodo
1.
|
|
Test firmware build ready — commit Download firmware for PR #11681 240 targets built. Find your board's
|
selectedFreq in getGyroAafConfig() was declared int8_t (max 127), but aafLUT42688[] contains freq values up to 1962. Values above 127 silently truncated on assignment, corrupting the closest-frequency comparison and causing the wrong AAF register configuration to be selected. This affected every board using this gyro at the default 256Hz LPF setting (selected 303Hz instead of the correct 258Hz cutoff). Changed to uint16_t to match aafConfig_t.freq's own type.
Summary
Forward ports the 15 commits currently on
release/9.1that aren't yet onmaintenance-10.x: SITL-Mac VLA/STATIC_ASSERT build fixes, ICM42686P support, TBS_LUCID_H7_OEM and TBS_LUCID_H7_V3 targets, GCC 16 warning fixes, and two fixed-wing nav fixes (WP JUMP target skip, cross-track state reset on re-engagement).release/9.1itself is untouched — this only advancesmaintenance-10.x.Changes
lib/main/STM32F7/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usb.c:maintenance-10.x's existing HAL driver rewrite already superseded release/9.1's debug-instrumentation removal; kept themaintenance-10.xversion.src/main/navigation/navigation_fixedwing.c: combinedmaintenance-10.x's filter-state refactor (hoistedfwCrossTrackErrorRateFilterStateto file scope,pt1FilterSetCutoff/pt1FilterApply3) with release/9.1's fix (resync cross-track state when tracking disengages, to avoid a stale-data kick on re-engagement). Also caught and fixed a git auto-merge artifact that would have re-declaredfwCrossTrackErrorRateFilterStateas a shadowing local static.docs/ADSB.mdby a previous merge (PR Merge/9.1 into 10.x #11626, 2026-06-06) that duplicated the "Alert and Warning" section — found while auditing this merge for silently-dropped content.Testing
-Werror.maintenance-10.xandrelease/9.1to confirm no feature or fix was silently dropped by the merge.