summaryrefslogtreecommitdiffstats
path: root/include/hardware/gps.h
diff options
context:
space:
mode:
authorMike Lockwood <lockwood@android.com>2010-04-14 15:36:34 -0400
committerMike Lockwood <lockwood@android.com>2010-04-14 15:38:22 -0400
commitb15879a589bb5ce350869e1a735840679e4b2aaa (patch)
treebe64c18c41a9f459562800572f32792a2a15f648 /include/hardware/gps.h
parentd20bbae343927bbf428243b00ecfcae7e30ef97b (diff)
downloadhardware_libhardware-b15879a589bb5ce350869e1a735840679e4b2aaa.zip
hardware_libhardware-b15879a589bb5ce350869e1a735840679e4b2aaa.tar.gz
hardware_libhardware-b15879a589bb5ce350869e1a735840679e4b2aaa.tar.bz2
GPS API enhancements:
Add set_capabilities callback to inform the framework of the engine's capabilities. Add more parameters to set_position_mode Change-Id: I75572979c031ffc0d915bb9e8aebce09d4982336 Signed-off-by: Mike Lockwood <lockwood@android.com>
Diffstat (limited to 'include/hardware/gps.h')
-rw-r--r--include/hardware/gps.h38
1 files changed, 34 insertions, 4 deletions
diff --git a/include/hardware/gps.h b/include/hardware/gps.h
index 750e6ef..f2f6dcf 100644
--- a/include/hardware/gps.h
+++ b/include/hardware/gps.h
@@ -37,7 +37,7 @@ typedef int64_t GpsUtcTime;
/** Maximum number of SVs for gps_sv_status_callback(). */
#define GPS_MAX_SVS 32
-/** Requested mode for GPS operation. */
+/** Requested operational mode for GPS operation. */
typedef uint32_t GpsPositionMode;
// IMPORTANT: Note that the following values must match
// constants in GpsLocationProvider.java.
@@ -48,6 +48,15 @@ typedef uint32_t GpsPositionMode;
/** AGPS MS-Assisted mode. */
#define GPS_POSITION_MODE_MS_ASSISTED 2
+/** Requested recurrence mode for GPS operation. */
+typedef uint32_t GpsPositionRecurrence;
+// IMPORTANT: Note that the following values must match
+// constants in GpsLocationProvider.java.
+/** Receive GPS fixes on a recurring basis at a specified period. */
+#define GPS_POSITION_RECURRENCE_PERIODIC 0
+/** Request a single shot GPS fix. */
+#define GPS_POSITION_RECURRENCE_SINGLE 1
+
/** GPS status event values. */
typedef uint16_t GpsStatusValue;
// IMPORTANT: Note that the following values must match
@@ -78,6 +87,20 @@ typedef uint16_t GpsLocationFlags;
/** GpsLocation has valid accuracy. */
#define GPS_LOCATION_HAS_ACCURACY 0x0010
+/** Flags for the gps_set_capabilities callback. */
+
+/** GPS HAL schedules fixes for GPS_POSITION_RECURRENCE_PERIODIC mode.
+ If this is not set, then the framework will use 1000ms for min_interval
+ and will start and call start() and stop() to schedule the GPS.
+ */
+#define GPS_CAPABILITY_SCHEDULING 0x0000001
+/** GPS supports MS-Based AGPS mode */
+#define GPS_CAPABILITY_MSB 0x0000002
+/** GPS supports MS-Assisted AGPS mode */
+#define GPS_CAPABILITY_MSA 0x0000004
+/** GPS supports single-shot fixes */
+#define GPS_CAPABILITY_SINGLE_SHOT 0x0000008
+
/** Flags used to specify which aiding data to delete
when calling delete_aiding_data(). */
typedef uint16_t GpsAidingData;
@@ -263,6 +286,10 @@ typedef void (* gps_sv_status_callback)(GpsSvStatus* sv_info);
/** Callback for reporting NMEA sentences. */
typedef void (* gps_nmea_callback)(GpsUtcTime timestamp, const char* nmea, int length);
+/** Callback to inform framework of the GPS engine's capabilities.
+ capability parameter is a bit field of GPS_CAPABILITY_* flags */
+typedef void (* gps_set_capabilities)(uint32_t capabilities);
+
/** Callback utility for acquiring the GPS wakelock.
This can be used to prevent the CPU from suspending while handling GPS events. */
typedef void (* gps_acquire_wakelock)();
@@ -278,6 +305,7 @@ typedef struct {
gps_status_callback status_cb;
gps_sv_status_callback sv_status_cb;
gps_nmea_callback nmea_cb;
+ gps_set_capabilities set_capabilities_cb;
gps_acquire_wakelock acquire_wakelock_cb;
gps_release_wakelock release_wakelock_cb;
} GpsCallbacks;
@@ -321,10 +349,12 @@ typedef struct {
void (*delete_aiding_data)(GpsAidingData flags);
/**
- * fix_frequency represents the time between fixes in seconds.
- * Set fix_frequency to zero for a single-shot fix.
+ * min_interval represents the time between fixes in milliseconds.
+ * preferred_accuracy represents the requested fix accuracy in meters.
+ * preferred_time represents the requested time to first fix in milliseconds.
*/
- int (*set_position_mode)(GpsPositionMode mode, int fix_frequency);
+ int (*set_position_mode)(GpsPositionMode mode, GpsPositionRecurrence recurrence,
+ uint32_t min_interval, uint32_t preferred_accuracy, uint32_t preferred_time);
/** Get a pointer to extension information. */
const void* (*get_extension)(const char* name);