Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(569)

Side by Side Diff: test/mm.py

Issue 6731056: Update to test scripts to work with both ModemManager and Cromo (Closed) Base URL: ssh://gitrw.chromium.org:9222/flimflam.git@master
Patch Set: Minor fixes Created 9 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | test/mm-activate » ('j') | test/mm-factory-reset » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/python 1 #!/usr/bin/python
2 2
3 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 3 # Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be 4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file. 5 # found in the LICENSE file.
6 6
7 import dbus 7 import dbus
8 import os 8 import os
9 9
10 MMPROVIDERS = [ 'org.chromium', 'org.freedesktop' ]
11
10 class ModemManager(object): 12 class ModemManager(object):
11 MMPROVIDER = os.getenv('MMPROVIDER')
12 if not MMPROVIDER:
13 MMPROVIDER = 'org.chromium'
14 SERVICE = '%s.ModemManager' % (MMPROVIDER)
15 PATH = '/%s/ModemManager' % (MMPROVIDER.replace('.', '/'))
16 INTERFACE = 'org.freedesktop.ModemManager' 13 INTERFACE = 'org.freedesktop.ModemManager'
17 MODEM_INTERFACE = 'org.freedesktop.ModemManager.Modem' 14 MODEM_INTERFACE = 'org.freedesktop.ModemManager.Modem'
18 SIMPLE_MODEM_INTERFACE = 'org.freedesktop.ModemManager.Modem.Simple' 15 SIMPLE_MODEM_INTERFACE = 'org.freedesktop.ModemManager.Modem.Simple'
19 CDMA_MODEM_INTERFACE = 'org.freedesktop.ModemManager.Modem.Cdma' 16 CDMA_MODEM_INTERFACE = 'org.freedesktop.ModemManager.Modem.Cdma'
20 GSM_MODEM_INTERFACE = 'org.freedesktop.ModemManager.Modem.Gsm' 17 GSM_MODEM_INTERFACE = 'org.freedesktop.ModemManager.Modem.Gsm'
21 GOBI_MODEM_INTERFACE = 'org.chromium.ModemManager.Modem.Gobi' 18 GOBI_MODEM_INTERFACE = 'org.chromium.ModemManager.Modem.Gobi'
22 GSM_CARD_INTERFACE = 'org.freedesktop.ModemManager.Modem.Gsm.Card' 19 GSM_CARD_INTERFACE = 'org.freedesktop.ModemManager.Modem.Gsm.Card'
23 GSM_NETWORK_INTERFACE = 'org.freedesktop.ModemManager.Modem.Gsm.Network' 20 GSM_NETWORK_INTERFACE = 'org.freedesktop.ModemManager.Modem.Gsm.Network'
24 PROPERTIES_INTERFACE = 'org.freedesktop.DBus.Properties' 21 PROPERTIES_INTERFACE = 'org.freedesktop.DBus.Properties'
25 22
26 GSM_MODEM = 1 23 GSM_MODEM = 1
27 CDMA_MODEM = 2 24 CDMA_MODEM = 2
28 25
29 def __init__(self): 26 def __init__(self, provider=None):
30 self.bus = dbus.SystemBus() 27 self.bus = dbus.SystemBus()
31 self.manager = dbus.Interface(self.bus.get_object(ModemManager.SERVICE, 28 self.provider = provider or os.getenv('MMPROVIDER') or 'org.chromium'
32 ModemManager.PATH), 29 self.service = '%s.ModemManager' % self.provider
30 self.path = '/%s/ModemManager' % (self.provider.replace('.', '/'))
31 self.manager = dbus.Interface(self.bus.get_object(self.service, self.path),
33 ModemManager.INTERFACE) 32 ModemManager.INTERFACE)
34 33
35 def Modem(self, path): 34 def Modem(self, path):
36 obj = self.bus.get_object(ModemManager.SERVICE, path) 35 obj = self.bus.get_object(self.service, path)
37 return dbus.Interface(obj, ModemManager.MODEM_INTERFACE) 36 return dbus.Interface(obj, ModemManager.MODEM_INTERFACE)
38 37
39 def SimpleModem(self, path): 38 def SimpleModem(self, path):
40 obj = self.bus.get_object(ModemManager.SERVICE, path) 39 obj = self.bus.get_object(self.service, path)
41 return dbus.Interface(obj, ModemManager.SIMPLE_MODEM_INTERFACE) 40 return dbus.Interface(obj, ModemManager.SIMPLE_MODEM_INTERFACE)
42 41
43 def CdmaModem(self, path): 42 def CdmaModem(self, path):
44 obj = self.bus.get_object(ModemManager.SERVICE, path) 43 obj = self.bus.get_object(self.service, path)
45 return dbus.Interface(obj, ModemManager.CDMA_MODEM_INTERFACE) 44 return dbus.Interface(obj, ModemManager.CDMA_MODEM_INTERFACE)
46 45
47 def GobiModem(self, path): 46 def GobiModem(self, path):
48 obj = self.bus.get_object(ModemManager.SERVICE, path) 47 obj = self.bus.get_object(self.service, path)
49 return dbus.Interface(obj, ModemManager.GOBI_MODEM_INTERFACE) 48 return dbus.Interface(obj, ModemManager.GOBI_MODEM_INTERFACE)
50 49
51 def GsmModem(self, path): 50 def GsmModem(self, path):
52 obj = self.bus.get_object(ModemManager.SERVICE, path) 51 obj = self.bus.get_object(self.service, path)
53 return dbus.Interface(obj, ModemManager.GSM_MODEM_INTERFACE) 52 return dbus.Interface(obj, ModemManager.GSM_MODEM_INTERFACE)
54 53
55 def GsmCard(self, path): 54 def GsmCard(self, path):
56 obj = self.bus.get_object(ModemManager.SERVICE, path) 55 obj = self.bus.get_object(self.service, path)
57 return dbus.Interface(obj, ModemManager.GSM_CARD_INTERFACE) 56 return dbus.Interface(obj, ModemManager.GSM_CARD_INTERFACE)
58 57
59 def GsmNetwork(self, path): 58 def GsmNetwork(self, path):
60 obj = self.bus.get_object(ModemManager.SERVICE, path) 59 obj = self.bus.get_object(self.service, path)
61 return dbus.Interface(obj, ModemManager.GSM_NETWORK_INTERFACE) 60 return dbus.Interface(obj, ModemManager.GSM_NETWORK_INTERFACE)
62 61
63 def GetAll(self, iface, path): 62 def GetAll(self, iface, path):
64 obj = self.bus.get_object(ModemManager.SERVICE, path) 63 obj = self.bus.get_object(self.service, path)
65 obj_iface = dbus.Interface(obj, ModemManager.PROPERTIES_INTERFACE) 64 obj_iface = dbus.Interface(obj, ModemManager.PROPERTIES_INTERFACE)
66 return obj_iface.GetAll(iface) 65 return obj_iface.GetAll(iface)
67 66
68 def GetModemInterfaces(self): 67 def GetModemInterfaces(self):
69 return [ 68 return [
70 ModemManager.MODEM_INTERFACE, 69 ModemManager.MODEM_INTERFACE,
71 ModemManager.SIMPLE_MODEM_INTERFACE, 70 ModemManager.SIMPLE_MODEM_INTERFACE,
72 ModemManager.CDMA_MODEM_INTERFACE, 71 ModemManager.CDMA_MODEM_INTERFACE,
73 ModemManager.GSM_MODEM_INTERFACE, 72 ModemManager.GSM_MODEM_INTERFACE,
74 ModemManager.GOBI_MODEM_INTERFACE] 73 ModemManager.GOBI_MODEM_INTERFACE]
75 74
76 def Properties(self, path): 75 def Properties(self, path):
77 props = dict() 76 props = dict()
78 for iface in self.GetModemInterfaces(): 77 for iface in self.GetModemInterfaces():
79 try: 78 try:
80 d = self.GetAll(iface, path) 79 d = self.GetAll(iface, path)
81 except: 80 except:
82 continue 81 continue
83 if d: 82 if d:
84 for k, v in d.iteritems(): 83 for k, v in d.iteritems():
85 props[k] = v 84 props[k] = v
86 85
87 return props 86 return props
88 87
89 def PickOneModem(manager, modem_pattern): 88
90 devices = manager.manager.EnumerateDevices() 89 def EnumerateDevices(manager=None):
91 matches = [path for path in devices if modem_pattern in path] 90 """ Enumerate all modems in the system
91
92 Args:
93 manager - the specific manager to use, if None check all known managers
94
95 Returns:
96 a list of (ModemManager object, modem dbus path)
97 """
98 if manager:
99 managers = [manager]
100 else:
101 managers = [ModemManager(x) for x in MMPROVIDERS]
102
103 result = []
104 for m in managers:
105 for path in m.manager.EnumerateDevices():
106 result.append((m, path))
107
108 return result
109
110
111 def PickOneModem(modem_pattern, manager=None):
112 """ Pick a modem
113
114 If a machine has a single modem, managed by one one of the
115 MMPROVIDERS, return the dbus path and a ModemManager object for
116 that modem.
117
118 Args:
119 modem_pattern - pattern that should match the modem path
120 manager - the specific manager to use, if None check all known managers
121
122 Returns:
123 ModemManager object, modem dbus path
124
125 Raises:
126 ValueError - if there are no matching modems, or there are more
127 than one
128 """
129 devices = EnumerateDevices(manager)
130
131 matches = [(m, path) for m, path in devices if modem_pattern in path]
92 if not len(matches): 132 if not len(matches):
rochberg 2011/03/30 00:23:54 not matches
Jason Glasgow 2011/03/30 14:44:47 Done.
93 raise ValueError("No modems had substring: " + modem_pattern) 133 raise ValueError("No modems had substring: " + modem_pattern)
94 if len(matches) > 1: 134 if len(matches) > 1:
95 raise ValueError("Expected only one modem, got: " + ', '.join(matches)) 135 raise ValueError("Expected only one modem, got: " +
136 ", ".join([path for m, path in matches]))
rochberg 2011/03/30 00:23:54 for _, path
Jason Glasgow 2011/03/30 14:44:47 Done.
96 return matches[0] 137 return matches[0]
OLDNEW
« no previous file with comments | « no previous file | test/mm-activate » ('j') | test/mm-factory-reset » ('J')

Powered by Google App Engine
This is Rietveld 408576698