/* * Copyright (C) 2016 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.hardware.gnss@1.0; import IAGnss; import IAGnssRil; import IGnssBatching; import IGnssCallback; import IGnssConfiguration; import IGnssDebug; import IGnssMeasurement; import IGnssNavigationMessage; import IGnssGeofencing; import IGnssNi; import IGnssXtra; /** Represents the standard GNSS (Global Navigation Satellite System) interface. */ interface IGnss { /** Requested operational mode for GNSS operation. */ @export(name="", value_prefix="GPS_POSITION_MODE_") enum GnssPositionMode : uint8_t { /** Mode for running GNSS standalone (no assistance). */ STANDALONE = 0, /** AGNSS MS-Based mode. */ MS_BASED = 1, /** * AGNSS MS-Assisted mode. This mode is not maintained by the platform anymore. * It is strongly recommended to use MS_BASED instead. */ MS_ASSISTED = 2, }; /** Requested recurrence mode for GNSS operation. */ @export(name="", value_prefix="GPS_POSITION_") enum GnssPositionRecurrence : uint32_t { /** Receive GNSS fixes on a recurring basis at a specified period. */ RECURRENCE_PERIODIC = 0, /** Request a single shot GNSS fix. */ RECURRENCE_SINGLE = 1 }; /** * Flags used to specify which aiding data to delete when calling * deleteAidingData(). */ @export(name="", value_prefix="GPS_") enum GnssAidingData : uint16_t { DELETE_EPHEMERIS = 0x0001, DELETE_ALMANAC = 0x0002, DELETE_POSITION = 0x0004, DELETE_TIME = 0x0008, DELETE_IONO = 0x0010, DELETE_UTC = 0x0020, DELETE_HEALTH = 0x0040, DELETE_SVDIR = 0x0080, DELETE_SVSTEER = 0x0100, DELETE_SADATA = 0x0200, DELETE_RTI = 0x0400, DELETE_CELLDB_INFO = 0x8000, DELETE_ALL = 0xFFFF }; /** * Opens the interface and provides the callback routines to the implementation of this * interface. * * The framework calls this method to instruct the GPS engine to prepare for serving requests * from the framework. The GNSS HAL implementation must respond to all GNSS requests from the * framework upon successful return from this method until cleanup() method is called to * close this interface. * * @param callback Callback interface for IGnss. * * @return success Returns true on success. */ setCallback(IGnssCallback callback) generates (bool success); /** * Starts a location output stream using the IGnssCallback * gnssLocationCb(), following the settings from the most recent call to * setPositionMode(). * * This output must operate independently of any GNSS location batching * operations, see the IGnssBatching.hal for details. * * @return success Returns true on success. */ start() generates (bool success); /** * Stops the location output stream. * * @return success Returns true on success. */ stop() generates (bool success); /** * Closes the interface. * * The cleanup() method is called by the framework to tell the GNSS HAL implementation to * not expect any GNSS requests in the immediate future - e.g. this may be called when * location is disabled by a user setting or low battery conditions. The GNSS HAL * implementation must immediately stop responding to any existing requests until the * setCallback() method is called again and the requests are re-initiated by the framework. * * After this method is called, the GNSS HAL implementation may choose to modify GNSS hardware * states to save power. It is expected that when setCallback() method is called again to * reopen this interface, to serve requests, there may be some minor delays in GNSS response * requests as hardware readiness states are restored, not to exceed those that occur on normal * device boot up. */ cleanup(); /** * Injects the current time. * * @param timeMs This is the UTC time received from the NTP server, its value * is given in milliseconds since January 1, 1970. * @param timeReferenceMs The corresponding value of * SystemClock.elapsedRealtime() from the device when the NTP response was * received in milliseconds. * @param uncertaintyMs Uncertainty associated with the value represented by * time. Represented in milliseconds. * * @return success Returns true if the operation is successful. */ injectTime(GnssUtcTime timeMs, int64_t timeReferenceMs, int32_t uncertaintyMs) generates (bool success); /** * Injects current location from another location provider (typically cell * ID). * * @param latitudeDegrees Measured in Degrees. * @param longitudeDegrees Measured in Degrees. * @param accuracyMeters Measured in meters. * * @return success Returns true if successful. */ injectLocation(double latitudeDegrees, double longitudeDegrees, float accuracyMeters) generates (bool success); /** * Specifies that the next call to start will not use the * information defined in the flags. GnssAidingData value of DELETE_ALL is * passed for a cold start. * * @param aidingDataFlags Flags specifying the aiding data to be deleted. */ deleteAidingData(GnssAidingData aidingDataFlags); /** * Sets the GnssPositionMode parameter,its associated recurrence value, * the time between fixes,requested fix accuracy and time to first fix. * * @param mode Parameter must be one of MS_BASED or STANDALONE. * It is allowed by the platform (and it is recommended) to fallback to * MS_BASED if MS_ASSISTED is passed in, and MS_BASED is supported. * @recurrence GNSS position recurrence value, either periodic or single. * @param minIntervalMs Represents the time between fixes in milliseconds. * @param preferredAccuracyMeters Represents the requested fix accuracy in meters. * @param preferredTimeMs Represents the requested time to first fix in milliseconds. * @return success Returns true if successful. */ setPositionMode(GnssPositionMode mode, GnssPositionRecurrence recurrence, uint32_t minIntervalMs, uint32_t preferredAccuracyMeters, uint32_t preferredTimeMs) generates (bool success); /** * This method returns the IAGnssRil Interface. * * @return aGnssRilIface Handle to the IAGnssRil interface. */ getExtensionAGnssRil() generates (IAGnssRil aGnssRilIface); /** * This method returns the IGnssGeofencing Interface. * * @return gnssGeofencingIface Handle to the IGnssGeofencing interface. */ getExtensionGnssGeofencing() generates(IGnssGeofencing gnssGeofencingIface); /** * This method returns the IAGnss Interface. * * @return aGnssIface Handle to the IAGnss interface. */ getExtensionAGnss() generates (IAGnss aGnssIface); /** * This method returns the IGnssNi interface. * * @return gnssNiIface Handle to the IGnssNi interface. */ getExtensionGnssNi() generates (IGnssNi gnssNiIface); /** * This method returns the IGnssMeasurement interface. * * @return gnssMeasurementIface Handle to the IGnssMeasurement interface. */ getExtensionGnssMeasurement() generates (IGnssMeasurement gnssMeasurementIface); /** * This method returns the IGnssNavigationMessage interface. * * @return gnssNavigationIface gnssNavigationIface to the IGnssNavigationMessage interface. */ getExtensionGnssNavigationMessage() generates (IGnssNavigationMessage gnssNavigationIface); /** * This method returns the IGnssXtra interface. * * @return xtraIface Handle to the IGnssXtra interface. */ getExtensionXtra() generates (IGnssXtra xtraIface); /** * This method returns the IGnssConfiguration interface. * * @return gnssConfigIface Handle to the IGnssConfiguration interface. */ getExtensionGnssConfiguration() generates (IGnssConfiguration gnssConfigIface); /** * This method returns the IGnssDebug interface. * * @return debugIface Handle to the IGnssDebug interface. */ getExtensionGnssDebug() generates (IGnssDebug debugIface); /** * This method returns the IGnssBatching interface. * * @return batchingIface Handle to the IGnssBatching interface. */ getExtensionGnssBatching() generates (IGnssBatching batchingIface); };