Modelo de comunicação, sincronização e anulação
Em um alto nível, esta documentação define dois tipos de objetos:
- Um adaptador, que representa o dispositivo Wi-Fi.
- Uma porta, que representa entidades MAC e PHY distintas no adaptador.
Para obter mais informações sobre esses objetos, consulte Modelo e objetos de dispositivo Wi-Fi. Os comandos, um conjunto de operações permitidas, são definidos para cada um desses objetos. Os comandos são categorizados ainda mais em Propriedades e Tarefas.
Os comandos de propriedade são comandos simples (como obter força do sinal, obter lista BSS atual e definir filtro de pacote). Eles são concluídos em um curto período de tempo e não são complicados de implementar.
Comandos de tarefa são operações complexas que podem levar vários segundos para serem concluídas. Por exemplo, uma operação de verificação de Wi-Fi seria categorizada como uma tarefa nesse modelo.
Todos os comandos emitidos para o componente IHV podem ser concluídos de forma assíncrona.
Sequência de mensagens
A sequência de mensagens para cada tipo de comando é mostrada nas figuras a seguir.
A Figura 1 mostra a sequência de comandos da tarefa.
A Figura 2 mostra o fluxo de comando da propriedade.
A Figura 3 mostra o fluxo de indicações.
Sincronização
Para manter a implementação do componente IHV simples, o modelo define as seguintes regras de sincronização:
- Os comandos são sempre serializados entre as Etapas 1 e 3 na Figura 1 e na Figura 2. Por exemplo, nenhum comando novo é emitido para o adaptador até a indicação do adaptador na Etapa 3. Isso também implica que todas as propriedades são serializadas entre si.
- Todos os comandos de tarefa são serializados entre as Etapas 1 e 4 na Figura 1. Por exemplo, apenas uma tarefa é executada no adaptador por vez. No entanto, depois que uma tarefa é iniciada (Etapa 3 na Figura 1), o adaptador pode obter solicitações de comando de propriedade. A Etapa 3 e a Etapa 4 devem ser concluídas antes que o próximo comando de tarefa seja enviado.
- Os comandos do conjunto de propriedades são de dois tipos : aqueles que podem ser enviados após o início da tarefa e aqueles que devem ser serializados com tarefas pendentes.
- O caminho dos dados não é serializado com o caminho do comando, exceto para casos específicos descritos posteriormente na documentação.
- O escopo de sincronização é o escopo do nível do adaptador.
- Um subconjunto de tarefas pode ser anulado depois que elas forem iniciadas. Isso significa que, se uma tarefa de prioridade mais alta (A) chegar enquanto uma B (tarefa de prioridade mais baixa) estiver pendente, B poderá ser anulada pelo host. A racionalização das decisões de priorização está além do escopo desta documentação e depende de cenários do usuário.
- Para comandos de tarefa, a Etapa 4 pode vir antes da etapa 3 ser concluída. No entanto, se a Etapa 4 for indicada, a Etapa 3 não poderá falhar.
Anular
A maioria das tarefas pode ser anulada depois de terem sido iniciadas. A finalidade da anulação é disparar o adaptador para concluir a tarefa rapidamente enviando a indicação completa (Etapa 4 na Figura 1). A anulação é permitida somente na janela entre as Etapas 3 e 4 na Figura 1. Ao receber a anulação, o adaptador deve concluir a tarefa dentro de 50 milissegundos. Para a maioria dos comandos, ao receber a anulação, o adaptador não precisa reverter para o estado antes de o comando ser iniciado. Existem condições de corrida entre o comando abort sendo emitido e as conclusões que chegam ao componente host. Nesse caso, se o componente IHV receber uma anulação de uma tarefa já concluída, nenhuma ação adicional será necessária do componente IHV para processar a operação de anulação. Anular uma tarefa é simplesmente um sinal de que o componente IHV deve limpo a tarefa o mais rápido possível. A semântica de conclusão de comando não será alterada se uma anulação for emitida. A conclusão do comando da propriedade abort e a indicação de conclusão da tarefa devem ser notificadas adequadamente em todos os casos.
Espera-se que as propriedades sejam concluídas em pouco tempo para que não possam ser anuladas.
Os comandos de tarefa têm um identificador exclusivo que permite que o host direcione um comando específico para anulação.