blob: ba757d73d6e4e2a7255ada22607c4806a9ae455c [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;
Yu-Han Yang9c6c20b2018-11-06 14:12:49 -080030
Anil Admal4d739e72018-11-14 12:38:57 -080031/**
32 * Represents the standard GNSS (Global Navigation Satellite System) interface.
33 *
34 * Due to the introduction of new GNSS HAL package android.hardware.gnss.visibility_control@1.0
35 * the interface @1.0::IGnssNi.hal and @1.0::IGnssNiCallback.hal are deprecated in this version
36 * and are not supported by the framework. The GNSS HAL implementation of this interface
37 * must return nullptr for the following @1.0::IGnss method.
38 * getExtensionGnssNi() generates (IGnssNi gnssNiIface);
39 */
Yu-Han Yang9c6c20b2018-11-06 14:12:49 -080040interface IGnss extends @1.1::IGnss {
Anil Admal4e50a4c2018-12-19 15:22:13 -080041 /**
gomo1da4b5c2018-12-02 02:49:10 -080042 * Opens the interface and provides the callback routines to the implementation of this
43 * interface.
44 *
45 * @param callback Callback interface for IGnss.
46 *
47 * @return success Returns true on success.
48 */
49 setCallback_2_0(IGnssCallback callback) generates (bool success);
50
Yu-Han Yang9c6c20b2018-11-06 14:12:49 -080051 /**
Anil Admal4e50a4c2018-12-19 15:22:13 -080052 * This method returns the IGnssConfiguration interface.
53 *
54 * @return gnssConfigurationIface Handle to the IGnssConfiguration interface.
55 */
56 getExtensionGnssConfiguration_2_0() generates (IGnssConfiguration gnssConfigurationIface);
57
58 /**
Yu-Han Yang6999a0f2019-03-14 11:08:43 -070059 * This method returns the IGnssDebug interface.
60 *
61 * @return gnssDebugIface Handle to the IGnssDebug interface.
62 */
63 getExtensionGnssDebug_2_0() generates (IGnssDebug gnssDebugIface);
64
65 /**
Anil Admal3a405c52018-11-14 09:35:14 -080066 * This method returns the IAGnss Interface.
67 *
68 * The getExtensionAGnss() must return nullptr as the @1.0::IAGnss interface is
69 * deprecated.
70 *
71 * @return aGnssIface Handle to the IAGnss interface.
72 */
73 getExtensionAGnss_2_0() generates (IAGnss aGnssIface);
74
75 /**
Anil Admalb02bcc12018-11-14 10:23:45 -080076 * This method returns the IAGnssRil Interface.
77 *
78 * @return aGnssRilIface Handle to the IAGnssRil interface.
79 */
80 getExtensionAGnssRil_2_0() generates (IAGnssRil aGnssRilIface);
81
82 /**
Yu-Han Yang9c6c20b2018-11-06 14:12:49 -080083 * This method returns the IGnssMeasurement interface.
84 *
85 * Exactly one of getExtensionGnssMeasurement_1_1() and getExtensionGnssMeasurement_2_0() must
86 * return a non-null handle, and the other method must return nullptr.
87 *
88 * @return gnssMeasurementIface Handle to the IGnssMeasurement interface.
89 */
90 getExtensionGnssMeasurement_2_0() generates (IGnssMeasurement gnssMeasurementIface);
gomo1da4b5c2018-12-02 02:49:10 -080091
92 /**
93 * This method returns the IMeasurementCorrections interface.
94 *
95 * @return measurementCorrectionsIface Handle to the IMeasurementCorrections interface.
96 */
Anil Admal4d739e72018-11-14 12:38:57 -080097 getExtensionMeasurementCorrections()
gomo1da4b5c2018-12-02 02:49:10 -080098 generates (IMeasurementCorrections measurementCorrectionsIface);
Anil Admal4d739e72018-11-14 12:38:57 -080099
100 /**
101 * This method returns the IGnssVisibilityControl interface.
102 *
103 * @return visibilityControlIface Handle to the IGnssVisibilityControl interface.
104 */
105 getExtensionVisibilityControl() generates (IGnssVisibilityControl visibilityControlIface);
Pierre Fite-Georgel12ac2b52019-01-17 16:56:17 -0800106
107 /**
108 * Injects current location from the best available location provider.
109 *
110 * Unlike injectLocation, this method may inject a recent GNSS location from the HAL
111 * implementation, if that is the best available location known to the framework.
112 *
113 * @param location Location information from the best available location provider.
114 *
115 * @return success Returns true if successful.
116 */
117 injectBestLocation_2_0(GnssLocation location) generates (bool success);
Anil Admal4d739e72018-11-14 12:38:57 -0800118};