diff options
author | sqian <shuoq@google.com> | 2019-07-01 13:20:45 -0700 |
---|---|---|
committer | Shuo Qian <shuoq@google.com> | 2019-07-01 21:48:22 +0000 |
commit | b2e7c71f39f3d26a4d8a9149955eb8d8c887c51a (patch) | |
tree | 08a196978b319475b30a3e7b43d86261e169b9c7 /radio | |
parent | d10841a83dae61eed760c500faa1b07d86367f54 (diff) | |
download | android_hardware_interfaces-b2e7c71f39f3d26a4d8a9149955eb8d8c887c51a.tar.gz android_hardware_interfaces-b2e7c71f39f3d26a4d8a9149955eb8d8c887c51a.tar.bz2 android_hardware_interfaces-b2e7c71f39f3d26a4d8a9149955eb8d8c887c51a.zip |
Hang up EmergencyDial after Trigger in VTS
The whole test case run emergencyDial.RadioHidlTest_v1_4 first and then
come after startNetworkScan.RadioHidlTest_v1_4 test case immediately
(within ~3 secs) the NWscan failure is device in emergency call in
progress/connected while doing emergencyDial.RadioHidlTest_v1_4 test
Although emergencyDial.RadioHidlTest_v1_4 only care about command/response
is successful or not and don't care call is established or not, modem do
care about call condition is in idle/progress/connected state before it
can do NWscan
When there's dedicated channel established, modem can not perform AP
request NWscan in parallel as we are single HW modem restriction.
Test: run vts
Bug: 135595082
Change-Id: Iecba54b93b96d33b57bc59e00f082ff133d2e57b
Merged-In: Iecba54b93b96d33b57bc59e00f082ff133d2e57b
Diffstat (limited to 'radio')
-rw-r--r-- | radio/1.4/vts/functional/radio_hidl_hal_api.cpp | 18 | ||||
-rw-r--r-- | radio/1.4/vts/functional/radio_hidl_hal_test.cpp | 17 | ||||
-rw-r--r-- | radio/1.4/vts/functional/radio_hidl_hal_utils_v1_4.h | 9 | ||||
-rw-r--r-- | radio/1.4/vts/functional/radio_response.cpp | 7 |
4 files changed, 49 insertions, 2 deletions
diff --git a/radio/1.4/vts/functional/radio_hidl_hal_api.cpp b/radio/1.4/vts/functional/radio_hidl_hal_api.cpp index 696c746d6..26f2c90f5 100644 --- a/radio/1.4/vts/functional/radio_hidl_hal_api.cpp +++ b/radio/1.4/vts/functional/radio_hidl_hal_api.cpp @@ -41,6 +41,12 @@ TEST_F(RadioHidlTest_v1_4, emergencyDial) { ALOGI("emergencyDial, rspInfo.error = %s\n", toString(radioRsp_v1_4->rspInfo.error).c_str()); EXPECT_EQ(RadioError::NONE, radioRsp_v1_4->rspInfo.error); + + // Give some time for modem to establish the emergency call channel. + sleep(MODEM_EMERGENCY_CALL_ESTABLISH_TIME); + + // Disconnect all the potential established calls to prevent them affecting other tests. + clearPotentialEstablishedCalls(); } /* @@ -67,6 +73,12 @@ TEST_F(RadioHidlTest_v1_4, emergencyDial_withServices) { ALOGI("emergencyDial_withServices, rspInfo.error = %s\n", toString(radioRsp_v1_4->rspInfo.error).c_str()); EXPECT_EQ(RadioError::NONE, radioRsp_v1_4->rspInfo.error); + + // Give some time for modem to establish the emergency call channel. + sleep(MODEM_EMERGENCY_CALL_ESTABLISH_TIME); + + // Disconnect all the potential established calls to prevent them affecting other tests. + clearPotentialEstablishedCalls(); } /* @@ -93,6 +105,12 @@ TEST_F(RadioHidlTest_v1_4, emergencyDial_withEmergencyRouting) { ALOGI("emergencyDial_withEmergencyRouting, rspInfo.error = %s\n", toString(radioRsp_v1_4->rspInfo.error).c_str()); EXPECT_EQ(RadioError::NONE, radioRsp_v1_4->rspInfo.error); + + // Give some time for modem to establish the emergency call channel. + sleep(MODEM_EMERGENCY_CALL_ESTABLISH_TIME); + + // Disconnect all the potential established calls to prevent them affecting other tests. + clearPotentialEstablishedCalls(); } /* diff --git a/radio/1.4/vts/functional/radio_hidl_hal_test.cpp b/radio/1.4/vts/functional/radio_hidl_hal_test.cpp index d2d21ce1f..63e5f6ed5 100644 --- a/radio/1.4/vts/functional/radio_hidl_hal_test.cpp +++ b/radio/1.4/vts/functional/radio_hidl_hal_test.cpp @@ -87,6 +87,23 @@ std::cv_status RadioHidlTest_v1_4::wait() { return status; } +void RadioHidlTest_v1_4::clearPotentialEstablishedCalls() { + // Get the current call Id to hangup the established emergency call. + serial = GetRandomSerialNumber(); + radio_v1_4->getCurrentCalls(serial); + EXPECT_EQ(std::cv_status::no_timeout, wait()); + + // Hang up to disconnect the established call channels. + for (const ::android::hardware::radio::V1_2::Call& call : radioRsp_v1_4->currentCalls) { + serial = GetRandomSerialNumber(); + radio_v1_4->hangup(serial, call.base.index); + ALOGI("Hang up to disconnect the established call channel: %d", call.base.index); + EXPECT_EQ(std::cv_status::no_timeout, wait()); + // Give some time for modem to disconnect the established call channel. + sleep(MODEM_EMERGENCY_CALL_DISCONNECT_TIME); + } +} + void RadioHidlTest_v1_4::updateSimCardStatus() { serial = GetRandomSerialNumber(); radio_v1_4->getIccCardStatus(serial); diff --git a/radio/1.4/vts/functional/radio_hidl_hal_utils_v1_4.h b/radio/1.4/vts/functional/radio_hidl_hal_utils_v1_4.h index f662472d2..b07f9c36e 100644 --- a/radio/1.4/vts/functional/radio_hidl_hal_utils_v1_4.h +++ b/radio/1.4/vts/functional/radio_hidl_hal_utils_v1_4.h @@ -44,6 +44,9 @@ using ::android::hardware::Return; using ::android::hardware::Void; #define TIMEOUT_PERIOD 75 +#define MODEM_EMERGENCY_CALL_ESTABLISH_TIME 3 +#define MODEM_EMERGENCY_CALL_DISCONNECT_TIME 3 + #define RADIO_SERVICE_NAME "slot1" class RadioHidlTest_v1_4; @@ -59,6 +62,9 @@ class RadioResponse_v1_4 : public ::android::hardware::radio::V1_4::IRadioRespon RadioResponseInfo rspInfo; + // Call + hidl_vec<::android::hardware::radio::V1_2::Call> currentCalls; + // Modem bool isModemEnabled; bool enableModemResponseToggle; @@ -725,6 +731,9 @@ class RadioHidlTest_v1_4 : public ::testing::VtsHalHidlTargetTestBase { /* Serial number for radio request */ int serial; + /* Clear Potential Established Calls */ + void clearPotentialEstablishedCalls(); + /* Update Sim Card Status */ void updateSimCardStatus(); diff --git a/radio/1.4/vts/functional/radio_response.cpp b/radio/1.4/vts/functional/radio_response.cpp index eac0c6800..a849926cf 100644 --- a/radio/1.4/vts/functional/radio_response.cpp +++ b/radio/1.4/vts/functional/radio_response.cpp @@ -77,7 +77,9 @@ Return<void> RadioResponse_v1_4::getIMSIForAppResponse( return Void(); } -Return<void> RadioResponse_v1_4::hangupConnectionResponse(const RadioResponseInfo& /*info*/) { +Return<void> RadioResponse_v1_4::hangupConnectionResponse(const RadioResponseInfo& info) { + rspInfo = info; + parent_v1_4.notify(info.serial); return Void(); } @@ -729,9 +731,10 @@ Return<void> RadioResponse_v1_4::getIccCardStatusResponse_1_2( Return<void> RadioResponse_v1_4::getCurrentCallsResponse_1_2( const RadioResponseInfo& info, - const ::android::hardware::hidl_vec<::android::hardware::radio::V1_2::Call>& /*calls*/) { + const ::android::hardware::hidl_vec<::android::hardware::radio::V1_2::Call>& calls) { rspInfo = info; parent_v1_4.notify(info.serial); + currentCalls = calls; return Void(); } |