commit | 02d30c709e386cf0872d025c860ce652d2ef077b | [log] [tgz] |
---|---|---|
author | Austin Foxley <afoxley@pigweed.infra.roller.google.com> | Thu Sep 26 20:34:29 2024 +0000 |
committer | CQ Bot Account <pigweed-scoped@luci-project-accounts.iam.gserviceaccount.com> | Thu Sep 26 20:34:29 2024 +0000 |
tree | 01c911a89b0c18af58a320e12ce9637c4332016e | |
parent | aecb56bfda9626a8ad6cf78b2c10c13efb9ffe48 [diff] |
roll: pigweed pw_uart: Add ReadAtLeast and ReadExactly methods Deprecate the existing Read method in favor of two read variants that cover more use cases. ReadExactly maps to the existing Read semantics and blocks until the buffer is completely filled. ReadAtLeast allows for blocking until at least the specified bytes are received, but allows for more to be delivered if available. ReadAtLeast is useful in cases where you don't know exactly how many bytes will be returned and don't know exactly when to expect them. Update mcuxpresso implementation to support this new feature. Provide default implementations of new variant to ease transition of existing implementations. Original-Bug: 368149122 Original-Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/236268 Presubmit-Verified: CQ Bot Account <pigweed-scoped@luci-project-accounts.iam.gserviceaccount.com> Original-Revision: b4e75393442526d409968e4aac685515944b3e3e Rolled-Repo: https://pigweed.googlesource.com/pigweed/pigweed Rolled-Commits: f946f6ae13c3bb..b4e75393442526 Roller-URL: https://ci.chromium.org/b/8735702464976187665 GitWatcher: ignore CQ-Do-Not-Cancel-Tryjobs: true Change-Id: Iad5f9adca77696e7a3bd829d862b66f2f5dcbce0 Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/quickstart/bazel/+/238169 Bot-Commit: Pigweed Roller <pigweed-roller@pigweed-service-accounts.iam.gserviceaccount.com> Lint: Lint 🤖 <android-build-ayeaye@system.gserviceaccount.com> Commit-Queue: Pigweed Roller <pigweed-roller@pigweed-service-accounts.iam.gserviceaccount.com>
This repository contains a minimal example of a Bazel-based Pigweed project. It is a LED-blinking service (featuring RPC control!) for the Raspberry Pi Pico. It can also be run on any computer using the included simulator.
git clone https://pigweed.googlesource.com/pigweed/quickstart/bazel pw_bazel_quickstart cd pw_bazel_quickstart
The only dependency that must be installed is Bazelisk.
Bazelisk is a launcher for the Bazel build system that allows for easy management of multiple Bazel versions.
Instructions for installing Bazelisk can be found here.
To run the simulator, type: bazelisk run //apps/blinky:simulator_blinky
Then, in a new console, connect to the simulator using: bazelisk run //apps/blinky:simulator_console
To start, connect a Raspberry Pi Pico, Pico 2, or debug probe via USB.
To run on the Raspberry Pi Pico, type: bazelisk run //apps/blinky:flash_rp2040
Then, in a new console, connect to the device using: bazelisk run //apps/blinky:rp2040_console
Once connected with a console, RPCs can be sent to control the LED. Try running:
device.set_led(True) device.set_led(False) device.toggle_led() device.blink(blink_count=3)
bazelisk test //...
will run the unit tests defined in this project, such as the ones in modules/blinky/blinky_test.cc
.
bazelisk run @pigweed//targets/rp2040/py:unit_test_server
in one console followed by bazelisk test //... --config=rp2040
will also allow running the unit tests on-device.
Try poking around the codebase for inspiration about how Pigweed projects can be organized. Most of the relevant code in this quickstart (including RPC definitions) is inside modules/blinky
, with some client-side Python code in tools/console.py
.