Merge "Revert "Add GPS geofencing HAL.""
diff --git a/include/hardware/gps.h b/include/hardware/gps.h
index 0b604f2..69bfd50 100644
--- a/include/hardware/gps.h
+++ b/include/hardware/gps.h
@@ -103,8 +103,6 @@
 #define GPS_CAPABILITY_SINGLE_SHOT      0x0000008
 /** GPS supports on demand time injection */
 #define GPS_CAPABILITY_ON_DEMAND_TIME   0x0000010
-/** GPS supports Geofencing  */
-#define GPS_CAPABILITY_GEOFENCING       0x0000020
 
 /** Flags used to specify which aiding data to delete
     when calling delete_aiding_data(). */
@@ -230,12 +228,6 @@
  */
 #define AGPS_RIL_INTERFACE      "agps_ril"
 
-/**
- * Name for the GPS_Geofencing interface.
- */
-#define GPS_GEOFENCING_INTERFACE   "gps_geofencing"
-
-
 /** Represents a location. */
 typedef struct {
     /** set to sizeof(GpsLocation) */
@@ -681,201 +673,6 @@
     void (*update_network_availability) (int avaiable, const char* apn);
 } AGpsRilInterface;
 
-/**
- * GPS Geofence.
- *      There are 3 states associated with a Geofence: Inside, Outside, Unknown.
- * There are 3 transitions: ENTERED, EXITED, UNCERTAIN.
- *
- * An example state diagram with confidence level: 95% and Unknown time limit
- * set as 30 secs is shown below. (confidence level and Unknown time limit are
- * explained latter)
- *                         ____________________________
- *                        |       Unknown (30 secs)   |
- *                         """"""""""""""""""""""""""""
- *                            ^ |                  |  ^
- *                   UNCERTAIN| |ENTERED     EXITED|  |UNCERTAIN
- *                            | v                  v  |
- *                        ________    EXITED     _________
- *                       | Inside | -----------> | Outside |
- *                       |        | <----------- |         |
- *                        """"""""    ENTERED    """""""""
- *
- * Inside state: We are 95% confident that the user is inside the geofence.
- * Outside state: We are 95% confident that the user is outside the geofence
- * Unknown state: Rest of the time.
- *
- * The Unknown state is better explained with an example:
- *
- *                            __________
- *                           |         c|
- *                           |  ___     |    _______
- *                           |  |a|     |   |   b   |
- *                           |  """     |    """""""
- *                           |          |
- *                            """"""""""
- * In the diagram above, "a" and "b" are 2 geofences and "c" is the accuracy
- * circle reported by the GPS subsystem. Now with regard to "b", the system is
- * confident that the user is outside. But with regard to "a" is not confident
- * whether it is inside or outside the geofence. If the accuracy remains the
- * same for a sufficient period of time, the UNCERTAIN transition would be
- * triggered with the state set to Unknown. If the accuracy improves later, an
- * appropriate transition should be triggered.  This "sufficient period of time"
- * is defined by the parameter in the add_geofence_area API.
- *     In other words, Unknown state can be interpreted as a state in which the
- * GPS subsystem isn't confident enough that the user is either inside or
- * outside the Geofence. It moves to Unknown state only after the expiry of the
- * timeout.
- *
- * The geofence callback needs to be triggered for the ENTERED and EXITED
- * transitions, when the GPS system is confident that the user has entered
- * (Inside state) or exited (Outside state) the Geofence. A implementation
- * which uses a value of 95% as the confidence is recommended. The callback
- * should be triggered only for the transitions requested by the
- * add_geofence_area call.
- *
- * Even though the diagram and explanation talks about states and transitions,
- * the callee is only interested in the transistions. The states are mentioned
- * here for illustrative purposes.
- *
- * Startup Scenario: When the device boots up, if an application adds geofences,
- * and then we get an accurate GPS location fix, it needs to trigger the
- * appropriate (ENTERED or EXITED) transition for every Geofence it knows about.
- * By default, all the Geofences will be in the Unknown state.
- *
- * When the GPS system is unavailable, gps_geofence_status_callback should be
- * called to inform the upper layers of the same. Similarly, when it becomes
- * available the callback should be called. This is a global state while the
- * UNKNOWN transition described above is per geofence.
- *
- * An important aspect to note is that users of this API (framework), will use
- * other subsystems like wifi, sensors, cell to handle Unknown case and
- * hopefully provide a definitive state transition to the third party
- * application. GPS Geofence will just be a signal indicating what the GPS
- * subsystem knows about the Geofence.
- *
- */
-#define GPS_GEOFENCE_ENTERED     (1<<0L)
-#define GPS_GEOFENCE_EXITED      (1<<1L)
-#define GPS_GEOFENCE_UNCERTAIN   (1<<2L)
-
-#define GPS_GEOFENCE_UNAVAILABLE (1<<0L)
-#define GPS_GEOFENCE_AVAILABLE   (1<<1L)
-
-/**
- * The callback associated with the geofence.
- * Parameters:
- *      geofence_id - The id associated with the add_geofence_area.
- *      location    - The current GPS location.
- *      transition  - Can be one of GPS_GEOFENCE_ENTERED, GPS_GEOFENCE_EXITED,
- *                    GPS_GEOFENCE_UNCERTAIN.
- *      timestamp   - Timestamp when the transition was detected.
- *
- * The callback should only be called when the caller is interested in that
- * particular transition. For instance, if the caller is interested only in
- * ENTERED transition, then the callback should NOT be called with the EXITED
- * transition.
- *
- * IMPORTANT: If a transition is triggered resulting in this callback, the GPS
- * subsystem will wake up the application processor, if its in suspend state.
- */
-typedef void (*gps_geofence_transition_callback) (int32_t geofence_id,  GpsLocation* location,
-        int32_t transition, GpsUtcTime timestamp);
-
-/**
- * The callback associated with the availablity of the GPS system for geofencing
- * monitoring. If the GPS system determines that it cannot monitor geofences
- * because of lack of reliability or unavailability of the GPS signals, it will
- * call this callback with GPS_GEOFENCE_UNAVAILABLE parameter.
- *
- * Parameters:
- *  status - GPS_GEOFENCE_UNAVAILABLE or GPS_GEOFENCE_AVAILABLE.
- *  last_location - Last known location.
- */
-typedef void (*gps_geofence_status_callback) (int32_t status, GpsLocation* last_location);
-
-typedef struct {
-    gps_geofence_callback geofence_callback;
-    gps_create_thread create_thread_cb;
-} GpsGeofenceCallbacks;
-
-/** Extended interface for GPS_Geofencing support */
-typedef struct {
-   /** set to sizeof(GpsGeofencingInterface) */
-   size_t          size;
-
-   /**
-    * Opens the geofence interface and provides the callback routines
-    * to the implemenation of this interface.
-    */
-   void  (*init)( GpsGeoFenceCallbacks* callbacks );
-
-   /**
-    * Add a geofence area. This api currently supports circular geofences.
-    * Parameters:
-    *    geofence_id - The id for the geofence. If a geofence with this id
-            already exists, an error value (-1) should be returned.
-    *    latitude, longtitude, radius_meters - The lat, long and radius
-    *       (in meters) for the geofence
-    *    last_transition - The current state of the geofence. For example, if
-    *       the system already knows that the user is inside the geofence,
-    *       this will be set to GPS_GEOFENCE_ENTERED. In most cases, it
-    *       will be GPS_GEOFENCE_UNCERTAIN.
-    *    monitor_transition - Which transitions to monitor. Bitwise OR of
-    *       GPS_GEOFENCE_ENTERED, GPS_GEOFENCE_EXITED and
-    *       GPS_GEOFENCE_UNCERTAIN.
-    *    notification_responsiveness_ms - Defines the best-effort description
-    *       of how soon should the callback be called when the transition
-    *       associated with the Geofence is triggered. For instance, if set
-    *       to 1000 millseconds with GPS_GEOFENCE_ENTERED, the callback
-    *       should be called 1000 milliseconds within entering the geofence.
-    *       This parameter is defined in milliseconds.
-    *       NOTE: This is not to be confused with the rate that the GPS is
-    *       polled at. It is acceptable to dynamically vary the rate of
-    *       sampling the GPS for power-saving reasons; thus the rate of
-    *       sampling may be faster or slower than this.
-    *    unknown_timer_ms - The time limit after which the UNCERTAIN transition
-    *       should be triggered. This paramter is defined in milliseconds.
-    *       See above for a detailed explanation.
-    *    Return value: 0 on success, -1 on error.
-    */
-   int (*add_geofence_area) (int32_t geofence_id, double latitude,
-                                double longitude, double radius_meters,
-                                int last_transition, int monitor_transitions,
-                                int notification_responsiveness_ms,
-                                int unknown_timer_ms);
-
-   /**
-    * Pause monitoring a particular geofence.
-    * Parameters:
-    *   geofence_id - The id for the geofence.
-    *
-    * Return value: 0 on success, -1 on error.
-    */
-   int (*pause_geofence) (int32_t geofence_id);
-
-   /**
-    * Resume monitoring a particular geofence.
-    * Parameters:
-    *   geofence_id - The id for the geofence.
-    *   monitor_transitions - Which transitions to monitor. Bitwise OR of
-    *       GPS_GEOFENCE_ENTERED, GPS_GEOFENCE_EXITED and
-    *       GPS_GEOFENCE_UNCERTAIN.
-    *       This supersedes the value associated provided in the
-    *       add_geofence_area call.
-    *
-    * Return value: 0 on success, -1 on error.
-    *
-    */
-   int (*resume_geofence) (int32_t geofence_id, int monitor_transitions);
-
-   /**
-    * Remove a geofence area
-    * Parameter:
-    *   geofence_id - The id for the geofence.
-    * Return value: 0 on success, -1 on error.
-    */
-   int (*remove_geofence_area) (int32_t geofence_id);
-} GpsGeofencingInterface;
 __END_DECLS
 
 #endif /* ANDROID_INCLUDE_HARDWARE_GPS_H */