blob: 27d7ec00570d0c293fad1a1cba1f17dc895f1885 [file] [log] [blame] [view]
# Contributing to Pigweed
Pigweed lets anyone contribute to the project, regardless of their employer. The
Pigweed project reviews and encourages well-tested, high-quality contributions
from anyone who wants to contribute to Pigweed.
## Contributor License Agreement
Contributions to this project must be accompanied by a Contributor License
Agreement (CLA).
To see any Contributor License Agreements on file or to sign a CLA, go to
<https://cla.developers.google.com/>.
For more information about the Google CLA, see
[Contributor License Agreements](https://cla.developers.google.com/about).
## Contributing changes and submitting code reviews
All changes require review, including changes by project members.
For detailed instructions on how to contribute changes, see
[the Gerrit docs](https://gerrit-review.googlesource.com/Documentation/intro-user.html).
## Community guidelines
This project observes the following community guidelines:
* [Google's Open Source Community Guidelines](https://opensource.google/conduct/)
## Required presumit testing
We don’t have hardware-in-the-loop testing yet, so the following manual testing
is needed before merging *any* change to this repo.
### Checklist for new code
- [ ] New binaries or tests?
- [ ] Update `//BUILD.bazel` with updated deps on
`:refresh_compile_commands`.
- [ ] Update `//.bazelrc` presubmit section with the new binaries you want
built in CQ after the line `build:presubmit -- \ `
- [ ] New protos?
- [ ] Update `//tools/airmaranth/device.py` with the proto imports under
`get_all_protos()`.
- [ ] Add the proto deps to `:airmaranth_lib` in `//tools/BUILD.bazel`
- [ ] Run the regression suite (below) manually
### Regression testing suite: manual testing steps
For now, assumes you have
[a full setup](https://pigweed.dev/docs/showcases/sense/tutorial/flash.html#option-full-setup):
* Pico RP2040
* Enviro+ pack
* OmniBus extender
* Debug probe
#### Host simulator
##### Steps
1. In terminal 1: Run simulator `$ bazelisk run //apps/blinky:simulator_blinky`
1. In terminal 2:
* Run console `$ bazelisk run //apps/blinky:simulator_console`
* In the console, run: `>>>
device.rpcs.pw.rpc.EchoService.Echo(msg='hello')`
##### Expected result
Return value shown in console is: `(Status.OK, pw.rpc.EchoMessage(msg=’hello’))`
#### On-device RP2040 apps
##### Flashing test
###### Steps
In a terminal (or in VSCode by “Run target”):
* `$ bazelisk run //apps/blinky:flash`
* `$ bazelisk run //apps/blinky:rp2040_console`
###### Expected result
1. Successful build, flash, and console loads.
1. RP2040 LED toggles @ 1Hz
1. Log panel displays: `RpcDevice BLINKY Toggling Led`
##### RPC test
###### Steps
In the console, run: `>>> device.rpcs.pw.rpc.EchoService.Echo(msg='hello')`
###### Expected result
Return value shown in console is: `(Status.OK, pw.rpc.EchoMessage(msg=’hello’))`
##### Toggle blinky test
1. Close any active consoles. Run `$ bazelisk run
//apps/blinky:rp2040_toggle_blinky`. The Pico LED should *stop* blinking.
1. Run `$ bazelisk run //apps/blinky:rp2040_toggle_blinky` again. The Pico LED
should *start* blinking.
#### On-device RP2040 tests
##### Steps
1. In terminal 1: Start test runner: `$ bazelisk run \
@pigweed//targets/rp2040/py:unit_test_server \ -- --debug-probe-only`
1. In terminal 2: Run tests: `$ bazelisk test --config=rp2040 //...`
##### Expected result
Test runner successfully connects to the device. Tests run and pass.