Update all test scripts using devices properties directly
[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 def device_handle(devices, interface):
153         for path in devices:
154                 device = dbus.Interface(bus.get_object("org.moblin.connman", path),
155                                                 "org.moblin.connman.Device")
156
157                 properties = device.GetProperties()
158
159                 if "Interface" not in properties.keys():
160                         continue
161
162                 if interface != "" and properties["Interface"] != interface:
163                         continue
164
165                 if command == "scan":
166                         if properties["Type"] in ["wifi", "wimax"]:
167                                 interface = properties["Interface"]
168                                 print "Scan for device %s" % (interface)
169                                 device.ProposeScan()
170                         else:
171                                 print "No scanning for device %s" % (interface)
172                 elif command == "scan_interval" and value != "":
173                         device.SetProperty("ScanInterval", dbus.UInt16(value))
174                 elif command in ["networks", "net"]:
175                         if "Networks" in properties.keys():
176                                 print_networks(properties["Networks"])
177                         else:
178                                 print "Device has no networks"
179                 elif command in ["connect", "conn"] and value != "":
180                         if "Networks" in properties.keys():
181                                 select_network(properties["Networks"], value)
182                         else:
183                                 print "Device can't connect networks"
184                 elif command in ["connect", "conn"]:
185                         print "Need to specify network"
186                 elif command in ["disconnect", "disc"] and value != "":
187                         if "Networks" in properties.keys():
188                                 disconnect_network(properties["Networks"], value)
189                         else:
190                                 print "Device has no networks"
191                 elif command in ["discconnect", "disc"]:
192                         if "Networks" in properties.keys():
193                                 disconnect_network(properties["Networks"], "")
194                         else:
195                                 print "Device has no networks"
196                 elif command == "powered" and value != "":
197                         if value == "on":
198                                 powered = dbus.Boolean(1)
199                         elif value == "off":
200                                 powered = dbus.Boolean(0)
201                         else:
202                                 powered = dbus.Boolean(value)
203                         device.SetProperty("Powered", powered)
204                 elif command == "powered":
205                         interface = properties["Interface"]
206                         if properties["Powered"] == dbus.Boolean(1):
207                                 powered = "on"
208                         else:
209                                 powered = "off"
210                         print "Device %s is powered %s" % (interface, powered)
211                 elif command == "list" or command == "":
212                         print_properties(path, properties)
213                 else:
214                         print "Unknown command"
215
216
217
218 if sys.argv[1] == "state":
219         properties = manager.GetProperties()
220
221         print "System is %s" % (properties["State"])
222
223 elif sys.argv[1] in ["services", "list", "show"]:
224         properties = manager.GetProperties()
225
226         print_services(properties["Services"])
227
228 elif sys.argv[1] in ["apn"]:
229         if (len(sys.argv) < 3):
230                 print "Need at least service parameter"
231                 sys.exit(1)
232
233         path = "/profile/default/" + sys.argv[2]
234
235         service = dbus.Interface(bus.get_object("org.moblin.connman", path),
236                                                 "org.moblin.connman.Service")
237
238         if (len(sys.argv) > 3):
239                 apn = sys.argv[3]
240
241                 service.SetProperty("APN", apn);
242
243                 print "APN %s set for %s" % (apn, sys.argv[2])
244         else:
245                 properties = service.GetProperties()
246
247                 if "Name" in properties.keys():
248                         name = properties["Name"]
249                 else:
250                         name = "{" + properties["Type"] + "}"
251
252                 if "APN" in properties.keys():
253                         apn = properties["APN"]
254                 else:
255                         apn = "not set"
256
257                 print "APN for %s is %s" % (name, apn)
258
259 elif sys.argv[1] in ["passphrase", "pass"]:
260         if (len(sys.argv) < 3):
261                 print "Need at least service parameter"
262                 sys.exit(1)
263
264         path = "/profile/default/" + sys.argv[2]
265
266         service = dbus.Interface(bus.get_object("org.moblin.connman", path),
267                                                 "org.moblin.connman.Service")
268
269         if (len(sys.argv) > 3):
270                 passphrase = sys.argv[3]
271
272                 service.SetProperty("Passphrase", passphrase);
273
274                 print "Passphrase %s set for %s" % (passphrase, sys.argv[2])
275         else:
276                 properties = service.GetProperties()
277
278                 if "Name" in properties.keys():
279                         name = properties["Name"]
280                 else:
281                         name = "{" + properties["Type"] + "}"
282
283                 if "Passphrase" in properties.keys():
284                         passphrase = properties["Passphrase"]
285                 else:
286                         passphrase = "not set"
287
288                 print "Passphrase for %s is %s" % (name, passphrase)
289
290 elif sys.argv[1] in ["autoconnect", "autoconn"]:
291         if (len(sys.argv) < 3):
292                 print "Need at least service parameter"
293                 sys.exit(1)
294
295         path = "/profile/default/" + sys.argv[2]
296
297         service = dbus.Interface(bus.get_object("org.moblin.connman", path),
298                                                 "org.moblin.connman.Service")
299
300         if (len(sys.argv) > 3):
301                 autoconnect = dbus.Boolean(sys.argv[3])
302
303                 service.SetProperty("AutoConnect", autoconnect);
304
305                 print "Auto connect %s for %s" % (autoconnect, sys.argv[2])
306         else:
307                 properties = service.GetProperties()
308
309                 if "Name" in properties.keys():
310                         name = properties["Name"]
311                 else:
312                         name = "{" + properties["Type"] + "}"
313
314                 if "AutoConnect" in properties.keys():
315                         autoconnect = properties["AutoConnect"]
316                 else:
317                         autoconnect = dbus.Boolean(0)
318
319                 print "Auto connect %s for %s" % (autoconnect, name)
320
321 elif sys.argv[1] in ["connect", "conn"]:
322         if (len(sys.argv) < 3):
323                 print "Need at least service parameter"
324                 sys.exit(1)
325
326         path = "/profile/default/" + sys.argv[2]
327
328         service = dbus.Interface(bus.get_object("org.moblin.connman", path),
329                                                 "org.moblin.connman.Service")
330
331         try:
332                 service.Connect(timeout=60000)
333         except dbus.DBusException, error:
334                 print "%s: %s" % (error._dbus_error_name, error.message)
335
336 elif sys.argv[1] in ["disconnect", "disc"]:
337         if (len(sys.argv) < 3):
338                 print "Need at least service parameter"
339                 sys.exit(1)
340
341         path = "/profile/default/" + sys.argv[2]
342
343         service = dbus.Interface(bus.get_object("org.moblin.connman", path),
344                                                 "org.moblin.connman.Service")
345
346         try:
347                 service.Disconnect()
348         except dbus.DBusException, error:
349                 print "%s: %s" % (error._dbus_error_name, error.message)
350
351 elif sys.argv[1] in ["remove"]:
352         if (len(sys.argv) < 3):
353                 print "Need at least service parameter"
354                 sys.exit(1)
355
356         path = "/profile/default/" + sys.argv[2]
357
358         service = dbus.Interface(bus.get_object("org.moblin.connman", path),
359                                                 "org.moblin.connman.Service")
360
361         properties = service.GetProperties()
362
363         if properties["Favorite"] == dbus.Boolean(0):
364                 print "Only favorite services can be removed"
365                 sys.exit(1)
366
367         try:
368                 service.Remove()
369         except dbus.DBusException, error:
370                 print "%s: %s" % (error._dbus_error_name, error.message)
371
372 elif sys.argv[1] == "scan":
373         if len(sys.argv) > 2:
374                 manager.RequestScan(sys.argv[2])
375         else:
376                 manager.RequestScan("")
377
378 elif sys.argv[1] == "enable":
379         if len(sys.argv) > 2:
380                 manager.EnableTechnology(sys.argv[2])
381         else:
382                 manager.EnableTechnology("")
383
384 elif sys.argv[1] == "disable":
385         if len(sys.argv) > 2:
386                 manager.DisableTechnology(sys.argv[2])
387         else:
388                 manager.DisableTechnology("")
389
390 elif sys.argv[1] in ["offlinemode", "flightmode"]:
391         if len(sys.argv) > 2:
392                 if sys.argv[2] == "on":
393                         active = dbus.Boolean(1)
394                 elif sys.argv[2] == "off":
395                         active = dbus.Boolean(0)
396                 else:
397                         active = dbus.Boolean(sys.argv[2])
398                 manager.SetProperty("OfflineMode", active)
399         else:
400                 properties = manager.GetProperties()
401                 print "Offline mode is %s" % (properties["OfflineMode"])
402
403 elif sys.argv[1] == "dev":
404         properties = manager.GetProperties()
405
406         interface = ""
407         command = ""
408         value = ""
409         found = 0
410
411         if len(sys.argv) > 2:
412                 interface = sys.argv[2]
413                 if len(sys.argv) > 3:
414                         command = sys.argv[3]
415                         if len(sys.argv) > 4:
416                                 value = sys.argv[4]
417
418         for path in properties["Technologies"]:
419                 technology = dbus.Interface(bus.get_object("org.moblin.connman", path),
420                                                         "org.moblin.connman.Technology")
421
422                 properties = technology.GetProperties()
423
424                 device_handle(properties["Devices"], interface)
425
426 else:
427         print "Unknown command"