Change SUPL network request parameters for requestRouteToHostAddress
CL aosp/940825 extends support for requestRouteToHostAddress in the ConnectivityService for SUPL network setup requests originating from pre-gnss@2.0 HALs. For this to work, a corresponding change is also needed in the way the SUPL network requests are constructed in the GnssNetworkConnectivityHandler class. Bug: 121222025 Test: Verified on a Pixel device with gnss@1.1 HAL. Change-Id: I420393c74926d9fd83e939f5380fe69abaa486f6
This commit is contained in:
@@ -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) {
|
||||
if (DEBUG) Log.d(TAG, "AGPS_DATA_CONNECTION: " + agpsDataConnStatusAsString(agpsStatus));
|
||||
switch (agpsStatus) {
|
||||
case GPS_REQUEST_AGPS_DATA_CONN:
|
||||
if (DEBUG) Log.d(TAG, "GPS_REQUEST_AGPS_DATA_CONN");
|
||||
runOnHandler(() -> handleRequestSuplConnection(agpsType, suplIpAddr));
|
||||
break;
|
||||
case GPS_RELEASE_AGPS_DATA_CONN:
|
||||
if (DEBUG) Log.d(TAG, "GPS_RELEASE_AGPS_DATA_CONN");
|
||||
runOnHandler(() -> handleReleaseSuplConnection(GPS_RELEASE_AGPS_DATA_CONN));
|
||||
break;
|
||||
case GPS_AGPS_DATA_CONNECTED:
|
||||
if (DEBUG) Log.d(TAG, "GPS_AGPS_DATA_CONNECTED");
|
||||
break;
|
||||
case GPS_AGPS_DATA_CONN_DONE:
|
||||
if (DEBUG) Log.d(TAG, "GPS_AGPS_DATA_CONN_DONE");
|
||||
break;
|
||||
case GPS_AGPS_DATA_CONN_FAILED:
|
||||
if (DEBUG) Log.d(TAG, "GPS_AGPS_DATA_CONN_FAILED");
|
||||
break;
|
||||
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;
|
||||
|
||||
NetworkRequest.Builder requestBuilder = new NetworkRequest.Builder();
|
||||
requestBuilder.addCapability(getNetworkCapability(mAGpsType));
|
||||
NetworkRequest request = requestBuilder.build();
|
||||
// The NetworkRequest.Builder class is not used to construct the network request because
|
||||
// the ConnectivityService requires the network request to be constructed in this way
|
||||
// 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(
|
||||
request,
|
||||
networkRequest,
|
||||
mSuplConnectivityCallback,
|
||||
mHandler,
|
||||
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) {
|
||||
if (DEBUG) {
|
||||
String message = String.format(
|
||||
@@ -546,7 +563,7 @@ class GnssNetworkConnectivityHandler {
|
||||
case AGPS_DATA_CONNECTION_OPENING:
|
||||
return "OPENING";
|
||||
default:
|
||||
return "<Unknown>";
|
||||
return "<Unknown>(" + mAGpsDataConnectionState + ")";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -566,7 +583,7 @@ class GnssNetworkConnectivityHandler {
|
||||
case GPS_REQUEST_AGPS_DATA_CONN:
|
||||
return "REQUEST";
|
||||
default:
|
||||
return "<Unknown>";
|
||||
return "<Unknown>(" + agpsDataConnStatus + ")";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -581,7 +598,7 @@ class GnssNetworkConnectivityHandler {
|
||||
case AGPS_TYPE_IMS:
|
||||
return "IMS";
|
||||
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,
|
||||
boolean available, String apn, long networkHandle, short capabilities);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user