• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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