22 from __future__
import absolute_import
26 from time
import sleep
29 class OfonoManager(object):
32 self.system_bus = dbus.SystemBus()
33 self.ofono = self.system_bus.get_object(
'org.ofono',
'/')
35 self.real_manager = dbus.Interface(
40 def _get_sim_manager(self):
41 modems = self.real_manager.GetModems()
43 return dbus.Interface(self.system_bus.get_object(
'org.ofono', path),
44 'org.ofono.SimManager')
46 def physical_sim_is_present(self):
47 sim_manager = self._get_sim_manager()
48 properties = sim_manager.GetProperties()
49 return properties[
"Present"] == 1
52 class PhonesimManager(object):
56 self.phonesim_exe =
'/usr/bin/ofono-phonesim'
58 self.phonesim_exe = exe
60 self.sim_processes = {}
61 self.system_bus = dbus.SystemBus()
62 self.ofono = self.system_bus.get_object(
'org.ofono',
'/')
64 self.phonesim_manager = dbus.Interface(
66 'org.ofono.phonesim.Manager'
69 def start_phonesim_processes(self):
70 for simname, simport, conffile
in self.sims:
71 cmd = [
'/usr/bin/xvfb-run',
78 p = subprocess.Popen(cmd)
79 self.sim_processes[simname] = p
84 for p
in self.sim_processes.values():
86 self.sim_processes = {}
88 def reset_ofono(self):
89 self.phonesim_manager.Reset()
91 def remove_all_ofono(self):
92 self.phonesim_manager.RemoveAll()
94 def add_ofono(self, name):
95 for simname, simport, _
in self.sims:
97 self.phonesim_manager.Add(simname,
'127.0.0.1', str(simport))
99 raise RuntimeError(
'Tried to add unknown modem %s.' % name)
101 def power_on(self, sim_name):
102 sim = self.system_bus.get_object(
'org.ofono',
'/'+sim_name)
103 modem = dbus.Interface(sim, dbus_interface=
'org.ofono.Modem')
104 modem.SetProperty(
'Powered',
True)
107 def power_off(self, sim_name):
108 sim = self.system_bus.get_object(
'org.ofono',
'/'+sim_name)
109 modem = dbus.Interface(sim, dbus_interface=
'org.ofono.Modem')
110 modem.SetProperty(
'Powered',
False)
113 def get_required_pin(self, sim_name):
114 sim = self.system_bus.get_object(
'org.ofono',
'/'+sim_name)
115 interface = dbus.Interface(sim, dbus_interface=
'org.ofono.SimManager')
116 return str(interface.GetProperties()[
'PinRequired'])