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