160 lines
6.4 KiB
Text
160 lines
6.4 KiB
Text
|
/*
|
||
|
* Copyright (C) 2018 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.visibility_control@1.0;
|
||
|
|
||
|
/**
|
||
|
* GNSS location reporting permissions and notification callback interface.
|
||
|
*/
|
||
|
interface IGnssVisibilityControlCallback {
|
||
|
/**
|
||
|
* Protocol stack that is requesting the non-framework location information.
|
||
|
*/
|
||
|
enum NfwProtocolStack : uint8_t {
|
||
|
/** Cellular control plane requests */
|
||
|
CTRL_PLANE = 0,
|
||
|
/** All types of SUPL requests */
|
||
|
SUPL = 1,
|
||
|
|
||
|
/** All types of requests from IMS */
|
||
|
IMS = 10,
|
||
|
/** All types of requests from SIM */
|
||
|
SIM = 11,
|
||
|
|
||
|
/** Requests from other protocol stacks */
|
||
|
OTHER_PROTOCOL_STACK = 100
|
||
|
};
|
||
|
|
||
|
/*
|
||
|
* Entity that is requesting/receiving the location information.
|
||
|
*/
|
||
|
enum NfwRequestor : uint8_t {
|
||
|
/** Wireless service provider */
|
||
|
CARRIER = 0,
|
||
|
|
||
|
/** Device manufacturer */
|
||
|
OEM = 10,
|
||
|
/** Modem chipset vendor */
|
||
|
MODEM_CHIPSET_VENDOR = 11,
|
||
|
/** GNSS chipset vendor */
|
||
|
GNSS_CHIPSET_VENDOR = 12,
|
||
|
/** Other chipset vendor */
|
||
|
OTHER_CHIPSET_VENDOR = 13,
|
||
|
|
||
|
/** Automobile client */
|
||
|
AUTOMOBILE_CLIENT = 20,
|
||
|
|
||
|
/** Other sources */
|
||
|
OTHER_REQUESTOR = 100
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* GNSS response type for non-framework location requests.
|
||
|
*/
|
||
|
enum NfwResponseType : uint8_t {
|
||
|
/** Request rejected because framework has not given permission for this use case */
|
||
|
REJECTED = 0,
|
||
|
|
||
|
/** Request accepted but could not provide location because of a failure */
|
||
|
ACCEPTED_NO_LOCATION_PROVIDED = 1,
|
||
|
|
||
|
/** Request accepted and location provided */
|
||
|
ACCEPTED_LOCATION_PROVIDED = 2,
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Represents a non-framework location information request/response notification.
|
||
|
*/
|
||
|
struct NfwNotification {
|
||
|
/**
|
||
|
* Package name of the Android proxy application representing the non-framework
|
||
|
* entity that requested location. Set to empty string if unknown.
|
||
|
*/
|
||
|
string proxyAppPackageName;
|
||
|
|
||
|
/** Protocol stack that initiated the non-framework location request. */
|
||
|
NfwProtocolStack protocolStack;
|
||
|
|
||
|
/**
|
||
|
* Name of the protocol stack if protocolStack field is set to OTHER_PROTOCOL_STACK.
|
||
|
* Otherwise, set to empty string.
|
||
|
*
|
||
|
* This field is opaque to the framework and used for logging purposes.
|
||
|
*/
|
||
|
string otherProtocolStackName;
|
||
|
|
||
|
/** Source initiating/receiving the location information. */
|
||
|
NfwRequestor requestor;
|
||
|
|
||
|
/**
|
||
|
* Identity of the endpoint receiving the location information. For example, carrier
|
||
|
* name, OEM name, SUPL SLP/E-SLP FQDN, chipset vendor name, etc.
|
||
|
*
|
||
|
* This field is opaque to the framework and used for logging purposes.
|
||
|
*/
|
||
|
string requestorId;
|
||
|
|
||
|
/** Indicates whether location information was provided for this request. */
|
||
|
NfwResponseType responseType;
|
||
|
|
||
|
/** Is the device in user initiated emergency session. */
|
||
|
bool inEmergencyMode;
|
||
|
|
||
|
/** Is cached location provided */
|
||
|
bool isCachedLocation;
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Callback to report a non-framework delivered location.
|
||
|
*
|
||
|
* The GNSS HAL implementation must call this method to notify the framework whenever
|
||
|
* a non-framework location request is made to the GNSS HAL.
|
||
|
*
|
||
|
* Non-framework entities like low power sensor hubs that request location from GNSS and
|
||
|
* only pass location information through Android framework controls are exempt from this
|
||
|
* power-spending reporting. However, low power sensor hubs or other chipsets which may send
|
||
|
* the location information to anywhere other than Android framework (which provides user
|
||
|
* visibility and control), must report location information use through this API whenever
|
||
|
* location information (or events driven by that location such as "home" location detection)
|
||
|
* leaves the domain of that low power chipset.
|
||
|
*
|
||
|
* To avoid overly spamming the framework, high speed location reporting of the exact same
|
||
|
* type may be throttled to report location at a lower rate than the actual report rate, as
|
||
|
* long as the location is reported with a latency of no more than the larger of 5 seconds,
|
||
|
* or the next the Android processor awake time. For example, if an Automotive client is
|
||
|
* getting location information from the GNSS location system at 20Hz, this method may be
|
||
|
* called at 1Hz. As another example, if a low power processor is getting location from the
|
||
|
* GNSS chipset, and the Android processor is asleep, the notification to the Android HAL may
|
||
|
* be delayed until the next wake of the Android processor.
|
||
|
*
|
||
|
* @param notification Non-framework delivered location request/response description.
|
||
|
*/
|
||
|
nfwNotifyCb(NfwNotification notification);
|
||
|
|
||
|
/**
|
||
|
* Tells if the device is currently in an emergency session.
|
||
|
*
|
||
|
* Emergency session is defined as the device being actively in a user initiated emergency
|
||
|
* call or in post emergency call extension time period.
|
||
|
*
|
||
|
* If the GNSS HAL implementation cannot determine if the device is in emergency session
|
||
|
* mode, it must call this method to confirm that the device is in emergency session before
|
||
|
* serving network initiated emergency SUPL and Control Plane location requests.
|
||
|
*
|
||
|
* @return success True if the framework determines that the device is in emergency session.
|
||
|
*/
|
||
|
isInEmergencySession() generates (bool success);
|
||
|
};
|