summaryrefslogtreecommitdiffstats
path: root/services/jni
diff options
context:
space:
mode:
authorSteve Kondik <shade@chemlab.org>2012-12-06 11:28:15 -0800
committerSteve Kondik <shade@chemlab.org>2012-12-07 11:54:36 -0800
commit0e4cc87f7716644b8659978efa985d11fa29a391 (patch)
tree62b0c7e30880164dfecacc5a3b240a5bf0773525 /services/jni
parent9df1aa5fb865dc8d06795108d3dc8c1371f17b3a (diff)
downloadframeworks_base-0e4cc87f7716644b8659978efa985d11fa29a391.zip
frameworks_base-0e4cc87f7716644b8659978efa985d11fa29a391.tar.gz
frameworks_base-0e4cc87f7716644b8659978efa985d11fa29a391.tar.bz2
gps: Add support for Qualcomm GPS hardware
* This ABI is changed, but we aren't using the new features in MR1. * Add a little translation for the changed fields and methods. Change-Id: Ieecc2235b42f64fc69d4651855f4e9edfe7d738d
Diffstat (limited to 'services/jni')
-rw-r--r--services/jni/Android.mk8
-rwxr-xr-xservices/jni/com_android_server_location_GpsLocationProvider.cpp16
2 files changed, 24 insertions, 0 deletions
diff --git a/services/jni/Android.mk b/services/jni/Android.mk
index d097a93..c3b6539 100644
--- a/services/jni/Android.mk
+++ b/services/jni/Android.mk
@@ -44,6 +44,14 @@ LOCAL_SHARED_LIBRARIES := \
libusbhost \
libsuspend
+ifeq ($(BOARD_HAVE_NEW_QC_GPS),true)
+ LOCAL_CFLAGS += -DNEW_QC_GPS
+endif
+
+ifeq ($(BOARD_HAVE_SAMSUNG_GPS),true)
+ LOCAL_CFLAGS += -DSAMSUNG_GPS
+endif
+
ifeq ($(WITH_MALLOC_LEAK_CHECK),true)
LOCAL_CFLAGS += -DMALLOC_LEAK_CHECK
endif
diff --git a/services/jni/com_android_server_location_GpsLocationProvider.cpp b/services/jni/com_android_server_location_GpsLocationProvider.cpp
index 50bd46e..f2ec1b3 100755
--- a/services/jni/com_android_server_location_GpsLocationProvider.cpp
+++ b/services/jni/com_android_server_location_GpsLocationProvider.cpp
@@ -167,7 +167,11 @@ static void agps_status_callback(AGpsStatus* agps_status)
uint32_t ipaddr;
// ipaddr field was not included in original AGpsStatus
if (agps_status->size >= sizeof(AGpsStatus))
+#ifdef NEW_QC_GPS
+ ipaddr = agps_status->ipv4_addr;
+#else
ipaddr = agps_status->ipaddr;
+#endif
else
ipaddr = 0xFFFFFFFF;
env->CallVoidMethod(mCallbacksObj, method_reportAGpsStatus,
@@ -483,7 +487,11 @@ static void android_location_GpsLocationProvider_agps_data_conn_open(JNIEnv* env
return;
}
const char *apnStr = env->GetStringUTFChars(apn, NULL);
+#ifdef NEW_QC_GPS
+ sAGpsInterface->data_conn_open(0, apnStr, 0);
+#else
sAGpsInterface->data_conn_open(apnStr);
+#endif
env->ReleaseStringUTFChars(apn, apnStr);
}
@@ -493,7 +501,11 @@ static void android_location_GpsLocationProvider_agps_data_conn_closed(JNIEnv* e
ALOGE("no AGPS interface in agps_data_conn_open");
return;
}
+#ifdef NEW_QC_GPS
+ sAGpsInterface->data_conn_closed(0);
+#else
sAGpsInterface->data_conn_closed();
+#endif
}
static void android_location_GpsLocationProvider_agps_data_conn_failed(JNIEnv* env, jobject obj)
@@ -502,7 +514,11 @@ static void android_location_GpsLocationProvider_agps_data_conn_failed(JNIEnv* e
ALOGE("no AGPS interface in agps_data_conn_open");
return;
}
+#ifdef NEW_QC_GPS
+ sAGpsInterface->data_conn_failed(0);
+#else
sAGpsInterface->data_conn_failed();
+#endif
}
static void android_location_GpsLocationProvider_set_agps_server(JNIEnv* env, jobject obj,