osmocom: Enable access to sms and sim functions in preparation for the test
This commit is contained in:
parent
e13ebca30a
commit
62004b3e26
|
@ -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()
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
Reference in New Issue