roll: pigweed Revert "pw_protobuf: Force use of callbacks for oneof"

This reverts commit 53d4032b027055342c7321bef95e8a23e805c74c.

Reason for revert: Downstream dependency issues.

Original change's description:
> pw_protobuf: Force use of callbacks for oneof
>
> pw_protobuf's message structures previously generated each of the
> members of a oneof group as a separate struct member, allowing multiple
> of them to be set to serialize semantically-invalid wire messages.
>
> This replaces oneof struct member generation with a single callback for
> the entire oneof group, allowing the user to encode/decode the desired
> oneof field using the wire stream encoder and decoder.
>
> Change-Id: I2e4f79c5f7d2ec99eb036e0f93a77675a29a625c
> Original-Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/236592
> Reviewed-by: Armando Montanez <amontanez@google.com>
> Lint: Lint 🤖 <android-build-ayeaye@system.gserviceaccount.com>

TBR=hepler@google.com,frolv@google.com,amontanez@google.com,pigweed-scoped@luci-project-accounts.iam.gserviceaccount.com,android-build-ayeaye@system.gserviceaccount.com

Original-Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/242193
Presubmit-Verified: CQ Bot Account <pigweed-scoped@luci-project-accounts.iam.gserviceaccount.com>
Original-Revision: f60e87048d40096d7b005f4d40e42872b9bae76e

Rolled-Repo: https://pigweed.googlesource.com/pigweed/pigweed
Rolled-Commits: 53d4032b027055..f60e87048d4009
Roll-Count: 1
Roller-URL: https://ci.chromium.org/b/8734060401814003329
GitWatcher: ignore
CQ-Do-Not-Cancel-Tryjobs: true
Change-Id: I53f67282a2f45dbd01fa88a9c6e552125aa87bbb
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/quickstart/bazel/+/242115
Bot-Commit: Pigweed Roller <pigweed-roller@pigweed-service-accounts.iam.gserviceaccount.com>
Commit-Queue: Pigweed Roller <pigweed-roller@pigweed-service-accounts.iam.gserviceaccount.com>
Lint: Lint 🤖 <android-build-ayeaye@system.gserviceaccount.com>
1 file changed
tree: 05a140861cd5688bc75071a7b8277acd286801d6
  1. .github/
  2. .vscode/
  3. apps/
  4. modules/
  5. system/
  6. targets/
  7. tools/
  8. .bazelignore
  9. .bazelrc
  10. .bazelversion
  11. .buildifier.json
  12. .clang-format
  13. .clangd.shared
  14. .gitignore
  15. .pw_console.yaml
  16. AUTHORS
  17. BUILD.bazel
  18. CONTRIBUTING.md
  19. LICENSE
  20. MODULE.bazel
  21. OWNERS
  22. pigweed.json
  23. README.md
README.md

Pigweed: minimal Bazel example

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.

Getting the code

git clone https://pigweed.googlesource.com/pigweed/quickstart/bazel pw_bazel_quickstart
cd pw_bazel_quickstart

Dependencies

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.

Running on the simulator

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

Running on hardware

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

Controlling the LED

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)

Running unit tests on the host device

bazelisk test //... will run the unit tests defined in this project, such as the ones in modules/blinky/blinky_test.cc.

Running unit tests on hardware

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.

Next steps

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.