Remove some pointless break statements in test script
[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 "  apn <service> [apn]"
17         print "  passphrase <service> [passphrase]"
18         print "  autoconnect <service> [autoconnect]"
19         print "  connect <service>"
20         print "  disconnect <service>"
21         print "  remove <service>"
22         print ""
23         print "  scan [type]"
24         print "  enable <type>"
25         print "  disable <type>"
26         print "  offlinemode [on|off]"
27         print ""
28         print "  dev <interface>"
29         print "  dev <interface> scan"
30         print "  dev <interface> scan_interval <period>"
31         print "  dev <interface> networks"
32         print "  dev <interface> connect <network>"
33         print "  dev <interface> disconnect [network]"
34         print "  dev <interface> powered [on|off]"
35         sys.exit(1)
36
37 def print_properties(path, properties):
38         print "[ %s ]" % (path)
39         for key in properties.keys():
40                 if key == "Networks":
41                         continue
42
43                 if key in ["Powered", "Scanning", "Connected",
44                                         "Available", "Remember", "Default"]:
45                         if properties[key] == dbus.Boolean(1):
46                                 val = "true"
47                         else:
48                                 val = "false"
49                 elif key in ["Strength", "Priority"]:
50                         val = int(properties[key])
51                 else:
52                         val = str(properties[key])
53
54                 print "     %s = %s" % (key, val)
55
56         if "Networks" in properties.keys():
57                 list = ""
58                 for path in properties["Networks"]:
59                         val = str(path)
60                         list = list + val[val.rfind("/") + 1:] + " "
61                 print "     Networks = [ %s]" % (list)
62
63 def print_networks(networks):
64         for path in networks:
65                 network = dbus.Interface(bus.get_object("org.moblin.connman", path),
66                                                 "org.moblin.connman.Network")
67
68                 properties = network.GetProperties()
69
70                 if properties["Connected"] == dbus.Boolean(1):
71                         connected = "*"
72                 else:
73                         connected = " "
74
75                 if "Name" in properties.keys():
76                         name = properties["Name"]
77                 else:
78                         name = ""
79
80                 strength = int(properties["Strength"])
81
82                 details = ""
83                 try:
84                         details += "{" + properties["WiFi.Mode"] + "} "
85                 except:
86                         pass
87                 try:
88                         details += "{" + properties["WiFi.Security"] + "} "
89                 except:
90                         pass
91                 if "WiFi.Passphrase" in properties.keys():
92                         if properties["WiFi.Passphrase"] != "":
93                                 details += "{passphrase present}"
94
95                 print "%s %-26s %3d%%  %s" % (connected,
96                                                 name, strength, details)
97
98 def select_network(networks, name):
99         for path in networks:
100                 network = dbus.Interface(bus.get_object("org.moblin.connman", path),
101                                                 "org.moblin.connman.Network")
102
103                 properties = network.GetProperties()
104
105                 if properties["Name"] != name:
106                         continue
107
108                 if properties["Connected"] == dbus.Boolean(1):
109                         print "Already connected to network %s" % (name)
110                         break
111
112                 print "Selecting network %s" % (name)
113
114                 network.Connect()
115
116 def disconnect_network(networks, name):
117         for path in networks:
118                 network = dbus.Interface(bus.get_object("org.moblin.connman", path),
119                                                 "org.moblin.connman.Network")
120
121                 properties = network.GetProperties()
122
123                 if name != "" and properties["Name"] != name:
124                         continue
125
126                 if properties["Connected"] == dbus.Boolean(1):
127                         name = properties["Name"]
128                         print "Disconnecting from network %s" % (name)
129                         network.Disconnect()
130
131 def print_services(services):
132         for path in services:
133                 service = dbus.Interface(bus.get_object("org.moblin.connman", path),
134                                                 "org.moblin.connman.Service")
135
136                 properties = service.GetProperties()
137
138                 identifier = path[path.rfind("/") + 1:]
139
140                 if properties["Favorite"] == dbus.Boolean(1):
141                         favorite = "*"
142                 else:
143                         favorite = " "
144
145                 if "Name" in properties.keys():
146                         name = properties["Name"]
147                 else:
148                         name = "{" + properties["Type"] + "}"
149
150                 print "%s %-26s { %s }" % (favorite, name, identifier)
151
152 if sys.argv[1] == "state":
153         properties = manager.GetProperties()
154
155         print "System is %s" % (properties["State"])
156
157 elif sys.argv[1] in ["services", "list", "show"]:
158         properties = manager.GetProperties()
159
160         print_services(properties["Services"])
161
162 elif sys.argv[1] in ["apn"]:
163         if (len(sys.argv) < 3):
164                 print "Need at least service parameter"
165                 sys.exit(1)
166
167         path = "/profile/default/" + sys.argv[2]
168
169         service = dbus.Interface(bus.get_object("org.moblin.connman", path),
170                                                 "org.moblin.connman.Service")
171
172         if (len(sys.argv) > 3):
173                 apn = sys.argv[3]
174
175                 service.SetProperty("APN", apn);
176
177                 print "APN %s set for %s" % (apn, sys.argv[2])
178         else:
179                 properties = service.GetProperties()
180
181                 if "Name" in properties.keys():
182                         name = properties["Name"]
183                 else:
184                         name = "{" + properties["Type"] + "}"
185
186                 if "APN" in properties.keys():
187                         apn = properties["APN"]
188                 else:
189                         apn = "not set"
190
191                 print "APN for %s is %s" % (name, apn)
192
193 elif sys.argv[1] in ["passphrase", "pass"]:
194         if (len(sys.argv) < 3):
195                 print "Need at least service parameter"
196                 sys.exit(1)
197
198         path = "/profile/default/" + sys.argv[2]
199
200         service = dbus.Interface(bus.get_object("org.moblin.connman", path),
201                                                 "org.moblin.connman.Service")
202
203         if (len(sys.argv) > 3):
204                 passphrase = sys.argv[3]
205
206                 service.SetProperty("Passphrase", passphrase);
207
208                 print "Passphrase %s set for %s" % (passphrase, sys.argv[2])
209         else:
210                 properties = service.GetProperties()
211
212                 if "Name" in properties.keys():
213                         name = properties["Name"]
214                 else:
215                         name = "{" + properties["Type"] + "}"
216
217                 if "Passphrase" in properties.keys():
218                         passphrase = properties["Passphrase"]
219                 else:
220                         passphrase = "not set"
221
222                 print "Passphrase for %s is %s" % (name, passphrase)
223
224 elif sys.argv[1] in ["autoconnect", "autoconn"]:
225         if (len(sys.argv) < 3):
226                 print "Need at least service parameter"
227                 sys.exit(1)
228
229         path = "/profile/default/" + sys.argv[2]
230
231         service = dbus.Interface(bus.get_object("org.moblin.connman", path),
232                                                 "org.moblin.connman.Service")
233
234         if (len(sys.argv) > 3):
235                 autoconnect = dbus.Boolean(sys.argv[3])
236
237                 service.SetProperty("AutoConnect", autoconnect);
238
239                 print "Auto connect %s for %s" % (autoconnect, sys.argv[2])
240         else:
241                 properties = service.GetProperties()
242
243                 if "Name" in properties.keys():
244                         name = properties["Name"]
245                 else:
246                         name = "{" + properties["Type"] + "}"
247
248                 if "AutoConnect" in properties.keys():
249                         autoconnect = properties["AutoConnect"]
250                 else:
251                         autoconnect = dbus.Boolean(0)
252
253                 print "Auto connect %s for %s" % (autoconnect, name)
254
255 elif sys.argv[1] in ["connect", "conn"]:
256         if (len(sys.argv) < 3):
257                 print "Need at least service parameter"
258                 sys.exit(1)
259
260         path = "/profile/default/" + sys.argv[2]
261
262         service = dbus.Interface(bus.get_object("org.moblin.connman", path),
263                                                 "org.moblin.connman.Service")
264
265         try:
266                 service.Connect(timeout=60000)
267         except dbus.DBusException, error:
268                 print "%s: %s" % (error._dbus_error_name, error.message)
269
270 elif sys.argv[1] in ["disconnect", "disc"]:
271         if (len(sys.argv) < 3):
272                 print "Need at least service parameter"
273                 sys.exit(1)
274
275         path = "/profile/default/" + sys.argv[2]
276
277         service = dbus.Interface(bus.get_object("org.moblin.connman", path),
278                                                 "org.moblin.connman.Service")
279
280         try:
281                 service.Disconnect()
282         except dbus.DBusException, error:
283                 print "%s: %s" % (error._dbus_error_name, error.message)
284
285 elif sys.argv[1] in ["remove"]:
286         if (len(sys.argv) < 3):
287                 print "Need at least service parameter"
288                 sys.exit(1)
289
290         path = "/profile/default/" + sys.argv[2]
291
292         service = dbus.Interface(bus.get_object("org.moblin.connman", path),
293                                                 "org.moblin.connman.Service")
294
295         properties = service.GetProperties()
296
297         if properties["Favorite"] == dbus.Boolean(0):
298                 print "Only favorite services can be removed"
299                 sys.exit(1)
300
301         try:
302                 service.Remove()
303         except dbus.DBusException, error:
304                 print "%s: %s" % (error._dbus_error_name, error.message)
305
306 elif sys.argv[1] == "scan":
307         if len(sys.argv) > 2:
308                 manager.RequestScan(sys.argv[2])
309         else:
310                 manager.RequestScan("")
311
312 elif sys.argv[1] == "enable":
313         if len(sys.argv) > 2:
314                 manager.EnableTechnology(sys.argv[2])
315         else:
316                 manager.EnableTechnology("")
317
318 elif sys.argv[1] == "disable":
319         if len(sys.argv) > 2:
320                 manager.DisableTechnology(sys.argv[2])
321         else:
322                 manager.DisableTechnology("")
323
324 elif sys.argv[1] in ["offlinemode", "flightmode"]:
325         if len(sys.argv) > 2:
326                 if sys.argv[2] == "on":
327                         active = dbus.Boolean(1)
328                 elif sys.argv[2] == "off":
329                         active = dbus.Boolean(0)
330                 else:
331                         active = dbus.Boolean(sys.argv[2])
332                 manager.SetProperty("OfflineMode", active)
333         else:
334                 properties = manager.GetProperties()
335                 print "Offline mode is %s" % (properties["OfflineMode"])
336
337 elif sys.argv[1] == "dev":
338         properties = manager.GetProperties()
339
340         interface = ""
341         command = ""
342         value = ""
343         found = 0
344
345         if len(sys.argv) > 2:
346                 interface = sys.argv[2]
347                 if len(sys.argv) > 3:
348                         command = sys.argv[3]
349                         if len(sys.argv) > 4:
350                                 value = sys.argv[4]
351
352         for path in properties["Devices"]:
353                 device = dbus.Interface(bus.get_object("org.moblin.connman", path),
354                                                 "org.moblin.connman.Device")
355
356                 properties = device.GetProperties()
357
358                 if "Interface" not in properties.keys():
359                         continue
360
361                 if interface != "" and properties["Interface"] != interface:
362                         continue
363
364                 if command == "scan":
365                         if properties["Type"] in ["wifi", "wimax"]:
366                                 interface = properties["Interface"]
367                                 print "Scan for device %s" % (interface)
368                                 device.ProposeScan()
369                         else:
370                                 print "No scanning for device %s" % (interface)
371                 elif command == "scan_interval" and value != "":
372                         device.SetProperty("ScanInterval", dbus.UInt16(value))
373                 elif command in ["networks", "net"]:
374                         if "Networks" in properties.keys():
375                                 print_networks(properties["Networks"])
376                         else:
377                                 print "Device has no networks"
378                 elif command in ["connect", "conn"] and value != "":
379                         if "Networks" in properties.keys():
380                                 select_network(properties["Networks"], value)
381                         else:
382                                 print "Device can't connect networks"
383                 elif command in ["connect", "conn"]:
384                         print "Need to specify network"
385                 elif command in ["disconnect", "disc"] and value != "":
386                         if "Networks" in properties.keys():
387                                 disconnect_network(properties["Networks"], value)
388                         else:
389                                 print "Device has no networks"
390                 elif command in ["discconnect", "disc"]:
391                         if "Networks" in properties.keys():
392                                 disconnect_network(properties["Networks"], "")
393                         else:
394                                 print "Device has no networks"
395                 elif command == "powered" and value != "":
396                         if value == "on":
397                                 powered = dbus.Boolean(1)
398                         elif value == "off":
399                                 powered = dbus.Boolean(0)
400                         else:
401                                 powered = dbus.Boolean(value)
402                         device.SetProperty("Powered", powered)
403                 elif command == "powered":
404                         interface = properties["Interface"]
405                         if properties["Powered"] == dbus.Boolean(1):
406                                 powered = "on"
407                         else:
408                                 powered = "off"
409                         print "Device %s is powered %s" % (interface, powered)
410                 elif command == "list" or command == "":
411                         print_properties(path, properties)
412                 else:
413                         print "Unknown command"
414
415 else:
416         print "Unknown command"