| #!/usr/bin/env python3 |
| from osmo_gsm_tester.testenv import * |
| |
| USSD_COMMAND_GET_EXTENSION = '*#100#' |
| |
| hlr = tenv.hlr() |
| bts = tenv.bts() |
| mgw_msc = tenv.mgw() |
| mgw_bsc = tenv.mgw() |
| stp = tenv.stp() |
| msc = tenv.msc(hlr, mgw_msc, stp) |
| bsc = tenv.bsc(msc, mgw_bsc, stp) |
| ms = tenv.modem() |
| |
| hlr.start() |
| stp.start() |
| msc.start() |
| mgw_msc.start() |
| mgw_bsc.start() |
| |
| bsc.bts_add(bts) |
| bsc.start() |
| |
| bts.start() |
| wait(bsc.bts_is_connected, bts) |
| |
| hlr.subscriber_add(ms) |
| |
| ms.connect(msc.mcc_mnc()) |
| |
| ms.log_info() |
| |
| print('waiting for modems to attach...') |
| wait(ms.is_registered, msc.mcc_mnc()) |
| wait(msc.subscriber_attached, ms) |
| |
| # ofono (qmi) currently changes state to 'registered' jut after sending |
| # 'Location Update Request', but before receiving 'Location Updating Accept'. |
| # Which means we can reach lines below and send USSD code while still not being |
| # attached, which will then fail. See OsmoGsmTester #2239 for more detailed |
| # information. |
| # Until we find an ofono fix or a better way to workaround this, let's just |
| # sleep for a while in order to receive the 'Location Updating Accept' message |
| # before attemting to send the USSD. |
| sleep(10) |
| |
| print('Sending ussd code %s' % USSD_COMMAND_GET_EXTENSION) |
| response = ms.ussd_send(USSD_COMMAND_GET_EXTENSION) |
| log('got ussd response: %r' % repr(response)) |
| assert response.endswith(' ' + ms.msisdn) |