blob: 9935bf914db493245c31ea74755c43c8e1e733f9 [file] [log] [blame]
Yu-Han Yang9c6c20b2018-11-06 14:12:49 -08001/*
2 * Copyright (C) 2018 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package android.hardware.gnss@2.0;
18
gomo1da4b5c2018-12-02 02:49:10 -080019import android.hardware.gnss.measurement_corrections@1.0::IMeasurementCorrections;
Anil Admal4d739e72018-11-14 12:38:57 -080020import android.hardware.gnss.visibility_control@1.0::IGnssVisibilityControl;
Yu-Han Yang9c6c20b2018-11-06 14:12:49 -080021import @1.1::IGnss;
22
Pierre Fite-Georgel12ac2b52019-01-17 16:56:17 -080023import GnssLocation;
gomo1da4b5c2018-12-02 02:49:10 -080024import IGnssCallback;
Anil Admal4e50a4c2018-12-19 15:22:13 -080025import IGnssConfiguration;
Yu-Han Yang6999a0f2019-03-14 11:08:43 -070026import IGnssDebug;
Yu-Han Yang9c6c20b2018-11-06 14:12:49 -080027import IGnssMeasurement;
Anil Admal3a405c52018-11-14 09:35:14 -080028import IAGnss;
Anil Admalb02bcc12018-11-14 10:23:45 -080029import IAGnssRil;
Anil Admal704bc612019-03-21 18:45:30 +000030import IGnssBatching;
Yu-Han Yang9c6c20b2018-11-06 14:12:49 -080031
Anil Admal4d739e72018-11-14 12:38:57 -080032/**
33 * Represents the standard GNSS (Global Navigation Satellite System) interface.
34 *
35 * Due to the introduction of new GNSS HAL package android.hardware.gnss.visibility_control@1.0
36 * the interface @1.0::IGnssNi.hal and @1.0::IGnssNiCallback.hal are deprecated in this version
37 * and are not supported by the framework. The GNSS HAL implementation of this interface
38 * must return nullptr for the following @1.0::IGnss method.
Anil Admala3afa5c2019-05-08 18:18:19 -070039 * getExtensionGnssNi() generates (IGnssNi gnssNiIface);
Anil Admal4d739e72018-11-14 12:38:57 -080040 */
Yu-Han Yang9c6c20b2018-11-06 14:12:49 -080041interface IGnss extends @1.1::IGnss {
Anil Admal4e50a4c2018-12-19 15:22:13 -080042 /**
gomo1da4b5c2018-12-02 02:49:10 -080043 * Opens the interface and provides the callback routines to the implementation of this
44 * interface.
45 *
Anil Admala3afa5c2019-05-08 18:18:19 -070046 * The framework calls this method to instruct the GPS engine to prepare for serving requests
47 * from the framework. The GNSS HAL implementation must respond to all GNSS requests from the
48 * framework upon successful return from this method until cleanup() method is called to
49 * close this interface.
50 *
gomo1da4b5c2018-12-02 02:49:10 -080051 * @param callback Callback interface for IGnss.
52 *
53 * @return success Returns true on success.
54 */
55 setCallback_2_0(IGnssCallback callback) generates (bool success);
56
Yu-Han Yang9c6c20b2018-11-06 14:12:49 -080057 /**
Anil Admal4e50a4c2018-12-19 15:22:13 -080058 * This method returns the IGnssConfiguration interface.
59 *
60 * @return gnssConfigurationIface Handle to the IGnssConfiguration interface.
61 */
62 getExtensionGnssConfiguration_2_0() generates (IGnssConfiguration gnssConfigurationIface);
63
64 /**
Yu-Han Yang6999a0f2019-03-14 11:08:43 -070065 * This method returns the IGnssDebug interface.
66 *
67 * @return gnssDebugIface Handle to the IGnssDebug interface.
68 */
69 getExtensionGnssDebug_2_0() generates (IGnssDebug gnssDebugIface);
70
71 /**
Anil Admal3a405c52018-11-14 09:35:14 -080072 * This method returns the IAGnss Interface.
73 *
74 * The getExtensionAGnss() must return nullptr as the @1.0::IAGnss interface is
75 * deprecated.
76 *
77 * @return aGnssIface Handle to the IAGnss interface.
78 */
79 getExtensionAGnss_2_0() generates (IAGnss aGnssIface);
80
81 /**
Anil Admalb02bcc12018-11-14 10:23:45 -080082 * This method returns the IAGnssRil Interface.
83 *
84 * @return aGnssRilIface Handle to the IAGnssRil interface.
85 */
86 getExtensionAGnssRil_2_0() generates (IAGnssRil aGnssRilIface);
87
88 /**
Yu-Han Yang9c6c20b2018-11-06 14:12:49 -080089 * This method returns the IGnssMeasurement interface.
90 *
Anil Admala3afa5c2019-05-08 18:18:19 -070091 * Exactly one of getExtensionGnssMeasurement(), getExtensionGnssMeasurement_1_1(), and
92 * getExtensionGnssMeasurement_2_0() methods must return a non-null handle, and the other
93 * methods must return nullptr.
Yu-Han Yang9c6c20b2018-11-06 14:12:49 -080094 *
95 * @return gnssMeasurementIface Handle to the IGnssMeasurement interface.
96 */
97 getExtensionGnssMeasurement_2_0() generates (IGnssMeasurement gnssMeasurementIface);
gomo1da4b5c2018-12-02 02:49:10 -080098
99 /**
100 * This method returns the IMeasurementCorrections interface.
101 *
102 * @return measurementCorrectionsIface Handle to the IMeasurementCorrections interface.
103 */
Anil Admal4d739e72018-11-14 12:38:57 -0800104 getExtensionMeasurementCorrections()
gomo1da4b5c2018-12-02 02:49:10 -0800105 generates (IMeasurementCorrections measurementCorrectionsIface);
Anil Admal4d739e72018-11-14 12:38:57 -0800106
107 /**
108 * This method returns the IGnssVisibilityControl interface.
109 *
110 * @return visibilityControlIface Handle to the IGnssVisibilityControl interface.
111 */
112 getExtensionVisibilityControl() generates (IGnssVisibilityControl visibilityControlIface);
Pierre Fite-Georgel12ac2b52019-01-17 16:56:17 -0800113
114 /**
Anil Admal704bc612019-03-21 18:45:30 +0000115 * This method returns the IGnssBatching interface.
116 *
117 * @return batchingIface Handle to the IGnssBatching interface.
118 */
119 getExtensionGnssBatching_2_0() generates (IGnssBatching batchingIface);
120
121 /**
Pierre Fite-Georgel12ac2b52019-01-17 16:56:17 -0800122 * Injects current location from the best available location provider.
123 *
124 * Unlike injectLocation, this method may inject a recent GNSS location from the HAL
125 * implementation, if that is the best available location known to the framework.
126 *
127 * @param location Location information from the best available location provider.
128 *
129 * @return success Returns true if successful.
130 */
131 injectBestLocation_2_0(GnssLocation location) generates (bool success);
Anil Admal4d739e72018-11-14 12:38:57 -0800132};