1#!/usr/bin/env python3.4 2# 3# Copyright 2019 - Google 4# 5# Licensed under the Apache License, Version 2.0 (the "License"); 6# you may not use this file except in compliance with the License. 7# You may obtain a copy of the License at 8# 9# http://www.apache.org/licenses/LICENSE-2.0 10# 11# Unless required by applicable law or agreed to in writing, software 12# distributed under the License is distributed on an "AS IS" BASIS, 13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14# See the License for the specific language governing permissions and 15# limitations under the License. 16""" 17 Test Script for DSDS devices 18""" 19 20import time 21from queue import Empty 22from acts.test_decorators import test_tracker_info 23from acts.test_utils.tel.TelephonyBaseTest import TelephonyBaseTest 24from acts.test_utils.tel.tel_defines import DIRECTION_MOBILE_ORIGINATED 25from acts.test_utils.tel.tel_defines import DIRECTION_MOBILE_TERMINATED 26from acts.test_utils.tel.tel_defines import GEN_3G 27from acts.test_utils.tel.tel_defines import GEN_4G 28from acts.test_utils.tel.tel_defines import INVALID_WIFI_RSSI 29from acts.test_utils.tel.tel_defines import MAX_WAIT_TIME_CALL_DROP 30from acts.test_utils.tel.tel_defines import MAX_WAIT_TIME_NW_SELECTION 31from acts.test_utils.tel.tel_defines import NETWORK_SERVICE_DATA 32from acts.test_utils.tel.tel_defines import NETWORK_SERVICE_VOICE 33from acts.test_utils.tel.tel_defines import PRECISE_CALL_STATE_LISTEN_LEVEL_BACKGROUND 34from acts.test_utils.tel.tel_defines import PRECISE_CALL_STATE_LISTEN_LEVEL_FOREGROUND 35from acts.test_utils.tel.tel_defines import PRECISE_CALL_STATE_LISTEN_LEVEL_RINGING 36from acts.test_utils.tel.tel_defines import RAT_LTE 37from acts.test_utils.tel.tel_defines import RAT_IWLAN 38from acts.test_utils.tel.tel_defines import RAT_WCDMA 39from acts.test_utils.tel.tel_defines import WAIT_TIME_BETWEEN_REG_AND_CALL 40from acts.test_utils.tel.tel_defines import WAIT_TIME_IN_CALL 41from acts.test_utils.tel.tel_defines import WAIT_TIME_WIFI_RSSI_CALIBRATION_SCREEN_ON 42from acts.test_utils.tel.tel_defines import WAIT_TIME_WIFI_RSSI_CALIBRATION_WIFI_CONNECTED 43from acts.test_utils.tel.tel_defines import WFC_MODE_CELLULAR_PREFERRED 44from acts.test_utils.tel.tel_defines import WFC_MODE_DISABLED 45from acts.test_utils.tel.tel_defines import WFC_MODE_WIFI_ONLY 46from acts.test_utils.tel.tel_defines import WFC_MODE_WIFI_PREFERRED 47from acts.test_utils.tel.tel_defines import WIFI_WEAK_RSSI_VALUE 48from acts.test_utils.tel.tel_defines import EventNetworkCallback 49from acts.test_utils.tel.tel_defines import NetworkCallbackAvailable 50from acts.test_utils.tel.tel_defines import NetworkCallbackLost 51from acts.test_utils.tel.tel_defines import SignalStrengthContainer 52from acts.test_utils.tel.tel_test_utils import wifi_toggle_state 53from acts.test_utils.tel.tel_test_utils import ensure_network_generation 54from acts.test_utils.tel.tel_test_utils import ensure_phones_default_state 55from acts.test_utils.tel.tel_test_utils import ensure_wifi_connected 56from acts.test_utils.tel.tel_test_utils import get_network_rat 57from acts.test_utils.tel.tel_test_utils import get_phone_number 58from acts.test_utils.tel.tel_test_utils import get_phone_number_for_subscription 59from acts.test_utils.tel.tel_test_utils import hangup_call 60from acts.test_utils.tel.tel_test_utils import initiate_call 61from acts.test_utils.tel.tel_test_utils import is_network_call_back_event_match 62from acts.test_utils.tel.tel_test_utils import is_phone_in_call 63from acts.test_utils.tel.tel_test_utils import is_phone_not_in_call 64from acts.test_utils.tel.tel_test_utils import set_wfc_mode 65from acts.test_utils.tel.tel_test_utils import toggle_airplane_mode 66from acts.test_utils.tel.tel_test_utils import toggle_volte 67from acts.test_utils.tel.tel_test_utils import wait_and_answer_call 68from acts.test_utils.tel.tel_test_utils import wait_for_cell_data_connection 69from acts.test_utils.tel.tel_test_utils import wait_for_droid_not_in_call 70from acts.test_utils.tel.tel_test_utils import wait_for_wfc_disabled 71from acts.test_utils.tel.tel_test_utils import wait_for_wfc_enabled 72from acts.test_utils.tel.tel_test_utils import wait_for_wifi_data_connection 73from acts.test_utils.tel.tel_test_utils import verify_http_connection 74from acts.test_utils.tel.tel_test_utils import get_telephony_signal_strength 75from acts.test_utils.tel.tel_test_utils import get_wifi_signal_strength 76from acts.test_utils.tel.tel_test_utils import wait_for_state 77from acts.test_utils.tel.tel_test_utils import is_phone_in_call 78from acts.test_utils.tel.tel_voice_utils import is_phone_in_call_3g 79from acts.test_utils.tel.tel_voice_utils import is_phone_in_call_2g 80from acts.test_utils.tel.tel_voice_utils import is_phone_in_call_csfb 81from acts.test_utils.tel.tel_voice_utils import is_phone_in_call_iwlan 82from acts.test_utils.tel.tel_voice_utils import is_phone_in_call_not_iwlan 83from acts.test_utils.tel.tel_voice_utils import is_phone_in_call_volte 84from acts.test_utils.tel.tel_voice_utils import phone_setup_voice_general 85from acts.test_utils.tel.tel_voice_utils import phone_setup_volte 86from acts.test_utils.tel.tel_voice_utils import phone_setup_voice_3g 87from acts.test_utils.tel.tel_voice_utils import phone_setup_voice_2g 88from acts.test_utils.tel.tel_voice_utils import phone_idle_3g 89from acts.test_utils.tel.tel_voice_utils import phone_idle_2g 90from acts.test_utils.tel.tel_voice_utils import phone_idle_csfb 91from acts.test_utils.tel.tel_voice_utils import phone_idle_iwlan 92from acts.test_utils.tel.tel_voice_utils import phone_idle_not_iwlan 93from acts.test_utils.tel.tel_voice_utils import phone_idle_volte 94from acts.test_utils.tel.tel_subscription_utils import set_subid_for_outgoing_call 95from acts.test_utils.tel.tel_subscription_utils import set_incoming_voice_sub_id 96from acts.test_utils.tel.tel_subscription_utils import get_subid_from_slot_index 97 98 99DEFAULT_LONG_DURATION_CALL_TOTAL_DURATION = 1 * 60 * 60 # default value 1 hour 100DEFAULT_PING_DURATION = 120 # in seconds 101 102 103class TelLiveDSDSVoiceTest(TelephonyBaseTest): 104 def __init__(self, controllers): 105 TelephonyBaseTest.__init__(self, controllers) 106 self.number_of_devices = 2 107 self.stress_test_number = self.get_stress_test_number() 108 109 110 def _msim_call_sequence(self, ads, mo_mt, slot_id, 111 msim_phone_setup_func, 112 verify_msim_initial_idle_func, 113 verify_msim_in_call_state_func, 114 incall_msim_setting_check_func, expected_result): 115 """_msim_call_sequence 116 117 Args: 118 ads: list of android devices. This list should have 2 ad. 119 mo_mt: indicating this call sequence is MO or MT. 120 Valid input: DIRECTION_MOBILE_ORIGINATED and 121 DIRECTION_MOBILE_TERMINATED. 122 slot_id: either 0 or 1 123 124 Returns: 125 if expected_result is True, 126 Return True if call sequence finish without exception. 127 if expected_result is string, 128 Return True if expected exception happened. Otherwise False. 129 130 """ 131 132 class _MSIMCallSequenceException(Exception): 133 pass 134 135 if (len(ads) != 2) or (mo_mt not in [ 136 DIRECTION_MOBILE_ORIGINATED, DIRECTION_MOBILE_TERMINATED 137 ]): 138 self.log.error("Invalid parameters.") 139 return False 140 141 sub_id = get_subid_from_slot_index(ads[0].log, ads[0], slot_id) 142 if mo_mt == DIRECTION_MOBILE_ORIGINATED: 143 ad_caller = ads[0] 144 ad_callee = ads[1] 145 set_subid_for_outgoing_call(ads[0], sub_id) 146 caller_number = get_phone_number(self.log, ad_caller) 147 callee_number = get_phone_number(self.log, ad_callee) 148 else: 149 ad_caller = ads[1] 150 ad_callee = ads[0] 151 caller_number = get_phone_number(self.log, ad_caller) 152 callee_number = get_phone_number_for_subscription(ads[0].log, 153 ads[0], sub_id) 154 setattr(ads[0], "incoming_voice_sub_id", sub_id) 155 156 self.log.info("-->Begin msim_call_sequence: %s to %s<--", 157 caller_number, callee_number) 158 159 try: 160 # Setup 161 if msim_phone_setup_func and not msim_phone_setup_func(): 162 raise _MSIMCallSequenceException("msim_phone_setup_func fail.") 163 if not phone_setup_voice_general(self.log, ads[1]): 164 raise _MSIMCallSequenceException( 165 "phone_setup_voice_general fail.") 166 time.sleep(WAIT_TIME_BETWEEN_REG_AND_CALL) 167 168 # Ensure idle status correct 169 if verify_msim_initial_idle_func and not \ 170 verify_msim_initial_idle_func(): 171 raise _MSIMCallSequenceException( 172 "verify_msim_initial_idle_func fail.") 173 174 # Make MO/MT call. 175 if not initiate_call(self.log, ad_caller, callee_number): 176 raise _MSIMCallSequenceException("initiate_call fail.") 177 if not wait_and_answer_call(self.log, ad_callee, caller_number): 178 raise _MSIMCallSequenceException("wait_and_answer_call fail.") 179 time.sleep(1) 180 181 # Check state, wait 30 seconds, check again. 182 if (verify_msim_in_call_state_func and not 183 verify_msim_in_call_state_func()): 184 raise _MSIMCallSequenceException( 185 "verify_msim_in_call_state_func fail.") 186 187 if is_phone_not_in_call(self.log, ads[1]): 188 raise _MSIMCallSequenceException("PhoneB not in call.") 189 time.sleep(WAIT_TIME_IN_CALL) 190 191 if (verify_msim_in_call_state_func and not 192 verify_msim_in_call_state_func()): 193 raise _MSIMCallSequenceException( 194 "verify_msim_in_call_state_func fail after 30 seconds.") 195 if is_phone_not_in_call(self.log, ads[1]): 196 raise _MSIMCallSequenceException( 197 "PhoneB not in call after 30 seconds.") 198 199 # in call change setting and check 200 if (incall_msim_setting_check_func and not 201 incall_msim_setting_check_func()): 202 raise _MSIMCallSequenceException( 203 "incall_msim_setting_check_func fail.") 204 205 # Hangup call 206 if is_phone_in_call(self.log, ads[0]): 207 if not hangup_call(self.log, ads[0]): 208 raise _MSIMCallSequenceException("hangup_call fail.") 209 else: 210 if incall_msim_setting_check_func is None: 211 raise _MSIMCallSequenceException("Unexpected call drop.") 212 213 except _MSIMCallSequenceException as e: 214 if str(e) == expected_result: 215 self.log.info("Expected exception: <%s>, return True.", e) 216 return True 217 else: 218 self.log.info("Unexpected exception: <%s>, return False.", e) 219 return False 220 221 self.log.info("msim_call_sequence finished, return %s", 222 expected_result is True) 223 return (expected_result is True) 224 225 def _phone_idle_iwlan(self): 226 return phone_idle_iwlan(self.log, self.android_devices[0]) 227 228 def _phone_idle_not_iwlan(self): 229 return phone_idle_not_iwlan(self.log, self.android_devices[0]) 230 231 def _phone_idle_volte(self): 232 return phone_idle_volte(self.log, self.android_devices[0]) 233 234 def _phone_idle_csfb(self): 235 return phone_idle_csfb(self.log, self.android_devices[0]) 236 237 def _phone_idle_3g(self): 238 return phone_idle_3g(self.log, self.android_devices[0]) 239 240 def _phone_idle_2g(self): 241 return phone_idle_2g(self.log, self.android_devices[0]) 242 243 def _is_phone_in_call_iwlan(self): 244 return is_phone_in_call_iwlan(self.log, self.android_devices[0]) 245 246 def _is_phone_in_call_not_iwlan(self): 247 return is_phone_in_call_not_iwlan(self.log, self.android_devices[0]) 248 249 def _is_phone_not_in_call(self): 250 if is_phone_in_call(self.log, self.android_devices[0]): 251 self.log.info("{} in call.".format(self.android_devices[0].serial)) 252 return False 253 self.log.info("{} not in call.".format(self.android_devices[0].serial)) 254 return True 255 256 def _is_phone_in_call_volte(self): 257 return is_phone_in_call_volte(self.log, self.android_devices[0]) 258 259 def _is_phone_in_call_3g(self): 260 return is_phone_in_call_3g(self.log, self.android_devices[0]) 261 262 def _is_phone_in_call_2g(self): 263 return is_phone_in_call_2g(self.log, self.android_devices[0]) 264 265 def _is_phone_in_call_csfb(self): 266 return is_phone_in_call_csfb(self.log, self.android_devices[0]) 267 268 def _is_phone_in_call(self): 269 return is_phone_in_call(self.log, self.android_devices[0]) 270 271 def _phone_setup_voice_general(self): 272 return phone_setup_voice_general(self.log, self.android_devices[0]) 273 274 def _phone_setup_volte(self): 275 return phone_setup_volte(self.log, self.android_devices[0]) 276 277 def _phone_setup_3g(self): 278 return phone_setup_voice_3g(self.log, self.android_devices[0]) 279 280 def _phone_setup_2g(self): 281 return phone_setup_voice_2g(self.log, self.android_devices[0]) 282 283 284 """ Tests Begin """ 285 286 287 @test_tracker_info(uuid="5a3ff3c0-5956-4b18-86a1-61ac60546330") 288 @TelephonyBaseTest.tel_test_wrap 289 def test_msim_mo_to_ssim_voice_general(self): 290 """ Test MSIM to SSIM MO Voice General 291 292 Make Sure PhoneA Slot0 is attached to Voice 293 Make Sure PhoneB is able to make MO/MT call 294 Call from PhoneA to PhoneB, call should succeed 295 Make Sure PhoneA Slot1 is attached to Voice 296 Call from PhoneA to PhoneB, call should succeed 297 298 Returns: 299 True if pass; False if fail. 300 """ 301 ads = [self.android_devices[0], self.android_devices[1]] 302 mo_result_0 = self._msim_call_sequence( 303 ads, DIRECTION_MOBILE_ORIGINATED, 0, 304 self._phone_setup_voice_general, None, self._is_phone_in_call, 305 None, True) 306 307 mo_result_1 = self._msim_call_sequence( 308 ads, DIRECTION_MOBILE_ORIGINATED, 1, 309 self._phone_setup_voice_general, None, self._is_phone_in_call, 310 None, True) 311 312 self.log.info("MO Slot0: %s, MO Slot1: %s", mo_result_0, mo_result_1) 313 return ((mo_result_0 is True) and (mo_result_1 is True)) 314 315 316 @test_tracker_info(uuid="5adc17d4-8258-42aa-82ab-0ef92ac7b660") 317 @TelephonyBaseTest.tel_test_wrap 318 def test_msim_mt_to_ssim_voice_general(self): 319 """ Test SSIM to MSIM MT Voice General 320 321 Make Sure PhoneA Slot0 is attached to Voice 322 Make Sure PhoneB is able to make MO/MT call 323 Call from PhoneB to PhoneA, call should succeed 324 Make Sure PhoneA Slot1 is attached to Voice 325 Call from PhoneB to PhoneA, call should succeed 326 327 Returns: 328 True if pass; False if fail. 329 """ 330 ads = [self.android_devices[0], self.android_devices[1]] 331 mt_result_0 = self._msim_call_sequence( 332 ads, DIRECTION_MOBILE_TERMINATED, 0, 333 self._phone_setup_voice_general, None, self._is_phone_in_call, 334 None, True) 335 336 mt_result_1 = self._msim_call_sequence( 337 ads, DIRECTION_MOBILE_TERMINATED, 1, 338 self._phone_setup_voice_general, None, self._is_phone_in_call, 339 None, True) 340 341 self.log.info("MT Slot0: %s, MT Slot1: %s", mt_result_0, mt_result_1) 342 return ((mt_result_0 is True) and (mt_result_1 is True)) 343 344 345 @test_tracker_info(uuid="3988e411-b9f8-4798-b3a6-dd3bf0d2035c") 346 @TelephonyBaseTest.tel_test_wrap 347 def test_msim_mo_to_ssim_volte(self): 348 """ Test MSIM to SSIM MO VoLTE 349 350 Make Sure PhoneA Slot0 is on VoLTE 351 Make Sure PhoneB is able to make MO/MT call 352 Call from PhoneA to PhoneB, call should succeed on VoLTE 353 Make Sure PhoneA Slot1 is on VoLTE 354 Call from PhoneA to PhoneB, call should succeed on VoLTE 355 356 Returns: 357 True if pass; False if fail. 358 """ 359 ads = [self.android_devices[0], self.android_devices[1]] 360 mo_result_0 = self._msim_call_sequence( 361 ads, DIRECTION_MOBILE_ORIGINATED, 0, self._phone_setup_volte, 362 self._phone_idle_volte, self._is_phone_in_call_volte, None, True) 363 364 mo_result_1 = self._msim_call_sequence( 365 ads, DIRECTION_MOBILE_ORIGINATED, 1, self._phone_setup_volte, 366 self._phone_idle_volte, self._is_phone_in_call_volte, None, True) 367 368 self.log.info("MO Slot0: %s, MO Slot1: %s", mo_result_0, mo_result_1) 369 return ((mo_result_0 is True) and (mo_result_1 is True)) 370 371 372 @test_tracker_info(uuid="4fe74a11-6f13-4305-becd-ad77e13a3193") 373 @TelephonyBaseTest.tel_test_wrap 374 def test_msim_mt_to_ssim_volte(self): 375 """ Test SSIM to MSIM MT VoLTE 376 377 Make Sure PhoneA Slot0 is on VoLTE 378 Make Sure PhoneB is able to make MO/MT call 379 Call from PhoneB to PhoneA, call should succeed on VoLTE 380 Make Sure PhoneA Slot1 is on VoLTE 381 Call from PhoneB to PhoneA, call should succeed on VoLTE 382 383 Returns: 384 True if pass; False if fail. 385 """ 386 ads = [self.android_devices[0], self.android_devices[1]] 387 mt_result_0 = self._msim_call_sequence( 388 ads, DIRECTION_MOBILE_TERMINATED, 0, self._phone_setup_volte, 389 self._phone_idle_volte, self._is_phone_in_call_volte, None, True) 390 391 mt_result_1 = self._msim_call_sequence( 392 ads, DIRECTION_MOBILE_TERMINATED, 1, self._phone_setup_volte, 393 self._phone_idle_volte, self._is_phone_in_call_volte, None, True) 394 395 self.log.info("MT Slot0: %s, MT Slot1: %s", mt_result_0, mt_result_1) 396 return ((mt_result_0 is True) and (mt_result_1 is True)) 397 398 399 @test_tracker_info(uuid="ffc7a414-8ec3-4bf4-a509-0bec59f2a3b9") 400 @TelephonyBaseTest.tel_test_wrap 401 def test_msim_mo_to_ssim_3g(self): 402 """ Test MSIM to SSIM MO 3G 403 404 Make Sure PhoneA Slot0 is on 3G 405 Make Sure PhoneB is able to make MO/MT call 406 Call from PhoneA to PhoneB, call should succeed on 3G 407 Make Sure PhoneA Slot1 is on 3G 408 Call from PhoneA to PhoneB, call should succeed on 3G 409 410 Returns: 411 True if pass; False if fail. 412 """ 413 ads = [self.android_devices[0], self.android_devices[1]] 414 mo_result_0 = self._msim_call_sequence( 415 ads, DIRECTION_MOBILE_ORIGINATED, 0, self._phone_setup_3g, 416 self._phone_idle_3g, self._is_phone_in_call_3g, None, True) 417 418 mo_result_1 = self._msim_call_sequence( 419 ads, DIRECTION_MOBILE_ORIGINATED, 1, self._phone_setup_3g, 420 self._phone_idle_3g, self._is_phone_in_call_3g, None, True) 421 422 self.log.info("MO Slot0: %s, MO Slot1: %s", mo_result_0, mo_result_1) 423 return ((mo_result_0 is True) and (mo_result_1 is True)) 424 425 426 @test_tracker_info(uuid="21221072-01f2-4951-ad55-fe1f4fe1b044") 427 @TelephonyBaseTest.tel_test_wrap 428 def test_msim_mt_to_ssim_3g(self): 429 """ Test SSIM to MSIM MT 3G 430 431 Make Sure PhoneA Slot0 is on 3G 432 Make Sure PhoneB is able to make MO/MT call 433 Call from PhoneB to PhoneA, call should succeed on 3G 434 Make Sure PhoneA Slot1 is on 3G 435 Call from PhoneB to PhoneA, call should succeed on 3G 436 437 Returns: 438 True if pass; False if fail. 439 """ 440 ads = [self.android_devices[0], self.android_devices[1]] 441 mt_result_0 = self._msim_call_sequence( 442 ads, DIRECTION_MOBILE_TERMINATED, 0, self._phone_setup_3g, 443 self._phone_idle_3g, self._is_phone_in_call_3g, None, True) 444 445 mt_result_1 = self._msim_call_sequence( 446 ads, DIRECTION_MOBILE_TERMINATED, 1, self._phone_setup_3g, 447 self._phone_idle_3g, self._is_phone_in_call_3g, None, True) 448 449 self.log.info("MT Slot0: %s, MT Slot1: %s", mt_result_0, mt_result_1) 450 return ((mt_result_0 is True) and (mt_result_1 is True)) 451 452 453 @test_tracker_info(uuid="65448385-42fe-429c-ad8e-6c75be93f83e") 454 @TelephonyBaseTest.tel_test_wrap 455 def test_msim_mo_to_ssim_2g(self): 456 """ Test MSIM to SSIM MO 2G 457 458 Make Sure PhoneA Slot0 is on 2G 459 Make Sure PhoneB is able to make MO/MT call 460 Call from PhoneA to PhoneB, call should succeed on 2G 461 Make Sure PhoneA Slot1 is on 2G 462 Call from PhoneA to PhoneB, call should succeed on 2G 463 464 Returns: 465 True if pass; False if fail. 466 """ 467 ads = [self.android_devices[0], self.android_devices[1]] 468 mo_result_0 = self._msim_call_sequence( 469 ads, DIRECTION_MOBILE_ORIGINATED, 0, self._phone_setup_2g, 470 self._phone_idle_2g, self._is_phone_in_call_2g, None, True) 471 472 mo_result_1 = self._msim_call_sequence( 473 ads, DIRECTION_MOBILE_ORIGINATED, 1, self._phone_setup_2g, 474 self._phone_idle_2g, self._is_phone_in_call_2g, None, True) 475 476 self.log.info("MO Slot0: %s, MO Slot1: %s", mo_result_0, mo_result_1) 477 return ((mo_result_0 is True) and (mo_result_1 is True)) 478 479 480 @test_tracker_info(uuid="44d1ef0a-c981-4db1-958c-0af06eb0c503") 481 @TelephonyBaseTest.tel_test_wrap 482 def test_msim_mt_to_ssim_2g(self): 483 """ Test SSIM to MSIM MT 2G 484 485 Make Sure PhoneA Slot0 is on 2G 486 Make Sure PhoneB is able to make MO/MT call 487 Call from PhoneB to PhoneA, call should succeed on 2G 488 Make Sure PhoneA Slot1 is on 2G 489 Call from PhoneB to PhoneA, call should succeed on 2G 490 491 Returns: 492 True if pass; False if fail. 493 """ 494 ads = [self.android_devices[0], self.android_devices[1]] 495 mt_result_0 = self._msim_call_sequence( 496 ads, DIRECTION_MOBILE_TERMINATED, 0, self._phone_setup_2g, 497 self._phone_idle_2g, self._is_phone_in_call_2g, None, True) 498 499 mt_result_1 = self._msim_call_sequence( 500 ads, DIRECTION_MOBILE_TERMINATED, 1, self._phone_setup_2g, 501 self._phone_idle_2g, self._is_phone_in_call_2g, None, True) 502 503 self.log.info("MT Slot0: %s, MT Slot1: %s", mt_result_0, mt_result_1) 504 return ((mt_result_0 is True) and (mt_result_1 is True)) 505