roll: third_party/pigweed c99ca8a..6165aa4 (26 commits)

6165aa4:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/245754 pw_i2c: Set the i2c flags correctly for transactions on an i3c bus
b7246bf:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/248195 pw_sensor: Add freeform extras field to sensor.yaml
21933c6:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/248638 pw_async2: Accept alignment in CoroPromiseType::operator new
5b608da:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/248637 pw_build: Restore layering_check workaround for pw_facade
ef6ae0d:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/234930 pw_string: Stringify time types
b6de265:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/245216 pw_bluetooth_sapphire: Add BoringSSL to size report
65d0b8c:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/248712 pw_elf: Fix reference to data file
81d18d1:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/239506 pw_bluetooth_sapphire: Create size report
c9ad96c:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/227371 pw_bluetooth: Add LE Connection-Oriented Channels API
acbeaab:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/248432 pw_protobuf: Extend Find() APIs to support repeated fields
b8ee89e:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/232172 pw_bluetooth_proxy: L2CAP CoC supports reading
bd6248b:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/248652 pw_bluetooth_proxy: Remove uses of auto
5ecdeb1:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/248672 pw_elf: Simplify ReaderExample
7fb7bb1:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/248232 pw_tokenizer: Update regex for nested args
7f24718:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/248077 pw_bluetooth: Simplify emboss RFCOMM extended length case
a89e457:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/248292 pw_bluetooth_sapphire: Remove emboss-specific control packet names
2077854:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/248174 pw_bluetooth_sapphire: Remove EventPacket
e51890c:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/248392 pw_protobuf_compiler: Nanopb 3 bazel build fix
b9b9135:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/248312 pw_bluetooth: Format emboss files
94e2314:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/243532 pw_tokenizer: Add Detokenizer::FromElfFile
8ee7879:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/244893 pw_elf: Add ElfReader
a020d35:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/248381 pw_protobuf_compiler: Specify flags for generate_proto.py
6aadd54:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/236236 pw_spi: Finalize non-Virtual interface on Initiator
a703dc3:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/244892 pw_elf: Create new module
a30e972:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/248173 pw_bluetooth_sapphire: Use EmbossEventPacket in CommandChannel
c5d3d97:https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/245113 clang-tidy: Make [[deprecated]] a warning instead of error

Rolled-Repo: https://pigweed.googlesource.com/pigweed/pigweed
Rolled-Commits: c99ca8ae0a441b..6165aa470b3510
Roll-Count: 1
Roller-URL: https://cr-buildbucket.appspot.com/build/8731305678721439665
GitWatcher: ignore
CQ-Do-Not-Cancel-Tryjobs: true
Change-Id: I33b37bb5f04b005d8f955a2fc564afbc3620cbea
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/kudzu/+/248738
Lint: Lint 🤖 <android-build-ayeaye@system.gserviceaccount.com>
Bot-Commit: Pigweed Roller <pigweed-roller@pigweed-service-accounts.iam.gserviceaccount.com>
Commit-Queue: Pigweed Roller <pigweed-roller@pigweed-service-accounts.iam.gserviceaccount.com>
1 file changed
tree: ed8f4d06a5c8328e186bc4a2ac93be73b6760d3e
  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))