diff options
author | ghepeu <ghepeu@gmail.com> | 2013-07-14 21:01:49 +0200 |
---|---|---|
committer | Gerrit Code Review <gerrit@cyanogenmod.org> | 2013-07-23 18:18:56 +0000 |
commit | c9df086ec700ca5328a27405c0d70a0004cedd2a (patch) | |
tree | 947a821187c945854ea6b9d7bf36f2da9af46748 | |
parent | 3307cd4dbaf8dd28f543336b7094be690eade0a2 (diff) | |
download | frameworks_base-c9df086ec700ca5328a27405c0d70a0004cedd2a.zip frameworks_base-c9df086ec700ca5328a27405c0d70a0004cedd2a.tar.gz frameworks_base-c9df086ec700ca5328a27405c0d70a0004cedd2a.tar.bz2 |
Add support for Samsung extended AGPS
The AGPS implementation in the GPS chipset used in some Samsung devices
(i9100, i9300) can make use of the Psc field. Adapt the relevant
functions hiding the changes incompatible with other devices under the
AGPS_USE_PSC #define.
Credit to Qaweck from xda-developers forum for finding the meaning
of the field.
Change-Id: Ie4691c79ca379a1f5c0a87500c1b06b56ae7ac0d
-rw-r--r-- | services/java/com/android/server/location/GpsLocationProvider.java | 4 | ||||
-rw-r--r-- | services/jni/com_android_server_location_GpsLocationProvider.cpp | 8 |
2 files changed, 8 insertions, 4 deletions
diff --git a/services/java/com/android/server/location/GpsLocationProvider.java b/services/java/com/android/server/location/GpsLocationProvider.java index 22c52f4..cba2db2 100644 --- a/services/java/com/android/server/location/GpsLocationProvider.java +++ b/services/java/com/android/server/location/GpsLocationProvider.java @@ -1471,7 +1471,7 @@ public class GpsLocationProvider implements LocationProviderInterface { type = AGPS_REF_LOCATION_TYPE_GSM_CELLID; } native_agps_set_ref_location_cellid(type, mcc, mnc, - gsm_cell.getLac(), gsm_cell.getCid()); + gsm_cell.getLac(), gsm_cell.getPsc(), gsm_cell.getCid()); } else { Log.e(TAG,"Error getting cell location info."); } @@ -1642,7 +1642,7 @@ public class GpsLocationProvider implements LocationProviderInterface { // AGPS ril suport private native void native_agps_set_ref_location_cellid(int type, int mcc, int mnc, - int lac, int cid); + int lac, int psc, int cid); private native void native_agps_set_id(int type, String setid); private native void native_update_network_state(boolean connected, int type, diff --git a/services/jni/com_android_server_location_GpsLocationProvider.cpp b/services/jni/com_android_server_location_GpsLocationProvider.cpp index f2ec1b3..4285ddf 100644 --- a/services/jni/com_android_server_location_GpsLocationProvider.cpp +++ b/services/jni/com_android_server_location_GpsLocationProvider.cpp @@ -375,7 +375,7 @@ static jint android_location_GpsLocationProvider_read_sv_status(JNIEnv* env, job } static void android_location_GpsLocationProvider_agps_set_reference_location_cellid(JNIEnv* env, - jobject obj, jint type, jint mcc, jint mnc, jint lac, jint cid) + jobject obj, jint type, jint mcc, jint mnc, jint lac, jint psc, jint cid) { AGpsRefLocation location; @@ -388,9 +388,13 @@ static void android_location_GpsLocationProvider_agps_set_reference_location_cel case AGPS_REF_LOCATION_TYPE_GSM_CELLID: case AGPS_REF_LOCATION_TYPE_UMTS_CELLID: location.type = type; + location.u.cellID.type = type; location.u.cellID.mcc = mcc; location.u.cellID.mnc = mnc; location.u.cellID.lac = lac; +#ifdef AGPS_USE_PSC + location.u.cellID.psc = psc; +#endif location.u.cellID.cid = cid; break; default: @@ -601,7 +605,7 @@ static JNINativeMethod sMethods[] = { {"native_agps_data_conn_closed", "()V", (void*)android_location_GpsLocationProvider_agps_data_conn_closed}, {"native_agps_data_conn_failed", "()V", (void*)android_location_GpsLocationProvider_agps_data_conn_failed}, {"native_agps_set_id","(ILjava/lang/String;)V",(void*)android_location_GpsLocationProvider_agps_set_id}, - {"native_agps_set_ref_location_cellid","(IIIII)V",(void*)android_location_GpsLocationProvider_agps_set_reference_location_cellid}, + {"native_agps_set_ref_location_cellid","(IIIIII)V",(void*)android_location_GpsLocationProvider_agps_set_reference_location_cellid}, {"native_set_agps_server", "(ILjava/lang/String;I)V", (void*)android_location_GpsLocationProvider_set_agps_server}, {"native_send_ni_response", "(II)V", (void*)android_location_GpsLocationProvider_send_ni_response}, {"native_agps_ni_message", "([BI)V", (void *)android_location_GpsLocationProvider_agps_send_ni_message}, |