manifest: add label_pretty and firmware_category fields

Add human-readable labels and firmware classification to the build
manifest so ground stations like QGC can display friendly names and
filter builds by category.

New fields:
- label_pretty: human-readable variant name (e.g. "Multicopter")
- firmware_category: auto-detected classification
  - "vehicle" for multicopter, fixedwing, vtol, rover, uuv, spacecraft
  - "peripheral" for CAN sensor nodes (GPS, flow, mag, etc.)
  - "bootloader" for bootloader/canbootloader
  - "dev" for everything else (default, zenoh, mavlink-dev, etc.)

Peripheral detection uses ROMFSROOT="cannode" which is shared by all
~18 CAN sensor boards across ARK, Holybro, CUAV, Freefly, Matek, NXP.

A build-time warning fires when an unrecognized label falls through to
"dev", so new vehicle types are not silently hidden from end users.

Boards can override via CONFIG_BOARD_FIRMWARE_CATEGORY in .px4board.
CONFIG_BOARD_LABEL_PRETTY set on all px4/fmu-v6x variants as Phase 1.

Signed-off-by: Ramon Roche <mrpollo@gmail.com>
This commit is contained in:
Ramon Roche
2026-04-08 17:37:54 -07:00
parent 68c391328a
commit 63f059fd47
19 changed files with 231 additions and 0 deletions
+24
View File
@@ -54,6 +54,30 @@ menu "Toolchain"
string "Architecture"
default ""
config BOARD_LABEL_PRETTY
string "Human-readable label for this build variant"
default ""
help
A short display name for this build variant (e.g. "Multicopter",
"Rover"). Used by ground stations like QGC to show a user-friendly
name instead of raw target strings. Must be set in every .px4board
variant file because non-base variants inherit from default.
config BOARD_FIRMWARE_CATEGORY
string "Firmware category override (vehicle, peripheral, dev, bootloader)"
default ""
help
Override the auto-detected firmware category. Normally inferred
from the build label and board config: vehicle types (multicopter,
fixedwing, etc.) map to "vehicle", bootloader/canbootloader map to
"bootloader", CAN peripheral boards (ROMFSROOT=cannode) map to
"peripheral", and everything else maps to "dev". Set this only
when the auto-detection is wrong for a particular board variant.
IMPORTANT: If you add a new vehicle type with a label not yet in
_VEHICLE_LABELS (in gen_board_manifest_from_defconfig.py), either
add it there or set this to "vehicle" — otherwise the build will
be hidden from end-users in QGC.
config BOARD_LTO
bool "(EXPERIMENTAL) Link Time Optimization (LTO)"
default n