Compartir a través de


Diseño del controlador del sistema satélite de navegación global (GNSS)

Describe los principios de diseño que se deben tener en cuenta al desarrollar un controlador del sistema de navegación global satélite (GNSS) para Windows 10, incluidas las estructuras de datos, los informes de errores y el control de versiones de controladores.

Estructuras de datos

Para la compatibilidad con versiones anteriores y la extensibilidad futura, todas las estructuras de datos comienzan con un número de versión y un tamaño para dar cabida a futuras extensiones y problemas de compatibilidad con versiones anteriores. Como protección adicional, cada estructura también tiene un búfer de relleno para mantener el tamaño de la estructura estática igual incluso cuando se agregan nuevos campos. Esto es para protegerse frente a los controladores de GNSS más antiguos por error mediante el tamaño de tiempo de compilación estático de la estructura (mediante sizeof) en lugar del tamaño dinámico de la estructura.

A menos que se especifique lo contrario, todos los parámetros seguirán el Sistema Internacional de Unidades (SI):

Parámetros Unidades
Distancia, umbral o nivel meter
Tiempo de espera o intervalo second
Velocidad medidor/segundo

Informe de errores

El DDI del sistema de navegación global satélite (GNSS) espera un NTSTATUS como un valor devuelto del controlador. El sistema operativo de alto nivel (HLOS) actúa solo en casos de éxito y error basados en estos mensajes de error y no examina un mensaje de error específico. Todavía es preferible que el controlador devuelva errores estrechamente asignados al mensaje de error NTSTATUS correspondiente. El controlador GNSS puede enviar sus propios mensajes de error NTSTATUS personalizados que podrían ser útiles para fines de diagnóstico.

Control de versiones del controlador

Cada estructura especificada para el DDI del sistema de navegación global satélite (GNSS) contiene un campo de versión del controlador y muchas estructuras contienen un campo de relleno. Ambos componentes se usan para mitigar las nuevas versiones de DDI de GNSS mediante las siguientes directivas:

  • El marco y el controlador comunican sus respectivas versiones mediante el proceso de intercambio de funcionalidades. Estas ICTL se consideran especiales en que comunican sus versiones mediante el campo de versión. Por lo tanto, las implementaciones que rodean la comprobación de la funcionalidad del dispositivo y la plataforma deben comprobar explícitamente las versiones devueltas primero y almacenarlas para su uso más adelante. El miembro de versión de la estructura GNSS_DEVICE_CAPABILITY comunica el número de versión del controlador. El miembro de versión de la estructura GNSS_PLATFORM_CAPABILITY comunica el número de versión del adaptador de GNSS.

  • Cada vez que se agrega un nuevo campo, si la estructura tiene un campo de relleno, el espacio se sacará del relleno en lugar de agregarlo a la estructura, lo que mantendrá la compatibilidad binaria.

  • Cada vez que se agrega un nuevo campo, la versión de DDI de GNSS se considera incrementada. Esto se reflejará en un comentario en el propio encabezado DDI de GNSS, pero NO se expondrá como una constante. Tanto el adaptador GNSS como el controlador GNSS usarán valores constantes privados para indicar su versión actual. Esto permite codificar tanto el adaptador GNSS como el controlador con una versión específica.

  • El adaptador GNSS debe ser compatible con versiones anteriores del controlador GNSS. Si se introduce un cambio de protocolo en una nueva versión de DDI, un adaptador GNSS compatible con el nuevo DDI de GNSS debe implementar el nuevo protocolo solo para la nueva versión del controlador y usar el protocolo antiguo para la versión anterior del controlador.

  • El controlador GNSS debe ser compatible con versiones más recientes del adaptador GNSS y debe tratar las versiones más recientes del adaptador GNSS de la misma manera que la versión actual en la que está codificada.

  • No se espera que una versión anterior del adaptador de GNSS funcione correctamente con una versión más reciente del controlador GNSS. Para facilitar el desarrollo conjunta del adaptador GNSS y el controlador GNSS en una nueva versión de DDI, no existirá ninguna comprobación de versión estricta en el adaptador GNSS para bloquear los controladores GNSS más recientes. Sin embargo, un controlador GNSS implementado en una versión más reciente de DDI no se enviará a dispositivos comerciales que contengan un adaptador GNSS implementado en una versión anterior de DDI de GNSS.

  • El adaptador de GNSS no admitirá los controladores de sensor GNSS Windows 8.1 o anteriores. Estos controladores seguirán funcionando en Windows 10 a través de la pila heredada. En presencia de otro controlador de Windows 10 GNSS, el uso del controlador de sensor GNSS heredado no está definido.