platform_hardware_interfaces/gnss/1.1/IGnss.hal
Anil Admal 2f28bb0c19 Clarify when IGnss.hal cleanup() and setCallback() methods are called
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
2019-05-09 16:32:06 -07:00

101 lines
No EOL
4.6 KiB
Text

/*
* Copyright (C) 2017 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.1;
import @1.0::IGnss;
import @1.0::GnssLocation;
import IGnssCallback;
import IGnssConfiguration;
import IGnssMeasurement;
/** Represents the standard GNSS (Global Navigation Satellite System) interface. */
interface IGnss extends @1.0::IGnss {
/**
* 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_1_1(IGnssCallback callback) generates (bool success);
/**
* Sets the GnssPositionMode parameter, its associated recurrence value,
* the time between fixes, requested fix accuracy, 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.
* @param 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.
* @param lowPowerMode When true, and IGnss.hal is the only client to the GNSS hardware, the
* GNSS hardware must make strong tradeoffs to substantially restrict power use.
* Specifically, in the case of a several second long minIntervalMs, the GNSS hardware must
* not, on average, run power hungry operations like RF and signal searches for more than
* one second per interval, and must make exactly one call to gnssSvStatusCb(), and either
* zero or one call to GnssLocationCb() at each interval. When false, HAL must operate in
* the nominal mode (similar to V1.0 where this flag wasn't present) and is expected to make
* power and performance tradoffs such as duty-cycling when signal conditions are good and
* more active searches to reacquire GNSS signals when no signals are present.
* When there are additional clients using the GNSS hardware other than IGnss.hal, the GNSS
* hardware may operate in a higher power mode, on behalf of those clients.
*
* @return success Returns true if successful.
*/
setPositionMode_1_1(GnssPositionMode mode,
GnssPositionRecurrence recurrence,
uint32_t minIntervalMs,
uint32_t preferredAccuracyMeters,
uint32_t preferredTimeMs,
bool lowPowerMode)
generates (bool success);
/**
* This method returns the IGnssConfiguration interface.
*
* @return gnssConfigurationIface Handle to the IGnssConfiguration interface.
*/
getExtensionGnssConfiguration_1_1() generates (IGnssConfiguration gnssConfigurationIface);
/**
* This method returns the IGnssMeasurement interface.
*
* @return gnssMeasurementIface Handle to the IGnssMeasurement interface.
*/
getExtensionGnssMeasurement_1_1() generates (IGnssMeasurement gnssMeasurementIface);
/**
* Injects current location from the best available location provider.
*
* Unlike injectLocation, this method may inject a recent GNSS location from the HAL
* implementation, if that is the best available location known to the framework.
*
* @param location Location information from the best available location provider.
*
* @return success Returns true if successful.
*/
injectBestLocation(GnssLocation location) generates (bool success);
};