blob: 33fcfbe642dce20a25128e27cfbd66a53671d79c [file] [log] [blame] [view]
## RPC Console and Device Tracing
## Using RPC Console
You can use the rpc default config to setup everything correctly for RPCs:
```
$ export SDKCONFIG_DEFAULTS=$PROJECT_ROOT/examples/all-clusters-app/esp32/sdkconfig_m5stack_rpc.defaults
$ rm sdkconfig
$ idf.py fullclean
```
Alternatively, Enable RPCs in the build using menuconfig:
- Enable the RPC library and Disable ENABLE_CHIP_SHELL
```
Component config → CHIP Core → General Options → Enable Pigweed PRC library
Component config → CHIP Core → General Options → Disable CHIP Shell
```
- Ensure the UART is correctly configured for your board, for m5stack:
```
PW RPC Debug channel → UART port number → 0
PW RPC Debug channel → UART communication speed → 115200
PW RPC Debug channel → UART RXD pin number → 3
PW RPC Debug channel → UART TXD pin number → 1
```
After configuring you can build and flash normally:
```
$ idf.py build
$ idf.py flash
```
After flashing a build with RPCs enabled you can use the rpc console to send
commands to the device.
Build or install the
[rpc console](../../../examples/common/pigweed/rpc_console/README.md)
Start the console
```
chip-console --device /dev/ttyUSB0
```
From within the console you can then invoke rpcs:
- Configure WiFi
```
rpcs.chip.rpc.WiFi.Connect(ssid=b"MySSID", secret=b"MyPASSWORD")
rpcs.chip.rpc.WiFi.GetIP6Address()
```
- Control Lighting
```
rpcs.chip.rpc.Lighting.Get()
rpcs.chip.rpc.Lighting.Set(on=True, level=128, color=protos.chip.rpc.LightingColor(hue=5, saturation=5))
```
- Control Lock
```
rpcs.chip.rpc.Locking.Get()
rpcs.chip.rpc.Locking.Set(locked=True)
```
- OTA Requestor
```
rpcs.chip.rpc.Device.TriggerOta()
```
## Device Tracing
Device tracing is available to analyze the device performance. To turn on
tracing, build with RPC enabled.
Obtain tracing json file.
```
$ ./{PIGWEED_REPO}/pw_trace_tokenized/py/pw_trace_tokenized/get_trace.py -d {PORT} -o {OUTPUT_FILE} \
-t {ELF_FILE} {PIGWEED_REPO}/pw_trace_tokenized/pw_trace_protos/trace_rpc.proto
```