Merge "Carrier restriction enhancements for Android Q" am: f6dbeefbc3

am: 578fc681b2

Change-Id: I28ca526f9b1dea5f51a7c83dd57592f263dd4d1f
This commit is contained in:
Michele Berionne 2019-01-18 16:57:38 -08:00 committed by android-build-merger
commit dc740a3e9f
4 changed files with 105 additions and 1 deletions

View file

@ -23,6 +23,7 @@ hidl_interface {
types: [
"AccessNetwork",
"CardStatus",
"CarrierRestrictionsWithPriority",
"CellConfigLte",
"CellInfo",
"CellInfoLte",
@ -37,14 +38,15 @@ hidl_interface {
"FrequencyRange",
"LteVopsInfo",
"NetworkScanResult",
"NrIndicators",
"PdpProtocolType",
"PhysicalChannelConfig",
"RadioAccessFamily",
"RadioCapability",
"RadioFrequencyInfo",
"RadioTechnology",
"NrIndicators",
"SetupDataCallResult",
"SimLockMultiSimPolicy",
],
gen_java: true,
}

View file

@ -21,10 +21,12 @@ import @1.2::DataRequestReason;
import @1.2::NetworkScanRequest;
import @1.3::IRadio;
import @1.4::AccessNetwork;
import @1.4::CarrierRestrictionsWithPriority;
import @1.4::DataProfileInfo;
import @1.4::EmergencyCallRouting;
import @1.4::EmergencyServiceCategory;
import @1.4::RadioAccessFamily;
import @1.4::SimLockMultiSimPolicy;
/**
* This interface is used by telephony and telecom to talk to cellular radio.
@ -167,4 +169,34 @@ interface IRadio extends @1.3::IRadio {
*/
oneway setPreferredNetworkTypeBitmap(
int32_t serial, bitfield<RadioAccessFamily> networkTypeBitmap);
/**
* Set carrier restrictions. Expected modem behavior:
* If never receives this command:
* - Must allow all carriers
* Receives this command:
* - Only allow carriers specified in carriers. The restriction persists across power cycles
* and FDR. If a present SIM is allowed, modem must not reload the SIM. If a present SIM is
* *not* allowed, modem must detach from the registered network and only keep emergency
* service, and notify Android SIM refresh reset with new SIM state being
* CardState:RESTRICTED. Emergency service must be enabled.
*
* @param serial Serial number of request.
* @param carriers CarrierRestrictionsWithPriority consisting allowed and excluded carriers
* as defined in types.hal
* @param multiSimPolicy Policy to be used for devices with multiple SIMs.
*
* Response callback is IRadioResponse.setAllowedCarriersResponse()
*/
oneway setAllowedCarriers_1_4(int32_t serial, CarrierRestrictionsWithPriority carriers,
SimLockMultiSimPolicy multiSimPolicy);
/**
* Get carrier restrictions.
*
* @param serial Serial number of request.
*
* Response callback is IRadioResponse.getAllowedCarriersResponse_1_3()
*/
oneway getAllowedCarriers_1_4(int32_t serial);
};

View file

@ -18,6 +18,13 @@ package android.hardware.radio@1.4;
import @1.0::RadioResponseInfo;
import @1.3::IRadioResponse;
import @1.4::CardStatus;
import @1.4::CarrierRestrictionsWithPriority;
import @1.4::CellInfo;
import @1.4::DataRegStateResult;
import @1.4::RadioAccessFamily;
import @1.4::SetupDataCallResult;
import @1.4::SimLockMultiSimPolicy;
/**
* Interface declaring response functions to solicited radio requests.
@ -181,4 +188,31 @@ interface IRadioResponse extends @1.3::IRadioResponse {
* RadioError:SIM_ABSENT
*/
oneway setupDataCallResponse_1_4(RadioResponseInfo info, SetupDataCallResult dcResponse);
/**
* @param info Response info struct containing response type, serial no. and error
*
* Valid errors returned:
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
* RadioError:INVALID_ARGUMENTS
* RadioError:REQUEST_NOT_SUPPORTED
*/
oneway setAllowedCarriersResponse_1_4(RadioResponseInfo info);
/**
* Expected modem behavior:
* Return list of allowed carriers, and if all carriers are allowed.
*
* @param info Response info struct containing response type, serial no. and error
* @param carriers Carrier restriction information.
* @param multiSimPolicy Policy used for devices with multiple SIM cards.
*
* Valid errors returned:
* RadioError:NONE
* RadioError:RADIO_NOT_AVAILABLE
* RadioError:REQUEST_NOT_SUPPORTED
*/
oneway getAllowedCarriersResponse_1_4(RadioResponseInfo info,
CarrierRestrictionsWithPriority carriers, SimLockMultiSimPolicy multiSimPolicy);
};

View file

@ -18,6 +18,7 @@ package android.hardware.radio@1.4;
import @1.0::ApnAuthType;
import @1.0::ApnTypes;
import @1.0::Carrier;
import @1.0::CellInfoType;
import @1.0::DataCallFailCause;
import @1.0::DataProfileId;
@ -1720,3 +1721,38 @@ struct SetupDataCallResult {
*/
int32_t mtu;
};
enum SimLockMultiSimPolicy : int32_t {
/**
* Indicates that configuration applies to each slot independently.
*/
NO_MULTISIM_POLICY = 0,
/**
* Indicates that any SIM card can be used as far as one valid card is present in the device.
* For the modem, a SIM card is valid when its content (i.e. MCC, MNC, GID, SPN) matches the
* carrier restriction configuration.
*/
ONE_VALID_SIM_MUST_BE_PRESENT = 1,
};
struct CarrierRestrictionsWithPriority {
/**
* List of allowed carriers.
* The character '?' is used as wildcard character to match any value.
*/
vec<Carrier> allowedCarriers;
/**
* List of excluded carriers.
* The character '?' is used as wildcard character to match any value.
*/
vec<Carrier> excludedCarriers;
/**
* True means that only carriers included in the allowed list and not in the excluded list
* are permitted. Eg. allowedCarriers match mcc/mnc, excludedCarriers has same mcc/mnc and
* gid1 is ABCD. It means except the carrier whose gid1 is ABCD, all carriers with the
* same mcc/mnc are allowed.
* False means that all carriers are allowed except those included in the excluded list
* and not in the allowed list.
*/
bool allowedCarriersPrioritized;
};