2
2
3
3
#include < functional>
4
4
#include < leitor_fsm.h>
5
+ #include < log_policy.h>
5
6
#include < serial/serial_policy_win_unix.h>
6
7
#include < timer/timer_policy_win_unix.h>
7
8
8
- template <class TimerPolicy , class SerialPolicy > class Leitor {
9
+ template <class TimerPolicy , class SerialPolicy ,
10
+ class LogPolicy = LogPolicyStdout>
11
+ class Leitor {
9
12
10
13
using FSM = LeitorFSM<TimerPolicy, SerialPolicy>;
11
14
@@ -33,7 +36,9 @@ template <class TimerPolicy, class SerialPolicy> class Leitor {
33
36
});
34
37
35
38
while (true ) {
36
- switch (_leitor.processaEstado ()) {
39
+ typename FSM::estado_t estado = _leitor.processaEstado ();
40
+
41
+ switch (estado) {
37
42
case FSM::estado_t ::Dessincronizado:
38
43
case FSM::estado_t ::Sincronizado:
39
44
case FSM::estado_t ::ComandoTransmitido:
@@ -44,22 +49,42 @@ template <class TimerPolicy, class SerialPolicy> class Leitor {
44
49
if (_leitor.status () == FSM::status_t ::Sucesso) {
45
50
return true ;
46
51
} else {
47
- printf (" %s\n " , _status2verbose (_leitor.status ()));
52
+ LogPolicy::log (" Processo falhou. Status: %s\n " ,
53
+ _status2verbose (_leitor.status ()));
48
54
return false ;
49
55
}
50
56
break ;
51
57
}
52
58
53
59
if (timeout_resposta_ms && leituraDeadline.timedOut ()) {
54
- printf (" O processo de leitura excedeu o tempo informado pelo "
55
- " usuário (%i ms) sem receber nenhuma resposta\n " ,
56
- timeout_resposta_ms);
60
+ LogPolicy::log (
61
+ " O processo de leitura excedeu o tempo informado pelo "
62
+ " usuário (%i ms) sem receber nenhuma resposta. Estado: "
63
+ " %s\n " ,
64
+ timeout_resposta_ms, _estado2string (estado));
57
65
return false ;
58
66
}
59
67
}
60
68
}
61
69
62
70
private:
71
+ const char * _estado2string (const typename FSM::estado_t estado) {
72
+ switch (estado) {
73
+ case FSM::estado_t ::Dessincronizado:
74
+ return " Dessincronizado" ;
75
+ case FSM::estado_t ::Sincronizado:
76
+ return " Sincronizado" ;
77
+ case FSM::estado_t ::ComandoTransmitido:
78
+ return " Comando Transmitido" ;
79
+ case FSM::estado_t ::AtrasoDeSequenciaRecebido:
80
+ return " Atraso de Sequência Recebido" ;
81
+ case FSM::estado_t ::CodigoRecebido:
82
+ return " Código Recebido" ;
83
+ case FSM::estado_t ::AguardaNovoComando:
84
+ return " Aguarda Novo Comando" ;
85
+ }
86
+ return " " ;
87
+ }
63
88
const char * _status2verbose (const typename FSM::status_t status) {
64
89
switch (status) {
65
90
case FSM::status_t ::Sucesso:
0 commit comments