blob: eb196bf9d4662e62728ae13e04e9e6465a66248f [file] [log] [blame]
Neels Hofmeyraea2f2c2017-05-18 22:01:59 +02001#!/usr/bin/env python3
Pau Espin Pedroldfe38ad2017-11-09 13:57:39 +01002from osmo_gsm_tester.testenv import *
Pau Espin Pedrola5ed18a2017-11-23 11:03:07 +01003
Pau Espin Pedrol43857802018-09-13 15:07:27 +02004print('use resources...')
Pau Espin Pedrol40c7bc72020-05-05 13:41:42 +02005nitb = tenv.nitb()
6bts = tenv.bts()
7modems = tenv.modems(int(prompt('How many modems?')))
Neels Hofmeyraea2f2c2017-05-18 22:01:59 +02008
Pau Espin Pedrol43857802018-09-13 15:07:27 +02009print('start nitb and bts...')
10nitb.bts_add(bts)
11nitb.start()
Neels Hofmeyraea2f2c2017-05-18 22:01:59 +020012bts.start()
Pau Espin Pedrol43857802018-09-13 15:07:27 +020013wait(nitb.bts_is_connected, bts)
Neels Hofmeyraea2f2c2017-05-18 22:01:59 +020014
15for m in modems:
Pau Espin Pedrol43857802018-09-13 15:07:27 +020016 nitb.subscriber_add(m)
17 m.connect(nitb.mcc_mnc())
Neels Hofmeyraea2f2c2017-05-18 22:01:59 +020018
19while True:
Pau Espin Pedrol43857802018-09-13 15:07:27 +020020 cmd = prompt('Enter command: (q)uit (s)ms (g)et-registered (w)ait-registered, call-list [<ms_msisdn>], call-dial <src_msisdn> <dst_msisdn>, call-wait-incoming <src_msisdn> <dst_msisdn>, call-answer <mt_msisdn> <call_id>, call-hangup <ms_msisdn> <call_id>, ussd <command>')
Neels Hofmeyraea2f2c2017-05-18 22:01:59 +020021 cmd = cmd.strip().lower()
22
23 if not cmd:
24 continue
Pau Espin Pedrol4897e7a2017-10-06 18:41:20 +020025
26 params = cmd.split()
27
Neels Hofmeyraea2f2c2017-05-18 22:01:59 +020028 if 'quit'.startswith(cmd):
29 break
Pau Espin Pedrol4897e7a2017-10-06 18:41:20 +020030
Neels Hofmeyraea2f2c2017-05-18 22:01:59 +020031 elif 'wait-registered'.startswith(cmd):
32 try:
Pau Espin Pedrol0e57aad2017-05-29 14:25:22 +020033 for m in modems:
Pau Espin Pedrol3a81a7e2020-06-10 16:52:53 +020034 wait(m.is_registered, nitb.mcc_mnc())
Pau Espin Pedrol43857802018-09-13 15:07:27 +020035 wait(nitb.subscriber_attached, *modems)
Neels Hofmeyraea2f2c2017-05-18 22:01:59 +020036 except Timeout:
37 print('Timeout while waiting for registration.')
Pau Espin Pedrol4897e7a2017-10-06 18:41:20 +020038
Neels Hofmeyraea2f2c2017-05-18 22:01:59 +020039 elif 'get-registered'.startswith(cmd):
Pau Espin Pedrol43857802018-09-13 15:07:27 +020040 print(nitb.imsi_list_attached())
Neels Hofmeyraea2f2c2017-05-18 22:01:59 +020041 print('RESULT: %s' %
Pau Espin Pedrol43857802018-09-13 15:07:27 +020042 ('All modems are registered.' if nitb.subscriber_attached(*modems)
Neels Hofmeyraea2f2c2017-05-18 22:01:59 +020043 else 'Some modem(s) not registered yet.'))
Pau Espin Pedrol4897e7a2017-10-06 18:41:20 +020044
Neels Hofmeyraea2f2c2017-05-18 22:01:59 +020045 elif 'sms'.startswith(cmd):
46 for mo in modems:
47 for mt in modems:
Pau Espin Pedrol4b7c5852020-10-14 14:48:21 +020048 mo.sms_send(mt.msisdn(), 'to ' + mt.name())
Pau Espin Pedrol4897e7a2017-10-06 18:41:20 +020049
50 elif cmd.startswith('call-list'):
51 if len(params) != 1 and len(params) != 2:
52 print('wrong format')
53 continue
54 for ms in modems:
Pau Espin Pedrol4b7c5852020-10-14 14:48:21 +020055 if len(params) == 1 or str(ms.msisdn()) == params[1]:
Pau Espin Pedrol4897e7a2017-10-06 18:41:20 +020056 print('call-list: %r %r' % (ms.name(), ms.call_id_list()))
57
58 elif cmd.startswith('call-dial'):
59 if len(params) != 3:
60 print('wrong format')
61 continue
62 src_msisdn, dst_msisdn = params[1:]
63 for mo in modems:
Pau Espin Pedrol4b7c5852020-10-14 14:48:21 +020064 if str(mo.msisdn()) == src_msisdn:
Pau Espin Pedrol4897e7a2017-10-06 18:41:20 +020065 print('dialing %s->%s' % (src_msisdn, dst_msisdn))
66 call_id = mo.call_dial(dst_msisdn)
67 print('dial success: call_id=%r' % call_id)
68
69 elif cmd.startswith('call-wait-incoming'):
70 if len(params) != 3:
71 print('wrong format')
72 continue
73 src_msisdn, dst_msisdn = params[1:]
74 for mt in modems:
Pau Espin Pedrol4b7c5852020-10-14 14:48:21 +020075 if str(mt.msisdn()) == dst_msisdn:
Pau Espin Pedrol4897e7a2017-10-06 18:41:20 +020076 print('waiting for incoming %s->%s' % (src_msisdn, dst_msisdn))
77 call_id = mt.call_wait_incoming(src_msisdn)
78 print('incoming call success: call_id=%r' % call_id)
79
80 elif cmd.startswith('call-answer'):
81 if len(params) != 3:
82 print('wrong format')
83 continue
84 mt_msisdn, call_id = params[1:]
85 for mt in modems:
Pau Espin Pedrol4b7c5852020-10-14 14:48:21 +020086 if str(mt.msisdn()) == mt_msisdn:
Pau Espin Pedrol4897e7a2017-10-06 18:41:20 +020087 print('answering %s %r' % (mt.name(), call_id))
88 mt.call_answer(call_id)
89
90 elif cmd.startswith('call-hangup'):
91 if len(params) != 3:
92 print('wrong format')
93 continue
94 ms_msisdn, call_id = params[1:]
95 for ms in modems:
Pau Espin Pedrol4b7c5852020-10-14 14:48:21 +020096 if str(ms.msisdn()) == ms_msisdn:
Pau Espin Pedrol4897e7a2017-10-06 18:41:20 +020097 print('hanging up %s %r' % (ms.name(), call_id))
98 ms.call_hangup(call_id)
99
Pau Espin Pedrold27de2b2017-11-06 17:42:41 +0100100 elif cmd.startswith('ussd'):
101 if len(params) != 2:
102 print('wrong format')
103 continue
104 ussd_cmd = params[1]
105 for ms in modems:
106 print('modem %s: ussd %s' % (ms.name(), ussd_cmd))
107 response = ms.ussd_send(ussd_cmd)
108 print('modem %s: response=%r' % (ms.name(), response))
109
Pau Espin Pedrol4897e7a2017-10-06 18:41:20 +0200110 else:
111 print('Unknown command: %s' % cmd)