platform_hardware_interfaces/gnss/1.0/IGnssDebug.hal

123 lines
3.9 KiB
Text
Raw Normal View History

package android.hardware.gnss@1.0;
/* Extended interface for DEBUG support. */
interface IGnssDebug {
enum SatelliteEphemerisType : uint32_t {
/* no information is known to the gnss hardware, about this satellite */
UNKNOWN,
/* this satellite is known to exist */
KNOWN,
/* this satellite is not known to exist */
NONEXISTENT,
/* Only Almanac (approximate) location known for this satellite */
ALMANAC_ONLY,
/* Ephemeris is known from demodulating the signal on device */
DEMODULATED,
/* Ephemeris has been provided by SUPL */
SUPL_PROVIDED,
/* Ephemeris has been provided by another server */
OTHER_SERVER_PROVIDED,
/*
* Predicted ephemeris has been provided by a server
* (e.g. Xtra, Extended Ephemeris, etc...)
*/
SERVER_PREDICTED,
/*
* Predicted ephemeris in use, generated locally on the device (e.g. from prior
* ephemeris)
*/
LOCALLY_PREDICTED
};
/*
* 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 altitudeDegrees;
/*
* estimated horizontal accuracy of position expressed in meters, radial,
* 68% confidence.
*/
double accuracyMeters;
/*
* Time duration before this report that this position information was
* valid.
*/
float ageSeconds;
};
/*
* Provides the current best known UTC time estimate.
*/
struct TimeDebug {
/*
* Validity of the data in the struct.
* False if current time is unknown.
*/
bool valid;
/*
* UTC time estimate.
*/
GnssUtcTime timeEstimate;
/* 68% error estimate in time. */
float timeUncertaintyNs;
};
/*
* 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 ephemeris type of the satellite. */
SatelliteEphemerisType ephemerisType;
/*
* Time duration before this report, that the ephemeris source was last
* updated, e.g. latest demodulation, or latest server download.
* Set to 0 when ephemerisType is UNKNOWN.
*/
float ephemerisAgeSeconds;
};
/*
* 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 decoded satellite ephemeris.
* Should provide a complete list for all constellations 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);
};