Partager via


Conception de pilotes GNSS (système mondial de navigation par satellite)

Présente les principes de conception à prendre en compte lors du développement d’un pilote PSEC (Global Navigation Satellite System) pour Windows 10, notamment les structures de données, les rapports d’erreurs et le contrôle de version des pilotes.

Structures de données

Pour la compatibilité descendante et l’extensibilité future, toutes les structures de données commencent par un numéro de version et une taille pour prendre en charge les futures extensions et problèmes de compatibilité descendante. En guise de protection supplémentaire, chaque structure dispose également d’une mémoire tampon de remplissage pour conserver la taille de la structure statique identique même lorsque de nouveaux champs sont ajoutés. Il s’agit de protéger contre les anciens pilotes GNSS qui utilisent par erreur la taille statique de la compilation de la structure (à l’aide de sizeof) au lieu de la taille dynamique de la structure.

Sauf indication contraire, tous les paramètres suivent le système international d’unités (SI) :

Paramètres Unités
Distance, seuil ou niveau mètre
Délai d’expiration ou intervalle deuxième
Vitesse mètre/seconde

Rapport d’erreurs

Le système mondial de navigation par satellite (GNSS) DDI s’attend à un NTSTATUS en tant que valeur de retour du pilote. Le système d’exploitation de haut niveau (HLOS) agit uniquement sur les cas de réussite et d’échec en fonction de ces messages d’erreur et n’examine pas un message d’erreur spécifique. Toutefois, il est préférable que le pilote retourne des erreurs étroitement mappées au message d’erreur NTSTATUS correspondant. Le pilote GNSS peut envoyer ses propres messages d’erreur NTSTATUS personnalisés qui pourraient être utiles à des fins de diagnostic.

Gestion des versions des pilotes

Chaque structure spécifiée pour la DDI (Global Navigation Satellite System) contient un champ de version de pilote, et de nombreuses structures contiennent un champ de remplissage. Ces deux composants sont utilisés pour gérer les nouvelles versions de la DDI GNSS, à l'aide des stratégies suivantes :

  • L’infrastructure et le pilote communiquent leurs versions respectives à l’aide du processus d’échange de fonctionnalités. Ces IOCTL sont considérés comme spéciaux en ce qu’ils communiquent leurs versions à l’aide du champ de version. Par conséquent, les implémentations entourant la vérification des fonctionnalités d’appareil et de plateforme doivent vérifier explicitement les versions retournées en premier et les stocker pour une utilisation ultérieurement. Le membre de version de la structure GNSS_DEVICE_CAPABILITY communique le numéro de version du pilote. Le membre de version de la structure GNSS_PLATFORM_CAPABILITY communique le numéro de version de l’adaptateur GNSS.

  • Chaque fois qu’un nouveau champ est ajouté, si la structure a un champ de remplissage, l’espace doit être retiré du remplissage au lieu d’ajouter à la structure, ce qui maintient la compatibilité binaire

  • Chaque fois qu’un nouveau champ est ajouté, on considère que la version de la DDI GNSS a été mise à jour. Cela sera reflété dans un commentaire dans l’en-tête GNSS DDI lui-même, mais PAS exposé en tant que constante. L’adaptateur GNSS et le pilote GNSS utilisent des valeurs constantes privées pour indiquer leur version actuelle. Cela permet à la fois à l’adaptateur GNSS et au pilote d’être codés sur une version spécifique.

  • L’adaptateur GNSS doit être compatible avec les versions antérieures du pilote GNSS. Si une modification de protocole est introduite dans une nouvelle version de la DDI, un adaptateur SEE conforme au nouveau DDI SEE doit implémenter le nouveau protocole uniquement pour la nouvelle version du pilote et utiliser l’ancien protocole pour l’ancienne version du pilote.

  • Le pilote GNSS doit être compatible avec les versions plus récentes de l’adaptateur GNSS et traiter ces versions de la même manière que celle contre laquelle il est actuellement codé.

  • Une version antérieure de l’adaptateur PSEC n’est pas censée fonctionner correctement avec une version plus récente du pilote PSEC. Pour faciliter le co-développement de l’adaptateur PSEC et du pilote SEE par rapport à une nouvelle version de la DDI, aucune vérification de version stricte n’existe dans l’adaptateur SEE pour bloquer les pilotes PSEC plus récents. Toutefois, un pilote PSEC implémenté sur une version plus récente de la DDI ne sera pas expédié aux appareils de vente au détail qui contiennent un adaptateur PSEC implémenté sur une version antérieure de la DDI PSEC.

  • Tous les pilotes de capteur Windows 8.1 ou plus anciens ne seront pas pris en charge par l’adaptateur GNSS. Ces pilotes continuent de fonctionner dans Windows 10 via la pile héritée. En présence d’un autre pilote GNSS pour Windows 10, l’utilisation du pilote de capteur GNSS hérité n’est pas définie.