# Iniciando, pausando e parando uma sessão de cronometragem

O CloudBox oferece várias maneiras de gerenciar uma sessão de cronometragem, oferecendo flexibilidade na forma como os eventos são cronometrados. Seja através da interface do CloudBox, botões de hardware, comandos de soquete TCP ou do serviço IoT, o sistema garante um gerenciamento de sessão preciso e eficiente.

O CloudBox também introduz a opção **Pausa**, que suspende temporariamente a gravação sem criar uma nova sessão. Isso permite que os operadores interrompam as passagens momentaneamente sem gerar arquivos de backup extras ou dividir sessões.

Neste artigo, exploraremos as diferentes maneiras de iniciar, pausar e parar uma sessão de cronometragem, os processos internos acionados durante essas ações e os comandos afetados enquanto uma sessão está ativa.

## Formas de iniciar uma sessão de cronometragem

1. **Através da interface do CloudBox**:
* A maneira mais comum de iniciar uma sessão de cronometragem é pressionando o botão **INICIAR LEITURAS** na interface web do CloudBox. Essa ação inicia a sessão, permitindo que o CloudBox comece a ler e transmitir os dados da etiqueta RFID.
2. **Usando o botão Iniciar na CloudBox**:
* Pressionar o **botão Iniciar** na CloudBox física também inicia uma sessão de cronometragem. Isso é útil em cenários em que o acesso à interface da web não está imediatamente disponível.
3. **Via comando de soquete TCP**:
* Você também pode iniciar uma sessão por meio de uma **conexão de soquete TCP** enviando o comando `START`. Esse método permite a integração com sistemas externos ou aplicativos personalizados que controlam o CloudBox remotamente.
4. **Através do Serviço de IoT**:
* Se a CloudBox estiver conectada ao **Serviço de Nuvem**, uma sessão também pode ser iniciada remotamente a partir da nuvem. Isso permite que os gestores de corrida iniciem sessões de qualquer lugar com acesso à internet, sem interagir fisicamente com o dispositivo.

### Processos Internos Durante o Início da Sessão

Quando uma sessão de temporização é iniciada, várias operações importantes são acionadas dentro do CloudBox para garantir a precisão e a confiabilidade dos dados:

1. **Criação de sessão na nuvem**:
* O CloudBox se conecta ao **serviço de ingestão de passes**, criando uma nova sessão que registra todos os dados de tempo de entrada. Isso garante o rastreamento em tempo real e o armazenamento baseado em nuvem para análise pós-evento.
2. **Criação de arquivo de backup**:
* Um **arquivo de backup** local é criado no CloudBox, garantindo que todas as passagens sejam salvas mesmo que a conectividade com a internet seja perdida. Este arquivo é essencial para a integridade e recuperação dos dados.
3. **Transmissão de dados para clientes TCP**:
* Quaisquer **clientes TCP conectados** começarão a receber dados de tempo em tempo real (passagens). O CloudBox transmite as leituras de etiquetas para todos os clientes conectados via TCP.
4. **Redefinição do contador**:
* Todos os contadores relacionados à sessão (por exemplo, contagem de passagens) são redefinidos para zero para garantir a coleta precisa de dados para a nova sessão.
5. **Ativação do Buzzer**:
* A CloudBox emitirá um **sinal de início** através do buzzer para notificar os oficiais da corrida ou o pessoal de cronometragem de que a sessão começou.
6. **Alterações no indicador LED**:
* O **LED de início** na CloudBox muda para **azul** para indicar visualmente que uma sessão de cronometragem está em andamento.

### Respostas possíveis após iniciar uma sessão:

* `START_MODE`: Indica que uma sessão já foi iniciada.
* `READERNOTOK`: O leitor RFID não foi detetado.
* `DEVICE_INTEGRITY_FAILED`: A verificação de integridade do CloudBox falhou.
* `INVALIDREADERMODEL`: O modelo de leitor conectado não é compatível.
* `ERRREADER`: Há um problema com o leitor.
* `ERRCONNECT`: Erro ao conectar ao leitor ou à rede.
* `OK`: A sessão foi iniciada com sucesso.

### Comandos afetados durante uma sessão de temporização

Assim que uma sessão de cronometragem estiver ativa, a maioria dos comandos de configuração será **ignorada** para evitar interrupções durante a sessão. Os comandos que não podem ser executados durante uma sessão incluem:

* **Comandos de configuração do leitor** (`SETREADERPORT`, `SETREADERMODEL`): Não é possível alterar a porta ou o modelo do leitor durante uma sessão.
* **Alterações de endereço IP** (`CHANGESYSTEMIPADDRESS`): as alterações de rede são bloqueadas para garantir a conectividade contínua.
* **Alterações de sincronização de data/hora** (`SETSYSTEMTIME`, `SETDATETIMESYNC`, `CHANGETIMEZONE`): quaisquer alterações nas configurações relacionadas ao tempo são ignoradas.
* **Comandos de desligamento e reinicialização do sistema** (`SHUTDOWN`): O sistema não pode ser desligado ou reiniciado durante uma sessão.

Esses comandos retornarão uma resposta `START_MODE`, indicando que não podem ser executados enquanto uma sessão estiver ativa.

## Pausar uma sessão de cronometragem

O recurso **Pausa** permite que os operadores suspendam as passagens sem encerrar a sessão.

* **Através da interface do CloudBox**: Clique em **Pausar** para interromper temporariamente o registro de passagens.

Enquanto estiver em pausa:

* Nenhuma nova passagem é registrada ou transmitida.
* A sessão permanece aberta, impedindo a criação de novos arquivos de backup ou sessões quando retomada.
* A retomada é feita pressionando **Iniciar** novamente, continuando da mesma sessão.

**Caso de uso**: A pausa é ideal se você precisar bloquear temporariamente as passagens (por exemplo, para configuração, manutenção ou uma pausa na corrida) sem fragmentar os dados do evento.

## Formas de Parar uma Sessão de Cronometragem

1. **Através da interface do CloudBox**:
* Para parar uma sessão de cronometragem, pressione o botão **STOP** na interface do CloudBox. Isso encerra a sessão e inicia os processos de salvamento de dados.
2. **Usando o botão Parar na CloudBox**:
* Pressionar o **botão Iniciar** novamente na CloudBox interromperá a sessão, tornando-se uma maneira rápida de encerrar uma sessão sem acessar a interface da web.
3. **Via comando de soquete TCP**:
* Envie o comando `STOP` através da **conexão de soquete TCP** para interromper a sessão remotamente.
4. **Através do Serviço de IoT**:
* A sessão também pode ser interrompida remotamente através do **Serviço de Nuvem**, dando aos gestores de corrida o controle sobre a sessão de qualquer lugar com acesso à internet.

### Processos Internos Durante a Interrupção da Sessão

A interrupção de uma sessão de cronometragem aciona várias operações para garantir o armazenamento e a transmissão seguros dos dados da sessão:

1. **Encerramento da sessão na nuvem**:
* A sessão ativa no **serviço de ingestão de passes** é encerrada, finalizando os dados da corrida para armazenamento na nuvem.
2. **Limpeza da fila**:
* Todas as passagens restantes na **fila de dados** são processadas e enviadas para os clientes conectados antes que o sistema pare de ler as etiquetas.
3. **Ativação do sinal sonoro**:
* O **sinal de parada** é emitido através do sinal sonoro para alertar o pessoal de que a sessão terminou.
4. **Atualização do Contador Global**:
* O **contador global de aprovações** é incrementado, garantindo que os dados cumulativos de todas as sessões sejam mantidos.
5. **Alterações no indicador LED**:
* O **LED de início** volta a ficar **vermelho**, indicando que a sessão terminou e a CloudBox não está mais lendo as etiquetas.

### Respostas possíveis após encerrar uma sessão:

* `READERNOTOK`: O leitor RFID não foi detetado ou está desligado.
* `INVALIDREADERMODEL`: O modelo de leitor conectado não é compatível.
* `ERRREADER`: Há um problema com o leitor.
* `ERRCONNECT`: Erro na conexão de rede.
* `OK`: A sessão foi encerrada com sucesso.

## Resumo

O CloudBox agora suporta **iniciar, pausar e parar sessões** com flexibilidade em toda a interface, hardware, comandos TCP e IoT.

* **Iniciar**: Cria uma nova sessão e começa a registrar as passagens.
* **Pausa**: Suspende o registro sem encerrar a sessão, evitando a fragmentação dos arquivos de backup.
* **Parar**: Fecha a sessão, finaliza os dados e garante o armazenamento seguro.

Ao compreender essas funções, os operadores podem gerenciar as sessões de cronometragem de forma eficiente, preservando a integridade dos dados e adaptando-se às necessidades do evento.
