Add setAllowedNetworkTypeBitmap

There are currently two methods that cover the network family types:
setPreferredNetworkType and setPreferredNetworkTypeBitmap. They both
serve a similar purpose and have been previously interpreted as a
suggestion to the modem on the type of networks requested by the OS.

This change introduces a new method (setAllowedNetworkTypeBitmap) which
will coexist with these methods. This new method must be interpreted as
a strict set of Radio Access Technology (RAT) that should be accepted by
the modem.

For instance, one may first use setAllowedNetworkTypeBitmap to exclude
2G technology from the list of usable RAT. Then, they may use
setPreferredNetworkType to describe their preference for 4G.

Test: mm
Bug: 171791177
Change-Id: I7f5fdf9bf5a80c47e9ad838b740b2d6e40ffea60
This commit is contained in:
Thiébaud Weksteen
2020-08-21 16:46:07 +02:00
parent 199bb4a612
commit ed5c514ed1
4 changed files with 42 additions and 1 deletions

View File

@@ -21,6 +21,7 @@ import @1.0::CdmaSmsMessage;
import @1.0::GsmSmsMessage;
import @1.1::CardPowerState;
import @1.2::DataRequestReason;
import @1.4::RadioAccessFamily;
import @1.5::IRadio;
import @1.5::AccessNetwork;
import @1.5::DataProfileInfo;
@@ -305,4 +306,18 @@ interface IRadio extends @1.5::IRadio {
* Response function is IRadioResponse.cancelHandoverResponse()
*/
oneway cancelHandover(int32_t serial, int32_t callId);
/**
* Requests to set the network type for searching and registering.
*
* Instruct the radio to *only* accept the types of network provided. This
* is stronger than setPreferredNetworkType which is a suggestion.
*
* @param serial Serial number of request.
* @param networkTypeBitmap a 32-bit bearer bitmap of RadioAccessFamily
*
* Response callbask is IRadioResponse.setNetworkTypeBitmapResponse()
*/
oneway setAllowedNetworkTypeBitmap(
uint32_t serial, bitfield<RadioAccessFamily> networkTypeBitmap);
};

View File

@@ -290,4 +290,20 @@ interface IRadioResponse extends @1.5::IRadioResponse {
* RadioError:INVALID_CALL_ID
*/
oneway cancelHandoverResponse(RadioResponseInfo info);
/**
* Callback of IRadio.setAllowedNetworkTypeBitmap(int, bitfield<RadioAccessFamily>)
*
* Valid errors returned:
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
* RadioError:OPERATION_NOT_ALLOWED
* RadioError:MODE_NOT_SUPPORTED
* RadioError:INTERNAL_ERR
* RadioError:INVALID_ARGUMENTS
* RadioError:MODEM_ERR
* RadioError:REQUEST_NOT_SUPPORTED
* RadioError:NO_RESOURCES
*/
oneway setAllowedNetworkTypeBitmapResponse(RadioResponseInfo info);
};

View File

@@ -58,7 +58,7 @@ using ::android::hardware::Void;
class RadioHidlTest_v1_6;
extern ::android::hardware::radio::V1_5::CardStatus cardStatus;
/* Callback class for radio response v1_5 */
/* Callback class for radio response v1_6 */
class RadioResponse_v1_6 : public ::android::hardware::radio::V1_6::IRadioResponse {
protected:
RadioHidlTest_v1_6& parent_v1_6;
@@ -789,6 +789,9 @@ class RadioResponse_v1_6 : public ::android::hardware::radio::V1_6::IRadioRespon
Return<void> cancelHandoverResponse(
const ::android::hardware::radio::V1_6::RadioResponseInfo& info);
Return<void> setAllowedNetworkTypeBitmapResponse(
const ::android::hardware::radio::V1_6::RadioResponseInfo& info);
};
/* Callback class for radio indication */

View File

@@ -1149,3 +1149,10 @@ Return<void> RadioResponse_v1_6::cancelHandoverResponse(
parent_v1_6.notify(info.serial);
return Void();
}
Return<void> RadioResponse_v1_6::setAllowedNetworkTypeBitmapResponse(
const ::android::hardware::radio::V1_6::RadioResponseInfo& info) {
rspInfo = info;
parent_v1_6.notify(info.serial);
return Void();
}