1
0
Fork 0

ofono: Make the code class based to wrap ofono/dbus..

This commit is contained in:
Holger Hans Peter Freyther 2012-11-07 13:28:14 +01:00
parent 5552afde47
commit a91e75bac6
4 changed files with 99 additions and 40 deletions

View File

@ -15,11 +15,42 @@
import dbus
class Modem:
def __init__(self, bus, name):
self.name = name
self.bus = bus
self.modem = dbus.Interface(bus.get_object('org.ofono', name), 'org.ofono.Modem')
def enable(self):
"""
Enable the given modem on the Bus
"""
self.modem.SetProperty("Powered", dbus.Boolean(1), timeout = 120)
def disable(self):
"""
Enable the given modem on the Bus
"""
self.modem.SetProperty("Powered", dbus.Boolean(0), timeout = 120)
def online(self):
"""
Switch-on on the RF Modem
"""
self.modem.SetProperty("Online", dbus.Boolean(1), timeout = 120)
def offline(self):
"""
Switch-off on the RF Modem
"""
self.modem.SetProperty("Online", dbus.Boolean(0), timeout = 120)
def get(bus, name):
"""
Find the modem
"""
return dbus.Interface(bus.get_object('org.ofono', name), 'org.ofono.Modem')
return Modem(bus, name)
def getmodems(bus):
"""
@ -28,26 +59,3 @@ def getmodems(bus):
obj = dbus.Interface(bus.get_object('org.ofono', '/'), 'org.ofono.Manager')
return obj.GetModems()
def enable(modem):
"""
Enable the given modem on the Bus
"""
modem.SetProperty("Powered", dbus.Boolean(1), timeout = 120)
def disable(modem):
"""
Enable the given modem on the Bus
"""
modem.SetProperty("Powered", dbus.Boolean(0), timeout = 120)
def online(modem):
"""
Switch-on on the RF Modem
"""
modem.SetProperty("Online", dbus.Boolean(1), timeout = 120)
def offline(modem):
"""
Switch-off on the RF Modem
"""
modem.SetProperty("Online", dbus.Boolean(0), timeout = 120)

View File

@ -15,12 +15,19 @@
import dbus
class Sim:
def __init__(self, bus, path):
self.bus = bus
self.path = path
self.sim = dbus.Interface(bus.get_object('org.ofono', path), 'org.ofono.SimManager')
def present(self):
return bool(self.sim.GetProperties(timeout=120)['Present'])
def imsi(self):
return str(self.sim.GetProperties(timeout=120)['SubscriberIdentity'])
def get(bus, path):
"""Get the SIM manager"""
return dbus.Interface(bus.get_object('org.ofono', path), 'org.ofono.SimManager')
return Sim(bus, path)
def present(sim):
return bool(sim.GetProperties(timeout=120)['Present'])
def imsi(sim):
return str(sim.GetProperties(timeout=120)['SubscriberIdentity'])

View File

@ -15,11 +15,41 @@
import dbus
sms = []
class SmsWatcher:
def __init__(self, sms):
self.sms = sms
self.watched = {}
self.sms.connect_to_signal("MessageAdded", self._msg_added)
self.sms.connect_to_signal("MessageRemoved", self._msg_removed)
def _msg_added(self, property, value):
self.watched[property] = 1
print "PROP: ", property
print "VA:: ", value
def _msg_removed(self, property):
try:
del self.watched[property]
except KeyError:
pass
print "PROP: ", property
def get(bus, name):
return dbus.Interface(
sms = dbus.Interface(
bus.get_object('org.ofono', name),
'org.ofono.MessageManager')
return sms
def send_message(manager, number, text, delivery_report):
manager.SetProperty('UseDeliveryReports', dbus.Boolean(int(delivery_report)))
return manager.SendMessage(number, text)
def wait_for_sent(sms):
pass
def get_messages(manager):
messages = manager.GetMessages()
print messages[0]
print dir(messages[0])

View File

@ -16,19 +16,33 @@
import dbus
import dbus.mainloop.glib
import gobject
import time
from osmocom import modem, sms, sim
messages = []
MODEM = "/wavecom_4"
dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
bus = dbus.SystemBus()
mods = modem.getmodems(bus)
mod = modem.get(bus, "/phonesim")
modem.enable(mod)
modem.online(mod)
mod = modem.get(bus, MODEM)
mod.enable()
mod.online()
sm = sms.get(bus, "/phonesim")
for i in range(1, 10):
print sms.send_message(sm, '+491234', 'TEST %d' % i, False)
s = sim.get(bus, MODEM)
print s.present()
print s.imsi()
s = sim.get(bus, "/phonesim")
print sim.present(s)
print sim.imsi(s)
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))
#time.sleep(2)
#sms.wait_for_sent(messages)
mainloop = gobject.MainLoop()
print dir(mainloop)
mainloop.run()