From f0a276901f05b0261e4d90eba07552910e7ee157 Mon Sep 17 00:00:00 2001 From: Jordan Yates Date: Thu, 31 Jul 2025 15:36:21 +1000 Subject: [PATCH] tools: rpc_cloud: fix handling of responses without values Fix assertion failures when a queried RPC does not have any response parameters. Signed-off-by: Jordan Yates --- src/infuse_iot/tools/rpc_cloud.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/infuse_iot/tools/rpc_cloud.py b/src/infuse_iot/tools/rpc_cloud.py index 0742e99..8f7e02f 100644 --- a/src/infuse_iot/tools/rpc_cloud.py +++ b/src/infuse_iot/tools/rpc_cloud.py @@ -6,6 +6,7 @@ __copyright__ = "Copyright 2024, Embeint Inc" import argparse +import base64 import importlib import json import pkgutil @@ -83,10 +84,15 @@ def query(self, client: Client): if rsp.downlink_message.status == DownlinkMessageStatus.COMPLETED: rpc_rsp = rsp.downlink_message.rpc_rsp assert isinstance(rpc_rsp, RpcRsp) - assert isinstance(rpc_rsp.params, RPCParams) - print(f" Result: {rpc_rsp.return_code}") - print(json.dumps(rpc_rsp.params.additional_properties, indent=4)) + if rpc_rsp.params: + print(json.dumps(rpc_rsp.params.additional_properties, indent=4)) + elif rpc_rsp.params_encoded: + raw_rsp = base64.b64decode(rpc_rsp.params_encoded) + print(f" Raw: {raw_rsp.hex()}") + else: + # No response values + pass def run(self): with Client(base_url="https://api.infuse-iot.com").with_headers(