## 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 ```