Update test script with new manager interface methods
[framework/connectivity/connman.git] / test / test-connman
1 #!/usr/bin/python
2
3 import sys
4 import dbus
5
6 bus = dbus.SystemBus()
7
8 manager = dbus.Interface(bus.get_object("org.moblin.connman", "/"),
9                                         "org.moblin.connman.Manager")
10
11 if len(sys.argv) < 2:
12         print "Usage: %s <command>" % (sys.argv[0])
13         print ""
14         print "  state"
15         print "  services"
16         print "  passphrase <service> [passphrase]"
17         print "  connect <service>"
18         print "  disconnect <service>"
19         print "  remove <service>"
20         print ""
21         print "  scan [type]"
22         print "  enable <type>"
23         print "  disable <type>"
24         print ""
25         print "  dev <interface>"
26         print "  dev <interface> scan"
27         print "  dev <interface> networks"
28         print "  dev <interface> connect <network>"
29         print "  dev <interface> disconnect [network]"
30         print "  dev <interface> powered [on|off]"
31         sys.exit(1)
32
33 def print_properties(path, properties):
34         print "[ %s ]" % (path)
35         for key in properties.keys():
36                 if key == "Networks":
37                         continue
38
39                 if key in ["Powered", "Scanning", "Connected",
40                                         "Available", "Remember", "Default"]:
41                         if properties[key] == dbus.Boolean(1):
42                                 val = "true"
43                         else:
44                                 val = "false"
45                 elif key in ["Strength", "Priority"]:
46                         val = int(properties[key])
47                 else:
48                         val = str(properties[key])
49
50                 print "     %s = %s" % (key, val)
51
52         if "Networks" in properties.keys():
53                 list = ""
54                 for path in properties["Networks"]:
55                         val = str(path)
56                         list = list + val[val.rfind("/") + 1:] + " "
57                 print "     Networks = [ %s]" % (list)
58
59 def print_networks(networks):
60         for path in networks:
61                 network = dbus.Interface(bus.get_object("org.moblin.connman", path),
62                                                 "org.moblin.connman.Network")
63
64                 properties = network.GetProperties()
65
66                 if properties["Connected"] == dbus.Boolean(1):
67                         connected = "*"
68                 else:
69                         connected = " "
70
71                 if "Name" in properties.keys():
72                         name = properties["Name"]
73                 else:
74                         name = ""
75
76                 strength = int(properties["Strength"])
77
78                 details = ""
79                 try:
80                         details += "{" + properties["WiFi.Mode"] + "} "
81                 except:
82                         pass
83                 try:
84                         details += "{" + properties["WiFi.Security"] + "} "
85                 except:
86                         pass
87                 if "WiFi.Passphrase" in properties.keys():
88                         if properties["WiFi.Passphrase"] != "":
89                                 details += "{passphrase present}"
90
91                 print "%s %-26s %3d%%  %s" % (connected,
92                                                 name, strength, details)
93
94 def select_network(networks, name):
95         for path in networks:
96                 network = dbus.Interface(bus.get_object("org.moblin.connman", path),
97                                                 "org.moblin.connman.Network")
98
99                 properties = network.GetProperties()
100
101                 if properties["Name"] != name:
102                         continue
103
104                 if properties["Connected"] == dbus.Boolean(1):
105                         print "Already connected to network %s" % (name)
106                         break
107
108                 print "Selecting network %s" % (name)
109
110                 network.Connect()
111
112 def disconnect_network(networks, name):
113         for path in networks:
114                 network = dbus.Interface(bus.get_object("org.moblin.connman", path),
115                                                 "org.moblin.connman.Network")
116
117                 properties = network.GetProperties()
118
119                 if name != "" and properties["Name"] != name:
120                         continue
121
122                 if properties["Connected"] == dbus.Boolean(1):
123                         name = properties["Name"]
124                         print "Disconnecting from network %s" % (name)
125                         network.Disconnect()
126
127 def print_services(services):
128         for path in services:
129                 service = dbus.Interface(bus.get_object("org.moblin.connman", path),
130                                                 "org.moblin.connman.Service")
131
132                 properties = service.GetProperties()
133
134                 identifier = path[path.rfind("/") + 1:]
135
136                 if properties["Favorite"] == dbus.Boolean(1):
137                         favorite = "*"
138                 else:
139                         favorite = " "
140
141                 if "Name" in properties.keys():
142                         name = properties["Name"]
143                 else:
144                         name = "{" + properties["Type"] + "}"
145
146                 print "%s %-26s { %s }" % (favorite, name, identifier)
147
148 if sys.argv[1] == "state":
149         properties = manager.GetProperties()
150
151         print "System is %s" % (properties["State"])
152
153 elif sys.argv[1] in ["services", "list", "show"]:
154         properties = manager.GetProperties()
155
156         print_services(properties["Services"])
157
158 elif sys.argv[1] in ["passphrase", "pass"]:
159         if (len(sys.argv) < 3):
160                 print "Need at least service parameter"
161                 sys.exit(1)
162
163         path = "/profile/default/" + sys.argv[2]
164
165         service = dbus.Interface(bus.get_object("org.moblin.connman", path),
166                                                 "org.moblin.connman.Service")
167
168         if (len(sys.argv) > 3):
169                 passphrase = sys.argv[3]
170
171                 service.SetProperty("Passphrase", passphrase);
172
173                 print "Passphrase %s set for %s" % (passphrase, sys.argv[2])
174         else:
175                 properties = service.GetProperties()
176
177                 if "Name" in properties.keys():
178                         name = properties["Name"]
179                 else:
180                         name = "{" + properties["Type"] + "}"
181
182                 if "Passphrase" in properties.keys():
183                         passphrase = properties["Passphrase"]
184                 else:
185                         passphrase = "not set"
186
187                 print "Passphrase for %s is %s" % (name, passphrase)
188
189 elif sys.argv[1] in ["connect", "conn"]:
190         if (len(sys.argv) < 3):
191                 print "Need at least service parameter"
192                 sys.exit(1)
193
194         path = "/profile/default/" + sys.argv[2]
195
196         service = dbus.Interface(bus.get_object("org.moblin.connman", path),
197                                                 "org.moblin.connman.Service")
198
199         try:
200                 service.Connect(timeout=60000)
201         except dbus.DBusException, error:
202                 print "%s: %s" % (error._dbus_error_name, error.message)
203
204 elif sys.argv[1] in ["disconnect", "disc"]:
205         if (len(sys.argv) < 3):
206                 print "Need at least service parameter"
207                 sys.exit(1)
208
209         path = "/profile/default/" + sys.argv[2]
210
211         service = dbus.Interface(bus.get_object("org.moblin.connman", path),
212                                                 "org.moblin.connman.Service")
213
214         try:
215                 service.Disconnect()
216         except dbus.DBusException, error:
217                 print "%s: %s" % (error._dbus_error_name, error.message)
218
219 elif sys.argv[1] in ["remove"]:
220         if (len(sys.argv) < 3):
221                 print "Need at least service parameter"
222                 sys.exit(1)
223
224         path = "/profile/default/" + sys.argv[2]
225
226         service = dbus.Interface(bus.get_object("org.moblin.connman", path),
227                                                 "org.moblin.connman.Service")
228
229         properties = service.GetProperties()
230
231         if properties["Favorite"] == dbus.Boolean(0):
232                 print "Only favorite services can be removed"
233                 sys.exit(1)
234
235         try:
236                 service.Remove()
237         except dbus.DBusException, error:
238                 print "%s: %s" % (error._dbus_error_name, error.message)
239
240 elif sys.argv[1] == "scan":
241         if len(sys.argv) > 2:
242                 manager.RequestScan(sys.argv[2])
243         else:
244                 manager.RequestScan("")
245
246 elif sys.argv[1] == "enable":
247         if len(sys.argv) > 2:
248                 manager.EnableTechnology(sys.argv[2])
249         else:
250                 manager.EnableTechnology("")
251
252 elif sys.argv[1] == "disable":
253         if len(sys.argv) > 2:
254                 manager.DisableTechnology(sys.argv[2])
255         else:
256                 manager.DisableTechnology("")
257
258 elif sys.argv[1] == "dev":
259         properties = manager.GetProperties()
260
261         interface = ""
262         command = ""
263         value = ""
264         found = 0
265
266         if len(sys.argv) > 2:
267                 interface = sys.argv[2]
268                 if len(sys.argv) > 3:
269                         command = sys.argv[3]
270                         if len(sys.argv) > 4:
271                                 value = sys.argv[4]
272
273         for path in properties["Devices"]:
274                 device = dbus.Interface(bus.get_object("org.moblin.connman", path),
275                                                 "org.moblin.connman.Device")
276
277                 properties = device.GetProperties()
278
279                 if interface != "" and properties["Interface"] != interface:
280                         continue
281
282                 if command == "scan":
283                         if properties["Type"] in ["wifi", "wimax"]:
284                                 interface = properties["Interface"]
285                                 print "Scan for device %s" % (interface)
286                                 device.ProposeScan()
287                         else:
288                                 print "No scanning for device %s" % (interface)
289                 elif command in ["networks", "net"]:
290                         if "Networks" in properties.keys():
291                                 print_networks(properties["Networks"])
292                         else:
293                                 print "Device has no networks"
294                 elif command in ["connect", "conn"] and value != "":
295                         if "Networks" in properties.keys():
296                                 select_network(properties["Networks"], value)
297                         else:
298                                 print "Device can't connect networks"
299                 elif command in ["connect", "conn"]:
300                         print "Need to specify network"
301                 elif command in ["disconnect", "disc"] and value != "":
302                         if "Networks" in properties.keys():
303                                 disconnect_network(properties["Networks"], value)
304                         else:
305                                 print "Device has no networks"
306                 elif command in ["discconnect", "disc"]:
307                         if "Networks" in properties.keys():
308                                 disconnect_network(properties["Networks"], "")
309                         else:
310                                 print "Device has no networks"
311                 elif command == "powered" and value != "":
312                         if value == "on":
313                                 powered = dbus.Boolean(1)
314                         elif value == "off":
315                                 powered = dbus.Boolean(0)
316                         else:
317                                 powered = dbus.Boolean(value)
318                         device.SetProperty("Powered", powered)
319                 elif command == "powered":
320                         interface = properties["Interface"]
321                         if properties["Powered"] == dbus.Boolean(1):
322                                 powered = "on"
323                         else:
324                                 powered = "off"
325                         print "Device %s is powered %s" % (interface, powered)
326                 elif command == "list" or command == "":
327                         print_properties(path, properties)
328                 else:
329                         print "Unknown command"
330
331 else:
332         print "Unknown command"