Merge "Change SUPL network request parameters for requestRouteToHostAddress" into qt-dev

am: 16f6a30c9d

Change-Id: I133989e93b53e787d80fcf26811169615a89c5ce
This commit is contained in:
Anil Admal
2019-04-09 11:47:42 -07:00
committed by android-build-merger

View File

@@ -199,29 +199,27 @@ class GnssNetworkConnectivityHandler {
} }
/** /**
* called from native code to update AGPS status * Called from native code to update AGPS connection status, or to request or release a SUPL
* connection.
*
* <p>Note: {@code suplIpAddr} parameter is not present from IAGnssCallback.hal@2.0 onwards
* and is set to {@code null}.
*/ */
void onReportAGpsStatus(int agpsType, int agpsStatus, byte[] suplIpAddr) { void onReportAGpsStatus(int agpsType, int agpsStatus, byte[] suplIpAddr) {
if (DEBUG) Log.d(TAG, "AGPS_DATA_CONNECTION: " + agpsDataConnStatusAsString(agpsStatus));
switch (agpsStatus) { switch (agpsStatus) {
case GPS_REQUEST_AGPS_DATA_CONN: case GPS_REQUEST_AGPS_DATA_CONN:
if (DEBUG) Log.d(TAG, "GPS_REQUEST_AGPS_DATA_CONN");
runOnHandler(() -> handleRequestSuplConnection(agpsType, suplIpAddr)); runOnHandler(() -> handleRequestSuplConnection(agpsType, suplIpAddr));
break; break;
case GPS_RELEASE_AGPS_DATA_CONN: case GPS_RELEASE_AGPS_DATA_CONN:
if (DEBUG) Log.d(TAG, "GPS_RELEASE_AGPS_DATA_CONN");
runOnHandler(() -> handleReleaseSuplConnection(GPS_RELEASE_AGPS_DATA_CONN)); runOnHandler(() -> handleReleaseSuplConnection(GPS_RELEASE_AGPS_DATA_CONN));
break; break;
case GPS_AGPS_DATA_CONNECTED: case GPS_AGPS_DATA_CONNECTED:
if (DEBUG) Log.d(TAG, "GPS_AGPS_DATA_CONNECTED");
break;
case GPS_AGPS_DATA_CONN_DONE: case GPS_AGPS_DATA_CONN_DONE:
if (DEBUG) Log.d(TAG, "GPS_AGPS_DATA_CONN_DONE");
break;
case GPS_AGPS_DATA_CONN_FAILED: case GPS_AGPS_DATA_CONN_FAILED:
if (DEBUG) Log.d(TAG, "GPS_AGPS_DATA_CONN_FAILED");
break; break;
default: default:
if (DEBUG) Log.d(TAG, "Received Unknown AGPS status: " + agpsStatus); Log.w(TAG, "Received unknown AGPS status: " + agpsStatus);
} }
} }
@@ -459,11 +457,17 @@ class GnssNetworkConnectivityHandler {
} }
mAGpsDataConnectionState = AGPS_DATA_CONNECTION_OPENING; mAGpsDataConnectionState = AGPS_DATA_CONNECTION_OPENING;
NetworkRequest.Builder requestBuilder = new NetworkRequest.Builder(); // The NetworkRequest.Builder class is not used to construct the network request because
requestBuilder.addCapability(getNetworkCapability(mAGpsType)); // the ConnectivityService requires the network request to be constructed in this way
NetworkRequest request = requestBuilder.build(); // to extend support for requestRouteToHostAddress() method for pre-gnss@2.0 devices.
NetworkCapabilities networkCapabilities = new NetworkCapabilities();
networkCapabilities.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR);
networkCapabilities.addCapability(getNetworkCapability(mAGpsType));
NetworkRequest networkRequest = new NetworkRequest(networkCapabilities,
getLegacyDataConnectionType(agpsType), ConnectivityManager.REQUEST_ID_UNSET,
NetworkRequest.Type.REQUEST);
mConnMgr.requestNetwork( mConnMgr.requestNetwork(
request, networkRequest,
mSuplConnectivityCallback, mSuplConnectivityCallback,
mHandler, mHandler,
SUPL_NETWORK_REQUEST_TIMEOUT_MILLIS); SUPL_NETWORK_REQUEST_TIMEOUT_MILLIS);
@@ -483,6 +487,19 @@ class GnssNetworkConnectivityHandler {
} }
} }
private int getLegacyDataConnectionType(int agpsType) {
switch (agpsType) {
case AGPS_TYPE_C2K:
case AGPS_TYPE_SUPL:
return ConnectivityManager.TYPE_MOBILE_SUPL;
case AGPS_TYPE_EIMS:
return ConnectivityManager.TYPE_MOBILE_EMERGENCY;
case AGPS_TYPE_IMS:
return ConnectivityManager.TYPE_MOBILE_IMS;
default:
throw new IllegalArgumentException("agpsType: " + agpsType);
}
}
private void handleReleaseSuplConnection(int agpsDataConnStatus) { private void handleReleaseSuplConnection(int agpsDataConnStatus) {
if (DEBUG) { if (DEBUG) {
String message = String.format( String message = String.format(
@@ -546,7 +563,7 @@ class GnssNetworkConnectivityHandler {
case AGPS_DATA_CONNECTION_OPENING: case AGPS_DATA_CONNECTION_OPENING:
return "OPENING"; return "OPENING";
default: default:
return "<Unknown>"; return "<Unknown>(" + mAGpsDataConnectionState + ")";
} }
} }
@@ -566,7 +583,7 @@ class GnssNetworkConnectivityHandler {
case GPS_REQUEST_AGPS_DATA_CONN: case GPS_REQUEST_AGPS_DATA_CONN:
return "REQUEST"; return "REQUEST";
default: default:
return "<Unknown>"; return "<Unknown>(" + agpsDataConnStatus + ")";
} }
} }
@@ -581,7 +598,7 @@ class GnssNetworkConnectivityHandler {
case AGPS_TYPE_IMS: case AGPS_TYPE_IMS:
return "IMS"; return "IMS";
default: default:
return "<Unknown>"; return "<Unknown>(" + agpsType + ")";
} }
} }
@@ -658,4 +675,4 @@ class GnssNetworkConnectivityHandler {
private native void native_update_network_state(boolean connected, int type, boolean roaming, private native void native_update_network_state(boolean connected, int type, boolean roaming,
boolean available, String apn, long networkHandle, short capabilities); boolean available, String apn, long networkHandle, short capabilities);
} }