Skip to content

Integração C++

A biblioteca TamanduCLI Device C++ ajuda o firmware a lidar com o protocolo wire do TamanduCLI via Bluetooth (ou qualquer transporte em texto). Esta seção documenta essa biblioteca. Ela é dividida em dois namespaces:

NamespaceHeaderFunção
wirewprotocol.hppFaz parse de mensagens recebidas, serializa comandos de saída, emite respostas single e de lista
clicli_map.hppRegistra handlers de comandos e despacha comandos parseados

Inclua os headers no seu projeto de firmware e linke com a biblioteca padrão C++ (<vector>, <string>, etc.). Para obter o código-fonte, clone o repositório TamanduCLI_DeviceCpp.

Os comandos usam sintaxe semelhante a chamadas em C++. Uma mensagem pode conter vários comandos separados por ; (o separador é ignorado dentro de parênteses e strings entre aspas).

nome(modo, req_ou_resp, ...argumentos);
ParâmetroSignificadoValores
modoTipo de comandos = single, h = header de lista, b = body de lista
req_ou_respPapel da mensagemr = requisição, s = resposta

Exemplo de mensagem com dois comandos:

help(s,r);param_list(s,r);

Tanto wire::Protocol<MessageSize> quanto cli::CliMap<MessageSize> recebem um tamanho de buffer em tempo de compilação (padrão 256). Alinhe com o limite do seu transporte (ex.: Nordic UART Service).

  1. Implemente pushMessage(const char* msg) para enfileirar cada string wire para transmissão BLE.
  2. Construa cli::CliMap<256> cli(pushMessage).
  3. Registre handlers com registerCommand.
  4. A cada payload BLE recebido, chame processMessage.
  5. Dentro dos handlers, use a referência wire::Protocol para emitSingleResponse, emitListResponseRows, etc.

Veja Primeiros passos para um exemplo completo.