You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
188 lines
6.4 KiB
188 lines
6.4 KiB
package android.hardware.gnss@1.0; |
|
|
|
/** Extended interface for DEBUG support. */ |
|
interface IGnssDebug { |
|
enum SatelliteEphemerisType : uint8_t { |
|
/** Ephemeris is known for this satellite. */ |
|
EPHEMERIS, |
|
/** |
|
* Ephemeris is not known, but Almanac (approximate location) is known. |
|
*/ |
|
ALMANAC_ONLY, |
|
/** |
|
* Both ephemeris & almanac are not known (e.g. during a cold start |
|
* blind search.) |
|
*/ |
|
NOT_AVAILABLE |
|
}; |
|
|
|
enum SatelliteEphemerisSource : uint8_t { |
|
/** |
|
* The ephemeris (or almanac only) information was demodulated from the |
|
* signal received on the device |
|
*/ |
|
DEMODULATED, |
|
/** |
|
* The ephemeris (or almanac only) information was received from a SUPL |
|
* server. |
|
*/ |
|
SUPL_PROVIDED, |
|
/** |
|
* The ephemeris (or almanac only) information was provided by another |
|
* server. |
|
*/ |
|
OTHER_SERVER_PROVIDED, |
|
/** |
|
* The ephemeris (or almanac only) information was provided by another |
|
* method, e.g. injected via a local debug tool, from build defaults |
|
* (e.g. almanac), or is from a satellite |
|
* with SatelliteEphemerisType::NOT_AVAILABLE. |
|
*/ |
|
OTHER |
|
}; |
|
|
|
enum SatelliteEphemerisHealth : uint8_t { |
|
/** The ephemeris is known good. */ |
|
GOOD, |
|
/** The ephemeris is known bad. */ |
|
BAD, |
|
/** The ephemeris is unknown to be good or bad. */ |
|
UNKNOWN |
|
}; |
|
|
|
/** |
|
* Provides the current best known position from any |
|
* source (GNSS or injected assistance). |
|
*/ |
|
struct PositionDebug { |
|
/** |
|
* Validity of the data in this struct. False only if no |
|
* latitude/longitude information is known. |
|
*/ |
|
bool valid; |
|
/** Latitude expressed in degrees */ |
|
double latitudeDegrees; |
|
/** Longitude expressed in degrees */ |
|
double longitudeDegrees; |
|
/** Altitude above ellipsoid expressed in meters */ |
|
float altitudeMeters; |
|
/** Represents horizontal speed in meters per second. */ |
|
float speedMetersPerSec; |
|
/** Represents heading in degrees. */ |
|
float bearingDegrees; |
|
/** |
|
* Estimated horizontal accuracy of position expressed in meters, |
|
* radial, 68% confidence. |
|
*/ |
|
double horizontalAccuracyMeters; |
|
/** |
|
* Estimated vertical accuracy of position expressed in meters, with |
|
* 68% confidence. |
|
*/ |
|
double verticalAccuracyMeters; |
|
/** |
|
* Estimated speed accuracy in meters per second with 68% confidence. |
|
*/ |
|
double speedAccuracyMetersPerSecond; |
|
/** |
|
* estimated bearing accuracy degrees with 68% confidence. |
|
*/ |
|
double bearingAccuracyDegrees; |
|
/** |
|
* Time duration before this report that this position information was |
|
* valid. This can, for example, be a previous injected location with |
|
* an age potentially thousands of seconds old, or |
|
* extrapolated to the current time (with appropriately increased |
|
* accuracy estimates), with a (near) zero age. |
|
*/ |
|
float ageSeconds; |
|
}; |
|
|
|
/** |
|
* Provides the current best known UTC time estimate. |
|
* If no fresh information is available, e.g. after a delete all, |
|
* then whatever the effective defaults are on the device must be |
|
* provided (e.g. Jan. 1, 2017, with an uncertainty of 5 years) expressed |
|
* in the specified units. |
|
*/ |
|
struct TimeDebug { |
|
/** UTC time estimate. */ |
|
GnssUtcTime timeEstimate; |
|
/** 68% error estimate in time. */ |
|
float timeUncertaintyNs; |
|
/** |
|
* 68% error estimate in local clock drift, |
|
* in nanoseconds per second (also known as parts per billion - ppb.) |
|
*/ |
|
float frequencyUncertaintyNsPerSec; |
|
}; |
|
|
|
/** |
|
* Provides a single satellite info that has decoded navigation data. |
|
*/ |
|
struct SatelliteData { |
|
/** Satellite vehicle ID number */ |
|
int16_t svid; |
|
/** Defines the constellation type of the given SV. */ |
|
GnssConstellationType constellation; |
|
|
|
/** |
|
* Defines the standard broadcast ephemeris or almanac availability for |
|
* the satellite. To report status of predicted orbit and clock |
|
* information, see the serverPrediction fields below. |
|
*/ |
|
SatelliteEphemerisType ephemerisType; |
|
/** Defines the ephemeris source of the satellite. */ |
|
SatelliteEphemerisSource ephemerisSource; |
|
/** |
|
* Defines whether the satellite is known healthy |
|
* (safe for use in location calculation.) |
|
*/ |
|
SatelliteEphemerisHealth ephemerisHealth; |
|
/** |
|
* Time duration from this report (current time), minus the |
|
* effective time of the ephemeris source (e.g. TOE, TOA.) |
|
* Set to 0 when ephemerisType is NOT_AVAILABLE. |
|
*/ |
|
float ephemerisAgeSeconds; |
|
|
|
/** |
|
* True if a server has provided a predicted orbit and clock model for |
|
* this satellite. |
|
*/ |
|
bool serverPredictionIsAvailable; |
|
/** |
|
* Time duration from this report (current time) minus the time of the |
|
* start of the server predicted information. For example, a 1 day |
|
* old prediction would be reported as 86400 seconds here. |
|
*/ |
|
float serverPredictionAgeSeconds; |
|
}; |
|
|
|
/** |
|
* Provides a set of debug information that is filled by the GNSS chipset |
|
* when the method getDebugData() is invoked. |
|
*/ |
|
struct DebugData { |
|
/** Current best known position. */ |
|
PositionDebug position; |
|
/** Current best know time estimate */ |
|
TimeDebug time; |
|
/** |
|
* Provides a list of the available satellite data, for all |
|
* satellites and constellations the device can track, |
|
* including GnssConstellationType UNKNOWN. |
|
*/ |
|
vec<SatelliteData> satelliteDataArray; |
|
}; |
|
|
|
/** |
|
* This methods requests position, time and satellite ephemeris debug information |
|
* from the HAL. |
|
* |
|
* @return ret debugData information from GNSS Hal that contains the current best |
|
* known position, best known time estimate and a complete list of |
|
* constellations that the device can track. |
|
*/ |
|
getDebugData() generates (DebugData debugData); |
|
};
|
|
|