diff options
-rw-r--r-- | radio/1.6/IRadio.hal | 7 | ||||
-rw-r--r-- | radio/1.6/IRadioResponse.hal | 1 | ||||
-rw-r--r-- | radio/1.6/vts/functional/radio_hidl_hal_api.cpp | 50 |
3 files changed, 54 insertions, 4 deletions
diff --git a/radio/1.6/IRadio.hal b/radio/1.6/IRadio.hal index 7f874c64e9..2e64008476 100644 --- a/radio/1.6/IRadio.hal +++ b/radio/1.6/IRadio.hal @@ -217,6 +217,13 @@ interface IRadio extends @1.5::IRadio { * Each subsequent request to this method is processed only after the * completion of the previous one. * + * When the SIM is in POWER_DOWN, the modem should send an empty vector of + * AppStatus in CardStatus.applications. If a SIM in the POWER_DOWN state + * is removed and a new SIM is inserted, the new SIM should be in POWER_UP + * mode by default. If the device is turned off or restarted while the SIM + * is in POWER_DOWN, then the SIM should turn on normally in POWER_UP mode + * when the device turns back on. + * * Response callback is IRadioResponse.setSimCardPowerResponse_1_6(). * Note that this differs from setSimCardPower_1_1 in that the response * callback should only be sent once the device has finished executing diff --git a/radio/1.6/IRadioResponse.hal b/radio/1.6/IRadioResponse.hal index c545db02ef..36e3ee4032 100644 --- a/radio/1.6/IRadioResponse.hal +++ b/radio/1.6/IRadioResponse.hal @@ -207,7 +207,6 @@ interface IRadioResponse extends @1.5::IRadioResponse { * Valid errors returned: * RadioError:NONE * RadioError:RADIO_NOT_AVAILABLE - * RadioError:REQUEST_NOT_SUPPORTED * RadioError:INVALID_ARGUMENTS * RadioError:SIM_ERR (indicates a timeout or other issue making the SIM unresponsive) * diff --git a/radio/1.6/vts/functional/radio_hidl_hal_api.cpp b/radio/1.6/vts/functional/radio_hidl_hal_api.cpp index d3ffba988a..ba825b83a0 100644 --- a/radio/1.6/vts/functional/radio_hidl_hal_api.cpp +++ b/radio/1.6/vts/functional/radio_hidl_hal_api.cpp @@ -320,7 +320,6 @@ TEST_P(RadioHidlTest_v1_6, setDataThrottling) { res = radio_v1_6->setDataThrottling(serial, DataThrottlingAction::THROTTLE_ANCHOR_CARRIER, 60); ASSERT_OK(res); - EXPECT_EQ(std::cv_status::no_timeout, wait()); EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_6->rspInfo.type); EXPECT_EQ(serial, radioRsp_v1_6->rspInfo.serial); @@ -350,7 +349,6 @@ TEST_P(RadioHidlTest_v1_6, setDataThrottling) { res = radio_v1_6->setDataThrottling(serial, DataThrottlingAction::NO_DATA_THROTTLING, 60); ASSERT_OK(res); - EXPECT_EQ(std::cv_status::no_timeout, wait()); EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_6->rspInfo.type); EXPECT_EQ(serial, radioRsp_v1_6->rspInfo.serial); @@ -360,4 +358,50 @@ TEST_P(RadioHidlTest_v1_6, setDataThrottling) { ::android::hardware::radio::V1_6::RadioError::MODEM_ERR, ::android::hardware::radio::V1_6::RadioError::NONE, ::android::hardware::radio::V1_6::RadioError::INVALID_ARGUMENTS})); -}
\ No newline at end of file +} + +/* + * Test IRadio.setSimCardPower_1_6() for the response returned. + */ +TEST_P(RadioHidlTest_v1_6, setSimCardPower_1_6) { + /* Test setSimCardPower power down */ + serial = GetRandomSerialNumber(); + radio_v1_6->setSimCardPower_1_6(serial, CardPowerState::POWER_DOWN); + EXPECT_EQ(std::cv_status::no_timeout, wait()); + EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_6->rspInfo.type); + EXPECT_EQ(serial, radioRsp_v1_6->rspInfo.serial); + ASSERT_TRUE( + CheckAnyOfErrors(radioRsp_v1_6->rspInfo.error, + {::android::hardware::radio::V1_6::RadioError::NONE, + ::android::hardware::radio::V1_6::RadioError::INVALID_ARGUMENTS, + ::android::hardware::radio::V1_6::RadioError::RADIO_NOT_AVAILABLE})); + + // setSimCardPower_1_6 does not return until the request is handled, and should not trigger + // CardState::ABSENT when turning off power + if (radioRsp_v1_6->rspInfo.error == ::android::hardware::radio::V1_6::RadioError::NONE) { + /* Wait some time for setting sim power down and then verify it */ + updateSimCardStatus(); + EXPECT_EQ(CardState::PRESENT, cardStatus.base.base.base.cardState); + // applications should be an empty vector of AppStatus + EXPECT_EQ(0, cardStatus.applications.size()); + } + + /* Test setSimCardPower power up */ + serial = GetRandomSerialNumber(); + radio_v1_6->setSimCardPower_1_6(serial, CardPowerState::POWER_UP); + EXPECT_EQ(std::cv_status::no_timeout, wait()); + EXPECT_EQ(RadioResponseType::SOLICITED, radioRsp_v1_6->rspInfo.type); + EXPECT_EQ(serial, radioRsp_v1_6->rspInfo.serial); + ASSERT_TRUE( + CheckAnyOfErrors(radioRsp_v1_6->rspInfo.error, + {::android::hardware::radio::V1_6::RadioError::NONE, + ::android::hardware::radio::V1_6::RadioError::INVALID_ARGUMENTS, + ::android::hardware::radio::V1_6::RadioError::RADIO_NOT_AVAILABLE})); + + // setSimCardPower_1_6 does not return until the request is handled. Just verify that we still + // have CardState::PRESENT after turning the power back on + if (radioRsp_v1_6->rspInfo.error == ::android::hardware::radio::V1_6::RadioError::NONE) { + updateSimCardStatus(); + EXPECT_EQ(CardState::PRESENT, cardStatus.base.base.base.cardState); + } +} |