1
0
Fork 0

osmocom: Enable access to sms and sim functions in preparation for the test

This commit is contained in:
Holger Hans Peter Freyther 2012-11-09 19:16:36 +01:00
parent e13ebca30a
commit 62004b3e26
4 changed files with 65 additions and 29 deletions

View File

@ -14,7 +14,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import dbus
import sim
import sim, sms
class Modem(object):
def __init__(self, bus, name):
@ -71,6 +71,9 @@ class Modem(object):
def sim(self):
return sim.Sim(self.bus, self.name)
def sms(self):
return sms.SmsManager(self.bus, self.name)
def __repr__(self):
return "<Modem('%s')>" % self.name
@ -88,7 +91,7 @@ def getmodems(bus):
obj = dbus.Interface(bus.get_object('org.ofono', '/'), 'org.ofono.Manager')
return [Modem(bus, str(x[0])) for x in obj.GetModems()]
def detect_modems(bus):
def detect_modems(bus, sleep=True, poweroff=True):
"""
Detect the modems that can be used for the test...
"""
@ -110,7 +113,7 @@ def detect_modems(bus):
wait.append(mod)
# Now... wait a bit for the modem to do some init
if len(wait) > 0:
if len(wait) >0 and sleep:
import time
print("I need to sleep some time for the modem to wake up")
time.sleep(20)
@ -132,7 +135,7 @@ def detect_modems(bus):
# TODO: We could now disable all modems without a SIMcard
for mod in modems:
if mod in on:
if mod in on or not poweroff:
continue
print("Modem %s is wihtout SIM card. Powering it down." % mod.name)
mod.disable()

View File

@ -28,6 +28,10 @@ class Sim(object):
except:
return None
def present(self):
"""The Wavecom driver is broken and 'detects' a SIM when there is None"""
return self.imsi() != None
def __repr__(self):
return "<Sim(imsi=%s) of '%s'>" % (self.imsi(), self.path)

View File

@ -36,20 +36,43 @@ class SmsWatcher:
pass
print "PROP: ", property
def get(bus, name):
sms = dbus.Interface(
class Sms(object):
def __init__(self, bus, name):
self.bus = bus
self.name = name
self.sms = dbus.Interface(
bus.get_object('org.ofono', name),
'org.ofono.Message')
def cancel(self):
self.sms.Cancel()
def state(self):
return str(self.sms.GetProperties()['State'])
def __repr__(self):
return "<Sms('%s')>" % self.name
class SmsManager(object):
def __init__(self, bus, name):
self.sms = dbus.Interface(
bus.get_object('org.ofono', name),
'org.ofono.MessageManager')
return sms
self.bus = bus
self.name = name
def send_message(manager, number, text, delivery_report):
manager.SetProperty('UseDeliveryReports', dbus.Boolean(int(delivery_report)))
return manager.SendMessage(number, text)
def send_message(self, number, text, delivery_report):
self.sms.SetProperty('UseDeliveryReports', dbus.Boolean(int(delivery_report)))
return self.sms.SendMessage(number, text)
def wait_for_sent(sms):
pass
def all_message_names(self):
messages = self.sms.GetMessages()
return map(lambda x: str(x[0]), messages)
def get_messages(manager):
messages = manager.GetMessages()
print messages[0]
print dir(messages[0])
def get_message(self, path):
return Sms(self.bus, path)
def __repr__(self):
return "<SmsManager for Modem('%s')>" % self.name
def get(bus, name):
return SmsManager(bus, name)

View File

@ -19,26 +19,32 @@ import dbus.mainloop.glib
import gobject
import time
from osmocom import modem, sms, sim
from osmocom import modem
messages = []
MODEM = "/wavecom_4"
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
bus = dbus.SystemBus()
mods = modem.getmodems(bus)
mod = modem.get(bus, MODEM)
mod.enable()
mod.online()
mod = modem.detect_modems(bus, sleep=False, poweroff=False)[0]
s = sim.get(bus, MODEM)
print s.present()
print s.imsi()
print mod.name
sm = sms.get(bus, MODEM)
wartcher = sms.SmsWatcher(sm)
for i in range(1, 2000):
messages.append(sms.send_message(sm, '39323', 'TEST %d' % i, False))
sim = mod.sim()
print sim.present()
print sim.imsi()
sms = mod.sms()
sms.send_message('2233', 'BLA', False)
print sms.all_message_names()
for name in sms.all_message_names():
msg = sms.get_message(name)
print msg.state()
print msg
msg.cancel()
#watcher = sms.SmsWatcher(sm)
#for i in range(1, 2000):
# messages.append(sms.sendessage(sm, '39323', 'TEST %d' % i, False))
#time.sleep(2)
#sms.wait_for_sent(messages)