2014-03-11 16:39:22 +00:00
|
|
|
|
#!/usr/bin/python3
|
2011-02-02 10:44:41 +00:00
|
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
|
|
2014-03-11 16:39:21 +00:00
|
|
|
|
from gi.repository import GLib
|
2011-02-02 10:44:41 +00:00
|
|
|
|
import sys
|
2011-02-04 08:38:42 +00:00
|
|
|
|
import os
|
2011-02-02 10:44:41 +00:00
|
|
|
|
|
|
|
|
|
import dbus
|
|
|
|
|
import dbus.mainloop.glib
|
|
|
|
|
|
|
|
|
|
SCA = ""
|
2011-02-04 08:38:42 +00:00
|
|
|
|
lock = "off"
|
2011-02-02 10:44:41 +00:00
|
|
|
|
|
|
|
|
|
def clear_screen(numlines=100):
|
|
|
|
|
import os
|
|
|
|
|
if os.name == "posix":
|
|
|
|
|
os.system('clear')
|
|
|
|
|
|
|
|
|
|
elif os.name in ("nt", "dos", "ce"):
|
|
|
|
|
os.system('CLS')
|
|
|
|
|
|
|
|
|
|
else:
|
2014-03-11 16:39:18 +00:00
|
|
|
|
print('\n' * numlines)
|
2011-02-02 10:44:41 +00:00
|
|
|
|
|
|
|
|
|
def print_menu():
|
2014-03-11 16:39:18 +00:00
|
|
|
|
print("Select test case")
|
|
|
|
|
print("-----------------------------------------------------------")
|
|
|
|
|
print("[0] Send SMS")
|
|
|
|
|
print("[1] Enable delivery reports")
|
|
|
|
|
print("[2] Disable delivery reports")
|
|
|
|
|
print("[3] Set Service Center Address")
|
|
|
|
|
print("[4] Set PS-only Bearer")
|
|
|
|
|
print("[5] Set CS-only Bearer")
|
|
|
|
|
print("[6] Set PS-preferred Bearer")
|
|
|
|
|
print("[7] Set CS-preferred Bearer")
|
|
|
|
|
print("[x] Exit")
|
|
|
|
|
print("-----------------------------------------------------------")
|
2011-02-02 10:44:41 +00:00
|
|
|
|
|
|
|
|
|
def print_send_sms_menu():
|
2014-03-11 16:39:18 +00:00
|
|
|
|
print("Select SMS type")
|
|
|
|
|
print("-----------------------------------------------------------")
|
|
|
|
|
print("[1] Default SMS")
|
|
|
|
|
print("[2] Long SMS > 160 characters")
|
|
|
|
|
print("[3] SMS with national characters")
|
|
|
|
|
print("-----------------------------------------------------------")
|
2011-02-02 10:44:41 +00:00
|
|
|
|
|
|
|
|
|
def message_delivery_report(sms, value):
|
|
|
|
|
try:
|
|
|
|
|
sms.SetProperty("UseDeliveryReports", dbus.Boolean(value))
|
|
|
|
|
|
2014-03-11 16:39:19 +00:00
|
|
|
|
except dbus.DBusException as e:
|
2011-02-02 10:44:41 +00:00
|
|
|
|
if value == 1:
|
2014-03-11 16:39:18 +00:00
|
|
|
|
print("Unable to activate Delivery Reports - FAIL")
|
2011-02-02 10:44:41 +00:00
|
|
|
|
|
|
|
|
|
if value == 0:
|
2014-03-11 16:39:18 +00:00
|
|
|
|
print("Unable to deactivate Delivery Reports - FAIL")
|
2011-02-02 10:44:41 +00:00
|
|
|
|
|
|
|
|
|
def message_service_center_address(sms, value):
|
|
|
|
|
try:
|
|
|
|
|
sms.SetProperty("ServiceCenterAddress",dbus.String(value))
|
2014-03-11 16:39:19 +00:00
|
|
|
|
except dbus.DBusException as e:
|
2014-03-11 16:39:18 +00:00
|
|
|
|
print("Unable to set correct Service Center Address - FAIL")
|
2011-02-02 10:44:41 +00:00
|
|
|
|
|
|
|
|
|
def message_bearer(sms, value):
|
|
|
|
|
try:
|
|
|
|
|
sms.SetProperty("Bearer", dbus.String(value))
|
2014-03-11 16:39:19 +00:00
|
|
|
|
except dbus.DBusException as e:
|
2014-03-11 16:39:18 +00:00
|
|
|
|
print("Unable to set Bearer[%s] - FAIL" % (value))
|
2011-02-02 10:44:41 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def message_send(sms, number, value):
|
|
|
|
|
sms.SendMessage(dbus.String(number), value)
|
|
|
|
|
|
|
|
|
|
def property_changed(property, value):
|
2014-03-11 16:39:18 +00:00
|
|
|
|
print("[1]:Message Manager property %s changed to %s" %\
|
|
|
|
|
(property, value))
|
|
|
|
|
print("[1]:press ENTER")
|
2011-02-02 10:44:41 +00:00
|
|
|
|
|
|
|
|
|
def immediate_message(property, value):
|
2014-03-11 16:39:18 +00:00
|
|
|
|
print("[2]:Message Manager immediate message")
|
|
|
|
|
print("[2]:Text::%s" % (property))
|
2011-02-02 10:44:41 +00:00
|
|
|
|
for key in value.keys():
|
|
|
|
|
val = str(value[key])
|
2014-03-11 16:39:18 +00:00
|
|
|
|
print("[2]:%s = %s" % (key, val))
|
2011-02-02 10:44:41 +00:00
|
|
|
|
|
2014-03-11 16:39:18 +00:00
|
|
|
|
print("[2]:press ENTER")
|
2011-02-04 08:38:42 +00:00
|
|
|
|
|
2011-02-02 10:44:41 +00:00
|
|
|
|
def incoming_message(property, value):
|
2014-03-11 16:39:18 +00:00
|
|
|
|
print("[3]:Message Manager incoming message")
|
|
|
|
|
print("[3]:Text::%s" % (property))
|
2011-02-02 10:44:41 +00:00
|
|
|
|
for key in value.keys():
|
|
|
|
|
val = str(value[key])
|
2014-03-11 16:39:18 +00:00
|
|
|
|
print("[3]:%s = %s" % (key, val))
|
2011-02-02 10:44:41 +00:00
|
|
|
|
|
2014-03-11 16:39:18 +00:00
|
|
|
|
print("[3]:press ENTER")
|
2011-02-04 08:38:42 +00:00
|
|
|
|
|
2011-02-02 10:44:41 +00:00
|
|
|
|
def message_added(property, value):
|
2014-03-11 16:39:18 +00:00
|
|
|
|
print("[4]:Message Manager[Added]")
|
|
|
|
|
print("[4]:%s"% (property))
|
2011-02-02 10:44:41 +00:00
|
|
|
|
|
|
|
|
|
for key in value.keys():
|
|
|
|
|
val = str(value[key])
|
2014-03-11 16:39:18 +00:00
|
|
|
|
print("[4]:%s = %s" % (key, val))
|
2011-02-02 10:44:41 +00:00
|
|
|
|
|
2014-03-11 16:39:18 +00:00
|
|
|
|
print("[4]:press ENTER")
|
2011-02-04 08:38:42 +00:00
|
|
|
|
|
2011-02-02 10:44:41 +00:00
|
|
|
|
def message_removed(property):
|
2014-03-11 16:39:18 +00:00
|
|
|
|
print("[5]:Message Manager [removed]")
|
|
|
|
|
print("[5]: %s" % (property))
|
|
|
|
|
print("[5]:press ENTER")
|
2011-02-02 10:44:41 +00:00
|
|
|
|
|
|
|
|
|
def print_sms_properties(sms):
|
|
|
|
|
global SCA
|
|
|
|
|
properties = sms.GetProperties()
|
2014-03-11 16:39:18 +00:00
|
|
|
|
print("---------------------PROPERTIES----------------------------")
|
2011-02-02 10:44:41 +00:00
|
|
|
|
for p in properties:
|
|
|
|
|
if len(properties[p].__str__()) > 0:
|
2014-03-11 16:39:18 +00:00
|
|
|
|
print("%s Message Manager rule is: %s" %\
|
|
|
|
|
(p, properties[p]))
|
|
|
|
|
print("------------------------------------------" \
|
|
|
|
|
"-----------------")
|
2011-02-02 10:44:41 +00:00
|
|
|
|
if p == "ServiceCenterAddress":
|
2011-03-14 14:47:42 +00:00
|
|
|
|
SCA = properties[p]
|
2011-02-02 10:44:41 +00:00
|
|
|
|
else:
|
2014-03-11 16:39:18 +00:00
|
|
|
|
print("%s Message Manager rule disabled" % (p))
|
2011-02-02 10:44:41 +00:00
|
|
|
|
|
2014-03-11 16:39:21 +00:00
|
|
|
|
def stdin_handler(channel, condition, sms, value, number):
|
2011-02-04 08:38:42 +00:00
|
|
|
|
global lock
|
2014-03-11 16:39:21 +00:00
|
|
|
|
in_key = os.read(channel.unix_get_fd(), 160).rstrip().decode('UTF-8')
|
2011-02-02 10:44:41 +00:00
|
|
|
|
|
2011-02-04 08:38:42 +00:00
|
|
|
|
if lock == "off":
|
|
|
|
|
lock = "on"
|
2011-02-02 10:44:41 +00:00
|
|
|
|
if in_key == '0':
|
|
|
|
|
print_send_sms_menu()
|
2014-03-11 16:39:22 +00:00
|
|
|
|
sms_type = input('Select SMS type: ')
|
2011-02-02 10:44:41 +00:00
|
|
|
|
|
|
|
|
|
if sms_type == '1':
|
|
|
|
|
message_send(sms, number, value)
|
|
|
|
|
|
2011-02-04 08:38:42 +00:00
|
|
|
|
elif sms_type == '2':
|
2011-02-02 10:44:41 +00:00
|
|
|
|
val = "abcde12345"
|
|
|
|
|
for i in range(30):
|
|
|
|
|
value = value + val
|
|
|
|
|
|
|
|
|
|
message_send(sms, number, value)
|
|
|
|
|
|
2011-02-04 08:38:42 +00:00
|
|
|
|
elif sms_type == '3':
|
2011-02-02 10:44:41 +00:00
|
|
|
|
value = "ÖÄÅöäåµʒ×cvcvbŋ"
|
|
|
|
|
message_send(sms, number, value)
|
|
|
|
|
|
2011-02-04 08:38:42 +00:00
|
|
|
|
elif in_key == '1':
|
2011-02-02 10:44:41 +00:00
|
|
|
|
message_delivery_report(sms, 1)
|
2014-03-11 16:39:22 +00:00
|
|
|
|
send_msg = input('Send test message[y/n]?: ')
|
2011-02-02 10:44:41 +00:00
|
|
|
|
if send_msg == 'y':
|
2011-03-14 14:47:42 +00:00
|
|
|
|
message_send(sms, number, ("(1)" + value +
|
|
|
|
|
": UseDeliveryReports[TRUE]"))
|
2011-02-02 10:44:41 +00:00
|
|
|
|
|
2011-02-04 08:38:42 +00:00
|
|
|
|
elif in_key == '2':
|
2011-02-02 10:44:41 +00:00
|
|
|
|
message_delivery_report(sms, 0)
|
2014-03-11 16:39:22 +00:00
|
|
|
|
send_msg = input('Send test message[y/n]?: ')
|
2011-02-02 10:44:41 +00:00
|
|
|
|
if send_msg == 'y':
|
2011-03-14 14:47:42 +00:00
|
|
|
|
message_send(sms, number, ("(2) " + value +
|
|
|
|
|
": UseDeliveryReports[FALSE]"))
|
2011-02-02 10:44:41 +00:00
|
|
|
|
|
2011-02-04 08:38:42 +00:00
|
|
|
|
elif in_key == '3':
|
2011-02-02 10:44:41 +00:00
|
|
|
|
message_service_center_address(sms, SCA)
|
2014-03-11 16:39:22 +00:00
|
|
|
|
send_msg = input('Send test message[y/n]?: ')
|
2011-02-02 10:44:41 +00:00
|
|
|
|
if send_msg == 'y':
|
2011-03-14 14:47:42 +00:00
|
|
|
|
message_send(sms, number, ("(3) " + value +
|
|
|
|
|
": ServiceCenterAddress"))
|
2011-02-02 10:44:41 +00:00
|
|
|
|
|
2011-02-04 08:38:42 +00:00
|
|
|
|
elif in_key == '4':
|
2011-02-02 10:44:41 +00:00
|
|
|
|
message_bearer(sms, "ps-only")
|
2014-03-11 16:39:22 +00:00
|
|
|
|
send_msg = input('Send test message[y/n]?: ')
|
2011-02-02 10:44:41 +00:00
|
|
|
|
if send_msg == 'y':
|
2011-03-14 14:47:42 +00:00
|
|
|
|
message_send(sms, number, ("(4) " + value +
|
|
|
|
|
": Bearer[ps-only]"))
|
2011-02-02 10:44:41 +00:00
|
|
|
|
|
2011-02-04 08:38:42 +00:00
|
|
|
|
elif in_key == '5':
|
2011-02-02 10:44:41 +00:00
|
|
|
|
message_bearer(sms, "cs-only")
|
2014-03-11 16:39:22 +00:00
|
|
|
|
send_msg = input('Send test message[y/n]?: ')
|
2011-02-02 10:44:41 +00:00
|
|
|
|
if send_msg == 'y':
|
2011-03-14 14:47:42 +00:00
|
|
|
|
message_send(sms, number, ("(5) " + value +
|
|
|
|
|
": Bearer[cs-only]"))
|
2011-02-02 10:44:41 +00:00
|
|
|
|
|
2011-02-04 08:38:42 +00:00
|
|
|
|
elif in_key == '6':
|
2011-02-02 10:44:41 +00:00
|
|
|
|
message_bearer(sms, "ps-preferred")
|
2014-03-11 16:39:22 +00:00
|
|
|
|
send_msg = input('Send test message[y/n]?: ')
|
2011-02-02 10:44:41 +00:00
|
|
|
|
if send_msg == 'y':
|
2011-03-14 14:47:42 +00:00
|
|
|
|
message_send(sms, number, ("(6) " + value +
|
|
|
|
|
": Bearer[ps-preferred]"))
|
2011-02-02 10:44:41 +00:00
|
|
|
|
|
2011-02-04 08:38:42 +00:00
|
|
|
|
elif in_key == '7':
|
2011-02-02 10:44:41 +00:00
|
|
|
|
message_bearer(sms, "cs-preferred")
|
2014-03-11 16:39:22 +00:00
|
|
|
|
send_msg = input('Send test message[y/n]?: ')
|
2011-02-02 10:44:41 +00:00
|
|
|
|
if send_msg == 'y':
|
2011-03-14 14:47:42 +00:00
|
|
|
|
message_send(sms,number, ("(7) " + value +
|
|
|
|
|
": Bearer[cs-preferred]"))
|
2011-02-02 10:44:41 +00:00
|
|
|
|
|
2011-02-04 08:38:42 +00:00
|
|
|
|
elif in_key == 'x':
|
|
|
|
|
sys.exit(1)
|
|
|
|
|
|
2011-02-02 10:44:41 +00:00
|
|
|
|
clear_screen()
|
|
|
|
|
print_sms_properties(sms)
|
|
|
|
|
print_menu()
|
2011-02-04 08:38:42 +00:00
|
|
|
|
lock = "off"
|
|
|
|
|
|
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
|
|
|
|
|
|
if (len(sys.argv) < 3):
|
2014-03-11 16:39:18 +00:00
|
|
|
|
print("Usage: %s [modem] <phone_number> <test_message>" % (sys.argv[0]))
|
2011-02-04 08:38:42 +00:00
|
|
|
|
sys.exit(1)
|
|
|
|
|
|
|
|
|
|
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
|
|
|
|
|
bus = dbus.SystemBus()
|
|
|
|
|
manager = dbus.Interface(bus.get_object('org.ofono', '/'),
|
|
|
|
|
'org.ofono.Manager')
|
|
|
|
|
|
2011-09-29 17:54:24 +00:00
|
|
|
|
if (len(sys.argv) == 4):
|
|
|
|
|
path = sys.argv[1]
|
|
|
|
|
number = sys.argv[2]
|
|
|
|
|
value = sys.argv[3]
|
|
|
|
|
else:
|
|
|
|
|
modems = manager.GetModems()
|
|
|
|
|
path = modems[0][0]
|
|
|
|
|
number = sys.argv[1]
|
|
|
|
|
value = sys.argv[2]
|
|
|
|
|
|
2011-02-04 08:38:42 +00:00
|
|
|
|
sms = dbus.Interface(bus.get_object('org.ofono', path),
|
|
|
|
|
'org.ofono.MessageManager')
|
|
|
|
|
|
|
|
|
|
sms.connect_to_signal("PropertyChanged", property_changed)
|
|
|
|
|
sms.connect_to_signal("ImmediateMessage", immediate_message)
|
|
|
|
|
sms.connect_to_signal("IncomingMessage", incoming_message)
|
|
|
|
|
sms.connect_to_signal("MessageAdded", message_added)
|
|
|
|
|
sms.connect_to_signal("MessageRemoved", message_removed)
|
|
|
|
|
|
|
|
|
|
clear_screen()
|
|
|
|
|
print_sms_properties(sms)
|
|
|
|
|
print_menu()
|
2011-02-02 10:44:41 +00:00
|
|
|
|
|
2014-03-11 16:39:21 +00:00
|
|
|
|
GLib.io_add_watch(GLib.IOChannel(filedes=sys.stdin.fileno()),
|
|
|
|
|
GLib.PRIORITY_DEFAULT, GLib.IOCondition.IN, stdin_handler,
|
|
|
|
|
sms, value, number)
|
|
|
|
|
mainloop = GLib.MainLoop()
|
2011-02-02 10:44:41 +00:00
|
|
|
|
mainloop.run()
|