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:
| Namespace | Header | Função |
|---|---|---|
wire | wprotocol.hpp | Faz parse de mensagens recebidas, serializa comandos de saída, emite respostas single e de lista |
cli | cli_map.hpp | Registra 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.
Recapitulação do protocolo wire
Section titled “Recapitulação do protocolo wire”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âmetro | Significado | Valores |
|---|---|---|
modo | Tipo de comando | s = single, h = header de lista, b = body de lista |
req_ou_resp | Papel da mensagem | r = requisição, s = resposta |
Exemplo de mensagem com dois comandos:
help(s,r);param_list(s,r);Parâmetro de template MessageSize
Section titled “Parâmetro de template MessageSize”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).
Fluxo típico no firmware
Section titled “Fluxo típico no firmware”- Implemente
pushMessage(const char* msg)para enfileirar cada string wire para transmissão BLE. - Construa
cli::CliMap<256> cli(pushMessage). - Registre handlers com
registerCommand. - A cada payload BLE recebido, chame
processMessage. - Dentro dos handlers, use a referência
wire::ProtocolparaemitSingleResponse,emitListResponseRows, etc.
Veja Primeiros passos para um exemplo completo.
Mapa da documentação
Section titled “Mapa da documentação”- Primeiros passos — configuração ponta a ponta
- Tipos e constantes wire —
Command,ListHeader,WireView - Parse wire —
parseMessage, helpers de token - Serialização wire — montagem de strings wire
- Emissor de protocolo —
wire::Protocol<MessageSize> - CliMap — registro e despacho de comandos