am 5f7203eb: am 5a27a754: am bd1dee94: Merge "gps: Adding ip address for AGps"

* commit '5f7203eb258503bc5d2ba29176bdf483a68a93b8':
  gps: Adding ip address for AGps
This commit is contained in:
Mike Lockwood
2011-07-28 14:04:13 -07:00
committed by Android Git Automerger
2 changed files with 29 additions and 3 deletions

View File

@ -253,6 +253,7 @@ public class GpsLocationProvider implements LocationProviderInterface {
private String mAGpsApn; private String mAGpsApn;
private int mAGpsDataConnectionState; private int mAGpsDataConnectionState;
private int mAGpsDataConnectionIpAddr;
private final ConnectivityManager mConnMgr; private final ConnectivityManager mConnMgr;
private final GpsNetInitiatedHandler mNIHandler; private final GpsNetInitiatedHandler mNIHandler;
@ -503,6 +504,14 @@ public class GpsLocationProvider implements LocationProviderInterface {
apnName = "dummy-apn"; apnName = "dummy-apn";
} }
mAGpsApn = apnName; 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"); if (DEBUG) Log.d(TAG, "call native_agps_data_conn_open");
native_agps_data_conn_open(apnName); native_agps_data_conn_open(apnName);
mAGpsDataConnectionState = AGPS_DATA_CONNECTION_OPEN; mAGpsDataConnectionState = AGPS_DATA_CONNECTION_OPEN;
@ -1230,7 +1239,7 @@ public class GpsLocationProvider implements LocationProviderInterface {
/** /**
* called from native code to update AGPS status * 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) { switch (status) {
case GPS_REQUEST_AGPS_DATA_CONN: case GPS_REQUEST_AGPS_DATA_CONN:
if (DEBUG) Log.d(TAG, "GPS_REQUEST_AGPS_DATA_CONN"); if (DEBUG) Log.d(TAG, "GPS_REQUEST_AGPS_DATA_CONN");
@ -1239,9 +1248,19 @@ public class GpsLocationProvider implements LocationProviderInterface {
mAGpsDataConnectionState = AGPS_DATA_CONNECTION_OPENING; mAGpsDataConnectionState = AGPS_DATA_CONNECTION_OPENING;
int result = mConnMgr.startUsingNetworkFeature( int result = mConnMgr.startUsingNetworkFeature(
ConnectivityManager.TYPE_MOBILE, Phone.FEATURE_ENABLE_SUPL); ConnectivityManager.TYPE_MOBILE, Phone.FEATURE_ENABLE_SUPL);
mAGpsDataConnectionIpAddr = ipaddr;
if (result == Phone.APN_ALREADY_ACTIVE) { if (result == Phone.APN_ALREADY_ACTIVE) {
if (DEBUG) Log.d(TAG, "Phone.APN_ALREADY_ACTIVE"); if (DEBUG) Log.d(TAG, "Phone.APN_ALREADY_ACTIVE");
if (mAGpsApn != null) { 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); native_agps_data_conn_open(mAGpsApn);
mAGpsDataConnectionState = AGPS_DATA_CONNECTION_OPEN; mAGpsDataConnectionState = AGPS_DATA_CONNECTION_OPEN;
} else { } else {

View File

@ -154,8 +154,15 @@ GpsXtraCallbacks sGpsXtraCallbacks = {
static void agps_status_callback(AGpsStatus* agps_status) static void agps_status_callback(AGpsStatus* agps_status)
{ {
JNIEnv* env = AndroidRuntime::getJNIEnv(); 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, env->CallVoidMethod(mCallbacksObj, method_reportAGpsStatus,
agps_status->type, agps_status->status); agps_status->type, agps_status->status, ipaddr);
checkAndClearExceptionFromCallback(env, __FUNCTION__); checkAndClearExceptionFromCallback(env, __FUNCTION__);
} }
@ -224,7 +231,7 @@ static void android_location_GpsLocationProvider_class_init_native(JNIEnv* env,
method_reportLocation = env->GetMethodID(clazz, "reportLocation", "(IDDDFFFJ)V"); method_reportLocation = env->GetMethodID(clazz, "reportLocation", "(IDDDFFFJ)V");
method_reportStatus = env->GetMethodID(clazz, "reportStatus", "(I)V"); method_reportStatus = env->GetMethodID(clazz, "reportStatus", "(I)V");
method_reportSvStatus = env->GetMethodID(clazz, "reportSvStatus", "()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_reportNmea = env->GetMethodID(clazz, "reportNmea", "(J)V");
method_setEngineCapabilities = env->GetMethodID(clazz, "setEngineCapabilities", "(I)V"); method_setEngineCapabilities = env->GetMethodID(clazz, "setEngineCapabilities", "(I)V");
method_xtraDownloadRequest = env->GetMethodID(clazz, "xtraDownloadRequest", "()V"); method_xtraDownloadRequest = env->GetMethodID(clazz, "xtraDownloadRequest", "()V");