Setup
Intro + setup.
Getting to blinky.
Writing tests.
Calling RPCs.
Key Value Store.
Testing in the factory.
Instructions are the same as flashing blinky but passing in a different .elf
.
Run the compile with pw watch out
or ninja -C out
.
Flash rpc.elf
.
Teensy
arduino_unit_test_runner --config out/arduino_debug/gen/arduino_builder_config.json --upload-tool teensyloader --verbose --flash-only out/arduino_debug/obj/workshop/03-rpc/bin/rpc.elf
stm32f429i_disc1
openocd -s ${PW_PIGWEED_CIPD_INSTALL_DIR}/share/openocd/scripts -f ${PW_ROOT}/targets/stm32f429i_disc1/py/stm32f429i_disc1_utils/openocd_stm32f4xx.cfg -c "program out/arduino_debug/obj/workshop/03-rpc/bin/rpc.elf reset exit"
Optional: Create / update the log token database. This will be automatically updated when compiling.
python -m pw_tokenizer.database create --force --database workshop/03-rpc/tokenizer_database.csv out/arduino_debug/obj/workshop/03-rpc/bin/rpc.elf
Start the rpc_console that saves log output to a file.
python -m pw_hdlc_lite.rpc_console -o logfile.txt -d /dev/ttyACM0 third_party/pigweed/pw_rpc/pw_rpc_protos/echo.proto workshop/03-rpc/remoticon_proto/remoticon.proto
This will launch an interactive ipython
console where you can send RPCs. Try rpcs.pw.rpc.EchoService.Echo(msg="hello!")
. IPython provides nice tab completion for the RPC interfaces as well.
Tail the log output.
python -m pw_tokenizer.detokenize base64 workshop/03-rpc/tokenizer_database.csv -i logfile.txt --follow