Condividi tramite


struttura GNSS_EVENT (gnssdriver.h)

La struttura GNSS_EVENT definisce le informazioni necessarie per un evento GNSS.

Sintassi

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;

Membri

Size

Dimensioni della struttura.

Version

Numero di versione.

EventType

Tipo di evento.

A seconda del tipo di evento, verrà compilato un elemento dati specifico dell'unione.

EventDataSize

Dimensione dell'unione dati dell'evento contenuta in questo evento.

Il driver GNSS deve compilare le dimensioni appropriate per evitare una copia eccessiva dei dati tra i livelli. L'adattatore GNSS accederà solo ai byte iniziali dei dati dell'evento, come specificato da questo elemento.

Unused[512]

Buffer di riempimento riservato per un uso futuro.

FixData

Questa struttura viene riempita se EventType è GNSS_Fix_Available.

AgnssRequest

Questa struttura viene riempita se EventType è GNSS_Require_Agnss.

NiRequest

Questa struttura viene riempita se EventType è GNSS_Event_Ni.

ErrorInformation

Questa struttura viene riempita se EventType è GNSS_Error.

NmeaData

Questa struttura viene riempita se EventType è GNSS_Event_NmeaData.

GeofenceAlertData

Questa struttura viene riempita se EventType è GNSS_Event_GeofenceAlertData.

BreadcrumbAlertData

Questa struttura contiene informazioni sugli avvisi per quando il buffer di navigazione ha raggiunto un livello in cui devono essere eseguite le operazioni di lettura del sistema operativo.

GeofencesTrackingStatus

Questa struttura viene riempita se EventType è GNSS_Event_GeofencesTrackingStatus.

DriverRequestData

Questa struttura viene riempita se EventType è GNSS_Event_DriverRequest.

CustomData[ANYSIZE_ARRAY]

Campo dati personalizzato.

Osservazioni

Il driver GNSS invia notifiche richieste e non richieste all'adapter GNSS. Questa operazione viene eseguita tramite un protocollo di evento comune tra il driver e l'adattatore GNSS. L'adattatore registra uno o più tipi di eventi e ciò garantisce che una o più richieste di I/O siano sempre in sospeso affinché il driver invii la notifica all'adattatore. Il driver completa la richiesta di I/O nell'IRP in sospeso e in questo modo la notifica passa fino all'adattatore. L'adapter crea una o più richieste di I/O per l'ascolto di ulteriori notifiche.

È consigliabile (ma non necessario) che il driver usi code separate per la gestione di diversi tipi di evento. La separazione delle code consente al driver di elaborare determinati tipi di eventi in parallelo.

Il modello di notifica consente di aggiungere eventi personalizzati o specifici del fornitore in futuro che possono essere elaborati facoltativamente da un componente helper GNSS personalizzato. L'adattatore GNSS può fungere da broker tra il driver e il componente helper e garantisce che i comandi e i dati vengano sottoposto a marshalling tra questi due componenti in avanti e indietro.

Ogni tipo di evento dispone di dati specifici dell'evento associati usati dall'adattatore GNSS per determinare come elaborare l'evento specifico. Ad esempio, per i requisiti di assistenza (AGNSS), l'adattatore inserisce i dati di assistenza necessari. Per l'evento di tipo di recupero dati, l'adattatore elabora e invia i dati a un livello superiore. Successivamente, l'adattatore esegue nuovamente la registrazione per lo stesso evento con il driver tramite IOCTLs ben definiti. Tutti gli eventi seguono la stessa struttura di dati complessiva.

Gli eventi possono essere di vari tipi. Alcuni eventi si verificano in seguito a una richiesta precedente avviata dal driver (ad esempio, una richiesta di correzione di avvio). Determinati eventi vengono generati a scopo informativo. Gli eventi di assistenza vengono generati quando il driver richiede che l'adattatore inserisca dati di assistenza specifici.

Fabbisogno

Requisito Valore
intestazione gnssdriver.h (include Gnssdriver.h)