1414* * <600|0|0> → SUCCESS (Beep de sucesso no registro)
1515* * <601|0|0> → FAIL (Beep de falha no registro)
1616* * <700|YYYY:MM:DD:HH:MM:SS|0> → SETTIME (Define a hora do RTC)
17- * * <701|0|0> → GETTIME (Recebe a hora do RTC)
17+ * * <701|0|0> → GETTIME (Recebe a hora do RTC, além da temperatura )
1818*
1919* O Arduino responde com três tipos de mensagens.
2020* * <001|uptime em milissegundos|versão de firmware> → Resposta ao ping
@@ -136,8 +136,8 @@ Display dispArray[ROW] = {
136136 */
137137const char * VERSION = " 1.0" ;
138138
139- char strReply[80 ];
140- char auxStr[80 ];
139+ char strReply[MAX_STRING + 1 ];
140+ char auxStr[MAX_STRING + 1 ];
141141
142142/* *
143143 * @var unsigned long uptime
@@ -219,7 +219,7 @@ void copiaN(char dest[], int sizeDest, char origem[], int sizeOrigem, int start
219219 * Esta função gerencia a exibição de mensagens no display, considerando:
220220 * - **Tempo mínimo entre atualizações** (usando `millis()` e `DISPLAY_UPDATE_DELAY`).
221221 * - **Mensagens temporárias (TTL)**: quando expiram, voltam para a mensagem padrão.
222- * - **Rolagem (scroll)**: caso a mensagem seja maior que o número de colunas (`COL`),
222+ * - **Rolagem horizontal (scroll)**: caso a mensagem seja maior que o número de colunas (`COL`),
223223 * realiza deslocamento progressivo, mantendo o início por alguns ciclos
224224 * (`KEEP_AT_ZERO`) antes de avançar.
225225 *
@@ -228,8 +228,8 @@ void copiaN(char dest[], int sizeDest, char origem[], int sizeOrigem, int start
228228 * - Caso contrário → mostra `message` com rolagem.
229229 *
230230 * @param[in] lines Índice da linha a ser atualizada:
231- * - `-1` → atualiza todas as linhas.
232- * - `0..ROW-1` → atualiza apenas a linha especificada.
231+ * - `-1` → atualiza todas as linhas, para efeito de rolagem horizontal, então faz a cada DISPLAY_UPDATE_DELAY .
232+ * - `0..ROW-1` → atualiza apenas a linha especificada, e faz automaticamente independentemente de DISPLAY_UPDATE_DELAY para ter boa responsividade .
233233 *
234234 * @note
235235 * - Usa `copiaN()` para preencher o buffer de exibição (`toPrint`).
@@ -251,11 +251,11 @@ void atualizaDisplay(int lines) {
251251 bool updateNext = false ;
252252
253253 if (currentTime < nextUpdate) { // Avalia se o tempo de realizar update no display expirou
254- if (usbProto.machState != RECEIVED)
254+ if (usbProto.machState != SerialProtocol:: RECEIVED)
255255 return ;
256256 }
257257
258- if (usbProto.machState != RECEIVED)
258+ if (usbProto.machState != SerialProtocol:: RECEIVED)
259259 nextUpdate = currentTime + DISPLAY_UPDATE_DELAY;
260260
261261 for (int i = 0 ; i < ROW; i++) {
@@ -383,8 +383,10 @@ void setup()
383383 * - **LECTURE_NAME (300):** atualiza linha 1 (nome da palestra).
384384 * - **SPEAKER (400):** atualiza linha 2 (nome do professor).
385385 * - **ATTENDEE (500):** atualiza linha 3 (participante) e força atualização imediata.
386- * - **SUCCESS (600):** feedback sonoro curto (registro aceito).
387- * - **FAIL (601):** feedback sonoro duplo (registro rejeitado).
386+ * - **SUCCESS (600):** _feedback_ sonoro curto (registro aceito, pode ser usuário/senha correto ou leitura correta de impressão digital).
387+ * - **FAIL (601):** _feedback_ sonoro duplo (registro rejeitado).
388+ * - **SETTIME (700):** Define a data e hora do RTC do Arduino.
389+ * - **GETTIME (701):** Obtém a data/hora do RTC, além da temperatura em Celcius.
388390 *
389391 * ### Estrutura do loop
390392 * 1. Atualiza o display (`atualizaDisplay(-1)`).
@@ -417,7 +419,7 @@ void loop()
417419 CONTINUE:
418420 atualizaDisplay (-1 ); // Atualiza todas as linhas do display
419421 usbProto.receiveFrame ();
420- if (usbProto.machState == RECEIVED) {
422+ if (usbProto.machState == SerialProtocol:: RECEIVED) {
421423 parseMessage ();
422424 switch (netMessage.code ) {
423425 case PING:
@@ -431,32 +433,36 @@ void loop()
431433 strcat (strReply, VERSION);
432434 usbProto.sendFrame (strReply);
433435 break ;
436+
434437 case TIME:
435- usbProto.sendFrame (" 002|OK" );
438+ usbProto.sendFrame (" 002|OK| " );
436439 strcpy (dispArray[0 ].message , netMessage.message );
437440 dispArray[0 ].messageSize = strlen (netMessage.message );
438441 dispArray[0 ].TTL = millis () + netMessage.TTL ;
439442 dispArray[0 ].startPosition = 0 ;
440443 dispArray[0 ].keepAtZeroPosition = KEEP_AT_ZERO;
441444 break ;
445+
442446 case LECTURE_NAME:
443- usbProto.sendFrame (" 002|OK" );
447+ usbProto.sendFrame (" 002|OK| " );
444448 strcpy (dispArray[1 ].message , netMessage.message );
445449 dispArray[1 ].messageSize = strlen (netMessage.message );
446450 dispArray[1 ].TTL = millis () + netMessage.TTL ;
447451 dispArray[1 ].startPosition = 0 ;
448452 dispArray[1 ].keepAtZeroPosition = KEEP_AT_ZERO;
449453 break ;
454+
450455 case SPEAKER:
451- usbProto.sendFrame (" 002|OK" );
456+ usbProto.sendFrame (" 002|OK| " );
452457 strcpy (dispArray[2 ].message , netMessage.message );
453458 dispArray[2 ].messageSize = strlen (netMessage.message );
454459 dispArray[2 ].TTL = millis () + netMessage.TTL ;
455460 dispArray[2 ].startPosition = 0 ;
456461 dispArray[2 ].keepAtZeroPosition = KEEP_AT_ZERO;
457462 break ;
463+
458464 case ATTENDEE:
459- usbProto.sendFrame (" 002|OK" );
465+ usbProto.sendFrame (" 002|OK| " );
460466 strcpy (dispArray[3 ].message , netMessage.message );
461467 dispArray[3 ].messageSize = strlen (netMessage.message );
462468 dispArray[3 ].TTL = millis () + netMessage.TTL ;
@@ -466,7 +472,7 @@ void loop()
466472 break ;
467473
468474 case SETTIME:
469- usbProto.sendFrame (" 002|OK" );
475+ usbProto.sendFrame (" 002|OK| " );
470476 char * strtokIndx; // this is used by strtok() as an index
471477 unsigned int year;
472478 byte month;
@@ -502,23 +508,23 @@ void loop()
502508 now.hour (),
503509 now.minute (),
504510 now.second (),
505- tempBuf);
506-
511+ tempBuf);
507512 usbProto.sendFrame (strReply);
508513 break ;
509514
510515 case SUCCESS:
511- usbProto.sendFrame (" 002|OK" );
516+ usbProto.sendFrame (" 002|OK| " );
512517 tone (BUZZER,1000 ,150 );
513518 break ;
519+
514520 case FAIL:
515- usbProto.sendFrame (" 002|OK" );
521+ usbProto.sendFrame (" 002|OK| " );
516522 tone (BUZZER,2000 ,150 );
517523 delay (300 );
518524 tone (BUZZER,2000 ,150 );
519525 break ;
520526 }
521- usbProto.machState = START;
527+ usbProto.machState = SerialProtocol:: START;
522528 goto CONTINUE;
523529 }
524530 delay (LOOP_DELAY); // delay do loop principal
0 commit comments