test_new_boards.py now checks that any branch adding a new hwdef-bl.dat
also commits the matching prebuilt bootloader binary at
Tools/bootloaders/<board>_bl.bin, mirroring the build-time requirement.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Generate a static, fully-offline HTML site from a build_binaries history
SQLite database (as produced by build_binaries_history.py). Intended to be
run periodically; each run regenerates the whole tree. Pages are
self-contained (chart data inlined, uPlot vendored locally), so the output
opens directly from local disk with no database or network access.
Pages:
- Coverage (the landing page): board x vehicle status at the most recent
COMPLETED latest-tag run, split into boards with/without failures.
- Build trends: per-board grid, one box per run (newest left) linking to its
commit, recently-failing boards first; a "completed" row marks finished vs
partial runs; an optional checkbox interleaves the git commits we did not
build (rendered on demand).
- Flash free: per vehicle/board program-flash headroom (region computed via
the ChibiOS HWDef system), tightest first, low-headroom flagged.
- Runs: run duration, boards per run, builds per run, and commits since the
previous run.
- Overview dashboard, plus per-board detail pages (flash-free and build-
duration history and notable size changes). Chart points link to the commit.
Lives in its own subdirectory with a README onboarding guide (architecture,
data flow, the inlined-data contract, how to extend, and dev gotchas).
Written with AI assistance.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
LIS2MDL and IIS2MDC are the same ST silicon with identical register
maps, WHO_AM_I, I2C address and sensitivity. Remove the separate
LIS2MDL driver entirely and switch boards that referenced it to IIS2MDC.
AIRBRAINH743 COMPASS line changed from LIS2MDL to IIS2MDC.
this prevent linter to trigger on none existing progress_prefix on the base class
Child class will now have TypeError if they don't implement progress_prefix
New AP_Networking_SITL_TUN backend that opens a Linux TAP device and
bridges the lwIP stack to it. Slots into the same "ethernet" position
in PPP_ETHERNET_GATEWAY mode that the ChibiOS backend takes on real
hardware, so a SITL build acting as a PPPGW can be reached by developer
tools on the host (browsers, curl, ...) at the periph's PPP-side IP.
A new Tools/scripts/Networking/sitl_network.sh handles the one-time
host setup: it creates the TAP device under the current user (so the
SITL binary needs no extra privileges), assigns the host's IP, and
installs iptables MASQUERADE + FORWARD rules so the SITL subnet can
reach the wider host network / internet via NAT. The matching `down`
action undoes exactly what `up` put in place, using a small state file
in /tmp to remember the outbound interface and the previous
net.ipv4.ip_forward setting. Tools/scripts/Networking/README.md
documents the usage and customisation knobs.
Tools/scripts/Networking/sitl_network.sh up # create TAP + NAT
sim_vehicle.py -v Plane -f quadplane-PPP
curl http://10.77.193.20/ # PPPGW web UI
Tools/scripts/Networking/sitl_network.sh down
The backend's init falls back to a "PPPGW-only, no host bridge" mode
if the TAP device is not pre-created (TUNSETIFF returns EPERM): it
seeds activeSettings from the user-configured IP params and prints a
one-line warning. That way the same hwdef works in autotest (which
runs without root and without sitl_network.sh) and in developer
sessions (which run it).
Gated by AP_NETWORKING_BACKEND_SITL_TUN (default 0); turned on in a
per-board hwdef when wanted. AP_NETWORKING_NEED_LWIP is widened to
include this backend so the lwIP sources get pulled into the build.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
New SITL AP_Periph board modelled on the ChibiOS PPPGW boards (eg
Pixhawk6X-PPPGW), with the PPP networking backend, scripting, and a
ROMFS-embedded copy of the pppgw_webui.lua web interface from
Tools/AP_Periph/Web. Intended for end-to-end PPP testing between two
ArduPilot SITL processes and for exercising the PPPGW web server in
SITL.
The hwdef:
- enables AP_PERIPH_NETWORKING_ENABLED, AP_NETWORKING_BACKEND_PPP and
AP_NETWORKING_CAN_MCAST_ENABLED;
- points NET_PPP_PORT at serial 1 so the periph can be wired to the
plane SITL via --serial1=tcpclient:127.0.0.1:<port>;
- enables AP_SCRIPTING + AP_FILESYSTEM_ROMFS + AP_PARAM_DYNAMIC, and
embeds Tools/AP_Periph/Web/ via ROMFS_DIRECTORY;
- disables Lua bindings whose backing libraries AP_Periph does not link
(AP_Vehicle/AC_Fence/AP_Button/AP_Camera/AP_Mount/AP_OpticalFlow/
AP_VisualOdom/AP_Frsky_Telem/AP_Arming/RC_Channel). ChibiOS periph
builds handle this via defaults_periph.h; SITL periph has no
equivalent so we list the gates inline.
ROMFS support for SITL hwdefs (the ROMFS / ROMFS_WILDCARD /
ROMFS_DIRECTORY keywords) is added to sitl_hwdef.py, modelled on the
ChibiOS hwdef parser. Files are published via env_vars['ROMFS_FILES']
and picked up by the existing waf embed_ROMFS_files step in boards.py.
A new sitl_periph_PPP-specific defaults file
(Tools/autotest/default_params/periph-ppp.parm) holds runtime overrides
that should always apply to this build: NET_PPP_BAUD=921600 (saner
than the 12.5Mbaud real-hardware default for the loopback-TCP
transport), and SCR_ENABLE=1 so the web interface script comes up at
boot.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Add AP_AHRS_EKF_RESET_ENABLED to the custom build server so the
EKF bootstrap reset aux function can be compiled out on
flash-constrained boards. Enabled by default, depends on EKF3.
Widen check_markdown_rst_hyperlinks to also flag RST cross-references
(:[a-z]+:`...`) alongside the existing RST external hyperlink check.
Rename the pass message to "RST-style markup" to reflect the broader
scope.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Fix `text <url>`_ (single-underscore RST named hyperlinks) missed by
the earlier pass, which only converted the double-underscore anonymous
form `text <url>`__. Affected files fell into two groups:
- Files already on this branch (BROTHERHOBBYF405v3, ZeroOneX6,
ZeroOneX6_Air, SDMODELH7V2, TBS_LUCID_H7_WING, TBS_LUCID_H7_WING_AIO,
PixSurveyA2-IND): the conversion script regex only matched `__`.
- Files not yet touched by this branch (PixPilot-C3, PixPilot-V3,
PixPilot-V6, PixPilot-V6PRO, PixSurveyA1-IND): never processed as
they were not in the branch diff at the time.
Also extend check_branch_conventions.py to catch both `_` and `__`
variants using `__\?` (making the second underscore optional).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
For each commit on the branch that modifies a submodule reference,
verify that the referenced SHA exists in the local submodule via
`git cat-file -e <sha>^{commit}`. Submodule directories that are
not initialised are skipped with a warning.
This catches cases where a branch points a submodule at a SHA that
lives only in a private fork and would therefore fail when GitHub
Actions tries to fetch it.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Any commit that updates a submodule pointer must contain no other
changed paths — no other files, no other submodules.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The debug flag, contrary to its documentation, enables a debug build,
increasing the size of the binary and changing its contents. Fix the
documentation to describe what it actually does.
Then add the same flag as waf to just add symbols without changing the
actual binary.