Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ dependencies = [
"rich",
"simple-term-menu",
"tabulate",
"typing-extensions",
"keyring",
"pyocd",
"pyyaml",
Expand Down
1 change: 0 additions & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,5 @@ pyocd
python-dateutil
simple-term-menu
tabulate
typing-extensions
keyring
paho-mqtt
18 changes: 3 additions & 15 deletions src/infuse_iot/tools/provision.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,6 @@
import sys
from http import HTTPStatus

try:
from simple_term_menu import TerminalMenu
except NotImplementedError:
TerminalMenu = None

from infuse_iot.api_client import Client
from infuse_iot.api_client.api.board import get_board_by_id, get_boards
from infuse_iot.api_client.api.device import (
Expand All @@ -24,6 +19,7 @@
from infuse_iot.api_client.models import Board, DeviceMetadata, Error, NewDevice
from infuse_iot.commands import InfuseCommand
from infuse_iot.credentials import get_api_key
from infuse_iot.util.console import choose_one
from infuse_iot.util.soc import nrf, soc, stm


Expand Down Expand Up @@ -90,11 +86,7 @@ def create_device(self, client: Client, soc_name: str, hardware_id_str: str):
sys.exit(f"Organisation query failed {orgs}")
options = [f"{o.name:20s} ({o.id})" for o in orgs]

if TerminalMenu is None:
sys.exit("Specify organisation with --organisation:\n" + "\n".join(options))

terminal_menu = TerminalMenu(options)
idx = terminal_menu.show()
idx, _val = choose_one("Organisation", options)
self._org = orgs[idx].id

if self._board is None:
Expand All @@ -103,11 +95,7 @@ def create_device(self, client: Client, soc_name: str, hardware_id_str: str):
sys.exit(f"Board query failed {boards}")
options = [f"{b.name:20s} ({b.id})" for b in boards]

if TerminalMenu is None:
sys.exit("Specify board with --board:\n" + "\n".join(options))

terminal_menu = TerminalMenu(options)
idx = terminal_menu.show()
idx, _val = choose_one("Board", options)
self._board = boards[idx].id
board = get_board_by_id.sync(client=client, id=self._board)
if not isinstance(board, Board):
Expand Down
19 changes: 15 additions & 4 deletions src/infuse_iot/tools/rpc_cloud.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,15 +80,26 @@ def queue(self, client: Client):
rsp = send_rpc.sync(client=client, body=rpc_msg)
if isinstance(rsp, Error) or rsp is None:
sys.exit(f"Failed to queue RPC ({rsp})")
print(f"Queued RPC ID: {rsp.id}")
print("Query RPC state with:")
print(f"\tinfuse rpc_cloud query --id {rsp.id}")

def query(self, client: Client):
rsp = get_rpc_by_id.sync(client=client, id=UUID(self._args.id))
if isinstance(rsp, Error) or rsp is None:
sys.exit(f"Failed to query RPC state ({rsp})")
print(f"RPC State: {rsp.downlink_message.status}")
if rsp.downlink_message.status == DownlinkMessageStatus.COMPLETED:
rpc_rsp = rsp.downlink_message.rpc_rsp
downlink = rsp.downlink_message
print(f"RPC State: {downlink.status}")
if downlink.status in [DownlinkMessageStatus.SENT, DownlinkMessageStatus.COMPLETED]:
route = downlink.rpc_req.route
if downlink.sent_at:
print(f" At: {downlink.sent_at}")
if route:
if route.forwarded:
print(f" Through: {route.forwarded.device_id} ({route.forwarded.route.interface.upper()})")
else:
print(f" Through: Direct ({route.interface.upper()})")
if downlink.status == DownlinkMessageStatus.COMPLETED:
rpc_rsp = downlink.rpc_rsp
assert isinstance(rpc_rsp, RpcRsp)
print(f" Result: {rpc_rsp.return_code}")
if rpc_rsp.params:
Expand Down
Loading