• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (C) 2016 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@1.0;
18
19import IAGnss;
20import IAGnssRil;
21import IGnssBatching;
22import IGnssCallback;
23import IGnssConfiguration;
24import IGnssDebug;
25import IGnssMeasurement;
26import IGnssNavigationMessage;
27import IGnssGeofencing;
28import IGnssNi;
29import IGnssXtra;
30
31/** Represents the standard GNSS (Global Navigation Satellite System) interface. */
32interface IGnss {
33    /** Requested operational mode for GNSS operation. */
34    @export(name="", value_prefix="GPS_POSITION_MODE_")
35    enum GnssPositionMode : uint8_t {
36        /** Mode for running GNSS standalone (no assistance). */
37        STANDALONE  = 0,
38        /** AGNSS MS-Based mode. */
39        MS_BASED    = 1,
40        /**
41         * AGNSS MS-Assisted mode. This mode is not maintained by the platform anymore.
42         * It is strongly recommended to use MS_BASED instead.
43         */
44        MS_ASSISTED = 2,
45    };
46
47    /** Requested recurrence mode for GNSS operation. */
48    @export(name="", value_prefix="GPS_POSITION_")
49    enum GnssPositionRecurrence : uint32_t {
50        /** Receive GNSS fixes on a recurring basis at a specified period. */
51        RECURRENCE_PERIODIC  = 0,
52        /** Request a single shot GNSS fix. */
53        RECURRENCE_SINGLE    = 1
54    };
55
56    /**
57     * Flags used to specify which aiding data to delete when calling
58     * deleteAidingData().
59     */
60    @export(name="", value_prefix="GPS_")
61    enum GnssAidingData : uint16_t {
62        DELETE_EPHEMERIS    = 0x0001,
63        DELETE_ALMANAC      = 0x0002,
64        DELETE_POSITION     = 0x0004,
65        DELETE_TIME         = 0x0008,
66        DELETE_IONO         = 0x0010,
67        DELETE_UTC          = 0x0020,
68        DELETE_HEALTH       = 0x0040,
69        DELETE_SVDIR        = 0x0080,
70        DELETE_SVSTEER      = 0x0100,
71        DELETE_SADATA       = 0x0200,
72        DELETE_RTI          = 0x0400,
73        DELETE_CELLDB_INFO  = 0x8000,
74        DELETE_ALL          = 0xFFFF
75    };
76
77    /**
78     * Opens the interface and provides the callback routines
79     * to the implementation of this interface.
80     *
81     * @param callback Callback interface for IGnss.
82     *
83     * @return success Returns true on success.
84     */
85    setCallback(IGnssCallback callback) generates (bool success);
86
87    /**
88     * Starts a location output stream using the IGnssCallback
89     * gnssLocationCb(), following the settings from the most recent call to
90     * setPositionMode().
91     *
92     * This output must operate independently of any GNSS location batching
93     * operations, see the IGnssBatching.hal for details.
94     *
95     * @return success Returns true on success.
96     */
97    start() generates (bool success);
98
99    /**
100     * Stops the location output stream.
101     *
102     * @return success Returns true on success.
103     */
104    stop() generates (bool success);
105
106    /**
107     * Closes the interface.
108     */
109    cleanup();
110
111    /**
112     * Injects the current time.
113     *
114     * @param timeMs This is the UTC time received from the NTP server, its value
115     * is given in milliseconds since January 1, 1970.
116     * @param timeReferenceMs The corresponding value of
117     * SystemClock.elapsedRealtime() from the device when the NTP response was
118     * received in milliseconds.
119     * @param uncertaintyMs Uncertainty associated with the value represented by
120     * time. Represented in milliseconds.
121     *
122     * @return success Returns true if the operation is successful.
123     */
124    injectTime(GnssUtcTime timeMs, int64_t timeReferenceMs, int32_t uncertaintyMs)
125        generates (bool success);
126
127    /**
128     * Injects current location from another location provider (typically cell
129     * ID).
130     *
131     * @param latitudeDegrees Measured in Degrees.
132     * @param longitudeDegrees Measured in Degrees.
133     * @param accuracyMeters Measured in meters.
134     *
135     * @return success Returns true if successful.
136     */
137    injectLocation(double latitudeDegrees, double longitudeDegrees, float accuracyMeters)
138        generates (bool success);
139
140    /**
141     * Specifies that the next call to start will not use the
142     * information defined in the flags. GnssAidingData value of DELETE_ALL is
143     * passed for a cold start.
144     *
145     * @param aidingDataFlags Flags specifying the aiding data to be deleted.
146     */
147    deleteAidingData(GnssAidingData aidingDataFlags);
148
149    /**
150     * Sets the GnssPositionMode parameter,its associated recurrence value,
151     * the time between fixes,requested fix accuracy and time to first fix.
152     *
153     * @param mode  Parameter must be one of MS_BASED or STANDALONE.
154     * It is allowed by the platform (and it is recommended) to fallback to
155     * MS_BASED if MS_ASSISTED is passed in, and MS_BASED is supported.
156     * @recurrence GNSS postion recurrence value, either periodic or single.
157     * @param minIntervalMs Represents the time between fixes in milliseconds.
158     * @param preferredAccuracyMeters Represents the requested fix accuracy in meters.
159     * @param preferredTimeMs Represents the requested time to first fix in milliseconds.
160
161     * @return success Returns true if successful.
162     */
163    setPositionMode(GnssPositionMode mode, GnssPositionRecurrence recurrence,
164                    uint32_t minIntervalMs, uint32_t preferredAccuracyMeters,
165                    uint32_t preferredTimeMs)
166        generates (bool success);
167
168    /**
169     * This method returns the IAGnssRil Interface.
170     *
171     * @return aGnssRilIface Handle to the IAGnssRil interface.
172     */
173    getExtensionAGnssRil() generates (IAGnssRil aGnssRilIface);
174
175    /**
176     * This method returns the IGnssGeofencing Interface.
177     *
178     * @return gnssGeofencingIface Handle to the IGnssGeofencing interface.
179     */
180    getExtensionGnssGeofencing() generates(IGnssGeofencing gnssGeofencingIface);
181
182    /**
183     * This method returns the IAGnss Interface.
184     *
185     * @return aGnssIface Handle to the IAGnss interface.
186     */
187    getExtensionAGnss() generates (IAGnss aGnssIface);
188
189    /**
190     * This method returns the IGnssNi interface.
191     *
192     * @return gnssNiIface Handle to the IGnssNi interface.
193     */
194    getExtensionGnssNi() generates (IGnssNi gnssNiIface);
195
196    /**
197     * This method returns the IGnssMeasurement interface.
198     *
199     * @return gnssMeasurementIface Handle to the IGnssMeasurement interface.
200     */
201    getExtensionGnssMeasurement() generates (IGnssMeasurement gnssMeasurementIface);
202
203    /**
204     * This method returns the IGnssNavigationMessage interface.
205     *
206     * @return gnssNavigationIface gnssNavigationIface to the IGnssNavigationMessage interface.
207     */
208    getExtensionGnssNavigationMessage() generates (IGnssNavigationMessage gnssNavigationIface);
209
210    /**
211     * This method returns the IGnssXtra interface.
212     *
213     * @return xtraIface Handle to the IGnssXtra interface.
214     */
215    getExtensionXtra() generates (IGnssXtra xtraIface);
216
217    /**
218     * This method returns the IGnssConfiguration interface.
219     *
220     * @return gnssConfigIface Handle to the IGnssConfiguration interface.
221     */
222    getExtensionGnssConfiguration() generates (IGnssConfiguration gnssConfigIface);
223
224    /**
225     * This method returns the IGnssDebug interface.
226     *
227     * @return debugIface Handle to the IGnssDebug interface.
228     */
229    getExtensionGnssDebug() generates (IGnssDebug debugIface);
230
231    /**
232     * This method returns the IGnssBatching interface.
233     *
234     * @return batchingIface Handle to the IGnssBatching interface.
235     */
236    getExtensionGnssBatching() generates (IGnssBatching batchingIface);
237};
238