Nesse vídeo explico técnicas de utilização do enumerador em C.
Mostro também como utilizo no desenvolvimento de sistemas embarcados.
Segue abaixo o código do exemplo:
enum {
DesligarEcho = 0,
HabilitarIdentificacaoChamada,
TotalComandosModemCelular
} InicializacaoModemCelular;
A vantagem é que o TotalComandosModemCelular é utilizado como um totalizador, permitindo o uso de um laço para percorrer todos os anteriores.
enum {
AguardandoEnvio = 0,
AguardandoResposta
} EstadoComando;
Os enumeradores acima serão utilizado no envio do comando pela serial. Lembrando que para firmware, sem sistema operacional, não é aconselhável ficar aguardando resposta. Isso pode dar a impressão que o produto travou ou está lento.
const char *comandosAt[] = {"ATE0","AT+CLIP=1"};
const char* respostasComandosAt[] = { "\r\nECHO-OK\r\n","\r\nCLIP-OK\r\n" };
Lista de comandos a serem enviados.
int indiceComando = DesligarEcho;
int estadoComando = AguardandoEnvio;
while (true) {
switch (estadoComando) {
case AguardandoEnvio:
if (enviarComando((char *) comandosAt[indiceComando])) {
estadoComando++;
}
break;
case AguardandoResposta:
if (verificaResposta((char *) respostasComandosAt[indiceComando])){
estadoComando = AguardandoEnvio;
indiceComando++;
}
break;
}
if (indiceComando >= TotalComandosModemCelular) {
break;
}
}
printf("Exemplo finalizado\n");
Finalizando com o loop principal.