Closed EricMagalhaesDelgado closed 1 year ago
O controle de erro do RECEPTOR se dá na função "RegularTask_MainLoop". O app tentará reativar a conexão toda vez que o contador de erro atingir um múltiplo de "class.Constants.errorCountTrigger". E, além disso, caso ultrapassado o tempo (em segundos) definido em "class.Constants.errorTimeTrigger", o app trocará o estado da tarefa de "Em andamento" → "Erro".
Já o controle de erro do GPS, por outro lado, se dá diretamente aqui, nesta função, e é restrito ao caso em que o receptor é "External", ou seja, não se trata de GPS embarcado no RECEPTOR (mas de GPS conectado à porta USB do computador que executa o app, por exemplo). Caso a tarefa seja do tipo "Drive-test", toda vez que for manifestada uma desconexão, o app tentará reativar a conexão. Ou, em sendo uma tarefa de outro tipo, o app tentará reativar a conexão toda vez que o contador de erro atingir um múltiplo de "class.Constants.errorGPSCountTrigger".
Aspecto estético:
Aspecto funcional relacionado ao RECEPTOR:
Aspecto funcional relacionado ao GPS:
Em relação ao checkbox 2, talvez um melhor approach seja manter o contador de erros e a definição de tempo aceitável (1 minuto, por exemplo) - atingindo esse tempo, a tarefa muda de "Em andamento" para "Erro" -, mas nos instantes 0 seg, 10 seg, 20 seg... até 60 seg, o app faz algumas coisas a mais pra tentar a reconexão, como acionar o TCPClient.connect ou recriar o tcpclient, por exemplo.
O errorCount vira uma estrutura com campos: CreatedTime (inicialmente, ou sempre que a conexão for bem sucedida, NaT), LastTime e Count. Quando LastTime-CreatedTime > 1min, muda-se o estado da tarefa.