Loading services/java/com/android/server/location/GpsLocationProvider.java +20 −1 Original line number Diff line number Diff line Loading @@ -253,6 +253,7 @@ public class GpsLocationProvider implements LocationProviderInterface { private String mAGpsApn; private int mAGpsDataConnectionState; private int mAGpsDataConnectionIpAddr; private final ConnectivityManager mConnMgr; private final GpsNetInitiatedHandler mNIHandler; Loading Loading @@ -503,6 +504,14 @@ public class GpsLocationProvider implements LocationProviderInterface { apnName = "dummy-apn"; } mAGpsApn = apnName; if (DEBUG) Log.d(TAG, "mAGpsDataConnectionIpAddr " + mAGpsDataConnectionIpAddr); if (mAGpsDataConnectionIpAddr != 0xffffffff) { boolean route_result; if (DEBUG) Log.d(TAG, "call requestRouteToHost"); route_result = mConnMgr.requestRouteToHost(ConnectivityManager.TYPE_MOBILE_SUPL, mAGpsDataConnectionIpAddr); if (route_result == false) Log.d(TAG, "call requestRouteToHost failed"); } if (DEBUG) Log.d(TAG, "call native_agps_data_conn_open"); native_agps_data_conn_open(apnName); mAGpsDataConnectionState = AGPS_DATA_CONNECTION_OPEN; Loading Loading @@ -1230,7 +1239,7 @@ public class GpsLocationProvider implements LocationProviderInterface { /** * called from native code to update AGPS status */ private void reportAGpsStatus(int type, int status) { private void reportAGpsStatus(int type, int status, int ipaddr) { switch (status) { case GPS_REQUEST_AGPS_DATA_CONN: if (DEBUG) Log.d(TAG, "GPS_REQUEST_AGPS_DATA_CONN"); Loading @@ -1239,9 +1248,19 @@ public class GpsLocationProvider implements LocationProviderInterface { mAGpsDataConnectionState = AGPS_DATA_CONNECTION_OPENING; int result = mConnMgr.startUsingNetworkFeature( ConnectivityManager.TYPE_MOBILE, Phone.FEATURE_ENABLE_SUPL); mAGpsDataConnectionIpAddr = ipaddr; if (result == Phone.APN_ALREADY_ACTIVE) { if (DEBUG) Log.d(TAG, "Phone.APN_ALREADY_ACTIVE"); if (mAGpsApn != null) { Log.d(TAG, "mAGpsDataConnectionIpAddr " + mAGpsDataConnectionIpAddr); if (mAGpsDataConnectionIpAddr != 0xffffffff) { boolean route_result; if (DEBUG) Log.d(TAG, "call requestRouteToHost"); route_result = mConnMgr.requestRouteToHost( ConnectivityManager.TYPE_MOBILE_SUPL, mAGpsDataConnectionIpAddr); if (route_result == false) Log.d(TAG, "call requestRouteToHost failed"); } native_agps_data_conn_open(mAGpsApn); mAGpsDataConnectionState = AGPS_DATA_CONNECTION_OPEN; } else { Loading services/jni/com_android_server_location_GpsLocationProvider.cpp +9 −2 Original line number Diff line number Diff line Loading @@ -154,8 +154,15 @@ GpsXtraCallbacks sGpsXtraCallbacks = { static void agps_status_callback(AGpsStatus* agps_status) { JNIEnv* env = AndroidRuntime::getJNIEnv(); uint32_t ipaddr; // ipaddr field was not included in original AGpsStatus if (agps_status->size >= sizeof(AGpsStatus)) ipaddr = agps_status->ipaddr; else ipaddr = 0xFFFFFFFF; env->CallVoidMethod(mCallbacksObj, method_reportAGpsStatus, agps_status->type, agps_status->status); agps_status->type, agps_status->status, ipaddr); checkAndClearExceptionFromCallback(env, __FUNCTION__); } Loading Loading @@ -224,7 +231,7 @@ static void android_location_GpsLocationProvider_class_init_native(JNIEnv* env, method_reportLocation = env->GetMethodID(clazz, "reportLocation", "(IDDDFFFJ)V"); method_reportStatus = env->GetMethodID(clazz, "reportStatus", "(I)V"); method_reportSvStatus = env->GetMethodID(clazz, "reportSvStatus", "()V"); method_reportAGpsStatus = env->GetMethodID(clazz, "reportAGpsStatus", "(II)V"); method_reportAGpsStatus = env->GetMethodID(clazz, "reportAGpsStatus", "(III)V"); method_reportNmea = env->GetMethodID(clazz, "reportNmea", "(J)V"); method_setEngineCapabilities = env->GetMethodID(clazz, "setEngineCapabilities", "(I)V"); method_xtraDownloadRequest = env->GetMethodID(clazz, "xtraDownloadRequest", "()V"); Loading Loading
services/java/com/android/server/location/GpsLocationProvider.java +20 −1 Original line number Diff line number Diff line Loading @@ -253,6 +253,7 @@ public class GpsLocationProvider implements LocationProviderInterface { private String mAGpsApn; private int mAGpsDataConnectionState; private int mAGpsDataConnectionIpAddr; private final ConnectivityManager mConnMgr; private final GpsNetInitiatedHandler mNIHandler; Loading Loading @@ -503,6 +504,14 @@ public class GpsLocationProvider implements LocationProviderInterface { apnName = "dummy-apn"; } mAGpsApn = apnName; if (DEBUG) Log.d(TAG, "mAGpsDataConnectionIpAddr " + mAGpsDataConnectionIpAddr); if (mAGpsDataConnectionIpAddr != 0xffffffff) { boolean route_result; if (DEBUG) Log.d(TAG, "call requestRouteToHost"); route_result = mConnMgr.requestRouteToHost(ConnectivityManager.TYPE_MOBILE_SUPL, mAGpsDataConnectionIpAddr); if (route_result == false) Log.d(TAG, "call requestRouteToHost failed"); } if (DEBUG) Log.d(TAG, "call native_agps_data_conn_open"); native_agps_data_conn_open(apnName); mAGpsDataConnectionState = AGPS_DATA_CONNECTION_OPEN; Loading Loading @@ -1230,7 +1239,7 @@ public class GpsLocationProvider implements LocationProviderInterface { /** * called from native code to update AGPS status */ private void reportAGpsStatus(int type, int status) { private void reportAGpsStatus(int type, int status, int ipaddr) { switch (status) { case GPS_REQUEST_AGPS_DATA_CONN: if (DEBUG) Log.d(TAG, "GPS_REQUEST_AGPS_DATA_CONN"); Loading @@ -1239,9 +1248,19 @@ public class GpsLocationProvider implements LocationProviderInterface { mAGpsDataConnectionState = AGPS_DATA_CONNECTION_OPENING; int result = mConnMgr.startUsingNetworkFeature( ConnectivityManager.TYPE_MOBILE, Phone.FEATURE_ENABLE_SUPL); mAGpsDataConnectionIpAddr = ipaddr; if (result == Phone.APN_ALREADY_ACTIVE) { if (DEBUG) Log.d(TAG, "Phone.APN_ALREADY_ACTIVE"); if (mAGpsApn != null) { Log.d(TAG, "mAGpsDataConnectionIpAddr " + mAGpsDataConnectionIpAddr); if (mAGpsDataConnectionIpAddr != 0xffffffff) { boolean route_result; if (DEBUG) Log.d(TAG, "call requestRouteToHost"); route_result = mConnMgr.requestRouteToHost( ConnectivityManager.TYPE_MOBILE_SUPL, mAGpsDataConnectionIpAddr); if (route_result == false) Log.d(TAG, "call requestRouteToHost failed"); } native_agps_data_conn_open(mAGpsApn); mAGpsDataConnectionState = AGPS_DATA_CONNECTION_OPEN; } else { Loading
services/jni/com_android_server_location_GpsLocationProvider.cpp +9 −2 Original line number Diff line number Diff line Loading @@ -154,8 +154,15 @@ GpsXtraCallbacks sGpsXtraCallbacks = { static void agps_status_callback(AGpsStatus* agps_status) { JNIEnv* env = AndroidRuntime::getJNIEnv(); uint32_t ipaddr; // ipaddr field was not included in original AGpsStatus if (agps_status->size >= sizeof(AGpsStatus)) ipaddr = agps_status->ipaddr; else ipaddr = 0xFFFFFFFF; env->CallVoidMethod(mCallbacksObj, method_reportAGpsStatus, agps_status->type, agps_status->status); agps_status->type, agps_status->status, ipaddr); checkAndClearExceptionFromCallback(env, __FUNCTION__); } Loading Loading @@ -224,7 +231,7 @@ static void android_location_GpsLocationProvider_class_init_native(JNIEnv* env, method_reportLocation = env->GetMethodID(clazz, "reportLocation", "(IDDDFFFJ)V"); method_reportStatus = env->GetMethodID(clazz, "reportStatus", "(I)V"); method_reportSvStatus = env->GetMethodID(clazz, "reportSvStatus", "()V"); method_reportAGpsStatus = env->GetMethodID(clazz, "reportAGpsStatus", "(II)V"); method_reportAGpsStatus = env->GetMethodID(clazz, "reportAGpsStatus", "(III)V"); method_reportNmea = env->GetMethodID(clazz, "reportNmea", "(J)V"); method_setEngineCapabilities = env->GetMethodID(clazz, "setEngineCapabilities", "(I)V"); method_xtraDownloadRequest = env->GetMethodID(clazz, "xtraDownloadRequest", "()V"); Loading