blob: d5f76156eee72f93af60e848b61ce2c8d25e519a [file] [log] [blame]
Neels Hofmeyr67cea222017-05-06 15:06:04 +02001#!/usr/bin/env python3
2from osmo_gsm_tester.test import *
3
4print('use resources...')
5nitb = suite.nitb()
6bts = suite.bts()
7modems = suite.modems(int(prompt('How many modems?')))
8
9print('start nitb and bts...')
10nitb.bts_add(bts)
11nitb.start()
12bts.start()
13
14for m in modems:
15 nitb.subscriber_add(m)
Pau Espin Pedrol0e57aad2017-05-29 14:25:22 +020016 m.connect(nitb.mcc_mnc())
Neels Hofmeyr67cea222017-05-06 15:06:04 +020017
18while True:
Pau Espin Pedrold27de2b2017-11-06 17:42:41 +010019 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 Hofmeyr67cea222017-05-06 15:06:04 +020020 cmd = cmd.strip().lower()
21
22 if not cmd:
23 continue
Pau Espin Pedrol4897e7a2017-10-06 18:41:20 +020024
25 params = cmd.split()
26
Neels Hofmeyr67cea222017-05-06 15:06:04 +020027 if 'quit'.startswith(cmd):
28 break
Pau Espin Pedrol4897e7a2017-10-06 18:41:20 +020029
Neels Hofmeyr67cea222017-05-06 15:06:04 +020030 elif 'wait-registered'.startswith(cmd):
Neels Hofmeyra88b0c72017-05-07 02:15:48 +020031 try:
Pau Espin Pedrol0e57aad2017-05-29 14:25:22 +020032 for m in modems:
33 wait(m.is_connected, nitb.mcc_mnc())
Neels Hofmeyra88b0c72017-05-07 02:15:48 +020034 wait(nitb.subscriber_attached, *modems)
35 except Timeout:
36 print('Timeout while waiting for registration.')
Pau Espin Pedrol4897e7a2017-10-06 18:41:20 +020037
Neels Hofmeyr67cea222017-05-06 15:06:04 +020038 elif 'get-registered'.startswith(cmd):
39 print(nitb.imsi_list_attached())
40 print('RESULT: %s' %
41 ('All modems are registered.' if nitb.subscriber_attached(*modems)
42 else 'Some modem(s) not registered yet.'))
Pau Espin Pedrol4897e7a2017-10-06 18:41:20 +020043
Neels Hofmeyr67cea222017-05-06 15:06:04 +020044 elif 'sms'.startswith(cmd):
45 for mo in modems:
46 for mt in modems:
47 mo.sms_send(mt.msisdn, 'to ' + mt.name())
Pau Espin Pedrol4897e7a2017-10-06 18:41:20 +020048
49 elif cmd.startswith('call-list'):
50 if len(params) != 1 and len(params) != 2:
51 print('wrong format')
52 continue
53 for ms in modems:
54 if len(params) == 1 or str(ms.msisdn) == params[1]:
55 print('call-list: %r %r' % (ms.name(), ms.call_id_list()))
56
57 elif cmd.startswith('call-dial'):
58 if len(params) != 3:
59 print('wrong format')
60 continue
61 src_msisdn, dst_msisdn = params[1:]
62 for mo in modems:
63 if str(mo.msisdn) == src_msisdn:
64 print('dialing %s->%s' % (src_msisdn, dst_msisdn))
65 call_id = mo.call_dial(dst_msisdn)
66 print('dial success: call_id=%r' % call_id)
67
68 elif cmd.startswith('call-wait-incoming'):
69 if len(params) != 3:
70 print('wrong format')
71 continue
72 src_msisdn, dst_msisdn = params[1:]
73 for mt in modems:
74 if str(mt.msisdn) == dst_msisdn:
75 print('waiting for incoming %s->%s' % (src_msisdn, dst_msisdn))
76 call_id = mt.call_wait_incoming(src_msisdn)
77 print('incoming call success: call_id=%r' % call_id)
78
79 elif cmd.startswith('call-answer'):
80 if len(params) != 3:
81 print('wrong format')
82 continue
83 mt_msisdn, call_id = params[1:]
84 for mt in modems:
85 if str(mt.msisdn) == mt_msisdn:
86 print('answering %s %r' % (mt.name(), call_id))
87 mt.call_answer(call_id)
88
89 elif cmd.startswith('call-hangup'):
90 if len(params) != 3:
91 print('wrong format')
92 continue
93 ms_msisdn, call_id = params[1:]
94 for ms in modems:
95 if str(ms.msisdn) == ms_msisdn:
96 print('hanging up %s %r' % (ms.name(), call_id))
97 ms.call_hangup(call_id)
98
Pau Espin Pedrold27de2b2017-11-06 17:42:41 +010099 elif cmd.startswith('ussd'):
100 if len(params) != 2:
101 print('wrong format')
102 continue
103 ussd_cmd = params[1]
104 for ms in modems:
105 print('modem %s: ussd %s' % (ms.name(), ussd_cmd))
106 response = ms.ussd_send(ussd_cmd)
107 print('modem %s: response=%r' % (ms.name(), response))
108
Pau Espin Pedrol4897e7a2017-10-06 18:41:20 +0200109 else:
110 print('Unknown command: %s' % cmd)