Commit Graph
1735 Commits
Author SHA1 Message Date
Peter BarkerandClaude Opus 4.8 78c56ef55d Tools: require committed bootloader binary for new bootloader hwdef
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>
2026-06-24 09:51:03 +10:00
Peter Barker 25dd465429 Tools: consolidate new board checks into test_new_boards.py
pre-commit / ci (push) Has been cancelled
test scripts / build (astyle-cleanliness) (push) Has been cancelled
test scripts / build (check_autotest_options) (push) Has been cancelled
test scripts / build (logger_metadata) (push) Has been cancelled
test scripts / build (param-file-validation) (push) Has been cancelled
test scripts / build (param_parse) (push) Has been cancelled
test scripts / build (python-cleanliness) (push) Has been cancelled
test scripts / build (shellcheck) (push) Has been cancelled
test scripts / build (validate_board_list) (push) Has been cancelled
some checks went into check_branch_conventions.py instead.

Adds a comment so this doesn't happen again
2026-06-22 22:19:05 +10:00
Pierre Kancir f969b6f980 Tools: build_tests: add json output to pretty_diff_size and table from json gathering 2026-06-21 09:29:40 +10:00
Andrii Anoshyn 70b124bbf1 Tools: adjust hwdef metadata checks 2026-06-19 13:00:30 +10:00
Pierre Kancir c9875dc02e Tools: fix generate_lua_docs.sh output path
mkdir -p lualogs to ensure it exist
explicitly use doc_out_path for output, using only logpath seems broken
2026-06-17 14:36:22 +10:00
Peter Barker acd41e4b27 Tools: make sure board IDs are allocated in correct range 2026-06-16 18:06:29 +10:00
Peter Barker c56c10694a Tools: add board_list.BoardList.hwdef_for_board 2026-06-16 08:46:48 +10:00
Pierre Kancir c566a9cec5 Tools: remove all modules from coverage 2026-06-16 08:40:40 +10:00
Peter Barker 740cbb712b Tools: build_options.py: RPM_DRONECAN does not need GENERATOR!
pre-commit / ci (push) Has been cancelled
test scripts / build (astyle-cleanliness) (push) Has been cancelled
test scripts / build (check_autotest_options) (push) Has been cancelled
test scripts / build (logger_metadata) (push) Has been cancelled
test scripts / build (param-file-validation) (push) Has been cancelled
test scripts / build (param_parse) (push) Has been cancelled
test scripts / build (python-cleanliness) (push) Has been cancelled
test scripts / build (shellcheck) (push) Has been cancelled
test scripts / build (validate_board_list) (push) Has been cancelled
2026-06-13 17:30:19 +10:00
Peter BarkerandClaude Opus 4.8 97ec3af9d6 Tools: add build_binaries history HTML site generator
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>
2026-06-08 11:36:18 +10:00
Peter Barker 3616a1822f Tools: add failure injection to build_options.py 2026-06-05 20:32:19 +10:00
Peter Barker 0332990510 Tools: signing/README.md, add a note on accepting commands when no pukeys 2026-06-05 19:43:33 +10:00
Javid e4a718d635 Tools: add HAL_WITH_ESC_TELEM build option
so esc telem can be turned off from the build server, and add the
symbol to extract_features so it shows in feature lists.
2026-06-03 19:09:17 +10:00
Peter Barker a3848abe29 Tools: extract_features: extract WPNEXT features 2026-06-03 09:54:28 +10:00
Peter Barker d4eda2d71f autotest: add test for MAV_CMD_DO_SET_ROI_WPNEXT_OFFSET 2026-06-03 09:54:28 +10:00
Peter Barker a4147441a5 Tools: add LIS2MDL back in with a comment that it generally wasn't used 2026-06-01 17:05:32 +10:00
Jacob Dahl 6563ed1d2f Tools: remove LIS2MDL driver, use IIS2MDC
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.
2026-06-01 17:05:32 +10:00
Pierre Kancir 8d225aa7e7 Tools: build_script_base: make BuildScriptBase base class and progress_prefix abstract
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
2026-05-27 08:50:02 +10:00
Pierre Kancir da8bd63a35 Tools: build_script_base: fix call error return 2026-05-27 08:50:02 +10:00
Peter Barker dea45a24e5 autotest: disallow BRD_TYPE in defaults.parm for new/modified boards
should always be specified in hwdef as BOARD_TYPE_DEFAULT
2026-05-26 22:31:26 +10:00
Peter Barker 8f5f690771 Tools: ensure new boards have both a README.md and an image 2026-05-23 09:55:03 +10:00
Andrew TridgellandClaude Opus 4.7 fce9883d2f AP_Networking: add SITL TAP backend for host-side reachability
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>
2026-05-20 17:08:34 +10:00
Andrew TridgellandClaude Opus 4.7 3ad3bb46ff AP_HAL_SITL: add sitl_periph_PPP PPPGW build target
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>
2026-05-20 17:08:34 +10:00
Andy Piper d9b30d1010 scripts: add build option for EKF bootstrap reset
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.
2026-05-13 18:04:37 +01:00
Peter Barker e69c03557c Tools: do not work with AP_PERIPH_ defines on non-periph boards 2026-05-06 17:48:58 +10:00
Peter Barker bbed8c1333 Tools: allow support for MAV_CMD_GET_HOME_POSITION to be compiled out
superseded by MAV_CMD_REQUEST_MESSAGE
2026-05-06 17:47:25 +10:00
Peter Barker 9c142a4c18 Tools: remove rallypoint/fencepoint protocols 2026-04-30 19:52:50 +10:00
Peter Barker c9c9ff2984 Tools: test_new_boards.py: prevent bad lines in defaults.parm
where we have the ability to set a default using a define in the hwdef we should.
2026-04-28 07:47:26 +10:00
cuav-chen2 84f74fc0d7 Tools: Scripts: Decode devid: add ADIS16607 2026-04-27 10:24:51 +10:00
Peter Barker fbc82ee347 Tools: convert to hwdef system 2026-04-21 10:06:15 +10:00
Peter Barker df9dd14608 Tools: understand markdown code guards when looking for underlines
this was marking code included within blocks (```) as having heading underlines.  Which we shouldn't do inside fenced code blocks.
2026-04-20 19:25:51 +10:00
Peter BarkerandClaude Sonnet 4.6 fe2e31fe30 Tools: extend RST markup check to catch :ref: cross-references
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>
2026-04-18 21:29:44 +10:00
Peter BarkerandClaude Sonnet 4.6 e5cf41a864 Tools: fix checking for rst-style links in markdown files
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>
2026-04-17 08:08:51 +10:00
Peter BarkerandClaude Sonnet 4.6 9322273615 Tools/scripts: check_branch_conventions: detect RST-style hyperlinks in markdown
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-16 10:27:47 +10:00
Christian Clauss 0b863c87e7 Tools: Raise Artistic Style errors in CI 2026-04-15 18:39:26 +10:00
Peter BarkerandClaude Sonnet 4.6 514280962e Tools/scripts: check_branch_conventions: detect setext/RST underline headings in markdown
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-15 15:42:48 +10:00
Peter BarkerandClaude Sonnet 4.6 510556e359 CI: check submodule references exist in the submodule repo
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>
2026-04-14 11:15:21 +10:00
Christian Clauss 80b2e39b16 Tools: Run shellcheck in GitHub Actions CI 2026-04-11 13:07:05 +10:00
Norihiko Itou db3db56079 AP_InertialSensor: add STM's ASM330LHH
Apply review
2026-04-07 20:03:04 +09:00
Randy Mackay 01f4f030ba Tools: extract features fix for batt watt max 2026-04-07 20:02:09 +09:00
Peter BarkerandClaude Sonnet 4.6 0a2e614ed0 Tools: check_branch_conventions: check submodule updates are isolated
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>
2026-04-07 10:36:08 +10:00
Thomas Watson dd9bd7a08a Tools: fix build_bootloaders debug symbol flag
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.
2026-04-04 14:34:44 -05:00
Brown dd8a3ddf3b AP_InertialSensor: add LSM6DSV driver
Add driver for the ST LSM6DSV16X 6-axis IMU with support for:
- WHOAMI-based chip detection (Invensensev3-style check_whoami)
- HAODR mode-1 for high-accuracy ODR (1000-8000 Hz)
- continuous FIFO burst reads
- fast sampling via INS_FAST_SAMPLE / INS_GYRO_RATE
- accelerometer second-stage LPF2
2026-04-01 19:03:47 +11:00
Henry Wurzburg 55bbd39946 Tools: build server support for throw mode 2026-04-01 08:46:32 +11:00
Peter Barker bf667e0fa3 Tools: build_binaries.py: remove pointless read_string_from_filepath wrapper
predates the pathlib methods

... also the unused string_in_filepath method
2026-04-01 08:42:11 +11:00
Peter Barker 0a62cb443d Tools: use pathlib.Path for reading entire files 2026-03-30 10:35:51 +11:00
Christian Clauss 92643e1eb1 Tools: Use with open() as to close file handles 2026-03-27 12:21:12 +11:00
Randy Mackay 2fbb90c8aa Tools: signing README wording improvements 2026-03-26 20:40:42 +09:00
Randy Mackay 7b41c5e9d3 Tools: signing README fixes 2026-03-26 20:40:42 +09:00
Christian Clauss bd8b1b5c36 Tools: Use dict.item() to get both keys and values 2026-03-25 20:06:49 +11:00