Telematics SDK - Interface Specification
Location Services API

Data Structures

class  telux::loc::IGpsTime
 IGpsTime provides interface to get current GPS week and elapsed time in current GPS week. More...
 
class  telux::loc::ISensorDataUsage
 Specifies the sensors used for calculating the fixes and the type of measurements which were aided by sensor data. More...
 
class  telux::loc::ILocationInfo
 ILocationInfo provides interface to get postion related information like latitude, longitude, altitude and other information like timestamp, session status etc. More...
 
class  telux::loc::ISVInfo
 ISVInfo provides interface to retreive inforation about Satellite Vehicles, their position and health status. More...
 
class  telux::loc::IGnssSVInfo
 IGnssSVInfo provides interface to retrieve the list of SV info available and whether altitude is assumed or calculated. More...
 
class  telux::loc::LocationFactory
 LocationFactory allows creation of location manager. More...
 
class  telux::loc::ILocationListener
 Listener class for getting location updates and satellite vehicle information. More...
 
class  telux::loc::ILocationManager
 ILocationManager provides interface to register and remove listeners. It also allows to set and get configuration/ criteria for position reports. More...
 

Typedefs

using telux::loc::PositionTech = std::bitset< 16 >
 
using telux::loc::SbasCorrection = std::bitset< 8 >
 
using telux::loc::Measurement = std::bitset< 8 >
 

Enumerations

enum  telux::loc::FixRecurrence { telux::loc::FixRecurrence::PERIODIC = 1, telux::loc::FixRecurrence::SINGLE = 2 }
 
enum  telux::loc::HorizontalAccuracyLevel { telux::loc::HorizontalAccuracyLevel::LOW = 1, telux::loc::HorizontalAccuracyLevel::MEDIUM = 2, telux::loc::HorizontalAccuracyLevel::HIGH = 3 }
 
enum  telux::loc::PositionTechType {
  telux::loc::SATELLITE, telux::loc::CELLID, telux::loc::WIFI, telux::loc::SENSORS,
  telux::loc::REFERENCE_LOCATION, telux::loc::INJECTED_COARSE_POSITION, telux::loc::AFLT, telux::loc::HYBRID
}
 
enum  telux::loc::LocationReliability {
  telux::loc::UNKNOWN = -1, telux::loc::LocationReliability::NOT_SET = 0, telux::loc::LocationReliability::VERY_LOW = 1, telux::loc::LocationReliability::LOW = 2,
  telux::loc::LocationReliability::MEDIUM = 3, telux::loc::LocationReliability::HIGH = 4
}
 
enum  telux::loc::SbasCorrectionType { telux::loc::SBAS_CORRECTION_IONO, telux::loc::SBAS_CORRECTION_FAST, telux::loc::SBAS_CORRECTION_LONG, telux::loc::SBAS_INTEGRITY }
 
enum  telux::loc::SessionStatus {
  telux::loc::UNKNOWN = -1, telux::loc::SessionStatus::SUCCESS = 0, telux::loc::SessionStatus::IN_PROGRESS = 1, telux::loc::SessionStatus::GENERAL_FAILURE = 2,
  telux::loc::SessionStatus::TIMEOUT = 3, telux::loc::SessionStatus::USER_END = 4, telux::loc::SessionStatus::BAD_PARAMETER = 5, telux::loc::SessionStatus::PHONE_OFFLINE = 6,
  telux::loc::SessionStatus::ENGINE_LOCKED = 7
}
 
enum  telux::loc::AltitudeType { telux::loc::UNKNOWN = -1, telux::loc::AltitudeType::CALCULATED = 0, telux::loc::AltitudeType::ASSUMED = 1 }
 
enum  telux::loc::GnssConstellationType {
  telux::loc::UNKNOWN = -1, telux::loc::GnssConstellationType::GPS = 1, telux::loc::GnssConstellationType::GALILEO = 2, telux::loc::GnssConstellationType::SBAS = 3,
  telux::loc::GnssConstellationType::COMPASS = 4, telux::loc::GnssConstellationType::GLONASS = 5, telux::loc::GnssConstellationType::BDS = 6, telux::loc::GnssConstellationType::QZSS = 7
}
 
enum  telux::loc::SVHealthStatus { telux::loc::UNKNOWN = -1, telux::loc::SVHealthStatus::UNHEALTHY = 0, telux::loc::SVHealthStatus::HEALTHY = 1 }
 
enum  telux::loc::SVStatus { telux::loc::UNKNOWN = -1, telux::loc::SVStatus::IDLE = 0, telux::loc::SVStatus::SEARCH = 1, telux::loc::SVStatus::TRACK = 2 }
 
enum  telux::loc::SVInfoAvailability { telux::loc::UNKNOWN = -1 , telux::loc::SVInfoAvailability::NO = 1 }
 
enum  telux::loc::SensorType { telux::loc::UNKNOWN = -1, telux::loc::SensorType::ACCELEROMETER = 1, telux::loc::SensorType::GYROSCOPE = 2 }
 
enum  telux::loc::MeasurementType {
  telux::loc::UNKNOWN = -1, telux::loc::UNKNOWN = -1, telux::loc::UNKNOWN = -1, telux::loc::UNKNOWN = -1,
  telux::loc::UNKNOWN = -1, telux::loc::UNKNOWN = -1, telux::loc::UNKNOWN = -1, telux::loc::UNKNOWN = -1,
  telux::loc::UNKNOWN = -1, telux::loc::HEADING, telux::loc::SPEED, telux::loc::POSITION,
  telux::loc::VELOCITY
}
 

Detailed Description

This section contains APIs related to Location Services.


Data Structure Documentation

class telux::loc::IGpsTime

IGpsTime provides interface to get current GPS week and elapsed time in current GPS week.

Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.

Public Member Functions

virtual uint32_t getWeek ()=0
 
virtual uint32_t getTimeOfWeekMsec ()=0
 

Member Function Documentation

virtual uint32_t telux::loc::IGpsTime::getWeek ( )
pure virtual

Retrieves current GPS week as calculated from midnight, Jan 6, 1980.

Returns
Unsigned 32-bit integer containing week number.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual uint32_t telux::loc::IGpsTime::getTimeOfWeekMsec ( )
pure virtual

Retrieves elapsed time in the current GPS week starting from 12:00 am on Sunday.

Returns
Unsigned 32-bit integer containing time in milliseconds.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
class telux::loc::ISensorDataUsage

Specifies the sensors used for calculating the fixes and the type of measurements which were aided by sensor data.

Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.

Public Member Functions

virtual SensorType getSensorType ()=0
 
virtual Measurement getMeasurement ()=0
 

Member Function Documentation

virtual SensorType telux::loc::ISensorDataUsage::getSensorType ( )
pure virtual

Retrieves which sensors were used in calculating the position in the position report.

Returns
SensorType if available.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual Measurement telux::loc::ISensorDataUsage::getMeasurement ( )
pure virtual

Retrieves which measurements were aided by sensor data.

Returns
Measurement types if available.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
class telux::loc::ILocationInfo

ILocationInfo provides interface to get postion related information like latitude, longitude, altitude and other information like timestamp, session status etc.

Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.

Public Member Functions

virtual PositionTech getPositionTechnology ()=0
 
virtual double getLatitude ()=0
 
virtual double getLongitude ()=0
 
virtual double getAltitude ()=0
 
virtual float getHeading ()=0
 
virtual float getVerticalUncertainty ()=0
 
virtual uint64_t getTimeStamp ()=0
 
virtual float getAltitudeMeanSeaLevel ()=0
 
virtual float getPositionDop ()=0
 
virtual float getHorizontalDop ()=0
 
virtual float getVerticalDop ()=0
 
virtual float getMagneticDeviation ()=0
 
virtual float getSpeedUncertainty ()=0
 
virtual float getHeadingUncertainty ()=0
 
virtual LocationReliability getHorizontalReliability ()=0
 
virtual LocationReliability getVerticalReliability ()=0
 
virtual float getHorizontalUncertaintySemiMajor ()=0
 
virtual float getHorizontalUncertaintySemiMinor ()=0
 
virtual float getHorizontalUncertaintyAzimuth ()=0
 
virtual void getSVIds (std::vector< uint16_t > &idsOfUsedSVs)=0
 
virtual SbasCorrection getSbasCorrection ()=0
 
virtual SessionStatus getSessionStatus ()=0
 
virtual telux::common::Status getLeapSeconds (uint8_t &leapSeconds)=0
 
virtual std::shared_ptr< IGpsTimegetGpsTime ()=0
 
virtual telux::common::Status getCircularHorizontalUncertainty (float &circularHorizontalUncertainty)=0
 
virtual telux::common::Status getHorizontalConfidence (uint8_t &horizontalConfidence)=0
 
virtual float getHorizontalSpeed ()=0
 
virtual telux::common::Status getVerticalConfidence (uint8_t &verticalConfidence)=0
 
virtual float getVerticalSpeed ()=0
 
virtual telux::common::Status getSensorDataUsage (std::shared_ptr< ISensorDataUsage > &sensorDataUsage)=0
 
virtual telux::common::Status getFixId (uint32_t &fixId)=0
 
virtual telux::common::Status getVelocityEastNorthUp (std::vector< float > &velocityEastNorthUp)=0
 
virtual telux::common::Status getVelocityUncertaintyEastNorthUp (std::vector< float > &velocityUncertaintyEastNorthUp)=0
 

Member Function Documentation

virtual PositionTech telux::loc::ILocationInfo::getPositionTechnology ( )
pure virtual

Retrieves technology used in computing this fix.

Returns
Position technology.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual double telux::loc::ILocationInfo::getLatitude ( )
pure virtual

Retrieves latitude. Positive and negative values indicate northern and southern latitude respectively

  • Units: Degrees
  • Range: -90.0 to 90.0
Returns
Latitude if available else returns NaN.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual double telux::loc::ILocationInfo::getLongitude ( )
pure virtual

Retrieves longitude. Positive and negative values indicate eastern and western longitude respectively

  • Units: Degrees
  • Range: -180.0 to 180.0
Returns
Longitude if available else returns NaN.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual double telux::loc::ILocationInfo::getAltitude ( )
pure virtual

Retrieves altitude above the WGS 84 reference ellipsoid.

  • Units: Meters
Returns
Altitude if available else returns NaN.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual float telux::loc::ILocationInfo::getHeading ( )
pure virtual

Retrieves heading.

  • Units: Degrees
  • Range: 0 to 359.999
Returns
Heading if available else returns NaN.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual float telux::loc::ILocationInfo::getVerticalUncertainty ( )
pure virtual

Retrieves the vertical uncertainty.

  • Units: Meters
Returns
Vertical uncertainty if available else returns NaN.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual uint64_t telux::loc::ILocationInfo::getTimeStamp ( )
pure virtual

Retrieves UTC timeStamp for the location fix.

  • Units: Milliseconds since Jan 1, 1970
Returns
TimeStamp in seconds if available else returns 0 (as UTC timeStamp has elapsed since January 1, 1970, it cannot be 0)
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual float telux::loc::ILocationInfo::getAltitudeMeanSeaLevel ( )
pure virtual

Retrieves the altitude with respect to mean sea level.

  • Units: Meters
Returns
Altitude with respect to mean sea level if available else returns NaN.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual float telux::loc::ILocationInfo::getPositionDop ( )
pure virtual

Retrieves position dilution of precision.

Returns
Position dilution of precision if available else returns NaN. Range: 1 (highest accuracy) to 50 (lowest accuracy)
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual float telux::loc::ILocationInfo::getHorizontalDop ( )
pure virtual

Retrieves horizontal dilution of precision.

Returns
Horizontal dilution of precision if available else returns NaN. Range: 1 (highest accuracy) to 50 (lowest accuracy)
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual float telux::loc::ILocationInfo::getVerticalDop ( )
pure virtual

Retrieves vertical dilution of precision.

Returns
Vertical dilution of precision if available else returns NaN Range: 1 (highest accuracy) to 50 (lowest accuracy)
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual float telux::loc::ILocationInfo::getMagneticDeviation ( )
pure virtual

Retrieves the difference between the bearing to true north and the bearing shown on magnetic compass. The deviation is positive when the magnetic north is east of true north.

  • Units: Degrees
Returns
Magnetic Deviation if available else returns NaN
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual float telux::loc::ILocationInfo::getSpeedUncertainty ( )
pure virtual

Retrieves 3-D speed uncertainty.

  • Units: Meters per Second
Returns
Speed uncertainty if available else returns NaN.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual float telux::loc::ILocationInfo::getHeadingUncertainty ( )
pure virtual

Retrieves heading uncertainty.

  • Units: Degrees
  • Range: 0 to 359.999
Returns
Heading uncertainty if available else returns NaN.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual LocationReliability telux::loc::ILocationInfo::getHorizontalReliability ( )
pure virtual

Specifies the reliability of the horizontal position.

Returns
LocationReliability of the horizontal position if available else returns UNKNOWN.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual LocationReliability telux::loc::ILocationInfo::getVerticalReliability ( )
pure virtual

Specifies the reliability of the vertical position.

Returns
LocationReliability of the vertical position if available else returns UNKNOWN.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual float telux::loc::ILocationInfo::getHorizontalUncertaintySemiMajor ( )
pure virtual

Retrieves semi-major axis of horizontal elliptical uncertainty.

  • Units: Meters
Returns
Semi-major horizontal elliptical uncertainty if available else returns NaN.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual float telux::loc::ILocationInfo::getHorizontalUncertaintySemiMinor ( )
pure virtual

Retrieves semi-minor axis of horizontal elliptical uncertainty.

  • Units: Meters
Returns
Semi-minor horizontal elliptical uncertainty if available else returns NaN.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual float telux::loc::ILocationInfo::getHorizontalUncertaintyAzimuth ( )
pure virtual

Retrieves elliptical horizontal uncertainty azimuth of orientation.

  • Units: Decimal degrees
  • Range: 0 to 180
Returns
Elliptical horizontal uncertainty azimuth of orientation if available else returns NaN.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual void telux::loc::ILocationInfo::getSVIds ( std::vector< uint16_t > &  idsOfUsedSVs)
pure virtual

Retrieves GNSS Satellite Vehicles used in position data.

Parameters
[out]idsOfUsedSVsVector of Satellite Vehicle identifiers.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual SbasCorrection telux::loc::ILocationInfo::getSbasCorrection ( )
pure virtual

Retrieves navigation solution mask used to indicate SBAS corrections.

Returns
- SBAS (Satellite Based Augmentation System) Correction mask used.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual SessionStatus telux::loc::ILocationInfo::getSessionStatus ( )
pure virtual

Retrieves status of the session that is requested by user application.

Returns
SessionStatus
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual telux::common::Status telux::loc::ILocationInfo::getLeapSeconds ( uint8_t &  leapSeconds)
pure virtual

Retrieves leap seconds if available.

Parameters
[out]leapSeconds- leap seconds
  • Units: Seconds
Returns
Status of leap seconds.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual std::shared_ptr<IGpsTime> telux::loc::ILocationInfo::getGpsTime ( )
pure virtual

Retrieves GPS time structure.

Returns
Pointer of IGpsTime object if available else returns null pointer.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual telux::common::Status telux::loc::ILocationInfo::getCircularHorizontalUncertainty ( float &  circularHorizontalUncertainty)
pure virtual

Retrieves horizontal position uncertainty (circular) if available.

Parameters
[out]circularHorizontalUncertainty- circular horizontal uncertainty
  • Units: Meters
Returns
Status of circular horizontal uncertainty.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual telux::common::Status telux::loc::ILocationInfo::getHorizontalConfidence ( uint8_t &  horizontalConfidence)
pure virtual

Retrieves horizontal uncertainty confidence if available.

Parameters
[out]horizontalConfidence- horizontal uncertainty confidence
  • Units: Percent
  • Range: 0 to 99
Returns
Status of horizontal uncertainty confidence.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual float telux::loc::ILocationInfo::getHorizontalSpeed ( )
pure virtual

Retrieves horizontal speed.

  • Units: Meters/second
Returns
horizontal speed if available else returns NaN.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual telux::common::Status telux::loc::ILocationInfo::getVerticalConfidence ( uint8_t &  verticalConfidence)
pure virtual

Retrieves vertical uncertainty confidence if available.

Parameters
[out]verticalConfidence- vertical uncertainty confidence
  • Units: Percent
  • Range: 0 to 99
Returns
Status of vertical uncertainty confidence.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual float telux::loc::ILocationInfo::getVerticalSpeed ( )
pure virtual

Retrieves vertical speed.

  • Units: Meters/second
Returns
Float containing vertical speed if available else returns NaN.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual telux::common::Status telux::loc::ILocationInfo::getSensorDataUsage ( std::shared_ptr< ISensorDataUsage > &  sensorDataUsage)
pure virtual

Retrieves sensor data was used in computing the position if available.

Parameters
[out]sensorDataUsage- which sensors were used in calculating the position
Returns
Status of availability of sensorDataUsage.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual telux::common::Status telux::loc::ILocationInfo::getFixId ( uint32_t &  fixId)
pure virtual

Retrieves fix count if available. Fix count of a session starts with 0 and increments by one for each successive position report for a particular session.

Parameters
[out]fixId- identifier of fix for session
Returns
Status of availability of fix identifier.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual telux::common::Status telux::loc::ILocationInfo::getVelocityEastNorthUp ( std::vector< float > &  velocityEastNorthUp)
pure virtual

Retrieves east, North, Up velocity if available.

Parameters
[out]velocityEastNorthUp- east, North, Up velocity
  • Units: Meters/second
Returns
Status of availability of east, North, Up velocity.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual telux::common::Status telux::loc::ILocationInfo::getVelocityUncertaintyEastNorthUp ( std::vector< float > &  velocityUncertaintyEastNorthUp)
pure virtual

Retrieves east, North, Up velocity uncertainty if available.

Parameters
[out]velocityUncertaintyEastNorthUp- east, North, Up velocity uncertainty
  • Units: Meters/second
Returns
Status of availability of east, North, Up velocity uncertainty.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
class telux::loc::ISVInfo

ISVInfo provides interface to retreive inforation about Satellite Vehicles, their position and health status.

Public Member Functions

virtual GnssConstellationType getConstellation ()=0
 
virtual uint16_t getId ()=0
 
virtual SVHealthStatus getSVHealthStatus ()=0
 
virtual SVStatus getStatus ()=0
 
virtual SVInfoAvailability getHasEphemeris ()=0
 
virtual SVInfoAvailability getHasAlmanac ()=0
 
virtual float getElevation ()=0
 
virtual float getAzimuth ()=0
 
virtual float getSnr ()=0
 

Member Function Documentation

virtual GnssConstellationType telux::loc::ISVInfo::getConstellation ( )
pure virtual

Indicates to which constellation this satellite vehicle belongs.

Returns
GnssConstellationType if available else returns UNKNOWN.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual uint16_t telux::loc::ISVInfo::getId ( )
pure virtual

GNSS satellite vehicle ID.

Returns
Identifier of the satellite vehicle otherwise 0(as 0 is not an ID for any of the SVs)
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual SVHealthStatus telux::loc::ISVInfo::getSVHealthStatus ( )
pure virtual

Health status of satellite vehicle.

Returns
HealthStatus of Satellite Vehicle if available else returns UNKNOWN.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual SVStatus telux::loc::ISVInfo::getStatus ( )
pure virtual

Status of satellite vehicle.

Note
This API is work-in-progress and is subject to change.
Returns
Satellite Vehicle Status if available else returns UNKNOWN.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual SVInfoAvailability telux::loc::ISVInfo::getHasEphemeris ( )
pure virtual

Indicates whether ephemeris information(which allows the receiver to calculate the satellite's position) is available.

Returns
SVInfoAvailability if Ephemeris exists or not else returns UNKNOWN.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual SVInfoAvailability telux::loc::ISVInfo::getHasAlmanac ( )
pure virtual

Indicates whether almanac information(which allows receivers to know which satellites are available for tracking) is available.

Returns
SVInfoAvailability if almanac exists or not else returns UNKNOWN.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual float telux::loc::ISVInfo::getElevation ( )
pure virtual

Retrieves satellite vehicle elevation angle.

  • Units: Degrees
  • Range: 0 to 90
Returns
Elevation if available else returns NaN.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual float telux::loc::ISVInfo::getAzimuth ( )
pure virtual

Retrieves satellite vehicle azimuth angle.

  • Units: Degrees
  • Range: 0 to 360
Returns
Azimuth if available else returns NaN.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual float telux::loc::ISVInfo::getSnr ( )
pure virtual

Retrieves satellite vehicle signal-to-noise ratio.

  • Units: dB-Hz
Returns
SNR if available else returns NaN.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
class telux::loc::IGnssSVInfo

IGnssSVInfo provides interface to retrieve the list of SV info available and whether altitude is assumed or calculated.

Public Member Functions

virtual AltitudeType getAltitudeType ()=0
 
virtual std::vector
< std::shared_ptr< ISVInfo > > 
getSVInfoList ()=0
 

Member Function Documentation

virtual AltitudeType telux::loc::IGnssSVInfo::getAltitudeType ( )
pure virtual

Indicates whether altitude is assumed or calculated.

Returns
AltitudeType if available else returns UNKNOWN.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual std::vector<std::shared_ptr<ISVInfo> > telux::loc::IGnssSVInfo::getSVInfoList ( )
pure virtual

Pointer to satellite vehicles information for all GNSS constellations except GPS.

Returns
Vector of pointer of ISVInfo object if available else returns empty vector.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
class telux::loc::LocationFactory

LocationFactory allows creation of location manager.

Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.

Public Member Functions

std::shared_ptr< ILocationManagergetLocationManager ()
 
 ~LocationFactory ()
 

Static Public Member Functions

static LocationFactorygetInstance ()
 

Constructor & Destructor Documentation

telux::loc::LocationFactory::~LocationFactory ( )

Member Function Documentation

static LocationFactory& telux::loc::LocationFactory::getInstance ( )
static

Get Location Factory instance.

std::shared_ptr<ILocationManager> telux::loc::LocationFactory::getLocationManager ( )

Get instance of Location Manager

Returns
Pointer of ILocationManager object.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
class telux::loc::ILocationListener

Listener class for getting location updates and satellite vehicle information.

The methods in listener can be invoked from multiple different threads. Client needs to make sure that implementation is thread-safe.

Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.

Public Member Functions

virtual void onLocationUpdate (const std::shared_ptr< ILocationInfo > &locationInfo)
 
virtual void onGnssSVInfo (const std::shared_ptr< IGnssSVInfo > &gnssSVInfo)
 
virtual ~ILocationListener ()
 

Constructor & Destructor Documentation

virtual telux::loc::ILocationListener::~ILocationListener ( )
virtual

Destructor of ILocationListener

Member Function Documentation

virtual void telux::loc::ILocationListener::onLocationUpdate ( const std::shared_ptr< ILocationInfo > &  locationInfo)
virtual

This function is called when device receives location update.

Parameters
[in]locationInfo- Location information like latitude, longitude, timeStamp and other information such as heading, altitude and velocity etc.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual void telux::loc::ILocationListener::onGnssSVInfo ( const std::shared_ptr< IGnssSVInfo > &  gnssSVInfo)
virtual

This function is called when device receives GNSS satellite information.

Parameters
[in]gnssSVInfo- GNSS satellite information
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
class telux::loc::ILocationManager

ILocationManager provides interface to register and remove listeners. It also allows to set and get configuration/ criteria for position reports.

Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.

Public Member Functions

virtual bool isSubsystemReady ()=0
 
virtual std::future< bool > onSubsystemReady ()=0
 
virtual telux::common::Status registerListener (std::weak_ptr< ILocationListener > listener)=0
 
virtual telux::common::Status removeListener (std::weak_ptr< ILocationListener > listener)=0
 
virtual telux::common::Status setPositionReportTimeout (uint32_t timeout, std::shared_ptr< telux::common::ICommandResponseCallback > callback=nullptr)=0
 
virtual telux::common::Status setHorizontalAccuracyLevel (HorizontalAccuracyLevel accuracy=HorizontalAccuracyLevel::LOW, std::shared_ptr< telux::common::ICommandResponseCallback > callback=nullptr)=0
 
virtual telux::common::Status setMinIntervalForReports (uint32_t minInterval, std::shared_ptr< telux::common::ICommandResponseCallback > callback=nullptr)=0
 
virtual uint32_t getPositionReportTimeout ()=0
 
virtual HorizontalAccuracyLevel getHorizontalAccuracyLevel ()=0
 
virtual uint32_t getMinIntervalForFinalReports ()=0
 
virtual ~ILocationManager ()
 

Constructor & Destructor Documentation

virtual telux::loc::ILocationManager::~ILocationManager ( )
virtual

Destructor of ILocationManager

Member Function Documentation

virtual bool telux::loc::ILocationManager::isSubsystemReady ( )
pure virtual

Checks the status of location subsystems and returns the result.

Returns
True if location subsystem is ready for service otherwise false.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual std::future<bool> telux::loc::ILocationManager::onSubsystemReady ( )
pure virtual

Wait for location subsystem to be ready.

Returns
A future that caller can wait on to be notified when location subsystem is ready.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual telux::common::Status telux::loc::ILocationManager::registerListener ( std::weak_ptr< ILocationListener listener)
pure virtual

Register a listener for specific updates from location manager like location and satellite vehicle info. If enhanced position, using Dead Reckoning etc., is enabled, enhanced fixes will be provided. Otherwise raw GNSS fixes will be provided.

Parameters
[in]listener- Pointer of ILocationListener object that processes the notification
Returns
Status of registerListener i.e success or suitable status code.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual telux::common::Status telux::loc::ILocationManager::removeListener ( std::weak_ptr< ILocationListener listener)
pure virtual

Remove a previously registered listener.

Parameters
[in]listener- Previously registered ILocationListener that needs to be removed
Returns
Status of removeListener success or suitable status code
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual telux::common::Status telux::loc::ILocationManager::setPositionReportTimeout ( uint32_t  timeout,
std::shared_ptr< telux::common::ICommandResponseCallback callback = nullptr 
)
pure virtual

Configures position report timeout. LocationManager tries to determine the position until the position report timeout has elapsed. If the final position cannot be determined before the timeout period, it returns a position report with session status marked as SessionStatus::TIMEOUT instead of SessionStatus::SUCCESS. Position report timeout is an app spectific setting. E.g. If this API is called with timeout parameter value 5000, the LocationManager tries to determine the position before 5 seconds. If position report is determined, a position report will be returned with sessionStatus=SessionStatus::SUCCESS. Otherwise, a position report will be sent with sessionStatus=SessionStatus::TIMEOUT after 5 seconds.

Parameters
[in]timeout- Maximum time to get a position report in milliseconds.
[in]callback- Optional callback to get the response of set position report time out
Returns
Status of setPositionReportTimeout i.e. success or suitable status code.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual telux::common::Status telux::loc::ILocationManager::setHorizontalAccuracyLevel ( HorizontalAccuracyLevel  accuracy = HorizontalAccuracyLevel::LOW,
std::shared_ptr< telux::common::ICommandResponseCallback callback = nullptr 
)
pure virtual

Configuring horizontal accuracy level. If the final position cannot be determined with the required horizontal accuracy level within the timeout period specified in the setPositionReportTimeout API, a timeout fix will be provided. Refer to setPositionReportTimeout API for more details.

Parameters
[in]accuracy- HorizontalAccuracyLevel
[in]callback- Optional callback to get the response of set horizontal accuracy level
Returns
Status of setHorizontalAccuracyLevel i.e. success or suitable status code.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual telux::common::Status telux::loc::ILocationManager::setMinIntervalForReports ( uint32_t  minInterval,
std::shared_ptr< telux::common::ICommandResponseCallback callback = nullptr 
)
pure virtual

Configuring minimum time interval between two consecutive position reports.

Parameters
[in]minInterval- Minimum time interval between two consecutive reports in milliseconds. E.g. If minInterval is 1000 milliseconds, reports will be provided with a periodicity of 1 second or more depending on the number of applications listening to location updates.
[in]callback- Optional callback to get the response of set minimum interval for reports.
Returns
Status of setMinIntervalForReports i.e. success or suitable status code.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual uint32_t telux::loc::ILocationManager::getPositionReportTimeout ( )
pure virtual

Get timeout of a position report.

Returns
Maximum time to get a position report.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual HorizontalAccuracyLevel telux::loc::ILocationManager::getHorizontalAccuracyLevel ( )
pure virtual

Get horizontal accuracy level of a location fix.

Returns
HorizontalAccuracyLevel.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.
virtual uint32_t telux::loc::ILocationManager::getMinIntervalForFinalReports ( )
pure virtual

Get the time interval between final reports.

Returns
Minimum time interval between final position reports.
Note
Eval: This is a new API and is being evaluated.It is subject to change and could break backwards compatibility.

Typedef Documentation

using telux::loc::PositionTech = typedef std::bitset<16>

16 bit mask that denotes which of the technologies defined in PositionTech enum are used in the location fix.

using telux::loc::SbasCorrection = typedef std::bitset<8>

8 bit mask that denotes which of the SBAS corrections in SbasCorrection used to improve the performance of GNSS output.

using telux::loc::Measurement = typedef std::bitset<8>

8 bit mask that denotes which of the measurements in MeasurementType enum are aided by sensor data.

Enumeration Type Documentation

Defines recurrence type of the fix.

Enumerator
PERIODIC 

Request periodic fixes, minimum interval between final reports will be the periodicity. Client can configure it using LocationService API i.e. setMinIntervalForFinalReports

SINGLE 

Request a single fix

Defines the horizontal accuracy level of the fix.

Enumerator
LOW 

Client requires low horizontal accuracy

MEDIUM 

Client requires medium horizontal accuracy

HIGH 

Client requires high horizontal accuracy

Defines technology used in computing the location fix.

Enumerator
SATELLITE 

Satellites used to generate the fix

CELLID 

Cell towers used to generate the fix

WIFI 

Wi-Fi access points used to generate the fix

SENSORS 

Sensors used to generate the fix

REFERENCE_LOCATION 

Reference location used to generate the fix

INJECTED_COARSE_POSITION 

Coarse position injected into the location engine used to generate the fix

AFLT 

Advanced Forward Link Trilateration(AFLT), the phone takes measurements of signals from nearby towers and reports the time/distance readings back to the network to generate the fix

HYBRID 

GNSS and network-provided measurements used to generate the fix

Specifies the reliability of the position.

Enumerator
UNKNOWN 
NOT_SET 

Location reliability is not set

VERY_LOW 

Location reliability is very low

LOW 

Location reliability is low, little or no cross-checking is possible

MEDIUM 

Location reliability is medium, limited cross-check passed

HIGH 

Location reliability is high, strong cross-check passed

Defines Satellite Based Augmentation System(SBAS) corrections. SBAS contributes to improve the performance of GNSS system.

Enumerator
SBAS_CORRECTION_IONO 

Bit mask to specify whether SBAS ionospheric correction is used

SBAS_CORRECTION_FAST 

Bit mask to specify whether SBAS fast correction is used

SBAS_CORRECTION_LONG 

Bit mask to specify whether SBAS long correction is used

SBAS_INTEGRITY 

Bit mask to specify whether SBAS integrity information is used

Defines status of the session that is requested by user application.

Enumerator
UNKNOWN 
SUCCESS 

Session successful

IN_PROGRESS 

Session is still in progress, further position reports will be generated until either the fix criteria specified by the client are met or the client response time out occurs

GENERAL_FAILURE 

Session failed

TIMEOUT 

Fix request failed because the session timed out

USER_END 

Fix request failed because the session was ended by the user

BAD_PARAMETER 

Fix request failed due to bad parameters in the request

PHONE_OFFLINE 

Fix request failed because the phone is offline

ENGINE_LOCKED 

Fix request failed because the engine is locked

Indicates whether altitude is assumed or calculated.

Enumerator
UNKNOWN 
CALCULATED 

Altitude is calculated

ASSUMED 

Altitude is assumed, there may not be enough satellites to determine the precise altitude

Defines constellation type of GNSS.

Enumerator
UNKNOWN 
GPS 

GPS satellite

GALILEO 

GALILEO satellite

SBAS 

SBAS satellite

COMPASS 

COMPASS satellite

GLONASS 

GLONASS satellite

BDS 

BDS satellite

QZSS 

QZSS satellite

Health status indicates whether satellite is operational or not. This information comes from the most recent data transmitted in satellite almanacs.

Enumerator
UNKNOWN 
UNHEALTHY 

satellite is not operational and cannot be used in position calculations

HEALTHY 

satellite is fully operational

enum telux::loc::SVStatus
strong

Satellite vehicle processing status.

Enumerator
UNKNOWN 
IDLE 

SV is not being actively processed

SEARCH 

The system is searching for this SV

TRACK 

SV is being tracked

Indicates whether Satellite Vehicle info like ephemeris and almanac are present or not

Enumerator
UNKNOWN 
NO 

Ephemeris or Almanac doesn't exist

Defines which sensors were used in calculating the position in the position report

Enumerator
UNKNOWN 
ACCELEROMETER 

Bitmask to specify whether an accelerometer was used

GYROSCOPE 

Bitmask to specify whether a gyroscope was used

Specifies which measurements were aided by sensors.

Enumerator
UNKNOWN 
UNKNOWN 
UNKNOWN 
UNKNOWN 
UNKNOWN 
UNKNOWN 
UNKNOWN 
UNKNOWN 
UNKNOWN 
HEADING 

Bitmask to specify whether a sensor was used to calculate heading

SPEED 

Bitmask to specify whether a sensor was used to calculate speed

POSITION 

Bitmask to specify whether a sensor was used to calculate position

VELOCITY 

Bitmask to specify whether a sensor was used to calculate velocity