roll: third_party/pigweed 26 commits

8512b20c7f93492 roll: ninja
77d7e1bd03b006d roll: python-wheel
6d7e370608feb19 roll: fuchsia_infra 10 commits
15ebf243605e7ac roll: cmake
a271a3881ffa966 roll: rust
60a6b4dfb9e60e0 pw_bluetooth_sapphire: Emboss LEReadSupportedState
4df6f289fe3c1a0 pw_bluetooth_sapphire: Embossify ReadPageScanActiv
7286a9d4c200a46 pw_bluetooth_sapphire: Embossify ReadSimplePairing
2a2c2ad3be8241c pw_bluetooth_sapphire: Embossify ReadPageScanTypeR
aeecd225558b918 pw_bluetooth_sapphire: Remove ReadInquiryScanTypeR
904184e5b1590ca pw_bluetooth_sapphire: Embossify ReadLocalNameRetu
99acb268bf50ca0 bazel: Update to an unreleased version
faa7a78eab6a6c8 pw_bluetooth_sapphire: Allow LE remote feature int
107eecb0b87c664 pw_bluetooth_sapphire: Add flag to enable/disable
8bb808922dc58b5 pw_sensor: Add supported bus
38c6f7ca2ecdb4c pw_bluetooth_sapphire: Move inspect_testing under
03ed76e33aa5c5b pw_bluetooth_sapphire: Add random & async tests to
8db14c55863eed5 bazel: Enable ResultStore
25bb1a383ded8da pw_bluetooth_sapphire: Use Fuchsia API level 23
f8775ef1491d4a2 pw_rpc: Provide examples of raw methods in docs
1d56596636fd46b pw_async2: Add TimeProvider
f35a192883013ad pw_bluetooth_proxy: Log why GATT send is unavailab
6829156f7dcf15b pw_bluetooth_sapphire: Fuchsia test outputs in CQ
3e2889942fadf1c pw_rpc: Relocate RPC classes from pw_hdlc
4d14bbfc72409cb pw_bluetooth_sapphire: Add fuchsia/lib/fidl
d5f2d5a71ed4d7b bazel: Update Fuchsia SDK to 23.20240829.4.1

https://pigweed.googlesource.com/pigweed/pigweed
third_party/pigweed Rolled-Commits: fe1758863affc08..8512b20c7f93492
Roller-URL: https://ci.chromium.org/b/8737919256029813313
GitWatcher: ignore
CQ-Do-Not-Cancel-Tryjobs: true
Change-Id: Ie204ecb5083bfc1f37c301b19cf7e592cd0b0ba3
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/kudzu/+/233372
Commit-Queue: Pigweed Roller <pigweed-roller@pigweed-service-accounts.iam.gserviceaccount.com>
Bot-Commit: Pigweed Roller <pigweed-roller@pigweed-service-accounts.iam.gserviceaccount.com>
Lint: Lint 🤖 <android-build-ayeaye@system.gserviceaccount.com>
1 file changed
tree: 7ac1c1cef539f085323f834c962ae87046242bb1
  1. applications/
  2. build_overrides/
  3. lib/
  4. pcb/
  5. targets/
  6. third_party/
  7. tools/
  8. .bazelignore
  9. .bazelrc
  10. .bazelversion
  11. .gitignore
  12. .gitmodules
  13. .gn
  14. activate.bat
  15. banner.txt
  16. bootstrap.bat
  17. bootstrap.fish
  18. bootstrap.sh
  19. BUILD.gn
  20. BUILDCONFIG.gn
  21. OWNERS
  22. pigweed.json
  23. README.md
  24. WORKSPACE
README.md

Kudzu

Getting Started

Make sure you've set up Pigweed's prerequisites.

If you're on Windows, you can automate the initial setup by downloading the first-time setup script from cmd.exe:

curl https://pigweed.googlesource.com/pigweed/sample_project/+/main/tools/setup_windows_prerequisites.bat?format=TEXT > setup_pigweed_prerequisites.b64 && certutil -decode -f setup_pigweed_prerequisites.b64 setup_pigweed_prerequisites.bat && del setup_pigweed_prerequisites.b64

Then you can run the script with the following command in cmd.exe:

setup_pigweed_prerequisites.bat

Note: You may see a few UAC prompts as the script installs Git, Python, and enables developer mode.

Once that is done, you can clone this project with the following command:

git clone https://pigweed.googlesource.com/pigweed/kudzu

Environment setup

Pigweed uses a local development environment for most of its tools. This means tools are not installed to your machine, and are instead stored in a directory inside your project (Note: git ignores this directory). The tools are temporarily added to the PATH of the current shell session.

To make sure the latest tooling has been fetched and set up, run the bootstrap command for your operating system:

Windows

bootstrap.bat

Linux & Mac

source ./bootstrap.sh

After tooling updates, you might need to run bootstrap again to ensure the latest tools.

After the initial bootstrap, you can use use the activate scripts to configure the current shell for development without doing a full update.

Windows

activate.bat

Linux & Mac

source ./activate.sh

Device tools setup

Install the pico SDK and tool to flash the device.

pw package install pico_sdk
pw package install picotool

These packages will be built and added to the path automatically. There is no need to add these to the gn arguments.

Linux Setup

GLFW Dependency:

Install the GLFW OpenGL library

sudo apt install libglfw3-dev libglfw3

Udev Rules:

Put the following into /usr/lib/udev/rules.d/49-picoprobe.rules

# Pico app mode
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2e8a", ATTRS{idProduct}=="000a", MODE:="0666"
KERNEL=="ttyACM*", ATTRS{idVendor}=="2e8a", ATTRS{idProduct}=="000a", MODE:="0666", SYMLINK+="rp2040"

# RP2 Boot
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2e8a", ATTRS{idProduct}=="0003", MODE:="0666"
KERNEL=="ttyACM*", ATTRS{idVendor}=="2e8a", ATTRS{idProduct}=="0003", MODE:="0666", SYMLINK+="rp2040"

# Picoprobe
SUBSYSTEMS=="usb", ATTRS{idVendor}=="2e8a", ATTRS{idProduct}=="0004", MODE:="0666"
KERNEL=="ttyACM*", ATTRS{idVendor}=="2e8a", ATTRS{idProduct}=="0004", MODE:="0666", SYMLINK+="picoprobe"

This will also symlink /dev/picoprobe and /dev/rp2040 to the respective vendor and product ids.

Apply the above rules with:

sudo udevadm control --reload-rules
sudo udevadm trigger

Compile:

pw build

Run:

Host

Run the host app and connect to it via pw console:

./out/gn/host_device_simulator.speed_optimized/obj/applications/badge/bin/badge & \
  pw console --socket-addr default ; \
  killall badge

Kudzu

export ELF=./out/gn/rp2040.size_optimized/obj/applications/badge/bin/badge.elf

picotool reboot -f -u && \
  sleep 3 && \
  picotool load -x $ELF

Connect with pw console:

pw console --verbose \
  --baudrate 115200 \
  --token-databases ./out/gn/rp2040.size_optimized/obj/applications/badge/bin/badge.elf \
  --device /dev/rp2040

From Python Repl window you can issue RPCs interactively:

>>> device.rpcs.kudzu.rpc.Kudzu.PackageTemp()
(Status.OK, kudzu.rpc.PackageTempResponse(temp=27.60657501220703))