estrutura GNSS_EVENT (gnssdriver.h)
A estrutura GNSS_EVENT define as informações necessárias para um evento GNSS.
Sintaxe
typedef struct {
ULONG Size;
ULONG Version;
GNSS_EVENT_TYPE EventType;
ULONG EventDataSize;
BYTE Unused[512];
union {
GNSS_FIXDATA FixData;
GNSS_AGNSS_REQUEST_PARAM AgnssRequest;
GNSS_NI_REQUEST_PARAM NiRequest;
GNSS_ERRORINFO ErrorInformation;
GNSS_NMEA_DATA NmeaData;
GNSS_GEOFENCE_ALERT_DATA GeofenceAlertData;
GNSS_BREADCRUMBING_ALERT_DATA BreadcrumbAlertData;
GNSS_GEOFENCES_TRACKINGSTATUS_DATA GeofencesTrackingStatus;
GNSS_DRIVER_REQUEST_DATA DriverRequestData;
BYTE CustomData[ANYSIZE_ARRAY];
};
} GNSS_EVENT, *PGNSS_EVENT;
Membros
Size
Tamanho da estrutura.
Version
Número da versão.
EventType
Tipo de evento.
Dependendo do tipo de evento, um elemento de dados específico da união será preenchido.
EventDataSize
O tamanho da união de dados de evento contida neste evento.
O driver GNSS deve preencher o tamanho apropriado para evitar a cópia excessiva de dados entre as camadas. O adaptador GNSS acessará apenas os bytes iniciais dos dados do evento, conforme especificado por esse elemento.
Unused[512]
Buffer de preenchimento reservado para uso futuro.
FixData
Essa estrutura será preenchida se EventType for GNSS_Fix_Available.
AgnssRequest
Essa estrutura será preenchida se EventType for GNSS_Require_Agnss.
NiRequest
Essa estrutura será preenchida se EventType for GNSS_Event_Ni.
ErrorInformation
Essa estrutura será preenchida se EventType for GNSS_Error.
NmeaData
Essa estrutura será preenchida se EventType for GNSS_Event_NmeaData.
GeofenceAlertData
Essa estrutura será preenchida se EventType for GNSS_Event_GeofenceAlertData.
BreadcrumbAlertData
Essa estrutura contém informações de alerta para quando o buffer de navegação estrutural atingiu um nível em que as operações de leitura do sistema operacional devem ser executadas.
GeofencesTrackingStatus
Essa estrutura será preenchida se EventType for GNSS_Event_GeofencesTrackingStatus.
DriverRequestData
Essa estrutura será preenchida se EventType for GNSS_Event_DriverRequest.
CustomData[ANYSIZE_ARRAY]
Campo de dados personalizado.
Comentários
O driver GNSS envia notificações solicitadas e não solicitadas para o adaptador GNSS. Isso é feito por meio de um protocolo de evento comum entre o driver e o adaptador GNSS. O adaptador registra um ou mais tipos de eventos e isso garante que uma ou mais solicitações de E/S estejam sempre pendentes para que o driver envie a notificação para o adaptador. O driver conclui a solicitação de E/S no IRP pendente e isso faz com que a notificação flua para o adaptador. O adaptador cria uma ou mais solicitações de E/S para escutar notificações adicionais.
É recomendável (mas não necessário) que o driver use filas separadas para gerenciar diferentes tipos de evento. A separação de filas permite que o driver processe determinados tipos de eventos em paralelo.
O modelo de notificação permite adicionar eventos personalizados ou específicos do fornecedor no futuro que, opcionalmente, podem ser processados por um componente auxiliar GNSS personalizado. O adaptador GNSS pode atuar como um agente entre o driver e o componente auxiliar e garante que os comandos e os dados sejam realizados em marshaling entre esses dois componentes.
Cada tipo de evento tem dados específicos de evento associados que o adaptador GNSS usa para determinar como processar o evento específico. Por exemplo, para requisitos de assistência (AGNSS), o adaptador injeta os dados de assistência necessários. Para o evento de tipo de recuperação de dados, o adaptador processa e envia os dados para uma camada superior. Posteriormente, o adaptador se registra novamente para o mesmo evento com o driver por meio de IOCTLs bem definidas. Todos os eventos seguem a mesma estrutura de dados geral.
Os eventos podem ser de vários tipos. Determinados eventos ocorrem como resultado de uma solicitação anterior iniciada pelo driver (por exemplo, uma solicitação de correção de início). Determinados eventos são gerados para fins informativos. Os eventos de assistência são gerados quando o driver exige que o adaptador injete dados de assistência específicos.
Requisitos
Requisito | Valor |
---|---|
Cabeçalho | gnssdriver.h (inclua Gnssdriver.h) |