Tipos e constantes wire
Constantes
Section titled “Constantes”| Nome | Valor | Descrição |
|---|---|---|
wire::kMaxArgs | 24 | Máximo de argumentos por comando parseado |
wire::kArgCap | 160 | Máximo de bytes por buffer de argumento |
wire::kNameCap | 64 | Comprimento máximo do nome do comando |
wire::kPackBudget | 240 | Orçamento de bytes para empacotar header de lista + bodies em uma mensagem BLE |
📦 wire::Command
Section titled “📦 wire::Command”Representação parseada de um segmento wire nome(modo,role,...);.
| Campo | Tipo | Descrição |
|---|---|---|
name | char[kNameCap] | Nome do comando (ex.: param_list) |
mode | char | s single, h header, b body |
role | char | r requisição, s resposta |
bodyIndex | int | Índice da linha quando mode == 'b'; caso contrário -1 |
argc | int | Total de tokens em argv (inclui modo e role) |
argv | char[kMaxArgs][kArgCap] | Argumentos brutos após unquote |
Preenchido por parseSegment e parseMessage.
📦 wire::ListHeader
Section titled “📦 wire::ListHeader”Campos extraídos de um comando header de lista nome(h,role,T,C,B,j);.
| Campo | Significado |
|---|---|
T | Total de linhas na lista |
C | Linhas de body nesta mensagem |
B | Total de mensagens que compõem a lista |
j | Índice desta mensagem (0 … B-1) |
Preenchido por parseListHeader.
🔍 wire::WireView
Section titled “🔍 wire::WireView”Vista conveniente dos argumentos de payload, ignorando modo, role e (em bodies) o índice da linha.
Construa a partir de um Command:
wire::WireView view{cmd};📝 payloadStart()
Section titled “📝 payloadStart()”int payloadStart() constRetorna 3 quando cmd.mode == 'b', caso contrário 2.
⏱ Complexidade
Section titled “⏱ Complexidade”O(1).
📝 payloadArgc()
Section titled “📝 payloadArgc()”int payloadArgc() constRetorna o número de argumentos de payload (exclui modo, role e índice de body).
⏱ Complexidade
Section titled “⏱ Complexidade”O(1).
📝 arg(i)
Section titled “📝 arg(i)”const char* arg(int i) constRetorna o argumento de payload no índice relativo i (0 = primeiro argumento útil). Retorna "" se estiver fora do intervalo.
🔮 Exemplo
Section titled “🔮 Exemplo”// Para param_get(s,r,"temperature");const char* name = view.arg(0); // "temperature"⏱ Complexidade
Section titled “⏱ Complexidade”O(1).
📝 asInt(i, out)
Section titled “📝 asInt(i, out)”bool asInt(int i, int& out) constFaz parse de arg(i) como inteiro decimal. Retorna false se o token for inválido.
🔮 Exemplo
Section titled “🔮 Exemplo”int pin;if (view.asInt(0, pin)) { digitalWrite(pin, HIGH);}⏱ Complexidade
Section titled “⏱ Complexidade”O(k), em que k é o comprimento do token.
📝 asFloat(i, out)
Section titled “📝 asFloat(i, out)”bool asFloat(int i, float& out) constFaz parse de arg(i) como ponto flutuante. Retorna false se for inválido.
⏱ Complexidade
Section titled “⏱ Complexidade”O(k), em que k é o comprimento do token.
📝 asStr(i, buf, cap)
Section titled “📝 asStr(i, buf, cap)”bool asStr(int i, char* buf, size_t cap) constCopia arg(i) para buf. Retorna false se o valor não couber em cap bytes (incluindo terminador nulo).
⏱ Complexidade
Section titled “⏱ Complexidade”O(k), em que k é o comprimento do token.