Skip to content

Test check master ahead of 9? - #11859

Closed
sensei-hacker wants to merge 4 commits into
release/9.1from
master
Closed

Test check master ahead of 9?#11859
sensei-hacker wants to merge 4 commits into
release/9.1from
master

Conversation

@sensei-hacker

Copy link
Copy Markdown
Member

No description provided.

Release/9.1 to master. Github action size baseline, ram/flash guidance
@qodo-code-review

Copy link
Copy Markdown
Contributor

ⓘ Qodo reviews are paused because the subscription is no longer active. Ask your workspace admin to reactivate the subscription to resume reviews. Manage billing

@qodo-free-for-open-source-projects

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (2) 📘 Rule violations (0) 📜 Skill insights (0)

Grey Divider


Remediation recommended

1. Giantec flash IDs unreachable 🐞 Bug ≡ Correctness
Description
The new GT25Q64EZ and GT25Q128EZ IDs are declared in the W25N NAND driver but have no cases in
w25n_detect(), so both IDs take the unsupported-device path and fail initialization. These GT25Q
NOR devices should instead be registered in the M25P16-compatible device table.
Code

src/main/drivers/flash_w25n.c[R131-132]

+#define JEDEC_ID_Giantec_GT25Q64EZ 0x1C7117
+#define JEDEC_ID_Giantec_GT25Q128EZ 0x1C7118
Evidence
The added identifiers are located in the W25N driver, but its detection switch handles only two
Winbond W25N devices and one Macronix NAND device; its default branch clears the geometry and
returns false. The supported NOR-device table used by the M25P16 implementation contains no
corresponding Giantec entries.

src/main/drivers/flash_w25n.c[127-135]
src/main/drivers/flash_w25n.c[239-274]
src/main/drivers/flash_m25p16.c[87-126]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The newly added Giantec GT25Q IDs are declared in the W25N NAND driver, but its detector does not handle them. Register these NOR devices in the M25P16-compatible geometry table and remove the unused W25N declarations.

## Issue Context
`w25n_detect()` only configures known NAND devices and rejects every other ID. The GT25Q devices require the NOR flash implementation and correct geometry values.

## Fix Focus Areas
- src/main/drivers/flash_w25n.c[127-132]
- src/main/drivers/flash_w25n.c[239-274]
- src/main/drivers/flash_m25p16.c[87-126]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


2. Unbounded wind serialization 🐞 Bug ≡ Correctness
Description
The MSP wind handler directly converts an unconstrained floating-point wind magnitude to uint16_t;
estimates above 65535 cm/s are outside the destination type's range and yield an invalid or
implementation-dependent wire value. Saturate and validate the estimate before serialization.
Code

src/main/fc/fc_msp.c[R1609-1611]

+            if (isEstimatedWindSpeedValid()) {
+                windSpeed = (uint16_t)getEstimatedHorizontalWindSpeed(&windAngle);
+                windFlags = 1;
Evidence
The new handler casts the estimator result directly to uint16_t. The estimator computes the
magnitude as a float from velocity-derived values, and its acceptance filter only limits growth
relative to the previous estimate rather than enforcing the MSP field's 65535 cm/s maximum.

src/main/fc/fc_msp.c[1603-1615]
src/main/flight/wind_estimator.c[69-82]
src/main/flight/wind_estimator.c[154-185]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The new MSP wind response casts an unconstrained floating-point speed directly to `uint16_t`. Validate that the result is finite and clamp it to the protocol field's representable range before conversion.

## Issue Context
The estimator returns a floating-point magnitude in cm/s and does not impose the `uint16_t` wire-format limit. Preserve the existing validity flag and angle behavior while making serialization deterministic.

## Fix Focus Areas
- src/main/fc/fc_msp.c[1603-1615]
- src/main/flight/wind_estimator.c[69-82]
- src/main/flight/wind_estimator.c[154-185]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Tip of the day
💡 Did you know, you can add REVIEW.md to your repo root and Qodo follows it on every PR

More tips ↗ | Customize Qodo ↗ | Qodo docs ↗

Grey Divider

Qodo Logo

Comment on lines +131 to +132
#define JEDEC_ID_Giantec_GT25Q64EZ 0x1C7117
#define JEDEC_ID_Giantec_GT25Q128EZ 0x1C7118

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Remediation recommended

1. Giantec flash ids unreachable 🐞 Bug ≡ Correctness

The new GT25Q64EZ and GT25Q128EZ IDs are declared in the W25N NAND driver but have no cases in
w25n_detect(), so both IDs take the unsupported-device path and fail initialization. These GT25Q
NOR devices should instead be registered in the M25P16-compatible device table.
Agent Prompt
## Issue description
The newly added Giantec GT25Q IDs are declared in the W25N NAND driver, but its detector does not handle them. Register these NOR devices in the M25P16-compatible geometry table and remove the unused W25N declarations.

## Issue Context
`w25n_detect()` only configures known NAND devices and rejects every other ID. The GT25Q devices require the NOR flash implementation and correct geometry values.

## Fix Focus Areas
- src/main/drivers/flash_w25n.c[127-132]
- src/main/drivers/flash_w25n.c[239-274]
- src/main/drivers/flash_m25p16.c[87-126]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment thread src/main/fc/fc_msp.c
Comment on lines +1609 to +1611
if (isEstimatedWindSpeedValid()) {
windSpeed = (uint16_t)getEstimatedHorizontalWindSpeed(&windAngle);
windFlags = 1;

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Remediation recommended

2. Unbounded wind serialization 🐞 Bug ≡ Correctness

The MSP wind handler directly converts an unconstrained floating-point wind magnitude to uint16_t;
estimates above 65535 cm/s are outside the destination type's range and yield an invalid or
implementation-dependent wire value. Saturate and validate the estimate before serialization.
Agent Prompt
## Issue description
The new MSP wind response casts an unconstrained floating-point speed directly to `uint16_t`. Validate that the result is finite and clamp it to the protocol field's representable range before conversion.

## Issue Context
The estimator returns a floating-point magnitude in cm/s and does not impose the `uint16_t` wire-format limit. Preserve the existing validity flag and angle behavior while making serialization deterministic.

## Fix Focus Areas
- src/main/fc/fc_msp.c[1603-1615]
- src/main/flight/wind_estimator.c[69-82]
- src/main/flight/wind_estimator.c[154-185]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

@sensei-hacker
sensei-hacker changed the base branch from maintenance-9.x to release/9.1 September 3, 2026 22:25
@qodo-free-for-open-source-projects

Copy link
Copy Markdown

PR Summary by Qodo

Prepare INAV 9.1 with new targets, fixes, and size-report CI

✨ Enhancement 🐞 Bug fix 🧪 Tests 📝 Documentation ⚙️ Configuration changes 🕐 40+ Minutes

Grey Divider

AI Description

• Adds multiple flight-controller targets and expands supported sensor and flash hardware.
• Fixes navigation, GPS, telemetry, OSD, DMA, clock, and configuration behavior.
• Introduces per-commit RAM/flash CI reporting and prepares the 9.1 release.
Diagram

graph TD
  Targets["Board Targets"] --> Build["Firmware Build"] --> Reports["Size Reports"] --> Baselines[("Commit Baselines")] --> Comment["PR Comment"]
  Sensors["Sensor Drivers"] --> Runtime["Flight Runtime"] --> Build
  subgraph Legend
    direction LR
    _module["Module"] ~~~ _store[("Artifact Store")]
  end
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Split into focused pull requests
  • ➕ Allows domain experts to review CI, firmware, targets, and documentation independently
  • ➕ Reduces regression isolation and backporting risk
  • ➕ Makes hardware validation status clearer per target
  • ➖ Requires coordinating dependencies such as new sensors and targets
  • ➖ Delays a single branch synchronization or release-preparation merge
2. Rebuild the PR base for every size comparison
  • ➕ Avoids maintaining persistent per-commit baseline releases
  • ➕ Always measures with the current workflow and toolchain
  • ➖ Substantially increases CI time and compute cost
  • ➖ Runs more untrusted firmware builds
  • ➖ Still needs careful merge-base selection

Recommendation: The per-commit baseline design is preferable to rebuilding the base for every PR because it reuses nightly artifacts and compares against the true merge base. However, changes of this breadth should normally be split into CI, target, driver/runtime, and release-documentation pull requests; keep the combined form only when this is intentionally a branch synchronization or release integration.

Files changed (148) +6659 / -599

Enhancement (45) +3044 / -98
size-diff-comment.jsRender PR memory deltas +124/-0

Render PR memory deltas

• Adds pure comparison and Markdown rendering logic for four representative targets, including missing-baseline and noise-threshold handling.

.github/scripts/size-diff-comment.js

accgyro_icm42605.cSupport ICM42686P variants +43/-17

Support ICM42686P variants

• Replaces the binary variant flag with explicit variants, detects ICM42686P, selects its ranges and filters, and fixes AAF frequency storage width.

src/main/drivers/accgyro/accgyro_icm42605.c

accgyro_lsm6dxx.cSupport Gen V LSM6D IMUs +94/-2

Support Gen V LSM6D IMUs

• Adds detection and dedicated high-accuracy configuration for LSM6DSV16X and LSM6DSK320X, including ODR, scale, filters, and interrupts.

src/main/drivers/accgyro/accgyro_lsm6dxx.c

accgyro_lsm6dxx.hDefine Gen V LSM6D registers +26/-1

Define Gen V LSM6D registers

• Adds register addresses and field values required by LSM6DSV16X and LSM6DSK320X configuration.

src/main/drivers/accgyro/accgyro_lsm6dxx.h

accgyro_mpu.hAdd ICM42686P device ID +1/-0

Add ICM42686P device ID

• Defines the ICM42686P WHO_AM_I value.

src/main/drivers/accgyro/accgyro_mpu.h

flash_m25p16.cRecognize additional NOR flash chips +6/-2

Recognize additional NOR flash chips

• Adds Puya PY25Q128HA and XTX XT25F128F JEDEC entries.

src/main/drivers/flash_m25p16.c

flash_w25n.cDefine Giantec flash identifiers +3/-1

Define Giantec flash identifiers

• Adds JEDEC constants for GT25Q64EZ and GT25Q128EZ devices.

src/main/drivers/flash_w25n.c

serial_uart_hal.cAdd UART pin-swap extension hook +6/-0

Add UART pin-swap extension hook

• Introduces a weak platform hook and invokes it during UART reconfiguration.

src/main/drivers/serial_uart_hal.c

serial_uart_stm32h7xx.cSupport H7 UART pin swapping +49/-0

Support H7 UART pin swapping

• Tracks per-UART swap configuration and enables the HAL advanced swap feature for selected targets.

src/main/drivers/serial_uart_stm32h7xx.c

fc_msp.cExpose wind estimates over MSP +27/-0

Expose wind estimates over MSP

• Implements MSP2_INAV_WIND and refreshes programming PID runtime state after MSP gain updates.

src/main/fc/fc_msp.c

msp_protocol_v2_inav.hReserve MSP wind command ID +3/-1

Reserve MSP wind command ID

• Defines MSP2_INAV_WIND as command 0x2231.

src/main/msp/msp_protocol_v2_inav.h

target.cMap AEDROXH7 IMU and timers +52/-0

Map AEDROXH7 IMU and timers

• Registers its ICM42688P and defines eight outputs, LED strip, and beeper timers.

src/main/target/AEDROXH7/target.c

target.hDefine AEDROXH7 hardware +179/-0

Define AEDROXH7 hardware

• Adds complete H743 pin, bus, sensor, flash, CAN, UART, ADC, PINIO, and feature definitions.

src/main/target/AEDROXH7/target.h

target.cSupport AETH743Basic V2 sensors +6/-0

Support AETH743Basic V2 sensors

• Registers the BMI088 and BMI270 combination alongside the original dual ICM42688 layout.

src/main/target/AETH743Basic/target.c

target.hDefine AETH743Basic V2 IMU wiring +20/-4

Define AETH743Basic V2 IMU wiring

• Adds BMI088/BMI270 buses, chip selects, interrupts, alignments, and DPS310 support.

src/main/target/AETH743Basic/target.h

target.cExpand AOCODARC IMU detection +2/-0

Expand AOCODARC IMU detection

• Registers MPU6000 and ICM42605-compatible IMUs in addition to MPU6500.

src/main/target/AOCODARCF722AIO/target.c

target.cMap ATOMRCF405MINI outputs +49/-0

Map ATOMRCF405MINI outputs

• Defines eight PWM outputs and the LED-strip timer.

src/main/target/ATOMRCF405MINI/target.c

target.hDefine ATOMRCF405MINI hardware +195/-0

Define ATOMRCF405MINI hardware

• Adds BMI270, OSD, onboard flash blackbox, UART, ADC, I2C, and peripheral pin definitions.

src/main/target/ATOMRCF405MINI/target.h

target.cMap AxisFlying dual IMUs and outputs +59/-0

Map AxisFlying dual IMUs and outputs

• Registers two ICM42688P devices and defines twelve output plus LED timers with distinct DMA options.

src/main/target/AXISFLYINGH743PRO/target.c

target.hDefine AXISFLYINGH743PRO hardware +186/-0

Define AXISFLYINGH743PRO hardware

• Adds dual IMUs, OSD, flash, serial, ADC, PINIO, DShot burst DMA, and peripheral definitions.

src/main/target/AXISFLYINGH743PRO/target.h

target.cMap BLADE_F4 timers +37/-0

Map BLADE_F4 timers

• Defines eight outputs and an LED-strip timer.

src/main/target/BLADE_F4/target.c

target.hDefine BLADE_F4 hardware +179/-0

Define BLADE_F4 hardware

• Adds selectable IMUs, OSD, flash, six UARTs, sensors, ADC, PINIO, and DShot support.

src/main/target/BLADE_F4/target.h

target.cMap BLADE_PRO_H7 sensors and timers +60/-0

Map BLADE_PRO_H7 sensors and timers

• Registers dual MPU6000, ICM42688P, and BMI270 options and defines twelve outputs, LED, and beeper timers.

src/main/target/BLADE_PRO_H7/target.c

target.hDefine BLADE_PRO_H7 hardware +233/-0

Define BLADE_PRO_H7 hardware

• Adds comprehensive dual-IMU, flash, OSD, sensor, serial, ADC, PINIO, and output configuration.

src/main/target/BLADE_PRO_H7/target.h

target.hAdd CoreWing BMI270 support +4/-0

Add CoreWing BMI270 support

• Allows BMI270 on the existing SPI1 IMU position.

src/main/target/COREWINGF405WINGV2/target.h

target.hExpand DAKEFPVF405 hardware support +17/-2

Expand DAKEFPVF405 hardware support

• Adds Gen V LSM6D support, camera-control metadata, and an inverted second PINIO output.

src/main/target/DAKEFPVF405/target.h

target.cMap H743 Slim IMUs and timers +62/-0

Map H743 Slim IMUs and timers

• Registers alternative devices in two IMU slots and defines twelve outputs plus camera, gyro clock, and LED timers.

src/main/target/DAKEFPVH743_SLIM/target.c

target.hDefine DAKEFPVH743 Slim hardware +199/-0

Define DAKEFPVH743 Slim hardware

• Adds dual IMUs, SDIO and flash blackbox, swapped UART7, sensors, ADC, PINIO, and output definitions.

src/main/target/DAKEFPVH743_SLIM/target.h

target.hExpand FlyingRC board revisions +10/-2

Expand FlyingRC board revisions

• Normalizes the USB name, corrects ICM alignment, adds BMI270, and maps the V4 current-sensor ADC.

src/main/target/FLYINGRCF4WINGMINI/target.h

target.cMap Orbit H743 v2 sensors and timers +55/-0

Map Orbit H743 v2 sensors and timers

• Registers LSM6D and ICM-compatible IMUs and defines twelve outputs, LED, and PPM timers.

src/main/target/ORBITH743v2/target.c

target.hDefine ORBITH743v2 hardware +212/-0

Define ORBITH743v2 hardware

• Adds dual IMUs, CAN, OSD, flash, eight UARTs, sensors, ADC, PINIO, and output definitions.

src/main/target/ORBITH743v2/target.h

target.cMap SOLOGOODF722 timers +40/-0

Map SOLOGOODF722 timers

• Defines eight output timers and an LED-strip timer.

src/main/target/SOLOGOODF722/target.c

target.hDefine SOLOGOODF722 hardware +170/-0

Define SOLOGOODF722 hardware

• Adds alternative IMUs, flash, OSD, sensors, six UARTs, ADC, PINIO, and DShot configuration.

src/main/target/SOLOGOODF722/target.h

target.cAdd Lucid H7 ICM45686 descriptors +2/-0

Add Lucid H7 ICM45686 descriptors

• Registers ICM45686 devices in both gyro positions.

src/main/target/TBS_LUCID_H7/target.c

target.hEnable Lucid H7 ICM45686 support +2/-1

Enable Lucid H7 ICM45686 support

• Compiles ICM45686 support for the target.

src/main/target/TBS_LUCID_H7/target.h

target.cMap Lucid H7 OEM sensors and timers +64/-0

Map Lucid H7 OEM sensors and timers

• Registers three dual-IMU alternatives and defines twelve outputs plus RGB LED and beeper timers.

src/main/target/TBS_LUCID_H7_OEM/target.c

target.hDefine TBS Lucid H7 OEM hardware +183/-0

Define TBS Lucid H7 OEM hardware

• Adds dual IMUs, CAN, SDIO, serial, sensors, ADC, PINIO, LED, and DShot definitions.

src/main/target/TBS_LUCID_H7_OEM/target.h

target.cMap Lucid H7 V3 sensors and timers +64/-0

Map Lucid H7 V3 sensors and timers

• Registers three dual-IMU alternatives and defines twelve outputs plus RGB LED and beeper timers.

src/main/target/TBS_LUCID_H7_V3/target.c

target.hDefine TBS Lucid H7 V3 hardware +183/-0

Define TBS Lucid H7 V3 hardware

• Adds dual IMUs, CAN, SDIO, serial, sensors, ADC, PINIO, LED, and DShot definitions.

src/main/target/TBS_LUCID_H7_V3/target.h

target.cAdd Lucid H7 Wing ICM45686 descriptors +2/-0

Add Lucid H7 Wing ICM45686 descriptors

• Registers ICM45686 in both gyro positions.

src/main/target/TBS_LUCID_H7_WING/target.c

target.hEnable Lucid H7 Wing ICM45686 +1/-0

Enable Lucid H7 Wing ICM45686

• Compiles ICM45686 support for the wing target.

src/main/target/TBS_LUCID_H7_WING/target.h

target.cAdd Lucid Wing Mini ICM45686 descriptors +2/-0

Add Lucid Wing Mini ICM45686 descriptors

• Registers ICM45686 in both gyro positions.

src/main/target/TBS_LUCID_H7_WING_MINI/target.c

target.hEnable Wing Mini ICM45686 +2/-1

Enable Wing Mini ICM45686

• Compiles ICM45686 support for the target and preserves the serial receiver default.

src/main/target/TBS_LUCID_H7_WING_MINI/target.h

mavlink.cSchedule mandatory MAVLink messages independently +114/-59

Schedule mandatory MAVLink messages independently

• Separates HEARTBEAT, SYSTEM_TIME, and VFR_HUD scheduling, staggers mandatory messages, and uses RTC time for timestamps.

src/main/telemetry/mavlink.c

bf2inav.pyGenerate camera and PINIO wiring +17/-5

Generate camera and PINIO wiring

• Emits camera-control metadata, limits PINIO generation to four supported outputs, and initializes their permanent IDs.

src/utils/bf2inav.py

Bug fix (25) +387 / -150
fetch-size-baseline.shResolve merge-base size baselines +119/-0

Resolve merge-base size baselines

• Fetches an exact per-commit baseline or the nearest first-parent ancestor, explicitly avoiding stale branch-tip comparisons.

.github/scripts/fetch-size-baseline.sh

log.cMake hex-log buffer size constant +6/-2

Make hex-log buffer size constant

• Uses enum constants so the stack buffer is not compiled as a variable-length array.

src/main/common/log.c

sdcard_sdio.cMake SDIO retries non-blocking +8/-6

Make SDIO retries non-blocking

• Defers write-state transition until DMA starts and removes blocking retry delays so asynchronous callers pace retries.

src/main/drivers/sdcard/sdcard_sdio.c

timer_impl_hal.cStop timer DMA requests safely +1/-1

Stop timer DMA requests safely

• Disables the timer request before the DMA stream to avoid transfer teardown races.

src/main/drivers/timer_impl_hal.c

timer_impl_stdperiph.cReorder standard-peripheral DMA shutdown +3/-3

Reorder standard-peripheral DMA shutdown

• Stops timer DMA requests before disabling DMA in interrupt, prepare, and stop paths.

src/main/drivers/timer_impl_stdperiph.c

timer_impl_stdperiph_at32.cReorder AT32 timer DMA shutdown +1/-1

Reorder AT32 timer DMA shutdown

• Disables the timer request before the DMA channel.

src/main/drivers/timer_impl_stdperiph_at32.c

cli.cRefresh programming PID state after CLI edits +2/-0

Refresh programming PID state after CLI edits

• Reinitializes runtime programming PID data immediately after gains change.

src/main/fc/cli.c

imu.cPrefer valid pitot speed for turn compensation +10/-8

Prefer valid pitot speed for turn compensation

• Uses cached validated airspeed before GPS and applies the stronger trusted-speed slope multiplier.

src/main/flight/imu.c

pid.cUse cached pitot validity in fixed-wing TPA +1/-1

Use cached pitot validity in fixed-wing TPA

• Avoids recalculating pitot validity from the PID update path.

src/main/flight/pid.c

beeper.cHonor DShot beeper suppression +3/-1

Honor DShot beeper suppression

• Prevents DShot beacon commands during off sequence entries and for disabled beeper modes.

src/main/io/beeper.c

displayport_msp_osd.cStabilize DisplayPort resolution ordinals +14/-9

Stabilize DisplayPort resolution ordinals

• Assigns canonical wire values, reserves HD 30x16, and guards simulator-only state access.

src/main/io/displayport_msp_osd.c

gps.cGuard GPS operations against null serial ports +11/-0

Guard GPS operations against null serial ports

• Returns safely when a serial provider is selected without an opened port and protects passthrough setup from null dereferences.

src/main/io/gps.c

gps_ublox.cClamp negative UBLOX nanoseconds +2/-2

Clamp negative UBLOX nanoseconds

• Prevents negative fractional timestamps from wrapping into invalid millisecond values.

src/main/io/gps_ublox.c

osd.cBound OSD system-message collection +57/-55

Bound OSD system-message collection

• Routes message insertion through a capacity-checked macro and makes the GPS divider assertion integer-exact.

src/main/io/osd.c

serial_4way_avrootloader.cFix bootloader message initializer +1/-1

Fix bootloader message initializer

• Initializes the fixed-size boot message explicitly without an implicit string terminator.

src/main/io/serial_4way_avrootloader.c

navigation.cReset waypoint smoothing on activation +1/-0

Reset waypoint smoothing on activation

• Prevents a newly activated or jumped-to waypoint from inheriting smoothing state from the previous leg.

src/main/navigation/navigation.c

navigation_fixedwing.cReset disengaged cross-track state +14/-5

Reset disengaged cross-track state

• Keeps controller history synchronized while inactive to prevent a stale-data steering kick on the next leg.

src/main/navigation/navigation_fixedwing.c

scheduler.cMeasure SITL load from busy time +30/-0

Measure SITL load from busy time

• Calculates SITL system load from busy versus elapsed wall time rather than due-task samples distorted by host sleeps.

src/main/scheduler/scheduler.c

pitotmeter.cCache validated pitot airspeed state +11/-3

Cache validated pitot airspeed state

• Evaluates validity in the pitot thread, exposes a cached accessor, and corrects failure/recovery counts for the 50 Hz loop.

src/main/sensors/pitotmeter.c

target.cMove LED DMA away from ADC +1/-1

Move LED DMA away from ADC

• Changes the LED timer DMA option to avoid the ADC1 DMA stream.

src/main/target/DAKEFPVH743PRO/target.c

target.cCorrect GEPRC ICM device type +1/-1

Correct GEPRC ICM device type

• Registers the first ICM42688 with the ICM42605-compatible driver instead of MPU6000.

src/main/target/GEPRCF745_BT_HD/target.c

target.cCorrect Taker H743 ICM device type +1/-1

Correct Taker H743 ICM device type

• Registers the first ICM42688 with the ICM42605-compatible driver instead of MPU6000.

src/main/target/GEPRC_TAKER_H743/target.c

target.hEnable JHEMCUF435 UART fixes +3/-7

Enable JHEMCUF435 UART fixes

• Enables UART2, activates UART7 pin swapping, updates port count, and moves the default receiver to UART2.

src/main/target/JHEMCUF435/target.h

system_stm32h7xx.cCorrect H7 PLL ranges and SDMMC clocking +9/-4

Correct H7 PLL ranges and SDMMC clocking

• Selects the proper HSE VCI range, derives PLL2M from HSE, validates assumptions, and handles peripheral clock failures.

src/main/target/system_stm32h7xx.c

settings.rbFix position-sensitive settings conditions +77/-38

Fix position-sensitive settings conditions

• Evaluates each group/member condition after its applicable headers using unique probes, preventing incorrect cross-context deduplication.

src/utils/settings.rb

Refactor (22) +748 / -232
stm32f7xx_ll_usb.cRemove dormant USB debug state +0/-11

Remove dormant USB debug state

• Deletes unused endpoint-debug variables and assignments from the vendored STM32F7 USB driver.

lib/main/STM32F7/Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usb.c

servos.cUse fixed continuous-autotrim stability limit +1/-6

Use fixed continuous-autotrim stability limit

• Moves autotrim constants to the header and replaces the removed setting with a blackbox-derived constant.

src/main/flight/servos.c

servos.hCentralize servo autotrim constants +8/-2

Centralize servo autotrim constants

• Defines autotrim limits in the public header and removes obsolete fields from persistent servo configuration.

src/main/flight/servos.h

fport.cRemove unused FPort error counter +0/-2

Remove unused FPort error counter

• Deletes dormant frame-error debug state.

src/main/rx/fport.c

pitotmeter.hSeparate pitot validation and access +2/-1

Separate pitot validation and access

• Declares the validator and cached validity getter.

src/main/sensors/pitotmeter.h

CMakeLists.txtRegister split DYSF4 variants +2/-0

Register split DYSF4 variants

• Moves DYSF4PRO and DYSF4PROV2 into a dedicated build directory.

src/main/target/DYSF4/CMakeLists.txt

target.cIsolate DYSF4 timer mappings +47/-0

Isolate DYSF4 timer mappings

• Extracts DYS-specific output and input timer definitions from the former OMNIBUS mega-target.

src/main/target/DYSF4/target.c

target.hIsolate DYSF4 hardware definitions +159/-0

Isolate DYSF4 hardware definitions

• Provides focused DYSF4PRO and V2 configuration with only variant-relevant conditionals.

src/main/target/DYSF4/target.h

config.cRelocate FlyingRC target configuration +0/-0

Relocate FlyingRC target configuration

• Carries the unchanged target configuration into the normalized target directory.

src/main/target/FLYINGRCF4WINGMINI/config.c

target.cRelocate FlyingRC timer definitions +0/-0

Relocate FlyingRC timer definitions

• Carries the unchanged timer implementation into the normalized target directory.

src/main/target/FLYINGRCF4WINGMINI/target.c

CMakeLists.txtLimit OMNIBUSF4 directory to base target +0/-11

Limit OMNIBUSF4 directory to base target

• Removes DYS, Pro, V3, and soft-serial variants from the base directory.

src/main/target/OMNIBUSF4/CMakeLists.txt

target.cSimplify base OMNIBUSF4 timers +2/-22

Simplify base OMNIBUSF4 timers

• Removes variant conditionals and retains only base-board timer mappings.

src/main/target/OMNIBUSF4/target.c

target.hSimplify base OMNIBUSF4 hardware +16/-167

Simplify base OMNIBUSF4 hardware

• Removes unrelated Pro, V3, DYS, SD-card, IMU, inverter, and soft-serial branches.

src/main/target/OMNIBUSF4/target.h

CMakeLists.txtRegister OMNIBUS Pro and V3 targets +5/-0

Register OMNIBUS Pro and V3 targets

• Adds a focused build directory for Pro, V3, and non-release V3 ICM variants.

src/main/target/OMNIBUSF4PRO/CMakeLists.txt

target.cExtract OMNIBUS Pro timer mappings +48/-0

Extract OMNIBUS Pro timer mappings

• Moves Pro and V3 output, LED, and input timer definitions into their own implementation.

src/main/target/OMNIBUSF4PRO/target.c

target.hExtract OMNIBUS Pro hardware definitions +202/-0

Extract OMNIBUS Pro hardware definitions

• Defines Pro/V3 IMUs, SD card, OSD, UART inversion, soft serial, sensors, and defaults without unrelated variants.

src/main/target/OMNIBUSF4PRO/target.h

CMakeLists.txtRegister OMNIBUS soft-serial variants +4/-0

Register OMNIBUS soft-serial variants

• Adds the three S5/S6 soft-serial build variants to a dedicated directory.

src/main/target/OMNIBUSF4V3_SS/CMakeLists.txt

target.cExtract soft-serial timer mappings +53/-0

Extract soft-serial timer mappings

• Provides timer configurations specific to each S5/S6 soft-serial arrangement.

src/main/target/OMNIBUSF4V3_SS/target.c

target.hExtract soft-serial target definitions +193/-0

Extract soft-serial target definitions

• Defines shared V3 hardware and only the conditionals needed for the three soft-serial layouts.

src/main/target/OMNIBUSF4V3_SS/target.h

xplane.cClean X-Plane simulator formatting +4/-4

Clean X-Plane simulator formatting

• Normalizes whitespace without changing behavior.

src/main/target/SITL/sim/xplane.c

hott.cRemove HoTT debug write counter +1/-3

Remove HoTT debug write counter

• Deletes unused telemetry debug state and cleans whitespace.

src/main/telemetry/hott.c

jetiexbus.cRemove Jeti lost-frame counter +1/-3

Remove Jeti lost-frame counter

• Deletes unused debug accounting and cleans whitespace.

src/main/telemetry/jetiexbus.c

Tests (3) +806 / -0
size-diff-comment.test.jsTest memory-delta rendering +357/-0

Test memory-delta rendering

• Covers delta formatting, notable thresholds, missing targets and baselines, baseline commit headers, and comment output structure.

.github/scripts/size-diff-comment.test.js

CMakeLists.txtRegister GPS null-port tests +3/-0

Register GPS null-port tests

• Builds the new GPS regression test with gps.c and UBLOX definitions.

src/test/unit/CMakeLists.txt

gps_null_port_unittest.ccTest GPS null-port hard-fault prevention +446/-0

Test GPS null-port hard-fault prevention

• Reproduces driver-to-serial provider changes without reboot and verifies null ports return safely while valid ports remain functional.

src/test/unit/gps_null_port_unittest.cc

Documentation (15) +678 / -113
README.mdDocument build and size-report workflows +69/-4

Document build and size-report workflows

• Clarifies actual push-build behavior and documents baseline generation, merge-base lookup, security constraints, and PR comments.

.github/workflows/README.md

ADSB.mdDocument SoftRF and ADS-B alert selection +46/-0

Document SoftRF and ADS-B alert selection

• Adds SoftRF setup guidance and explains proximity- and CPA-based warning and alert behavior.

docs/ADSB.md

Autotune - fixedwing.mdCorrect fixed-wing AUTOTUNE guidance +20/-11

Correct fixed-wing AUTOTUNE guidance

• Clarifies that AUTOTUNE adjusts feed-forward and optionally rates, not P/I gains, with mode and configuration constraints.

docs/Autotune - fixedwing.md

Display.mdDocument SSD1315 OLED compatibility +4/-1

Document SSD1315 OLED compatibility

• Adds tested SSD1315 guidance and removes an obsolete display link.

docs/Display.md

Mixer.mdRename MAX mixer input to Fixed Value +2/-2

Rename MAX mixer input to Fixed Value

• Updates mixer terminology to describe input 29 as a configurable fixed percentage.

docs/Mixer.md

SITL.mdExplain SITL system-load calculation +2/-0

Explain SITL system-load calculation

• Notes that intentional host sleeps are excluded from scheduler load.

docs/SITL/SITL.md

Settings.mdRemove obsolete autotrim setting +0/-10

Remove obsolete autotrim setting

• Removes generated documentation for the deleted servo_autotrim_iterm_rate_limit setting.

docs/Settings.md

VTOL.mdUpdate VTOL fixed-value terminology +4/-4

Update VTOL fixed-value terminology

• Replaces references to the former MAX mixer input throughout VTOL setup instructions.

docs/VTOL.md

FlyingRC F4Wing Mini.mdRefresh FlyingRC F4Wing Mini documentation +11/-11

Refresh FlyingRC F4Wing Mini documentation

• Normalizes the target name, adds BMI270 and V4 current-sensor information, and refines hardware safety guidance.

docs/boards/FlyingRC F4Wing Mini.md

Converting Betaflight Targets.mdImprove Betaflight target conversion guidance +10/-18

Improve Betaflight target conversion guidance

• Documents generated camera/PINIO wiring, simplifies the timer example, and provides expected default features.

docs/development/Converting Betaflight Targets.md

inav_enums.jsonRegenerate MSP enum metadata +49/-17

Regenerate MSP enum metadata

• Records new pitot, IMU, display, timer, HITL, and multifunction values and corrects generated source references.

docs/development/msp/inav_enums.json

inav_enums_ref.mdRegenerate MSP enum reference +52/-14

Regenerate MSP enum reference

• Updates the human-readable enum reference for newly supported devices and protocol values.

docs/development/msp/inav_enums_ref.md

msp_messages.jsonDocument MSP wind-estimate message +29/-0

Document MSP wind-estimate message

• Defines the MSP2_INAV_WIND response fields, units, validity flag, and compile-time behavior.

docs/development/msp/msp_messages.json

ram-and-flash-optimization.mdAdd memory optimization guide +296/-0

Add memory optimization guide

• Introduces practical guidance for buffer sizing, bounded work, linkage, state machines, measurement, and DMA-width pitfalls.

docs/development/ram-and-flash-optimization.md

release-create.mdHarden 9.1 release procedures +84/-21

Harden 9.1 release procedures

• Standardizes lowercase RC naming, adds branch verification, preserves platform artifact separation, and requires firmware-flasher validation.

docs/development/release-create.md

Other (38) +996 / -6
extract-size-report.shExtract per-target firmware memory usage +68/-0

Extract per-target firmware memory usage

• Adds a script that finds built ELF files and records flash and RAM usage as JSON using the ARM size tool.

.github/scripts/extract-size-report.sh

merge-size-reports.shMerge sharded size reports +19/-0

Merge sharded size reports

• Combines build-matrix JSON reports into one aggregate report.

.github/scripts/merge-size-reports.sh

publish-size-baseline.shPublish and prune size baselines +142/-0

Publish and prune size baselines

• Publishes branch-tip and per-commit reports as companion-repository releases, with validation, retry-safe replacement, and bounded retention.

.github/scripts/publish-size-baseline.sh

ci-size-report.ymlAdd RAM and flash reporting workflow +309/-0

Add RAM and flash reporting workflow

• Adds workflow-run jobs that publish nightly baselines and update PR comments from build artifacts without checking out untrusted PR code.

.github/workflows/ci-size-report.yml

ci.ymlProduce aggregate build-size artifacts +57/-0

Produce aggregate build-size artifacts

• Extracts per-shard size reports, uploads PR/base metadata, merges reports, and exposes an aggregate artifact to downstream workflows.

.github/workflows/ci.yml

nightly-build.ymlExpand pre-release build branches +2/-0

Expand pre-release build branches

• Enables push builds for maintenance-10.x and release/9.1.

.github/workflows/nightly-build.yml

CMakeLists.txtSet firmware version to 9.1.0 +1/-1

Set firmware version to 9.1.0

• Advances the INAV project version from 9.0.1 to 9.1.0.

CMakeLists.txt

settings.yamlRemove configurable autotrim rate limit +0/-5

Remove configurable autotrim rate limit

• Drops servo_autotrim_iterm_rate_limit in favor of the firmware constant.

src/main/fc/settings.yaml

CMakeLists.txtRegister AEDROXH7 target +1/-0

Register AEDROXH7 target

• Adds the STM32H743 build target.

src/main/target/AEDROXH7/CMakeLists.txt

config.cSet AEDROXH7 port and PINIO defaults +52/-0

Set AEDROXH7 port and PINIO defaults

• Configures GPS, ESC telemetry, MSP DisplayPort, four PINIO boxes, and PWM beeper defaults.

src/main/target/AEDROXH7/config.c

target.hSet ANYFC default features +1/-0

Set ANYFC default features

• Enables battery, current, telemetry, and profile-selection defaults.

src/main/target/ANYFC/target.h

target.hSet ANYFCM7 default features +1/-0

Set ANYFCM7 default features

• Enables OSD, battery, telemetry, profile selection, and blackbox defaults.

src/main/target/ANYFCM7/target.h

CMakeLists.txtRegister ATOMRCF405MINI target +1/-0

Register ATOMRCF405MINI target

• Adds the STM32F405 build target.

src/main/target/ATOMRCF405MINI/CMakeLists.txt

CMakeLists.txtRegister AXISFLYINGH743PRO target +1/-0

Register AXISFLYINGH743PRO target

• Adds the STM32H743 build target.

src/main/target/AXISFLYINGH743PRO/CMakeLists.txt

config.cSet AxisFlying target defaults +34/-0

Set AxisFlying target defaults

• Maps two PINIO boxes and assigns RX-only UART5 to ESC telemetry.

src/main/target/AXISFLYINGH743PRO/config.c

CMakeLists.txtRegister BLADE_F4 target +1/-0

Register BLADE_F4 target

• Adds the STM32F405 build target.

src/main/target/BLADE_F4/CMakeLists.txt

config.cSet BLADE_F4 PINIO defaults +28/-0

Set BLADE_F4 PINIO defaults

• Maps two PINIO outputs to user boxes.

src/main/target/BLADE_F4/config.c

CMakeLists.txtRegister BLADE_PRO_H7 target +1/-0

Register BLADE_PRO_H7 target

• Adds the STM32H743 build target.

src/main/target/BLADE_PRO_H7/CMakeLists.txt

config.cSet BLADE_PRO_H7 defaults +32/-0

Set BLADE_PRO_H7 defaults

• Maps two PINIO boxes and enables PWM beeper mode.

src/main/target/BLADE_PRO_H7/config.c

config.cMap second DAKEFPVF405 PINIO box +1/-0

Map second DAKEFPVF405 PINIO box

• Assigns PINIO2 to USER2.

src/main/target/DAKEFPVF405/config.c

CMakeLists.txtRegister DAKEFPVH743_SLIM target +1/-0

Register DAKEFPVH743_SLIM target

• Adds the STM32H743 build target.

src/main/target/DAKEFPVH743_SLIM/CMakeLists.txt

config.cSet H743 Slim PINIO defaults +34/-0

Set H743 Slim PINIO defaults

• Maps all four PINIO outputs to user boxes.

src/main/target/DAKEFPVH743_SLIM/config.c

target.hSet Fortini F4 default features +1/-0

Set Fortini F4 default features

• Enables battery, current, telemetry, and profile selection by default.

src/main/target/FF_FORTINIF4/target.h

target.hSet Flycolor F4 default features +1/-0

Set Flycolor F4 default features

• Enables OSD, battery, current, telemetry, profile selection, and blackbox defaults.

src/main/target/FLYCOLORF4/target.h

CMakeLists.txtNormalize FlyingRC target registration +1/-0

Normalize FlyingRC target registration

• Registers the board under FLYINGRCF4WINGMINI without the deprecated suffix.

src/main/target/FLYINGRCF4WINGMINI/CMakeLists.txt

target.hSet Flywoo F7 default features +1/-0

Set Flywoo F7 default features

• Enables standard OSD, power, telemetry, profile, and blackbox features.

src/main/target/FLYWOOF7DUAL/target.h

target.hSet Foxeer F405 default features +1/-0

Set Foxeer F405 default features

• Enables standard OSD, power, telemetry, profile, and blackbox features.

src/main/target/FOXEERF405/target.h

target.hSet Foxeer F722 Dual defaults +1/-0

Set Foxeer F722 Dual defaults

• Enables standard OSD, power, telemetry, profile, and blackbox features.

src/main/target/FOXEERF722DUAL/target.h

target.hSet Foxeer F722 V4 defaults +1/-0

Set Foxeer F722 V4 defaults

• Enables standard OSD, power, telemetry, profile, and blackbox features.

src/main/target/FOXEERF722V4/target.h

config.cSet JHEMCUF435 serial defaults +35/-0

Set JHEMCUF435 serial defaults

• Assigns UART2 to serial RX and UART7 to ESC telemetry.

src/main/target/JHEMCUF435/co...

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.

1 participant