Modelo de comunicación, sincronización y anulación
En un nivel alto, esta documentación define dos tipos de objetos:
- Un adaptador, que representa el dispositivo Wi-Fi.
- Puerto, que representa distintas entidades MAC y PHY en el adaptador.
Para obtener más información sobre estos objetos, consulte Modelo y objetos de dispositivo Wi-Fi. Los comandos, un conjunto de operaciones permitidas, se definen para cada uno de estos objetos. Los comandos se clasifican aún más en Propiedades y tareas.
Los comandos de propiedad son comandos simples (como obtener intensidad de señal, obtener la lista BSS actual y establecer el filtro de paquetes). Se completan en una breve duración de tiempo y no son complicados de implementar.
Los comandos de tarea son operaciones complejas que pueden tardar varios segundos en completarse. Por ejemplo, una operación de Wi-Fi Scan se clasificaría como una tarea en este modelo.
Todos los comandos emitidos al componente IHV se pueden completar de forma asincrónica.
Secuencia de mensajes
La secuencia de mensajes para cada tipo de comando se muestra en las ilustraciones siguientes.
En la figura 1 se muestra la secuencia de comandos de la tarea.
En la figura 2 se muestra el flujo de comandos de la propiedad.
En la figura 3 se muestra el flujo de indicaciones.
Synchronization
Para simplificar la implementación del componente IHV, el modelo define las siguientes reglas de sincronización:
- Los comandos siempre se serializan entre los pasos 1 y 3 de la figura 1 y la figura 2. Por ejemplo, no se emite ningún nuevo comando al adaptador hasta la indicación del adaptador en el paso 3. Esto también implica que todas las propiedades se serializan entre sí.
- Todos los comandos de tarea se serializan entre los pasos 1 y 4 de la figura 1. Por ejemplo, solo se ejecuta una tarea en el adaptador a la vez. Sin embargo, una vez iniciada una tarea (paso 3 de la figura 1), el adaptador puede obtener solicitudes de comando de propiedad. Tanto el paso 3 como el paso 4 deben finalizar antes de enviar el siguiente comando de tarea.
- Los comandos del conjunto de propiedades son de dos tipos: los que se pueden enviar después de iniciar la tarea y los que se deben serializar con tareas pendientes.
- La ruta de acceso de datos no se serializa con la ruta de acceso del comando, excepto en los casos específicos descritos más adelante en la documentación.
- El ámbito de sincronización es el ámbito de nivel de adaptador.
- Se puede anular un subconjunto de tareas una vez iniciadas. Esto significa que si llega una tarea de prioridad más alta (A) mientras una tarea de prioridad más baja (B) está pendiente, el host puede anular B. La racionalización de las decisiones de priorización está fuera del ámbito de esta documentación y depende de escenarios de usuario.
- En el caso de los comandos de tarea, el paso 4 puede aparecer antes de que se haya completado el paso 3. Sin embargo, si se indica el paso 4, no se puede producir un error en el paso 3.
Anulación
La mayoría de las tareas se pueden anular una vez iniciadas. El propósito de la anulación es desencadenar el adaptador para finalizar la tarea rápidamente mediante el envío de la indicación completa (paso 4 de la figura 1). La anulación solo se permite en la ventana entre los pasos 3 y 4 de la figura 1. Al recibir la anulación, el adaptador debe completar la tarea en 50 milisegundos. Para la mayoría de los comandos, al recibir la anulación, el adaptador no necesita revertir al estado antes de iniciar el comando. Existen condiciones de carrera entre el comando abort que se emite y las finalizaciones que llegan al componente host. En este caso, si el componente IHV recibe una anulación de una tarea que ya ha completado, no se necesita ninguna acción adicional del componente IHV para procesar la operación de anulación. Anular una tarea es simplemente una señal de que el componente IHV debe limpiar la tarea lo antes posible. La semántica de finalización de comandos no cambia si se emite una anulación. Tanto la finalización del comando abort property como la indicación de finalización de la tarea deben recibir notificaciones adecuadas en todos los casos.
Se espera que las propiedades se completen en poco tiempo para que no se puedan anular.
Los comandos de tarea tienen un identificador único que permite que el host tenga como destino un comando específico para la anulación.