/* * 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 IAGnssRilCallback; /** * Extended interface for AGNSS RIL support. An Assisted GNSS Radio Interface * Layer interface allows the GNSS chipset to request radio interface layer * information from Android platform. Examples of such information are reference * location, unique subscriber ID, phone number string and network availability changes. */ interface IAGnssRil { @export(name="", value_prefix="AGPS_SETID_TYPE_") enum SetIDType : uint8_t { NONE = 0, IMSI = 1, MSISDM = 2 }; @export(name="", value_prefix="AGPS_RIL_NETWORK_TYPE_") enum NetworkType : uint8_t { MOBILE = 0, WIFI = 1, MMS = 2, SUPL = 3, DUN = 4, HIPRI = 5, WIMAX = 6, }; @export(name="", value_prefix="AGPS_REF_LOCATION_TYPE_") enum AGnssRefLocationType : uint8_t { GSM_CELLID = 1, UMTS_CELLID = 2, LTE_CELLID = 4, }; /** CellID for 2G, 3G and LTE, used in AGNSS. */ struct AGnssRefLocationCellID { AGnssRefLocationType type; /** Mobile Country Code. */ uint16_t mcc; /** * Mobile Network Code .*/ uint16_t mnc; /** * Location Area Code in 2G, 3G and LTE. In 3G lac is discarded. In LTE, * lac is populated with tac, to ensure that we don't break old clients that * might rely in the old (wrong) behavior. */ uint16_t lac; /** Cell id in 2G. Utran Cell id in 3G. Cell Global Id EUTRA in LTE. */ uint32_t cid; /** Tracking Area Code in LTE. */ uint16_t tac; /** Physical Cell id in LTE (not used in 2G and 3G) */ uint16_t pcid; }; /** Represents ref locations */ struct AGnssRefLocation { AGnssRefLocationType type; AGnssRefLocationCellID cellID; }; /** * Opens the AGNSS interface and provides the callback routines * to the implementation of this interface. * * @param callback Interface for AGnssRil callbacks. */ setCallback(IAGnssRilCallback callback); /** * Sets the reference location. * * @param agnssReflocation AGNSS reference location CellID. */ setRefLocation(AGnssRefLocation agnssReflocation); /** * Sets the SET ID. * * @param type Must be populated with either IMSI or MSISDN or NONE. * @param setid If type is IMSI then setid is populated with * a string representing the unique Subscriber ID, for example, the IMSI for * a GMS phone. If type is MSISDN, then setid must contain * the phone number string for line 1. For example, the MSISDN for a GSM phone. * If the type is NONE, then the string must be empty. * * @return success True if all parameters were valid and operation was * successful. */ setSetId(SetIDType type, string setid) generates (bool success); /** * Notify GNSS of network status changes. * * @param connected Indicates whether network connectivity exists and * it is possible to establish connections and pass data. * @param type Indicates the kind of network, for eg. mobile, wifi etc. * @param roaming Indicates whether the device is currently roaming on * this network. * * @return success True is all parameters were valid and operation was * successful. */ updateNetworkState(bool connected, NetworkType type, bool roaming) generates (bool success); /** * Notify GNSS of network status changes and current APN. * * @param available Indicates whether network connectivity is available. * @param apn String containing the telephony preferred Access Point Name. * * @return success True if all parameters were valid and the operation was * successful. */ updateNetworkAvailability(bool available, string apn) generates (bool success); };