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) |