Conceção do condutor do Sistema Global de Navegação por Satélite (GNSS)

Discute os princípios de design a serem considerados ao desenvolver um driver do Sistema Global de Navegação por Satélite (GNSS) para Windows 10, incluindo estruturas de dados, relatórios de erros e controle de versão do driver.

Estruturas de dados

Para compatibilidade com versões anteriores e extensibilidade futura, todas as estruturas de dados começam com um número de versão e tamanho para acomodar futuras extensões e problemas de compatibilidade com versões anteriores. Como salvaguarda adicional, cada estrutura também tem um buffer de preenchimento para manter o tamanho da estrutura estática o mesmo, mesmo quando novos campos são adicionados. Isto é para proteger contra quaisquer drivers GNSS mais antigos usando erroneamente o tamanho estático em tempo de compilação da estrutura (usando sizeof) em vez do tamanho dinâmico da estrutura.

Salvo indicação em contrário, todos os parâmetros seguirão o Sistema Internacional de Unidades (SI):

Parâmetros Unidades
Distância, limiar ou nível medidor
Tempo limite ou intervalo segundo
Velocidade metro por segundo

Comunicação de erros

O DDI do Sistema Global de Navegação por Satélite (GNSS) espera um NTSTATUS como valor de retorno do controlador. O sistema operacional de alto nível (HLOS) atua apenas em casos de sucesso e falha com base nessas mensagens de erro e não examina uma mensagem de erro específica. Ainda assim, é preferível que o driver retorne erros estreitamente alinhados com a mensagem de erro NTSTATUS correspondente. O driver GNSS pode enviar suas próprias mensagens de erro NTSTATUS personalizadas que podem ser úteis para fins de diagnóstico.

Controle de versão do driver

Cada estrutura especificada para o Sistema Global de Navegação por Satélite (GNSS) DDI contém um campo de versão do driver, e muitas estruturas incluem um campo de preenchimento. Ambos os componentes são usados para mitigar novas versões do DDI GNSS, usando as seguintes políticas:

  • A estrutura e o driver comunicam suas respetivas versões usando o processo de troca de capacidade. Estas IOCTLs são consideradas especiais na medida em que comunicam as suas versões utilizando o campo de versão. Portanto, as implementações em torno da verificação de recursos do dispositivo e da plataforma devem verificar explicitamente as versões retornadas primeiro e armazená-las para uso posterior. O campo de versão da estrutura GNSS_DEVICE_CAPABILITY indica o número da versão do driver. O membro da versão da estrutura GNSS_PLATFORM_CAPABILITY comunica o número da versão do adaptador GNSS.

  • Sempre que um novo campo é adicionado, se a estrutura tiver um campo de preenchimento, o espaço deve ser retirado do preenchimento em vez de adicionar à estrutura, o que manterá a compatibilidade binária

  • Sempre que é adicionado um novo campo, a versão do DDI do GNSS é considerada incrementada. Isso será representado num comentário no próprio cabeçalho DDI GNSS, mas NÃO será exposto como uma constante. Tanto o adaptador GNSS quanto o driver GNSS usarão valores constantes privados para indicar sua versão atual. Isso permite que o adaptador GNSS e o driver sejam codificados em relação a uma versão específica.

  • O adaptador GNSS deve ser compatível retroativamente com versões anteriores do driver GNSS. Se uma alteração de protocolo for introduzida em uma nova versão do DDI, um adaptador GNSS compatível com o novo DDI GNSS deve implementar o novo protocolo apenas para a nova versão do driver e usar o protocolo antigo para a versão mais antiga do driver.

  • O driver GNSS deve ser compatível com versões mais recentes do adaptador GNSS e deve tratar as versões mais recentes do adaptador GNSS da mesma maneira que a versão atual contra a qual ele é codificado.

  • Não se espera que uma versão mais antiga do adaptador GNSS funcione corretamente com uma versão mais recente do driver GNSS. Para facilitar o codesenvolvimento do adaptador GNSS e do driver GNSS em relação a uma nova versão do DDI, não existirá nenhuma verificação de versão rigorosa no adaptador GNSS para bloquear drivers GNSS mais recentes. No entanto, um driver GNSS implementado contra uma versão mais recente do DDI não será enviado para dispositivos de retalho que contenham um adaptador GNSS implementado contra uma versão mais antiga do DDI GNSS.

  • Qualquer driver de sensor GNSS do Windows 8.1 ou mais antigo não será suportado pelo adaptador GNSS. Esses drivers continuariam a funcionar no Windows 10 através da pilha herdada. Na presença de outro driver GNSS do Windows 10, o uso do driver de sensor GNSS herdado é indefinido.