Home | History | Annotate | Download | only in 1.0
      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