2f28bb0c19
Update IGnss.hal cleanup() and setCallback() method documentation to clarify when the framework calls these methods so that the GNSS engine knows when to shut down for power savings. This CL updates @1.1::IGnss.hal and @1.0::IGnss.hal interfaces only. @2.0::IGnss.hal is updated in another CL. Bug: 124104175 Test: Existing tests pass Change-Id: I8181251677dab78ce0619fa1e2a667b36e115f25
254 lines
9.2 KiB
Text
254 lines
9.2 KiB
Text
/*
|
|
* 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);
|
|
};
|