# Location Service

- [API reference](https://docs.qualcomm.com/doc/80-41102-2/topic/_doxygen_rst_file__doxygen_sources_taf_locGnss_interface_h.html#file-taf-locgnss-interface-h)

This service provides API to acquire location data and control location service configurations.

GNSS is a satellite navigation system with global coverage.

This API provides function to configure the Location service and retrieve position information.

## IPC interfaces binding

The functions of this API are provided by the **tafLocationSvc** application service.

The following example illustrates how to bind to the Location service.

bindings:
      {
          clientExe.clientComponent.taf_locGnss -> tafLocationSvc.taf_locGnss
      }
    Copy to clipboard

The location service provides multi-client safe APIs. An API call from a client thread (main or sub thread) will be treated a new session in location service. The client needs to connect the location service by API [taf\_locGnss\_ConnectService()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a6af2039c5c7e7ff06520f73604f132e0.html#Documentationa00536_1a6af2039c5c7e7ff06520f73604f132e0), setting specific settings if required (else default settings will be applied), starting the engine report by the API [taf\_locGnss\_Start()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a827b55b141eabec69622a3d488339896.html#Documentationa00536_1a827b55b141eabec69622a3d488339896), and adding handler by [taf\_locGnss\_AddPositionHandler()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a7b0e44e87390964142fe2e0d38e8f1f0.html#Documentationa00536_1a7b0e44e87390964142fe2e0d38e8f1f0). Then client can get the GNSS data/information and the engine reports in the same thread until the client disconnects from the location service. The previous settings and data shall not persist for next run/iteration if the client thread exits. Note that each time a client creates a new thread, it needs to connect, call, and set APIs, [taf\_locGnss\_Start()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a827b55b141eabec69622a3d488339896.html#Documentationa00536_1a827b55b141eabec69622a3d488339896), [taf\_locGnss\_AddPositionHandler()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a7b0e44e87390964142fe2e0d38e8f1f0.html#Documentationa00536_1a7b0e44e87390964142fe2e0d38e8f1f0) for the new session to set up.

## GNSS control APIs

### Enable/disable Location Service

The taf\_locGnss\_Enable API initializes the Location Service and prepares the TelAF location service to serve further requests after setting up internal states.

Through the taf\_locGnss\_Disable API, the Location Service is de-initialized and location service disallows any further requests until it is enabled again via taf\_locGnss\_Enable.

By default, when the service starts up, the Location Service is initialized and is ready to serve incoming requests.

if(taf_locGnss_Enable() == LE_OK)
      {
        // Process after successfully initializing the location service.
      }
    Copy to clipboard

if(taf_locGnss_Disable() == LE_OK)
      {
        // Process after successfully de-initializing the location service.
      }
    Copy to clipboard

### Start/stop Location Service

taf\_locGnss\_Start and taf\_locGnss\_Stop can be used to control the location service.

if(taf_locGnss_Start() == LE_OK)
      {
        // Process after successfully starting the Location session
      }
    Copy to clipboard

if(taf_locGnss_Stop() == LE_OK)
      {
        // Process after successfully stopping the Location session
      }
    Copy to clipboard

The handler can be managed using [taf\_locGnss\_AddPositionHandler()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a7b0e44e87390964142fe2e0d38e8f1f0.html#Documentationa00536_1a7b0e44e87390964142fe2e0d38e8f1f0) and [taf\_locGnss\_RemovePositionHandler()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a4879e04b8d77bcf07534871854cb67d9.html#Documentationa00536_1a4879e04b8d77bcf07534871854cb67d9). When a position is computed, the handler is called.

static void PositionHandlerFunction
      (
         taf_locGnss_SampleRef_t positionSampleRef,
         void* contextPtr
      )
      {
         int32_t latitude, longitude, horizontalAccuracy;
         LE_ASSERT_OK(taf_locGnss_GetLocation(positionSampleRef, &latitude,
                                                &longitude, &horizontalAccuracy));
         taf_locGnss_ReleaseSampleRef(positionSampleRef);
      }
      static taf_locGnss_PositionHandlerRef_t positionHandlerRef = NULL;
      positionHandlerRef = taf_locGnss_AddPositionHandler(PositionHandlerFunction, NULL);
      LE_ASSERT(NULL != positionHandlerRef);
      taf_locGnss_RemovePositionHandler(positionHandlerRef);
    Copy to clipboard

The application has to release each position sample object received by the handler, using the [taf\_locGnss\_ReleaseSampleRef()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1add13c56495b1e61bfb32b1bc605dd63b.html#Documentationa00536_1add13c56495b1e61bfb32b1bc605dd63b) triggered inside the PositionHandlerFunction() function.

taf_locGnss_ReleaseSampleRef(positionSampleRef);
    Copy to clipboard

The handler can be managed using [taf\_locGnss\_AddPositionExHandler()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1aeb71ad9462c9e89b2f1760f01a874a41.html#Documentationa00536_1aeb71ad9462c9e89b2f1760f01a874a41) and [taf\_locGnss\_RemovePositionExHandler()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1afba909313502535165387e3e96634ebe.html#Documentationa00536_1afba909313502535165387e3e96634ebe). When a position is computed, the handler is called.

static void PositionExHandlerFunction
      (
         taf_locGnss_SampleExRef_t SampleExRef,
         const taf_locGnss_PositionSampleEx_t* locationData,
         void* contextPtr
      )
      {
         LE_INFO("Latitude(positive->north) : %.6f\n"
                  "Longitude(positive->east) : %.6f\n"
                  "hAccuracy                 : %.2fm\n",
                   (float)locationData->latitude/1e6,
                   (float)locationData->longitude/1e6,
                   (float)locationData->hAccuracy/1e2);
    
         taf_locGnss_ReleaseSampleExRef(SampleExRef);
      }
      static taf_locGnss_PositionExHandlerRef_t PositionExHandlerRef = NULL;
      PositionExHandlerRef = taf_locGnss_AddPositionExHandler(PositionExHandlerFunction, NULL);
      LE_ASSERT(NULL != PositionExHandlerRef);
      taf_locGnss_RemovePositionExHandler(PositionExHandlerRef);
    Copy to clipboard

The application has to release each position sample object received by the handler, using the [taf\_locGnss\_ReleaseSampleExRef()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1ae1f1ef9ca5c384d4edef786d32406ab0.html#Documentationa00536_1ae1f1ef9ca5c384d4edef786d32406ab0) triggered inside the PositionExHandlerFunction() function.

taf_locGnss_ReleaseSampleExRef(SampleExRef);
    Copy to clipboard

#### Start location data session in the specified starting mode

In HOT mode, no data is cleared and the location session is started with its available data. In WARM mode, location session is started after the ephemeris is cleared. In COLD and FACTORY mode, location session is started after all data is cleared except almanac.

#### Restart location session in HOT mode

The [taf\_locGnss\_ForceHotRestart()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a527a413561a84d3b4836473b7cff4474.html#Documentationa00536_1a527a413561a84d3b4836473b7cff4474) function performs a “HOT” restart of the location session. The current GNSS session is restarted.

if(taf_locGnss_ForceHotRestart() == LE_OK)
      {
        // Process after successfully restarting the location session.
      }
    Copy to clipboard

#### Restart location session in WARM mode

The [taf\_locGnss\_ForceWarmRestart()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a86670e65d7bd2998e7a75e64cf1dbcaa.html#Documentationa00536_1a86670e65d7bd2998e7a75e64cf1dbcaa) function performs a “WARM” restart of the location session.

if(taf_locGnss_ForceWarmRestart() == LE_OK)
      {
        // Process after successfully restarting location session in "WARM" mode.
      }
    Copy to clipboard

#### Restart location session in COLD mode

The [taf\_locGnss\_ForceColdRestart()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a2cab3656d40288def7a105b69521f761.html#Documentationa00536_1a2cab3656d40288def7a105b69521f761) function performs a “COLD” restart of the Location session. The current GNSS session is stopped and then started with GNSS data is cleared.

if(taf_locGnss_ForceColdRestart() == LE_OK)
      {
        // Process after successfully deleting the aiding data and restarting the location session.
      }
    Copy to clipboard

The [taf\_locGnss\_DeleteDRSensorCalData()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1ab7638f301a0a34cdb3a33207d0cbbe86.html#Documentationa00536_1ab7638f301a0a34cdb3a33207d0cbbe86) function deletes Dead Reckoning sensor calibration data.

if(taf_locGnss_DeleteDRSensorCalData() == LE_OK)
      {
        // Process after successfully deleting the Dead Reckoning sensor aiding data.
      }
    Copy to clipboard

#### Obtain Time To First Fix (TTFF)

The [taf\_locGnss\_GetTtff()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a161d1ebabab0a445cec15312bdfc9745.html#Documentationa00536_1a161d1ebabab0a445cec15312bdfc9745) function provides the TTFF

uint32_t ttff = 0;
      if(taf_locGnss_GetTtff(&ttff) == LE_OK)
      {
        // Process after successfully getting the time of computing the first GNSS fix
      }
    Copy to clipboard

The GNSS fix position is calculated by the GNSS engine. Its state can be retrieved with the [taf\_locGnss\_GetPositionState()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1ab4aa81054549461e8e6af5a8be90be7b.html#Documentationa00536_1ab4aa81054549461e8e6af5a8be90be7b) function. The GNSS fix position states are given by the taf\_locGnss\_FixState\_t enum. The API is triggered inside the PositionHandlerFunction() function to get fix state from the position sample reference.

taf_locGnss_FixState_t fixState;
      if(taf_locGnss_GetPositionState(positionSampleRef,&fixState)== LE_OK)
      {
        // Process after successfully getting the position state.
      }
    Copy to clipboard

### Set/get location acquisition rate

The acquisition rate defines the time interval that must elapse between two location reports. The default aquisition rate is 1 sec. The application can configure or retreive the Location service acquisition rate with the [taf\_locGnss\_SetAcquisitionRate()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a6dfef724f3f79e0ebbf0edf7b82532e8.html#Documentationa00536_1a6dfef724f3f79e0ebbf0edf7b82532e8) or [taf\_locGnss\_GetAcquisitionRate()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1aa0efae2804d703764a0bb50741eea478.html#Documentationa00536_1aa0efae2804d703764a0bb50741eea478) functions.

if(taf_locGnss_SetAcquisitionRate(3000)== LE_OK)
      {
        // Process after successfully setting the acquisition rate to 3 seconds.
      }
    Copy to clipboard

uint32_t acqRate = 0;
      if(taf_locGnss_GetAcquisitionRate(&acqRate)== LE_OK)
      {
        // Process after successfully getting the acquisition rate
      }
    Copy to clipboard

### Control GNSS constellation blacklisting

The [taf\_locGnss\_SetConstellation()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a50280aaeea69e47800accca4f96b350d.html#Documentationa00536_1a50280aaeea69e47800accca4f96b350d) function blacklists some constellations from being used by the GNSS standard position engine (SPE).

taf_locGnss_ConstellationBitMask_t constellationMask;
      constellationMask = TAF_LOCGNSS_CONSTELLATION_SBAS | taf_locGnss_CONSTELLATION_BEIDOU;
      if(taf_locGnss_SetConstellation(constellationMask)== LE_OK)
      {
        // Process after successfully blacklisting SBAS and BEIDOU.
      }
    
      constellationMask = TAF_LOCGNSS_CONSTELLATION_DEFAULT;
      if(taf_locGnss_SetConstellation(constellationMask)== LE_OK)
      {
        // Process after successfully configuring constellations to device default.
      }
    Copy to clipboard

**WARNING:** Some constellation types are unsupported depending on the platform.

The [taf\_locGnss\_GetConstellation()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a9f6c3be672bd230f30d8e8120d5a9559.html#Documentationa00536_1a9f6c3be672bd230f30d8e8120d5a9559) function gets the blacklisted GNSS constellation(s).

taf_locGnss_ConstellationBitMask_t constellationMask;
      if(taf_locGnss_GetConstellation(&constellationMask)== LE_OK)
      {
        // Process after successfully getting the blacklisted constellation type.
      }
    Copy to clipboard

The [taf\_locGnss\_GetSupportedConstellations()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1aaeebfde5b011c6dec51bfa2c75a0b6b6.html#Documentationa00536_1aaeebfde5b011c6dec51bfa2c75a0b6b6) function gets a bitmask of the constellations supported on the platform.

taf_locGnss_ConstellationBitMask_t supportedConstellations;
      if(taf_locGnss_GetSupportedConstellations(&supportedConstellations)== LE_OK)
      {
        // Process after successfully getting the list of supported constellations.
      }
    Copy to clipboard

### GNSS minimum elevation selection

The [taf\_locGnss\_SetMinElevation()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1af87892e0e8d21d03a842185871b0342b.html#Documentationa00536_1af87892e0e8d21d03a842185871b0342b) function sets the GNSS minimum elevation. Satellites with elevation lower than the minimum elevation will will not be used in computation of position.

uint8_t  minElevation;
      minElevation = 40;
      if(taf_locGnss_SetMinElevation(minElevation)== LE_OK)
      {
        // Process after successfully setting the minimum elevation.
      }
    Copy to clipboard

The [taf\_locGnss\_GetMinElevation()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1ac6133893a328c1d3c6c200ce26bdbfa1.html#Documentationa00536_1ac6133893a328c1d3c6c200ce26bdbfa1) function gets the GNSS minimum elevation.

uint8_t  minElevation;
      if(taf_locGnss_GetMinElevation(&minElevation)== LE_OK)
      {
        // Process after successfully getting the minimum elevation.
      }
    Copy to clipboard

### APIs to control NMEA sentences

A handler function should be registered for NMEA sentences notifications. [taf\_locGnss\_AddNmeaHandler()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1ab6d6dc75d6db418651e06509830cfe9c.html#Documentationa00536_1ab6d6dc75d6db418651e06509830cfe9c) allows users to register a NMEA handler.

The handler function is invoked whenever new NMEA sentences are available.

The handler must follow the below prototype:

static void NmeaHandlerFunction
      (
          uint64_t timestamp,
          char nmeaInfo[TAF_LOCGNSS_NMEA_STRING_MAX],
          void* contextPtr
      )
      {
         // Process the NMEA sentence type received in the handler function.
      }
    Copy to clipboard

**NOTE:** If many applications register handlers for NMEA notifications, they will all receive it.

An application may unregister an NMEA handler by calling [taf\_locGnss\_RemoveNmeaHandler()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1ade5b93f1cb8353a681596b91b9cd978a.html#Documentationa00536_1ade5b93f1cb8353a681596b91b9cd978a).

The National Marine Electronics Association (NMEA) standard defines an electrical interface and data protocol for communications between marine instrumentation. $GP (Global Positioning System), $GL (GLONASS) and $GN (combination of navigation systems). The [taf\_locGnss\_SetNmeaSentences()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a5f1b102be32cae5fb36dc3a357c14cf6.html#Documentationa00536_1a5f1b102be32cae5fb36dc3a357c14cf6) function selects the enabled NMEA sentences with a bitmask. The supported values are listed in [taf\_locGnss\_NmeaBitMask\_t](https://docs.qualcomm.com/doc/80-41102-2/topic/typedef_a00533_1a2fecb5e72158aabaabaf26ef27c58714.html#Documentationa00533_1a2fecb5e72158aabaabaf26ef27c58714).

taf_locGnss_NmeaBitMask_t nmeaMask;
      nmeaMask = TAF_LOCGNSS_NMEA_MASK_GPGGA;
      if(taf_locGnss_SetNmeaSentences(nmeaMask)== LE_OK)
      {
        // Process after successfully setting an NMEA sentence type.
      }
    Copy to clipboard

**NOTE:** This function may be subject to limitations depending on the platform.

**WARNING:** Some NMEA sentences are unsupported depending on the platform.

**NOTE:** All supported NMEA sentences are enabled by default. The configuration set by this API is persistent after device reboots.

The [taf\_locGnss\_GetNmeaSentences()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1af28240d29a0f5a5f3024d1df2fd92601.html#Documentationa00536_1af28240d29a0f5a5f3024d1df2fd92601) function gets the bitmask which are configured by the API taf\_locGnss\_SetNmeaSentences.

taf_locGnss_NmeaBitMask_t nmeaMask;
      if(taf_locGnss_GetNmeaSentences(&nmeaMask)== LE_OK)
      {
        // Process after successfully getting a NMEA sentence type.
      }
    Copy to clipboard

The [taf\_locGnss\_GetSupportedNmeaSentences()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1ace2b15bf204ac5057b123727937cf39c.html#Documentationa00536_1ace2b15bf204ac5057b123727937cf39c) function gets a bitmask of the NMEA sentences supported on the platform.

taf_locGnss_NmeaBitMask_t supportedNmeaSentences;
      if(taf_locGnss_GetSupportedNmeaSentences(&supportedNmeaSentences)== LE_OK)
      {
        // Process after successfully getting a list of supported NMEA sentence types.
      }
    Copy to clipboard

### Get position information

The position information is referenced to a position sample object.

An application can register a handler to be notified of the updated position at a rate configured using [Set/get location acquisition rate](https://docs.qualcomm.com/doc/80-41102-2/topic/page_c_taflocGnss.html#Documentationa01246_1taf_locGnss_AcquisitionRate), returning a position sample object.

The GNSS information commonly used, such as state, position, time and date, satellite information and accuracy can be queried using the following functions.

- [taf\_locGnss\_GetState()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1ab87c99a9d6becaf4b7a3a1ceeea0d93a.html#Documentationa00536_1ab87c99a9d6becaf4b7a3a1ceeea0d93a)

if(taf_locGnss_GetState()== TAF_LOCGNSS_STATE_READY)
          {
            // Process after successfully getting the status.
          }
        Copy to clipboard
- [taf\_locGnss\_GetPositionState()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1ab4aa81054549461e8e6af5a8be90be7b.html#Documentationa00536_1ab4aa81054549461e8e6af5a8be90be7b) — Triggered inside PositionHandlerFunction() function to get fix state from the position sample reference.

taf_locGnss_FixState_t state;
          if(taf_locGnss_GetPositionState(positionSampleRef,&state)
          {
            // Process after successfully getting fix state.
          }
        Copy to clipboard
- [taf\_locGnss\_GetLocation()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a72e61446ca5217bd6b38b6595e3c4dfa.html#Documentationa00536_1a72e61446ca5217bd6b38b6595e3c4dfa) — Triggered inside PositionHandlerFunction() function to get longitude, latitude, and horizontal accuracy from the position sample reference.

int32_t     latitude;
          int32_t     longitude;
          int32_t     hAccuracy;
          if(taf_locGnss_GetLocation(positionSampleRef,&latitude,&longitude,&hAccuracy) == LE_OK)
          {
            // Process after successfully getting the location information.
          }
        Copy to clipboard
- [taf\_locGnss\_GetAltitude()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a03621112147a3860c78530229b4bdc65.html#Documentationa00536_1a03621112147a3860c78530229b4bdc65) — Triggered inside PositionHandlerFunction() function to get altitude and vertical accuracy from the position sample reference.

int32_t     altitude;
          int32_t     vAccuracy;
          if(taf_locGnss_GetAltitude(positionSampleRef,&altitude,&vAccuracy) == LE_OK)
          {
            // Process after successfully getting the altitude.
          }
        Copy to clipboard
- [taf\_locGnss\_GetDate()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a9634a59427eae5ed19922aae719bdb52.html#Documentationa00536_1a9634a59427eae5ed19922aae719bdb52) — Triggered inside PositionHandlerFunction() function to get date information from the position sample reference.

uint16_t year;
          uint16_t month;
          uint16_t day;
          if(taf_locGnss_GetDate(positionSampleRef,&year,&month, &day) == LE_OK)
          {
            // Process after successfully getting the date information.
          }
        Copy to clipboard
- [taf\_locGnss\_GetTime()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1aa75a73fe52f2a7df51726c0c7c1d5f95.html#Documentationa00536_1aa75a73fe52f2a7df51726c0c7c1d5f95) — Triggered inside PositionHandlerFunction() function to get time information from the position sample reference.

uint16_t hours;
          uint16_t minutes;
          uint16_t seconds;
          uint16_t milliseconds;
          if(taf_locGnss_GetTime(positionSampleRef,&hours,&minutes, &seconds, &milliseconds) == LE_OK)
          {
            // Process after successfully getting the time information.
          }
        Copy to clipboard
- [taf\_locGnss\_GetGpsTime()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a6c63c86bc55ea9c75dbe3abf65f437a0.html#Documentationa00536_1a6c63c86bc55ea9c75dbe3abf65f437a0) — Triggered inside PositionHandlerFunction() function to get GPS time from the position sample reference.

uint32_t gpsWeek;
          uint32_t gpsTimeOfWeek;
          if(taf_locGnss_GetGpsTime(positionSampleRef,&gpsWeek,&gpsTimeOfWeek) == LE_OK)
          {
            // Process after successfully getting the GPS time information.
          }
        Copy to clipboard
- [taf\_locGnss\_GetGpsLeapSeconds()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a27c209c5fc056af29120733f416919db.html#Documentationa00536_1a27c209c5fc056af29120733f416919db) — Triggered inside PositionHandlerFunction() function to get GPS leap seconds from the position sample reference.

uint8_t leapSeconds = 0;
          if(taf_locGnss_GetGpsLeapSeconds(positionSampleRef,&leapSeconds) == LE_OK)
          {
            // Process after successfully getting the GPS leap second information
          }
        Copy to clipboard
- [taf\_locGnss\_GetEpochTime()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a49bf0e2c065c058b59a8976aed7cd173.html#Documentationa00536_1a49bf0e2c065c058b59a8976aed7cd173) — Triggered inside PositionHandlerFunction() function to get epoch time from the position sample reference.

uint64_t epochTime;
          if(taf_locGnss_GetEpochTime(positionSampleRef,&epochTime) == LE_OK)
          {
            // Process after successfully getting the Epoch time.
          }
        Copy to clipboard
- [taf\_locGnss\_GetTimeAccuracy()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a85bc46e9b9633297d1f14ec347c32b70.html#Documentationa00536_1a85bc46e9b9633297d1f14ec347c32b70) — Triggered inside PositionHandlerFunction() function to get time accuracy from the position sample reference.

uint32_t TimeAccuracy=0;
          if(taf_locGnss_GetTimeAccuracy(positionSampleRef,&TimeAccuracy) == LE_OK)
          {
            // Process after successfully getting the time accuracy.
          }
        Copy to clipboard
- [taf\_locGnss\_GetHorizontalSpeed()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a43196b85cf783886709d1c7151fac91f.html#Documentationa00536_1a43196b85cf783886709d1c7151fac91f) — Triggered inside PositionHandlerFunction() function to get horizontal speed and its accuracy from the position sample reference.

uint32_t hSpeed;
          uint32_t hSpeedAccuracy;
          if(taf_locGnss_GetHorizontalSpeed(positionSampleRef,&hSpeed,&hSpeedAccuracy) == LE_OK)
          {
            // Process after successfully getting the horizontal speed
          }
        Copy to clipboard
- [taf\_locGnss\_GetVerticalSpeed()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1ada72608ab6377c6076621856479856c6.html#Documentationa00536_1ada72608ab6377c6076621856479856c6) — Triggered inside PositionHandlerFunction() function to get vertical speed and its accuracy from the position sample reference.

int32_t vSpeed = 0;
          int32_t vSpeedAccuracy = 0;
          if(taf_locGnss_GetVerticalSpeed(positionSampleRef,&vSpeed,&vSpeedAccuracy) == LE_OK)
          {
            // Process after successfully getting the vertical speed.
          }
        Copy to clipboard
- [taf\_locGnss\_GetDirection()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1ac2226f6aa8883bbc3cc77fb7ebba7112.html#Documentationa00536_1ac2226f6aa8883bbc3cc77fb7ebba7112) — Triggered inside PositionHandlerFunction() function to get direction and its accuracy from the position sample reference.

uint32_t direction = 0;
          uint32_t directionAccuracy = 0;
          if(taf_locGnss_GetDirection(positionSampleRef,&direction,&directionAccuracy) == LE_OK)
          {
            // Process after successfully getting the direction information.
          }
        Copy to clipboard
- [taf\_locGnss\_GetSatellitesInfo()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a259ad6c65b73d3139db3daa89411b1d4.html#Documentationa00536_1a259ad6c65b73d3139db3daa89411b1d4) — Triggered inside PositionHandlerFunction() function to get satellites information from the position sample reference.

uint16_t satIdPtr[TAF_LOCGNSS_SV_INFO_MAX_LEN];
          size_t satIdNumElements = NUM_ARRAY_MEMBERS(satIdPtr);
          taf_locGnss_Constellation_t satConstPtr[TAF_LOCGNSS_SV_INFO_MAX_LEN];
          size_t satConstNumElements = NUM_ARRAY_MEMBERS(satConstPtr);
          bool satUsedPtr[TAF_LOCGNSS_SV_INFO_MAX_LEN];
          size_t satUsedNumElements = NUM_ARRAY_MEMBERS(satUsedPtr);
          uint8_t satSnrPtr[TAF_LOCGNSS_SV_INFO_MAX_LEN];
          size_t satSnrNumElements = NUM_ARRAY_MEMBERS(satSnrPtr);
          uint16_t satAzimPtr[TAF_LOCGNSS_SV_INFO_MAX_LEN];
          size_t satAzimNumElements = NUM_ARRAY_MEMBERS(satAzimPtr);
          uint8_t satElevPtr[TAF_LOCGNSS_SV_INFO_MAX_LEN];
          size_t satElevNumElements = NUM_ARRAY_MEMBERS(satElevPtr);
          if(taf_locGnss_GetSatellitesInfo(positionSampleRef,satIdPtr,&satIdNumElements
                                                         ,satConstPtr,&satConstNumElements
                                                         ,satUsedPtr,&satUsedNumElements
                                                         ,satSnrPtr,&satSnrNumElements
                                                         ,satAzimPtr,&satAzimNumElements
                                                         ,satElevPtr,&satElevNumElements) == LE_OK)
          {
            // Process after successfully getting the satellite information.
          }
        Copy to clipboard
- [taf\_locGnss\_GetSatellitesStatus()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a20361a364d5930b2749eadc180958cd8.html#Documentationa00536_1a20361a364d5930b2749eadc180958cd8) — Triggered inside PositionHandlerFunction() function to get satellites status from the position sample reference.

uint8_t satsInViewCount;
          uint8_t satsTrackingCount;
          uint8_t satsUsedCount;
          if(taf_locGnss_GetSatellitesStatus(positionSampleRef,&satsInViewCount,&satsTrackingCount,&satsUsedCount) == LE_OK)
          {
            // Process after successfully getting the satellite status information.
          }
        Copy to clipboard
- [taf\_locGnss\_ConfigureEngineState()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1ad17c99e1ad288ee0fdd755e040594d46.html#Documentationa00536_1ad17c99e1ad288ee0fdd755e040594d46) — Triggered to set the engine state for the given engine type.

if(taf_locGnss_ConfigureEngineState(TAF_LOCGNSS_ENGINE_TYPE_SPE,TAF_LOCGNSS_ENGINE_STATE_SUSPENDED) == LE_OK)
          {
            // Process after successfully configuring Engine state for the given Engine type
          }
        Copy to clipboard
- [taf\_locGnss\_ConfigureRobustLocation()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1af6889f87c6f7d054489fe2f3fcc410cd.html#Documentationa00536_1af6889f87c6f7d054489fe2f3fcc410cd) — Triggered to enable or disable robust location while device is on E911.

int enable = (1<<(TAF_LOCGNSS_SB_CONSTELLATION_GPS-1));
          int enabled911 =1;
          if(taf_locGnss_ConfigureRobustLocation(enable,enabled911) == LE_OK)
          {
            // Process after successfully configuring configuring robust location.
          }
        Copy to clipboard
- [taf\_locGnss\_RobustLocationInformation()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1abdc4304795b09690b95dda3b1322695b.html#Documentationa00536_1abdc4304795b09690b95dda3b1322695b) — Get robust location status and version.

uint8_t enable;
          uint8_t enabled911;
          uint8_t majorVersion;
          uint8_t minorVersion;
          if(taf_locGnss_RobustLocationInformation(&enable,&enabled911, &majorVersion,&minorVersion) == LE_OK)
          {
            // Process after successfully getting Robust location information for Enable/Disable, 911 enable or disable, major and minor version numbers
          }
        Copy to clipboard
- [taf\_locGnss\_DefaultSecondaryBandConstellations()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1afe2b0163a6d50780223ed2ef8e69ca41.html#Documentationa00536_1afe2b0163a6d50780223ed2ef8e69ca41) — Triggered to set the default secondary band constellations.

if(taf_locGnss_DefaultSecondaryBandConstellations() == LE_OK)
          {
            // Process after successfully setting default secondary Band constellations
          }
        Copy to clipboard
- [taf\_locGnss\_RequestSecondaryBandConstellations()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a99d877a98c0a596832d0b19d8bd37b31.html#Documentationa00536_1a99d877a98c0a596832d0b19d8bd37b31) — Triggered to get the secondary band constellations set.

int32_t constellationSb=0;
          if(taf_locGnss_RequestSecondaryBandConstellations(&constellationSb)==LE_OK)
          {
            // Process after successfully getting secondary band constellations set
          }
        Copy to clipboard
- [taf\_locGnss\_ConfigureSecondaryBandConstellations()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1adaa11113f704a554ce32700c07227780.html#Documentationa00536_1adaa11113f704a554ce32700c07227780) — Triggered to set the secondary band constellation using a bitmask.

uint32_t constellationSb = 1;
          if(taf_locGnss_ConfigureSecondaryBandConstellations(constellationSb)==LE_OK)
          {
            // Process after successfully configuring secondary Band constellations
          }
        Copy to clipboard
- [taf\_locGnss\_GetDilutionOfPrecision()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a91b1fd76c25390b802d1139dd178be69.html#Documentationa00536_1a91b1fd76c25390b802d1139dd178be69) — Triggered inside PositionHandlerFunction() function to get DOP from the position sample reference.

uint16_t dop;
          taf_locGnss_DopType_t dopType = TAF_LOCGNSS_PDOP;
          if(taf_locGnss_GetDilutionOfPrecision(positionSampleRef,dopType,&dop) == LE_OK)
          {
            // Process after successfully getting the dilute of precision for dilute of precision type.
          }
        Copy to clipboard
- [taf\_locGnss\_GetMagneticDeviation()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a3b84c2e0710067b25c22149dbc6915e4.html#Documentationa00536_1a3b84c2e0710067b25c22149dbc6915e4) — Triggered inside the PositionHandlerFunction() function to get magnetic deviation from the position sample reference.

int32_t magneticDeviation;
          if(taf_locGnss_GetMagneticDeviation(positionSampleRef,&magneticDeviation) == LE_OK)
          {
            // Process after successfully getting the magnetic deviation.
          }
        Copy to clipboard
- [taf\_locGnss\_GetEllipticalUncertainty()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a823573ef4771639b4ffc0804eefecca1.html#Documentationa00536_1a823573ef4771639b4ffc0804eefecca1) — Triggered inside the PositionHandlerFunction() function to get semi major and semi minor from positionSampleRef.

uint32_t SemiMajor;
          uint32_t SemiMinor;
          if(taf_locGnss_GetEllipticalUncertainty(positionSampleRef,&SemiMajor, &SemiMinor) == LE_OK)
          {
            // Process after successfully getting the elliptical uncertainty values.
          }
        Copy to clipboard
- [taf\_locGnss\_SetDRConfig()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1aa2ef7ea9f32f4f2869a4438f4e40ef37.html#Documentationa00536_1aa2ef7ea9f32f4f2869a4438f4e40ef37) — Triggered to configure the dead reckoning parameters. By default all DRE parameters mask get enabled.

taf_locGnss_DrParams_t *drParamsPtr;
          static le_mem_PoolRef_t DrFramePool = NULL;
          DrFramePool = le_mem_CreatePool("DrframePool", sizeof(taf_locGnss_DrParams_t));
          drParamsPtr = (taf_locGnss_DrParams_t*) le_mem_ForceAlloc(DrFramePool);
          drParamsPtr->rollOffset = 1.2;
          drParamsPtr->yawOffset = 2.3;
          drParamsPtr->pitchOffset = 3.4;
          drParamsPtr->offsetUnc = 180.0;
          drParamsPtr->speedFactor = 1.0;
          drParamsPtr->speedFactorUnc = 0.0;
          drParamsPtr->gyroFactor = 1.0;
          drParamsPtr->gyroFactorUnc = 0.0;
          if(taf_locGnss_SetDRConfig(drParamsPtr) == LE_OK)
          {
            // Process after successfully configuring the dead reckoning parameters with the default mask enabled.
          }
          le_mem_Release(drParamsPtr);
        Copy to clipboard
- [taf\_locGnss\_SetLeverArmConfig()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1afcd160c00bea91f2300c304dfd9e0520.html#Documentationa00536_1afcd160c00bea91f2300c304dfd9e0520) — Triggered to configure the lever arm parameters.

taf_locGnss_LeverArmParams_t *leverArmParamsPtr;
          static le_mem_PoolRef_t LevArmFramePool = NULL;
          LevArmFramePool = le_mem_CreatePool("LevArmFramePool", sizeof(taf_locGnss_LeverArmParams_t));
          leverArmParamsPtr = (taf_locGnss_LeverArmParams_t*) le_mem_ForceAlloc(LevArmFramePool);
          leverArmParamsPtr->forwardOffsetMeters = 5.5;
          leverArmParamsPtr->sidewaysOffsetMeters = 1.2;
          leverArmParamsPtr->upOffsetMeters = 1.0;
          leverArmParamsPtr->levArmType = TAF_LOCGNSS_LEVER_ARM_TYPE_GNSS_TO_VRP;
          if(taf_locGnss_SetLeverArmConfig(leverArmParamsPtr) == LE_OK)
          {
            // Process after successfully configuring the lever arm parameters.
          }
          le_mem_Release(leverArmParamsPtr);
        Copy to clipboard
- [taf\_locGnss\_SetEngineType()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1aadf25ec783185c3a11d75dabea3ae0c9.html#Documentationa00536_1aadf25ec783185c3a11d75dabea3ae0c9) — Triggered to set an engine type.

taf_locGnss_EngineReportsType_t EngineType;
          EngineType = TAF_LOCGNSS_ENGINE_REPORT_TYPE_FUSED;
          if(taf_locGnss_SetEngineType(EngineType) == LE_OK)
          {
            // Process after successfully setting an engine type.
          }
        Copy to clipboard
- [taf\_locGnss\_GetConformityIndex()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a9d97242d89b6e6f56888c7d1a0b39c79.html#Documentationa00536_1a9d97242d89b6e6f56888c7d1a0b39c79) — Triggered inside the PositionHandlerFunction() function to get conformity index from the position sample reference.

double indexPtr;
          if(taf_locGnss_GetConformityIndex(positionSampleRef,&indexPtr) == LE_OK)
          {
            // Process after successfully getting the conformity index.
          }
        Copy to clipboard
- [taf\_locGnss\_GetCalibrationData()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1afb4428c02bd42a42af7550fb26729b15.html#Documentationa00536_1afb4428c02bd42a42af7550fb26729b15) — Triggered inside the PositionHandlerFunction() function to get calibration data from the position sample reference.

uint32 calibPtr;
          uint8_t percentPtr;
          if(taf_locGnss_GetCalibrationData(positionSampleRef,&calibPtr,&percentPtr) == LE_OK)
          {
            // Process after successfully getting the calibration status and confidence percentage.
          }
        Copy to clipboard
- [taf\_locGnss\_GetDRSolutionStatus()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1aaa41228346b3df9b438046734f810410.html#Documentationa00536_1aaa41228346b3df9b438046734f810410) — Triggered inside the PositionHandlerFunction() function to get dead reckoning solution status from the position sample reference.

uint32 solutionStatusPtr;
          if(taf_locGnss_GetDRSolutionStatus(positionSampleRef,&solutionStatusPtr) == LE_OK)
          {
            // Process after successfully getting the dead reckoning solution status.
          }
        Copy to clipboard
- [taf\_locGnss\_GetBodyFrameData()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1aca2a271e30a37e997b8605c2cd510224.html#Documentationa00536_1aca2a271e30a37e997b8605c2cd510224) — Triggered inside the PositionHandlerFunction() function to get body frame data from the positionSampleRef.

taf_locGnss_KinematicsData_t *bodyFrameData;
          le_mem_PoolRef_t bodyFramePool = NULL;
          bodyFramePool = le_mem_CreatePool("bodyFramePool", sizeof(taf_locGnss_KinematicsData_t));
          bodyFrameData = (taf_locGnss_KinematicsData_t*) le_mem_ForceAlloc(bodyFramePool);
          if(taf_locGnss_GetBodyFrameData(positionSampleRef,bodyFrameData) == LE_OK)
          {
            // Process after successfully getting the body frame parameters.
          }
        Copy to clipboard
- [taf\_locGnss\_GetVRPBasedLLA()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1aa15b678ab278609105a9a955e7f3e71f.html#Documentationa00536_1aa15b678ab278609105a9a955e7f3e71f) — Triggered inside the PositionHandlerFunction() function to get VRP based LLA from the position sample reference.

double vrpLatitude;
          double vrpLongitude;
          double vrpAltitude;
          if(taf_locGnss_GetVRPBasedLLA(positionSampleRef, &vrpLatitude,&vrpLongitude,&vrpAltitude) == LE_OK)
          {
            // Process after successfully getting VRP based latitude, longitude, and altitude information.
          }
        Copy to clipboard
- [taf\_locGnss\_GetVRPBasedVelocity()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a118c5b6b1538f27a6e808bdbf103cf6d.html#Documentationa00536_1a118c5b6b1538f27a6e808bdbf103cf6d) — Triggered inside the PositionHandlerFunction() function to get VRP based velocity from the position sample reference.

double eastVel;
          double northVel;
          double upVel;
          if(taf_locGnss_GetVRPBasedVelocity(positionSampleRef, &eastVel,&northVel,&upVel) == LE_OK)
          {
            // Process after successfully getting VRP based east, north, and up velocity information.
          }
        Copy to clipboard
- [taf\_locGnss\_GetSvUsedInPosition()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a1ef8f5db8916e89ce0b496bda54614b4.html#Documentationa00536_1a1ef8f5db8916e89ce0b496bda54614b4) — Triggered inside the PositionHandlerFunction() function to get SV used in position from the position sample reference.

taf_locGnss_SvUsedInPosition_t *svData;
          le_mem_PoolRef_t svFramePool = NULL;
          svFramePool = le_mem_CreatePool("svFramePool", sizeof(taf_locGnss_SvUsedInPosition_t));
          svData = (taf_locGnss_SvUsedInPosition_t*) le_mem_ForceAlloc(svFramePool);
          if(taf_locGnss_GetSvUsedInPosition(positionSampleRef, svData) == LE_OK)
          {
            // Process after successfully getting set of SVs that are used to calculate position.
          }
        Copy to clipboard
- [taf\_locGnss\_GetSbasCorrection()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1aa3f6ba91b794df330a4c40fecc1dfd3e.html#Documentationa00536_1aa3f6ba91b794df330a4c40fecc1dfd3e) — Triggered inside the PositionHandlerFunction() function to get SBAS correction from the position sample reference.

uint32_t sbasMask;
          if(taf_locGnss_GetSbasCorrection(positionSampleRef, &sbasMask) == LE_OK)
          {
            // Process after successfully getting the mask used to indicate SBAS corrections.
          }
        Copy to clipboard
- [taf\_locGnss\_GetPositionTechnology()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a66b99a8fc0bec757700ff476de68fa62.html#Documentationa00536_1a66b99a8fc0bec757700ff476de68fa62) — Triggered inside the PositionHandlerFunction() function to get position technology from the position sample reference.

uint32_t techMask;
          if(taf_locGnss_GetPositionTechnology(positionSampleRef,&techMask) == LE_OK)
          {
            // Process after successfully getting position tech mask
          }
        Copy to clipboard
- [taf\_locGnss\_GetLocationInfoValidity()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1ade4eeb543b92dae66f4d8e609ae888f4.html#Documentationa00536_1ade4eeb543b92dae66f4d8e609ae888f4) — Triggered inside the PositionHandlerFunction() function to get location information validity from the position sample reference.

uint32_t validityMask;
          uint64_t validityExMask;
          if(taf_locGnss_GetLocationInfoValidity(positionSampleRef, &validityMask,&validityExMask) == LE_OK)
          {
            // Process after successfully getting the validity information
          }
        Copy to clipboard
- [taf\_locGnss\_GetLocationOutputEngParams()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1ac4da3c71c6a0d1367d822efc95f6146e.html#Documentationa00536_1ac4da3c71c6a0d1367d822efc95f6146e) — Triggered inside the PositionHandlerFunction() function to get engine output parameters from the position sample reference.

uint16_t engMask;
          uint16_t locationEngType;
          if(taf_locGnss_GetLocationOutputEngParams(positionSampleRef, &engMask,&locationEngType) == LE_OK)
          {
            // Process after successfully getting the location engine mask and engine type parameters.
          }
        Copy to clipboard
- [taf\_locGnss\_GetReliabilityInformation()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1acb672b61206f6de199d95101362f55da.html#Documentationa00536_1acb672b61206f6de199d95101362f55da) — Triggered inside the PositionHandlerFunction() function to get reliablity information from the position sample reference.

uint16_t horireliability;
          uint16_t vertreliability;
          if(taf_locGnss_GetReliabilityInformation(positionSampleRef, &horireliability,&vertreliability) == LE_OK)
          {
            // Process after successfully getting the horizontal and vertical reliability information.
          }
        Copy to clipboard
- [taf\_locGnss\_GetStdDeviationAzimuthInfo()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a131a296b377f4deac66b5a8871958e7b.html#Documentationa00536_1a131a296b377f4deac66b5a8871958e7b) — Triggered inside the PositionHandlerFunction() function to get standard deviation and azimuth information from the position sample reference.

double azimuth;
          double eastDev;
          double northDev;
          if(taf_locGnss_GetStdDeviationAzimuthInfo(positionSampleRef, &azimuth,&eastDev,&northDev) == LE_OK)
          {
            // Process after successfully getting the azimuth, east, and north deviation information.
          }
        Copy to clipboard
- [taf\_locGnss\_GetRealTimeInformation()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a9c8fa157993dd219435f804dc19d2922.html#Documentationa00536_1a9c8fa157993dd219435f804dc19d2922) — Triggered inside the PositionHandlerFunction() function to get real time information from the position sample reference.

uint64_t realTime;
          uint64_t realTimeUnc;
          if(taf_locGnss_GetRealTimeInformation(positionSampleRef, &realTime,&realTimeUnc) == LE_OK)
          {
            // Process after successfully getting elapsed real time and its uncertainty.
          }
        Copy to clipboard
- [taf\_locGnss\_GetMeasurementUsageInfo()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a58d9370c304886b1aecd68d8175904b9.html#Documentationa00536_1a58d9370c304886b1aecd68d8175904b9) — Triggered inside the PositionHandlerFunction() function to get GNSS measurement usage information from the position sample reference.

taf_locGnss_GnssMeasurementInfo_t measInfo[TAF_LOCGNSS_MEASUREMENT_INFO_MAX];
          size_t gnssMeasLen = TAF_LOCGNSS_MEASUREMENT_INFO_MAX;
          if(taf_locGnss_GetMeasurementUsageInfo(positionSampleRef, measInfo, &gnssMeasLen) == LE_OK)
          {
            // Process after successfully getting GNSS measurement information.
          }
        Copy to clipboard
- [taf\_locGnss\_GetReportStatus()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a1e23e87248d9ecf784ac0ec7e1ed5d47.html#Documentationa00536_1a1e23e87248d9ecf784ac0ec7e1ed5d47) — Triggered inside the PositionHandlerFunction() function to get status of report in terms of how optimally the report was calculated by the engine from the position sample reference.

int32_t reportStatus = -1;
          if(taf_locGnss_GetReportStatus(positionSampleRef, &reportStatus) == LE_OK)
          {
            // Process after successfully getting the report status.
          }
        Copy to clipboard
- [taf\_locGnss\_GetAltitudeMeanSeaLevel()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a8e4d7a6c7358980cfb30f3c3ad2d3a1f.html#Documentationa00536_1a8e4d7a6c7358980cfb30f3c3ad2d3a1f) — Triggered inside the PositionHandlerFunction() function to get altitude with respect to mean sea level in meters from the position sample reference.

double altMSeaLevel;
          if(taf_locGnss_GetAltitudeMeanSeaLevel(positionSampleRef, &altMSeaLevel) == LE_OK)
          {
            // Process after successfully getting the mean sea level.
          }
        Copy to clipboard
- [taf\_locGnss\_GetSVIds()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a6d346d3b7a58cba3095ee807e011bf22.html#Documentationa00536_1a6d346d3b7a58cba3095ee807e011bf22) — Triggered inside the PositionHandlerFunction() function to get GNSS Satellite Vehicles used in position data from the position sample reference.

uint16_t svIds[TAF_LOCGNSS_MEASUREMENT_INFO_MAX];
          size_t svIdsLen = TAF_LOCGNSS_MEASUREMENT_INFO_MAX;
          if(taf_locGnss_GetSVIds(positionSampleRef, svIds, &svIdsLen) == LE_OK)
          {
            // Process after successfully getting the GNSS Satellite Vehicles used in position data.
          }
        Copy to clipboard
- [taf\_locGnss\_GetDilutionOfPrecision()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a91b1fd76c25390b802d1139dd178be69.html#Documentationa00536_1a91b1fd76c25390b802d1139dd178be69) — Gets the Dilution of Precision (DOP) paramters with a resolution of 3 decimal places by default. This resolution can be modified by calling the `taf_locGnss_SetDopResolution()` function first.
- [taf\_locGnss\_SetDopResolution()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a5170b313e955f529a8a25d28712859fa.html#Documentationa00536_1a5170b313e955f529a8a25d28712859fa) — Sets the resolution per client session.

static taf_locGnss_Resolution_t DopRes = TAF_LOCGNSS_RES_ONE_DECIMAL;
          if(taf_locGnss_SetDopResolution(DopRes) == LE_OK)
          {
            // Process after successfully setting the dilute of precision resolution
          }
        Copy to clipboard

[taf\_locGnss\_SetDopResolution()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a5170b313e955f529a8a25d28712859fa.html#Documentationa00536_1a5170b313e955f529a8a25d28712859fa) and `taf_locGnss_GetDilutionOfPrecision()` functions should be called in the same thread or client session.

- [taf\_locGnss\_SetMinGpsWeek()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1aafffe74f259e03ce6deeea3e116b6cc2.html#Documentationa00536_1aafffe74f259e03ce6deeea3e116b6cc2) — Sets the minimum GPS week used by the modem GNSS standard position engine (SPE). This API shall not be called when GNSS state is ACTIVE. Behavior is not defined if client issues a second request of SetMinGpsWeek without waiting for the previous SetMinGpsWeek to finish. Additionally minimum GPS week number shall NEVER be in the future of the current GPS Week.

uint16        minGpsWeek = 1;
          if(taf_locGnss_SetMinGpsWeek(minGpsWeek) == LE_OK)
          {
            // Process after succesfully setting the minimum GPS week.
          }
        Copy to clipboard
- [taf\_locGnss\_GetMinGpsWeek()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a520c2d014926ea99945c58c0f8b67df5.html#Documentationa00536_1a520c2d014926ea99945c58c0f8b67df5) — Gets the minimum GPS week used by the modem GNSS standard position engine (SPE).

uint16        minGpsWeek;
          if(taf_locGnss_GetMinGpsWeek(&minGpsWeek) == LE_OK)
          {
            // Process after succesfully getting the minimum GPS week.
          }
        Copy to clipboard

A handler function should be registered for location capability notification. [taf\_locGnss\_AddCapabilityChangeHandler()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a576d84f94c2b0578d4b0c044bd08d027.html#Documentationa00536_1a576d84f94c2b0578d4b0c044bd08d027) allows users to register a location capability handler.

When the capability of the GNSS stack changes, the handler is invoked to notify the client about the update.

The handler must follow the below prototype:

static void CapabilityHandlerFunction
      (
          taf_locGnss_LocCapabilityType_t locCapability,
          void* contextPtr
      )
      {
          // Process the location capability received in the handler function.
      }
    Copy to clipboard

**NOTE:** If many applications register handlers for capability notifications, they will all receive it.

An application may unregister a capability handler by calling [taf\_locGnss\_RemoveCapabilityChangeHandler()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1ab43767b3589554c864658c3f1c0c1019.html#Documentationa00536_1ab43767b3589554c864658c3f1c0c1019).

- [taf\_locGnss\_GetCapabilities()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a46bed56ace646ca0fdff9ab7a8feb0f9.html#Documentationa00536_1a46bed56ace646ca0fdff9ab7a8feb0f9) — Gets the GNSS capability information.

uint64  locCapability;
          if(taf_locGnss_GetCapabilities(&locCapability) == LE_OK)
          {
            // Process after succesfully getting the GNSS capability information.
          }
        Copy to clipboard
- [taf\_locGnss\_SetNmeaConfiguration()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1ad0b5b2b67c08060e15623a23948f5d6a.html#Documentationa00536_1ad0b5b2b67c08060e15623a23948f5d6a) — Sets the configuration for NMEA sentences that will be received by the clients via NmeaHandler.

Without prior invocation to this API, all NMEA sentences supported in the system will get generated and delivered to all the clients that register to receive NMEA sentences. The configuration is common across all clients and updating it will affect all clients.

taf_locGnss_NmeaBitMask_t nmeaMask = TAF_LOCGNSS_NMEA_MASK_GPGGA | TAF_LOCGNSS_NMEA_MASK_GPGNS;
      taf_locGnss_GeodeticDatumType_t datumType = TAF_LOCGNSS_GEODETIC_TYPE_WGS_84;
      taf_locGnss_LocEngineType engineType = TAF_LOCGNSS_LOC_REQ_ENGINE_FUSED_BIT
      if(taf_locGnss_SetNmeaConfiguration(nmeaMask, datumType, engineType) == LE_OK)
      {
        // Process after succesfully getting the the NMEA sentences.
      }
    Copy to clipboard

**NOTE:** This API call is not incremental and the new NMEA configuration will completely overwrite the previous call to this API.

- [taf\_locGnss\_GetXtraStatus()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a578cfe3a9f73cb15fe822350d201e0f3.html#Documentationa00536_1a578cfe3a9f73cb15fe822350d201e0f3) — Gets whether the XTRA feature is enabled or not, XTRA data status, and the valid time in hours.

taf_locGnss_XtraStatusParams_t *XtraParamsPtr;
      le_result_t result = LE_FAULT;
      le_mem_PoolRef_t XtraFramePool = NULL;
      XtraFramePool = le_mem_CreatePool("XtraFramePool", sizeof(taf_locGnss_XtraStatusParams_t));
      XtraParamsPtr = (taf_locGnss_XtraStatusParams_t*) le_mem_ForceAlloc(XtraFramePool);
      if(XtraParamsPtr != NULL)
      {
          if(taf_locGnss_GetXtraStatus(XtraParamsPtr) == LE_OK)
          {
            // Process after successfully getting the XTRA data parameters.
          }
      }
      le_mem_Release(XtraParamsPtr);
    Copy to clipboard

- [taf\_locGnss\_GetGnssData()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1ad4a3650f57656b5ca3e106113e098518.html#Documentationa00536_1ad4a3650f57656b5ca3e106113e098518) — Gets GNSS data for data mask, jammer indication, and Automatic Gain Control (AGC) information.

size_t maxSigTypes = TAF_LOCGNSS_NUMBER_OF_SIGNAL_TYPES_MAX;
      taf_locGnss_GnssData_t gnssDataPtr[TAF_LOCGNSS_NUMBER_OF_SIGNAL_TYPES_MAX];
      if(taf_locGnss_GetGnssData(positionSampleRef, gnssDataPtr, &maxSigTypes))
      {
        // Process after successfully getting data mask, jammer, and AGC information.
      }
    Copy to clipboard

- [taf\_locGnss\_SetDRConfigValidity()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1aa672641d35cd12deee62ec7d9523fe80.html#Documentationa00536_1aa672641d35cd12deee62ec7d9523fe80) — Sets the dead reckoning parameters validity mask.

taf_locGnss_DRConfigValidityType_t drParamsMask;
          taf_locGnss_DrParams_t *drParamsPtr;
          drParamsMask |= TAF_LOCGNSS_BODY_TO_SENSOR_MOUNT_PARAMS_VALID;
          drParamsMask |= TAF_LOCGNSS_VEHICLE_SPEED_SCALE_FACTOR_VALID;
          drParamsMask |= TAF_LOCGNSS_VEHICLE_SPEED_SCALE_FACTOR_UNC_VALID;
          drParamsMask |= TAF_LOCGNSS_GYRO_SCALE_FACTOR_VALID;
          drParamsMask |= TAF_LOCGNSS_GYRO_SCALE_FACTOR_UNC_VALID;
          static le_mem_PoolRef_t DrFramePool = NULL;
          DrFramePool = le_mem_CreatePool("DrframePool", sizeof(taf_locGnss_DrParams_t));
          drParamsPtr = (taf_locGnss_DrParams_t*) le_mem_ForceAlloc(DrFramePool);
          drParamsPtr->rollOffset = 1.2;
          drParamsPtr->yawOffset = 2.3;
          drParamsPtr->pitchOffset = 3.4;
          drParamsPtr->offsetUnc = 180.0;
          drParamsPtr->speedFactor = 1.0;
          drParamsPtr->speedFactorUnc = 0.0;
          drParamsPtr->gyroFactor = 1.0;
          drParamsPtr->gyroFactorUnc = 0.0;
          if(taf_locGnss_SetDRConfigValidity(drParamsMask) == LE_OK)
          {
            // Process after successfully setting the dead reckoning parameters validity mask.
          }
          if(taf_locGnss_SetDRConfig(drParamsPtr) == LE_OK)
          {
            // Process after successfully configuring the dead reckoning parameters with the mask enabled.
          }
          le_mem_Release(drParamsPtr);
        Copy to clipboard
- [taf\_locGnss\_GetGptpTime()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a7232a5d035302a93767bad412b3c6aa6.html#Documentationa00536_1a7232a5d035302a93767bad412b3c6aa6) — Gets Gptp time and its uncertainty

uint64_t gPtpTime;
      uint64_t gPtpTimeUnc;
      if(taf_locGnss_GetGptpTime(positionSampleRef,&gPtpTime,&gPtpTimeUnc))
      {
        // Process after successfully getting Gptp time information.
      }
    Copy to clipboard

- [taf\_locGnss\_GetNavigationSolution()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1ab05fb5a4f73d22e0e7d4cb36e8782d58.html#Documentationa00536_1ab05fb5a4f73d22e0e7d4cb36e8782d58) This API is typically Called inside the PositionHandlerFunction() to retrieve the navigation solution mask used for the current position fix from the position sample reference.

uint32_t navSolutionMask;
      if(taf_locGnss_GetNavigationSolution(positionSampleRef, &navSolutionMask) == LE_OK)
      {
        // Process after successfully getting the nav solution mask.
      }
    Copy to clipboard

- [taf\_locGnss\_GetDgnssStationIds()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1ab7e73d4c89ed686bf653fe6fa96420a1.html#Documentationa00536_1ab7e73d4c89ed686bf653fe6fa96420a1) This API is typically Called inside the PositionHandlerFunction() to retrieve the list of DGNSS monitoring station IDs,which is used in the position fix from the position sample reference.

uint16_t dgnssStationIds[TAF_LOCGNSS_MAX_MONITOR_STATION_IDS ];
      size_t idsLen = TAF_LOCGNSS_MAX_MONITOR_STATION_IDS;
      if(taf_locGnss_GetDgnssStationIds(positionSampleRef, dgnssStationIds, &idsLen) == LE_OK)
      {
        // Process after successfully getting the monitoring station ids.
      }
    Copy to clipboard

- [taf\_locGnss\_CreateDgnssSource()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1ae283f61778c40e42c9ffcf027a0919ce.html#Documentationa00536_1ae283f61778c40e42c9ffcf027a0919ce) Create a DGNSS injection source with the specified input format.

**NOTE:** Only one DGNSS injection source is permitted system-wide at any given time. If the same client calls this API again with the same format, the previously created source reference is returned. If the same client calls this API with a different format, a new source reference is created. If another client attempts to create a DGNSS source while one already exists, this API returns NULL.

taf_locGnss_DgnssSourceRef_t sourceRef;
      if(taf_locGnss_CreateDgnssSource(taf_locGnss_DgnssFormat_t format) != NULL)
      {
        // Source reference successfully created or retrieved.
      }
    Copy to clipboard

- [taf\_locGnss\_ReleaseDgnssSource()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a877477e3f847b0a38aa84a8b2a5ccdec.html#Documentationa00536_1a877477e3f847b0a38aa84a8b2a5ccdec) Release a DGNSS injection source previously created using [taf\_locGnss\_CreateDgnssSource()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1ae283f61778c40e42c9ffcf027a0919ce.html#Documentationa00536_1ae283f61778c40e42c9ffcf027a0919ce).

taf_locGnss_DgnssSourceRef_t sourceRef;
      if(taf_locGnss_ReleaseDgnssSource(sourceRef) == LE_OK)
      {
        // Process after successfully releasing the dgnss source created.
      }
    Copy to clipboard

- [taf\_locGnss\_InjectDgnssCorrection()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1abadeb94b73c18ede0a4ab6681a49b99a.html#Documentationa00536_1abadeb94b73c18ede0a4ab6681a49b99a) Inject DGNSS correction data after a DGNSS source has been created.

**NOTE:** This API must be called only after a DGNSS source has been successfully created. Calling this API without a valid source reference results in an error.

taf_locGnss_DgnssSourceRef_t sourceRef;
      uint8_t* buffer;
      size_t bufferSize;
      if(taf_locGnss_InjectDgnssCorrection(sourceRef, buffer, bufferSize) == LE_OK)
      {
        // Process after successfully injecting correction data.
      }
    Copy to clipboard

DGNSS status notifications can be registered using [taf\_locGnss\_AddDgnssStatusChangeHandler()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a27f09e5bf5cd8b836542053c95088652.html#Documentationa00536_1a27f09e5bf5cd8b836542053c95088652) and unregistered using [taf\_locGnss\_RemoveDgnssStatusChangeHandler()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a5dcf4967b4b4fbaa0d06f5b926a8a01f.html#Documentationa00536_1a5dcf4967b4b4fbaa0d06f5b926a8a01f).

When a DGNSS status update is reported, the registered handler is invoked.

static void DgnssStatusFunction
      (
         taf_locGnss_DgnssSourceRef_t sourceRef,
         taf_locGnss_DgnssStatus_t dgnssStatus,
         void* contextPtr
      )
      {
         LE_INFO("dgnssStatus: %d", dgnssStatus);
      }
      static taf_locGnss_DgnssStatusChangeHandlerRef_t DgnssStatusHandlerRef = NULL;
      DgnssStatusHandlerRef = taf_locGnss_AddDgnssStatusChangeHandler(DgnssStatusFunction, NULL);
      LE_ASSERT(NULL != DgnssStatusHandlerRef);
      taf_locGnss_RemoveDgnssStatusChangeHandler(DgnssStatusHandlerRef);
    Copy to clipboard

- [taf\_locGnss\_InjectMerkleTreeInformationByPath()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1aa35c0180e772d06d77dcd19ef87fae70.html#Documentationa00536_1aa35c0180e772d06d77dcd19ef87fae70) — Injects the Merkle Tree information via an XML configuration file.

The XML file configuration contains the Merkle root, Merkle nodes and information for up to two public keys.

string filePath = "/etc/OSNMA_MerkleTree.xml";
      if(taf_locGnss_InjectMerkleTreeInformationByPath(filePath) == LE_OK)
      {
        // Process after successfully injecting the Merkle data.
      }
    Copy to clipboard

- [taf\_locGnss\_ConfigureOsnma()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a6fb6c96e5897611cdac904f3bc2fcdb5.html#Documentationa00536_1a6fb6c96e5897611cdac904f3bc2fcdb5) — Enables or disables the OSNMA feature in the modem.

This API shall not be called when GNSS state is ACTIVE.

bool osnma = true;
      if(taf_locGnss_ConfigureOsnma(osnma) == LE_OK)
      {
        // Process after successfully enabling or disabling the OSNMA feature.
      }
    Copy to clipboard

- [taf\_locGnss\_GetBaselineLength()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a991257c2813e167e102da6f1e29837f6.html#Documentationa00536_1a991257c2813e167e102da6f1e29837f6) — Gets the baseline length calculated at the configured integrity risk from the position sample reference.

double baselineLength;
          if(taf_locGnss_GetBaselineLength(positionSampleRef, &baselineLength) == LE_OK)
          {
            // Process after successfully getting the baseline length.
          }
        Copy to clipboard
- [taf\_locGnss\_GetAgeOfCorrections()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a0d2383e1623d97ae4b19aec4b202f4b5.html#Documentationa00536_1a0d2383e1623d97ae4b19aec4b202f4b5) — Triggered inside PositionHandlerFunction() function to get the age of corrections from the position sample reference.

uint64_t ageOfCorrections;
          if(taf_locGnss_GetAgeOfCorrections(positionSampleRef, &ageOfCorrections) == LE_OK)
          {
            // Process after successfully getting the age of corrections.
          }
        Copy to clipboard
- [taf\_locGnss\_SetEngineIntegrityRisk()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a55e03fa2aa2d849b5673f0aa3851a89c.html#Documentationa00536_1a55e03fa2aa2d849b5673f0aa3851a89c) — Configures the integrity risk level to be used by the specified GNSS modem engine for protection level calculation in the position report.

taf_locGnss_EngineType_t  engineType;
          uint32_t integrityRisk = 10;
          if(taf_locGnss_SetEngineIntegrityRisk(engineType, integrityRisk)== LE_OK)
          {
            // Process after successfully setting the integration risk for the specific engine.
          }
        Copy to clipboard

### Get leap seconds event information

The leap seconds event information is retrieved by calling [taf\_locGnss\_GetLeapSeconds()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a0f11e08ac446cc192e4a04a5733ea3b5.html#Documentationa00536_1a0f11e08ac446cc192e4a04a5733ea3b5) API. The result includes the current GPS time, current leap seconds, next leap second event time, and next leap seconds. Insertion of each UTC leap second is usually decided about six months in advance by the International Earth Rotation and Reference Systems Service (IERS). The leap seconds uncertainty value is retrieved by calling [taf\_locGnss\_GetLeapSecondsUncertainty()](https://docs.qualcomm.com/doc/80-41102-2/topic/function_a00536_1a2e6e748374a6cfd76d4ddabece54048c.html#Documentationa00536_1a2e6e748374a6cfd76d4ddabece54048c) API.

## Typical application call flow

![../_images/location_usage_flow.jpg](data:image/jpeg;base64,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)

The Location application locates in NAD device and access the tafLocationSvc on the corresponding NAD device.

#0 – Start GNSS session with the service.

#1 – Add the position handler to be able to receive any GNSS fixes received from the location service.

#2 – Get location information including longitude, latitude and horizontal accuracy.

#3 – Get the altitude information and its accuracy.

#4 – Get the vehicle direction information and its accuracy.

#5 – Get the horizontal speed information and its accuracy.

#6 – Get the vertical speed information and its accuracy.

#7 – Get the position state, ex. 2D, 3D and Estimated Fix.

#8 – When there’s no need to receive any GNSS fixes from the application, the registered handler reference can be removed.

#9 – Stop the GNSS session with the service. This will stop receiving fixes at the location service.

Last Published: Jun 09, 2026

[Previous Topic
Location services](https://docs.qualcomm.com/bundle/publicresource/80-41102-2/topics/location_services.md) [Next Topic
Positioning](https://docs.qualcomm.com/bundle/publicresource/80-41102-2/topics/page_c_taflocPos.md)