Compartilhar via


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)