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 17 package android.hardware.gnss@1.0; 18 19 import IAGnss; 20 import IAGnssRil; 21 import IGnssBatching; 22 import IGnssCallback; 23 import IGnssConfiguration; 24 import IGnssDebug; 25 import IGnssMeasurement; 26 import IGnssNavigationMessage; 27 import IGnssGeofencing; 28 import IGnssNi; 29 import IGnssXtra; 30 31 /** Represents the standard GNSS (Global Navigation Satellite System) interface. */ 32 interface 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