* commit '5f7203eb258503bc5d2ba29176bdf483a68a93b8': gps: Adding ip address for AGps
This commit is contained in:
@ -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;
|
||||
|
||||
@ -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;
|
||||
@ -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");
|
||||
@ -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 {
|
||||
|
@ -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__);
|
||||
}
|
||||
|
||||
@ -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");
|
||||
|
Reference in New Issue
Block a user