set SIM slots mapping based on current mapping
If we set the SIM slots mapping arbitrarily on single SIM enabled device, the SIM state could become absent and cause other TCs fail. Bug: 227693614 Test: run vts -m VtsHalRadioTargetTest Change-Id: I2c8d3a162e1dca5a0bd6cfe93a1cc269f4c25188
This commit is contained in:
parent
04e76ebf7d
commit
c19a0bb019
1 changed files with 53 additions and 24 deletions
|
@ -166,31 +166,60 @@ TEST_P(RadioConfigTest, setPreferredDataModem_invalidArgument) {
|
|||
* Test IRadioConfig.setSimSlotsMapping() for the response returned.
|
||||
*/
|
||||
TEST_P(RadioConfigTest, setSimSlotsMapping) {
|
||||
serial = GetRandomSerialNumber();
|
||||
SlotPortMapping slotPortMapping;
|
||||
slotPortMapping.physicalSlotId = 0;
|
||||
slotPortMapping.portId = 0;
|
||||
std::vector<SlotPortMapping> slotPortMappingList = {slotPortMapping};
|
||||
if (isDsDsEnabled()) {
|
||||
slotPortMapping.physicalSlotId = 1;
|
||||
slotPortMappingList.push_back(slotPortMapping);
|
||||
} else if (isTsTsEnabled()) {
|
||||
slotPortMapping.physicalSlotId = 1;
|
||||
slotPortMappingList.push_back(slotPortMapping);
|
||||
slotPortMapping.physicalSlotId = 2;
|
||||
slotPortMappingList.push_back(slotPortMapping);
|
||||
}
|
||||
ndk::ScopedAStatus res = radio_config->setSimSlotsMapping(serial, slotPortMappingList);
|
||||
ASSERT_OK(res);
|
||||
EXPECT_EQ(std::cv_status::no_timeout, wait());
|
||||
EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_config->rspInfo.type);
|
||||
EXPECT_EQ(serial, radioRsp_config->rspInfo.serial);
|
||||
ALOGI("setSimSlotsMapping, rspInfo.error = %s\n",
|
||||
toString(radioRsp_config->rspInfo.error).c_str());
|
||||
ASSERT_TRUE(CheckAnyOfErrors(radioRsp_config->rspInfo.error, {RadioError::NONE}));
|
||||
// get slot status and set SIM slots mapping based on the result.
|
||||
updateSimSlotStatus();
|
||||
if (radioRsp_config->rspInfo.error == RadioError::NONE) {
|
||||
SlotPortMapping slotPortMapping;
|
||||
// put invalid value at first and adjust by slotStatusResponse.
|
||||
slotPortMapping.physicalSlotId = -1;
|
||||
slotPortMapping.portId = -1;
|
||||
std::vector<SlotPortMapping> slotPortMappingList = {slotPortMapping};
|
||||
if (isDsDsEnabled()) {
|
||||
slotPortMappingList.push_back(slotPortMapping);
|
||||
} else if (isTsTsEnabled()) {
|
||||
slotPortMappingList.push_back(slotPortMapping);
|
||||
slotPortMappingList.push_back(slotPortMapping);
|
||||
}
|
||||
for (size_t i = 0; i < radioRsp_config->simSlotStatus.size(); i++) {
|
||||
ASSERT_TRUE(radioRsp_config->simSlotStatus[i].portInfo.size() > 0);
|
||||
for (size_t j = 0; j < radioRsp_config->simSlotStatus[i].portInfo.size(); j++) {
|
||||
if (radioRsp_config->simSlotStatus[i].portInfo[j].portActive) {
|
||||
int32_t logicalSlotId =
|
||||
radioRsp_config->simSlotStatus[i].portInfo[j].logicalSlotId;
|
||||
// logicalSlotId should be 0 or positive numbers if the port
|
||||
// is active.
|
||||
EXPECT_GE(logicalSlotId, 0);
|
||||
// logicalSlotId should be less than the maximum number of
|
||||
// supported SIM slots.
|
||||
EXPECT_LT(logicalSlotId, slotPortMappingList.size());
|
||||
if (logicalSlotId >= 0 && logicalSlotId < slotPortMappingList.size()) {
|
||||
slotPortMappingList[logicalSlotId].physicalSlotId = i;
|
||||
slotPortMappingList[logicalSlotId].portId = j;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Give some time for modem to fully switch SIM configuration
|
||||
sleep(MODEM_SET_SIM_SLOT_MAPPING_DELAY_IN_SECONDS);
|
||||
// set SIM slots mapping
|
||||
for (size_t i = 0; i < slotPortMappingList.size(); i++) {
|
||||
// physicalSlotId and portId should be 0 or positive numbers for the
|
||||
// input of setSimSlotsMapping.
|
||||
EXPECT_GE(slotPortMappingList[i].physicalSlotId, 0);
|
||||
EXPECT_GE(slotPortMappingList[i].portId, 0);
|
||||
}
|
||||
serial = GetRandomSerialNumber();
|
||||
ndk::ScopedAStatus res = radio_config->setSimSlotsMapping(serial, slotPortMappingList);
|
||||
ASSERT_OK(res);
|
||||
EXPECT_EQ(std::cv_status::no_timeout, wait());
|
||||
EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_config->rspInfo.type);
|
||||
EXPECT_EQ(serial, radioRsp_config->rspInfo.serial);
|
||||
ALOGI("setSimSlotsMapping, rspInfo.error = %s\n",
|
||||
toString(radioRsp_config->rspInfo.error).c_str());
|
||||
ASSERT_TRUE(CheckAnyOfErrors(radioRsp_config->rspInfo.error, {RadioError::NONE}));
|
||||
|
||||
// Give some time for modem to fully switch SIM configuration
|
||||
sleep(MODEM_SET_SIM_SLOT_MAPPING_DELAY_IN_SECONDS);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in a new issue