Exemplos de design de drivers GNSS (Global Navigation Satellite System)

Discute os princípios de design a serem considerados ao desenvolver um driver GNSS (Global Navigation Satellite System) 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 extensões futuras e problemas de compatibilidade com versões anteriores. Como uma proteção adicional, cada estrutura também tem um buffer de preenchimento para manter o tamanho da estrutura estática igual mesmo quando novos campos são adicionados. Isso serve para proteger contra quaisquer drivers GNSS mais antigos que por engano usem o tamanho estático da estrutura em tempo de compilação (usando sizeof) em vez do tamanho dinâmico da estrutura.

A menos que especificado de outra forma, todos os parâmetros seguirão o SI (Sistema Internacional de Unidades):

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

Relatório de erros

O DDI do GNSS (Global Navigation Satellite System) espera NTSTATUS como valor retornado do driver. O HLOS (sistema operacional de alto nível) atua apenas em casos de êxito e falha com base nessas mensagens de erro e não olha para uma mensagem de erro específica. Ainda assim, é preferível que o driver retorne erros mapeados de forma próxima à 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 a DDI do GNSS (Global Navigation Satellite System) contém um campo de versão do driver, e muitas estruturas contêm um campo de preenchimento. Ambos os componentes são usados para atenuar novas versões da DDI do GNSS usando as seguintes políticas:

  • A estrutura e o driver comunicam suas respectivas versões usando o processo de troca de recursos. Esses IOCTLs são considerados especiais porque comunicam suas versões usando o campo de versão. Portanto, as implementações em torno da verificação de recursos de dispositivo e plataforma devem verificar explicitamente as versões retornadas primeiro e armazená-la para uso posteriormente. O membro de versão da estrutura GNSS_DEVICE_CAPABILITY comunica o número de versão do driver. O membro de versão da estrutura GNSS_PLATFORM_CAPABILITY comunica o número de versão do adaptador GNSS.

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

  • Sempre que um novo campo é adicionado, a versão do DDI do GNSS é considerada incrementada. Isso será refletido em um comentário no próprio cabeçalho DDI do GNSS, mas NÃO será exposto como uma constante. O adaptador GNSS e 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 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 em conformidade com a nova DDI GNSS deverá 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 futuras do adaptador GNSS e deve tratar as versões mais recentes do adaptador GNSS da mesma maneira que a versão atual para a qual está codificado.

  • Uma versão mais antiga do adaptador GNSS não deve funcionar corretamente com uma versão mais recente do driver GNSS. Para facilitar o co-desenvolvimento do adaptador GNSS e do driver GNSS em relação a uma nova versão do DDI, nenhuma verificação de versão estrita existirá no adaptador GNSS para bloquear drivers GNSS mais recentes. No entanto, um driver GNSS implementado compatível com uma versão mais recente do DDI não será enviado para dispositivos de varejo que contêm um adaptador GNSS implementado compatível com uma versão mais antiga do DDI.

  • Quaisquer drivers de sensor GNSS para Windows 8.1 ou versões anteriores não terão suporte pelo adaptador GNSS. Esses drivers continuariam a funcionar no Windows 10 por meio da pilha herdada. Na presença de outro driver GNSS do Windows 10, o uso do driver de sensor GNSS herdado é indefinido.