Conversation
New string settings control_profile_name, battery_profile_name and mixer_profile_name (12 characters) stored in the profile structs, and MSP2_INAV_PROFILE_NAMES that returns the names of all slots in one reply so a configurator can label its profile selectors. Parameter group versions bumped for the three grown structs. Docs regenerated: Settings.md, msp_messages.json (2.1.1), README.
Three OSD elements show the user-defined name of the active control, battery and mixer profile. An unnamed slot shows the symbol and slot number instead so the element never renders blank. Builds on the profile names from the previous commit.
|
Checked with the CI-built SITL of this branch (fork run https://github.com/Raffi1202/inav/actions/runs/34445739959,
What the SITL cannot show is the character output of |
Reuse the CI fixes from iNavFlight#11885 and cover scalar, array and conditional registrations with regression fixtures.
Reuse the CI fixes from iNavFlight#11885 and cover scalar, array and conditional registrations with regression fixtures.
|
ⓘ Qodo reviews are paused because the subscription is no longer active. Ask your workspace admin to reactivate the subscription to resume reviews. Manage billing |
PR Summary by QodoAdd named profiles to settings, MSP, and OSD
AI Description
Diagram
High-Level Assessment
Files changed (19)
|
Code Review by Qodo
1. Profile names leave stale characters
|
Replacing the shell checker with check-pg-versions.py changed the output
format but not the workflow that consumes it, and the two no longer agree.
pg-version-check.yml gates on the output carrying a "### " line:
if [ "$exit_code" -gt 1 ] || { [ "$exit_code" -eq 1 ] && ! grep -q '^### ' <<< "$output"; }; then
The Python checker printed "PG version issue: ..." with no such line, so on a
genuine finding (exit 1) the grep failed, the step exited 2 before writing
exit_code to GITHUB_OUTPUT, and "Post comment if issues found" never ran. The
check hard-failed instead of leaving the PR comment it exists to leave.
The github-script step has the same dependency from the other side: it starts
capturing at the first line containing "###", so without one the comment body
would have been empty even had the gate passed.
The checker now prints the heading the workflow is written around, splitting
each issue into "### `<name>`" and its detail, which is also what the shell
version produced. Replaying the gate condition: a finding without the heading
aborts with exit 2, with it the step continues and the renderer captures the
full text; a checker error (exit 2) still aborts, as intended.
|
Evaluated the bot review above against the sources. All four reported findings are either already handled here or do not hold — but the review missed one defect that this pull request introduces, and The one real problem: the check can no longer reach its own comment stepSwapping the shell checker for
if [ "$exit_code" -gt 1 ] || { [ "$exit_code" -eq 1 ] && ! grep -q '^### ' <<< "$output"; }; then
printf '%s\n' "$output"; exit 2
fiThe Python checker printed The Fixed by having the checker emit the heading the workflow is written around, splitting each issue into
On the four reported findings"Saved alternate layouts become corrupt" — already handled. "Firmware upgrades erase saved profiles" — the mechanism is right, the conclusion is not. Reset-on-version-mismatch is the intended design; "Generated display metadata stays stale" — already handled; "Some structure changes evade checks" — already handled, and this is the point of the rewrite. |
Those files belong to iNavFlight#11885, which replaces check-pg-versions.sh with a Python checker. Carrying a copy here only produces a conflict once either lands, and it is unrelated to this change.
|
/agentic_review |
|
Code review by qodo was updated up to the latest commit 6c4de3e |
|
/agentic_review |
|
Code review by qodo was updated up to the latest commit 31f2aa0 |
|
Test firmware build ready — commit Download firmware for PR #11896 250 targets built. Find your board's
|
|
RAM / Flash usage vs. base commit
See RAM/flash optimization guide for techniques to reduce usage. |
|
/agentic_review |
|
Code review by qodo was updated up to the latest commit d54ad8d |
|
This follows the outcome of the discussion in #11894. For reference, measured on 86a0441 (maintenance-10.x at 10.0.0-rc1), same base for all builds:
F722 is at 99.63 % flash on that base. The headroom that the pending flash optimisation (#12012) recovers is meant to keep F722 viable for fixes and flight-relevant features, not to be spent on display labels. So if this goes ahead at all, it needs a USE_* gate that excludes F722. The OSD layout version bump 4 → 5 also resets every stored OSD layout on a 10.0 → 10.1 update, which is a second user-visible reset in a minor release on top of the PG resets in #11894. |
Adds OSD elements for the active control, battery and mixer profile names (IDs 172–174). Names are upper-cased; unnamed profiles show their symbol and slot number. The existing numeric active-profile element is unchanged.
These elements use the INAV renderer: analog OSD and MSP DisplayPort. The legacy native DJI MSP telemetry backend is outside this feature’s scope. Its Betaflight rate/PID/profile slots are not equivalents of INAV control/battery/mixer profiles, and it has no matching name payload. Mapping positions alone would expose fields without text.
The branch includes the profile-name storage from #11894, migration of the immediately preceding unnamed profile layouts, and CLI escaping for spaces, #, quotes and backslashes. The OSD layout version changes from 4 to 5; stored OSD layouts reset once on upgrade.
Validation: 10 profile/CLI tests and 6 servo tests passed; SPEEDYBEEF405V4 and MATEKH743 builds passed; the MSP catalogue consistency check passed after synchronizing the target branch’s three commands. Earlier SITL/Configurator checks verified 175 items, saved layout positions and named/unnamed previews. Physical display output has not been tested. Firmware CI on the latest head is tracked in the PR checks.