ofono/test/test-cbs

189 lines
4.9 KiB
Plaintext
Raw Normal View History

#!/usr/bin/python
import dbus
import dbus.mainloop.glib
import sys
import gobject
import os
def print_menu():
print "Select test case"
print "----------------------------------------------------------------"
print "[0] Activate cbs"
print "[1] Deactivate cbs"
print "[2] Get cbs properties"
print "[3] Set/Register topics"
print " If several - give topics separated with comma. \
\n E.g. 20,50-51,60"
print "[4] Clear/Unregister topics"
print "[5] NetReg Base Station - Get current serving cell"
print "[x] Exit"
print "----------------------------------------------------------------"
def property_changed(property, value):
if value == "" and property == "Topics":
print "User selected Topics have been cleared. \
\nRegistered for emergency topics only."
else:
print "Cell Broadcast property %s is changed to %s" % (property, value)
print "\nPress ENTER to continue"
def incoming_broadcast(text, topic):
print "Broadcast msg: %s \n Topic channel: %s" % (text, topic)
print "\nPress ENTER to continue"
def emergency_broadcast(text, properties):
emergType = properties["EmergencyType"]
emergAlert = properties["EmergencyAlert"]
print "Broadcast msg: %s \n\t Type: %s \n\t Alert: %s \n\t Popup: %s" \
% (text, emergType, emergAlert, popup)
if properties["Popup"] == True:
print "Popup required."
print "\nPress ENTER to continue"
def set_cbs_state(cbs, state):
if state == True:
print "Activating cell broadcast..."
cbs.SetProperty("Powered", dbus.Boolean(1))
else:
print "Deactivating cell broadcast..."
cbs.SetProperty("Powered", dbus.Boolean(0))
print "-----------------------------------------------------------"
def print_cbs_properties(cbs):
properties = cbs.GetProperties()
print "---------------------PROPERTIES----------------------------"
for p in properties:
if len(properties[p].__str__()) > 0:
if p == "Powered":
if properties[p] == True:
print "Cell Broadcast is Activated."
else:
print "Cell Broadcast is Deactivated."
elif p == "Topics":
print "Currently set CBS %s are: %s" \
% (p, properties[p])
topics_available = True
else:
print "Cell Broadcast %s value empty" % (p)
print "-----------------------------------------------------------"
def set_topics(cbs):
print_cbs_properties(cbs)
topicTemp = ""
invalidData = False;
index = 0
topics = raw_input('Enter the topic ID(s) you want to register to: ')
while index < len(topics):
if topics[index] == ',' or topics[index] == '-':
topicTemp = ""
elif topics[index] >= '0' and topics[index] <= '9':
topicTemp = topicTemp + topics[index]
else:
print "Invalid char. \"%s\" entered. Topic not set." \
% (topics[index])
invalidData = True
break
if topicTemp:
if int(topicTemp) > 999:
invalidData = True
print "Invalid Topic ID %s (range 0-999). \
\nCould not register." % topicTemp
index = index + 1
if invalidData == False:
try:
print "Setting Cell Broadcast topics..."
cbs.SetProperty("Topics", topics);
except dbus.DBusException, e:
print "Unable to set topic: ", e
print "-----------------------------------------------------------"
def get_serving_cell_name(netReg):
wasFound = False;
properties = netReg.GetProperties()
for p in properties:
if p == "BaseStation":
if len(properties[p].__str__()) > 0:
print "Current serving cell name: %s" \
% (properties["BaseStation"])
wasFound = True;
else:
print "Current Serving cell name empty. \
Base Station CBS not available."
if wasFound == False:
print "Base Station parameter not found. \
\nBase Station CBS not available."
print "-----------------------------------------------------------"
def stdin_handler(fd, condition, cbs, netReg):
in_key = os.read(fd.fileno(), 160).rstrip()
if in_key == '0':
set_cbs_state(cbs, True)
elif in_key == '1':
set_cbs_state(cbs, False)
elif in_key == '2':
print_cbs_properties(cbs)
elif in_key == '3':
set_topics(cbs)
elif in_key == '4':
cbs.SetProperty("Topics", "")
elif in_key == '5':
get_serving_cell_name(netReg)
elif in_key == 'x':
sys.exit(1)
print '\n' * 2
print_menu()
return True
if __name__ == "__main__":
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
bus = dbus.SystemBus()
manager = dbus.Interface(bus.get_object('org.ofono', '/'),
'org.ofono.Manager')
modems = manager.GetModems()
path = modems[0][0]
cbs = dbus.Interface(bus.get_object('org.ofono', path),
'org.ofono.CellBroadcast')
netReg = dbus.Interface(bus.get_object('org.ofono', path),
'org.ofono.NetworkRegistration')
cbs.connect_to_signal("PropertyChanged", property_changed)
cbs.connect_to_signal("IncomingBroadcast", incoming_broadcast)
cbs.connect_to_signal("EmergencyBroadcast", emergency_broadcast)
print '\n' * 2
print_menu()
gobject.io_add_watch(sys.stdin, gobject.IO_IN, stdin_handler, cbs, \
netReg)
mainloop = gobject.MainLoop()
mainloop.run()