Skip to content

Ler parâmetros

async def cmd_foo(inv: WireCommand, ctx: CliHandlerContext) -> None:
...
ParâmetroConteúdo
invComando parseado a partir da linha digitada
ctxTransporte BLE, buffer de entrada, UI — ver Enviar wire
from api.protocol_utils import WireCommand
CampoTipoSignificado
namestrNome do comando (ex.: param_get)
kind"single" | "list_header" | "list_body"Tipo wire
is_responseboolFalse = requisição (r), True = resposta (s)
indexintÍndice da linha em list_body; 0 em single/header
argumentstuple[str, ...]Argumentos de payload (já sem aspas wire)

Para invocações via atalho nome(arg1, arg2), os argumentos ficam em inv.arguments.

help
async def cmd_help(inv: WireCommand, ctx: CliHandlerContext) -> None:
extra = inv.arguments # ()
set_speed(42)
# inv.arguments == ("42",)
speed = inv.arguments[0] if inv.arguments else "0"
echo(hello, "mundo com espaço")
# inv.arguments == ("hello", "mundo com espaço")
param_get(s,r,"temperature");
# inv.name == "param_get"
# inv.kind == "single"
# inv.is_response == False
# inv.arguments == ("temperature",)

Importe de api.command_handlers ou api.protocol_utils:

from api.protocol_utils import unquote_field, split_top_level_commas
# Tokens individuais já vêm unquoted em inv.arguments.
# Para parsear strings customizadas:
parts = split_top_level_commas('a, "b,c", 42')
MembroUso
ctx.nusCliente Nordic UART (send_message)
ctx.incomingRouter FIFO de comandos recebidos
ctx.prompt_line(msg)Pede uma linha ao usuário (async)
ctx.log(msg, color)Log colorido no terminal
ctx.send_wire(text)Envia mensagem wire (adiciona ; se faltar)

Cores comuns: "WHITE", "GREEN", "YELLOW", "RED", "CYAN".

Se o usuário digitar vários comandos registrados separados por ;, dispatch_cli_command chama cada handler em sequência.

Enviar wire — montar e enviar mensagens ao dispositivo.