Compartir a través de


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)