estructura GNSS_EVENT (gnssdriver.h)
La estructura GNSS_EVENT define la información necesaria para un evento GNSS.
Sintaxis
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;
Miembros
Size
Tamaño de la estructura.
Version
Número de versión.
EventType
Tipo de evento.
Dependiendo del tipo de evento, se rellenará un elemento de datos específico de la unión.
EventDataSize
Tamaño de la unión de datos del evento contenida en este evento.
El controlador GNSS debe rellenar el tamaño adecuado para evitar una copia excesiva de datos entre las capas. El adaptador GNSS solo tendrá acceso a los bytes iniciales de los datos del evento, tal y como especifica este elemento.
Unused[512]
Búfer de relleno reservado para uso futuro.
FixData
Esta estructura se rellena si EventType es GNSS_Fix_Available.
AgnssRequest
Esta estructura se rellena si EventType es GNSS_Require_Agnss.
NiRequest
Esta estructura se rellena si EventType es GNSS_Event_Ni.
ErrorInformation
Esta estructura se rellena si EventType es GNSS_Error.
NmeaData
Esta estructura se rellena si EventType es GNSS_Event_NmeaData.
GeofenceAlertData
Esta estructura se rellena si EventType es GNSS_Event_GeofenceAlertData.
BreadcrumbAlertData
Esta estructura contiene información de alerta para cuando el búfer de ruta de navegación ha alcanzado un nivel en el que se deben realizar operaciones de lectura del sistema operativo.
GeofencesTrackingStatus
Esta estructura se rellena si EventType es GNSS_Event_GeofencesTrackingStatus.
DriverRequestData
Esta estructura se rellena si EventType es GNSS_Event_DriverRequest.
CustomData[ANYSIZE_ARRAY]
Campo de datos personalizado.
Observaciones
El controlador GNSS envía notificaciones solicitadas y no solicitadas al adaptador GNSS. Esto se realiza a través de un protocolo de eventos común entre el controlador y el adaptador GNSS. El adaptador se registra para uno o varios tipos de eventos y esto garantiza que una o varias solicitudes de E/S estén siempre pendientes para que el controlador envíe la notificación al adaptador. El controlador completa la solicitud de E/S en el IRP pendiente y esto hace que la notificación fluya hasta el adaptador. El adaptador crea una o varias solicitudes de E/S para escuchar más notificaciones.
Se recomienda (pero no es necesario) que el controlador use colas independientes para administrar diferentes tipos de eventos. La separación de colas permite al controlador procesar determinados tipos de eventos en paralelo.
El modelo de notificación permite agregar eventos personalizados o específicos del proveedor en el futuro que, opcionalmente, se pueden procesar mediante un componente auxiliar de GNSS personalizado. El adaptador de GNSS puede actuar como agente entre el controlador y el componente auxiliar y garantiza que los comandos y los datos se serializarán entre estos dos componentes.
Cada tipo de evento tiene datos específicos de eventos asociados que usa el adaptador de GNSS para determinar cómo procesar el evento específico. Por ejemplo, para los requisitos de asistencia (AGNSS), el adaptador inserta los datos de asistencia necesarios. Para el evento de tipo de recuperación de datos, el adaptador procesa y envía los datos a una capa superior. Posteriormente, el adaptador vuelve a registrarse para el mismo evento con el controlador a través de ICTLs bien definidos. Todos los eventos siguen la misma estructura de datos general.
Los eventos pueden ser de varios tipos. Algunos eventos se producen como resultado de una solicitud anterior iniciada por el controlador (por ejemplo, una solicitud de corrección de inicio). Se generan determinados eventos con fines informativos. Los eventos de asistencia se generan cuando el controlador requiere que el adaptador inserte datos de asistencia específicos.
Requisitos
Requisito | Valor |
---|---|
encabezado de | gnssdriver.h (incluya Gnssdriver.h) |