GNSS_DEVICE_CAPABILITY structure (gnssdriver.h)

The GNSS_DEVICE_CAPABILITY structure is used to determine the device capabilities of the underlying GNSS engine.

Syntax

typedef struct {
  ULONG             Size;
  ULONG             Version;
  BOOL              SupportMultipleFixSessions;
  BOOL              SupportMultipleAppSessions;
  BOOL              RequireAGnssInjection;
  ULONG             AgnssFormatSupported;
  ULONG             AgnssFormatPreferred;
  BOOL              SupportDistanceTracking;
  BOOL              SupportContinuousTracking;
  ULONG             Reserved1;
  BOOL              Reserved2;
  BOOL              Reserved3;
  BOOL              Reserved4;
  BOOL              Reserved5;
  ULONG             GeofencingSupport;
  BOOL              Reserved6;
  BOOL              Reserved7;
  BOOL              SupportCpLocation;
  BOOL              SupportUplV2;
  BOOL              SupportSuplV1;
  BOOL              SupportSuplV2;
  GNSS_SUPL_VERSION SupportedSuplVersion;
  ULONG             MaxGeofencesSupported;
  BOOL              SupportMultipleSuplRootCert;
  ULONG             GnssBreadCrumbPayloadVersion;
  ULONG             MaxGnssBreadCrumbFixes;
  BYTE              Unused[496];
} GNSS_DEVICE_CAPABILITY, *PGNSS_DEVICE_CAPABILITY;

Members

Size

Structure size.

Version

Version number.

SupportMultipleFixSessions

Indicates whether the GNSS driver natively supports multiple sessions for the same type (For example, multiple simultaneous distance tracking sessions initiated by the HLOS). If FALSE, the GNSS adapter will multiplex the fix session requests from multiple LBS apps to combine into one fix session request that satisfies all the client requests.

If this capability is not present, the driver must support at least one active sessions of each supported fix session type. For example, if the driver supports distance-based tracking and single-shot functionality, it must support one distance-based fix session and one single-shot fix session active at the same time.

The driver must always support modification of session parameter for an active fix session type so that the GNSS adapter does not need to stop/start an ongoing fix session when a new fix request needs to be multiplexed. In Windows 10, the GNSS adapter does not support initiating in the GNSS driver multiple sessions of the same type.

SupportMultipleAppSessions

Indicates whether the GNSS driver natively supports and tracks requests coming from multiple HLOS applications. The GNSS driver must not restrict being called from more than one application at the same time.

A value of TRUE indicates that the driver keeps track of the different HLOS application sessions, logically partitions the requests, ensures that request from one application session does not influence another application session, and so on. For example, it will be able to handle separately the GNSS adapter and a test application, and respond to commands from each separately.

A value of FALSE indicates that the driver does not differentiate different HLOS application sessions and logically treats everything in a global manner as if they all are coming from a single HLOS application-session.

RequireAGnssInjection

Indicates whether the GNSS driver requires assistance data to be injected for faster TTFF.

AgnssFormatSupported

Specifies a bitmask containing the different AGNSS formats (GNSS_AGNSSFORMAT_*) that the driver can handle.

#define GNSS_AGNSSFORMAT_XTRA1      0x01
#define GNSS_AGNSSFORMAT_XTRA2      0x02
#define GNSS_AGNSSFORMAT_LTO        0x04
#define GNSS_AGNSSFORMAT_XTRA3      0x08
#define GNSS_AGNSSFORMAT_XTRA3_1    0x10
#define GNSS_AGNSSFORMAT_XTRA3_2    0x20
#define GNSS_AGNSSFORMAT_XTRA_INT   0x40

The values 0x0080-0xFFFF are reserved for extensibility.

This list currently includes a few IHV proprietary formats. The list can be updated when IHVs or OEMs decide to obtain the GNSS assistance information, specifically extended ephemeris, via the location platform.

AgnssFormatPreferred

Specifies the preferred AGNSS format using the same bitmask as AgnssFormatSupported. For example, if both XTRA1 and XTRA2 are supported but XTRA2 is the preferred format, the GNSS driver sets AgnssFormatSupported to 0x000C and AgnssFormatPreferred to 0x0004.

SupportDistanceTracking

Indicates whether the GNSS driver/engine natively supports low-power tracking of the device based on a session-specific threshold. A TRUE value implies that the driver can support this natively in a low-power mode, for example, by offloading the tracking to a low-power processor and not requiring the app processor to be up and poll for movement.

If the GNSS driver supports distance tracking, it implicitly supports other types of parallel fix sessions at the same time. For example, if a distance tracking session is active, a parallel single-shot must also be allowed and both types of fix sessions must be honored.

SupportContinuousTracking

Indicates whether the GNSS Driver/Engine natively supports continuous low-power tracking of the device. A TRUE value implies that the driver can support this natively in a low-power mode, for example, by offloading the tracking to a low-power processor and not requiring the app processor to be up and poll continuously.

If the GNSS Driver supports continuous tracking, it implicitly supports other types of parallel fix sessions at the same time. For example, single-shot and continuous tracking can happen in parallel.

Reserved1

Reserved for future use.

Reserved2

Reserved for future use.

Reserved3

Reserved for future use.

Reserved4

Reserved for future use.

Reserved5

Reserved for future use.

GeofencingSupport

Version 1 GNSS drivers must indicate that this capability is not supported.

Version 2 GNSS drivers and later can indicate geofence support by setting the following bitmasks:

#define GNSS_GEOFENCESUPPORT_SUPPORTED     0x01
#define GNSS_GEOFENCESUPPORT_CIRCLE        0x02

GNSS_GEOFENCESUPPORT_SUPPORTED indicates that the GNSS engine supports geofence tracking. Supporting geofence tracking functionality implies that it is done natively, in a power-optimized way, and uses the appropriate hybrid positioning technologies available in the GNSS engine, as applicable.

GNSS_GEOFENCESUPPORT_CIRCLE indicates that the GNSS engine supports circular geofences.

Reserved6

Reserved for future use.

Reserved7

Reserved for future use.

SupportCpLocation

Specifies whether CP location is supported.

SupportUplV2

Specifies whether V2 user plane location for CDMA is supported.

SupportSuplV1

Specifies whether SUPL V1 is supported.

SupportSuplV2

Specifies whether SUPL V2 is supported.

SupportedSuplVersion

Specifies the latest SUPL version that is supported by the SUPL client. This version information is currently not used by the HLOS at for any validation purposes.

MaxGeofencesSupported

Specifies the number of geofences the GNSS engine can track based on constraints set by the platform. This value will only be valid when the GeofencingSupport field is set.

SupportMultipleSuplRootCert

Specifies the SUPL parameter.

GnssBreadCrumbPayloadVersion

Must be BREADCRUMBING_UNSUPPORTED or BREADCRUMBING_VERSION_x.

MaxGnssBreadCrumbFixes

Must greater than or equal to MIN_BREADCRUMBS_SUPPORTED.

Unused[496]

Padding buffer reserved for future use.

Remarks

This is a list of individual capability support. The capability is represented either by a Boolean or by a well-defined enumeration of the specific attribute.

Requirements

Requirement Value
Header gnssdriver.h (include Gnssdriver.h)