test-connman: Use Powered property to enable/disable Technologies
[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("net.connman", "/"),
9                                         "net.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 "  autoconnect <service> [autoconnect]"
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 "  offlinemode [on|off]"
25         sys.exit(1)
26
27 def print_services(services):
28         for path in services:
29                 service = dbus.Interface(bus.get_object("net.connman", path),
30                                                 "net.connman.Service")
31
32                 properties = service.GetProperties()
33
34                 identifier = path[path.rfind("/") + 1:]
35
36                 if properties["Favorite"] == dbus.Boolean(1):
37                         favorite = "*"
38                 else:
39                         favorite = " "
40
41                 if "Name" in properties.keys():
42                         name = properties["Name"]
43                 else:
44                         name = "{" + properties["Type"] + "}"
45
46                 print "%s %-26s { %s }" % (favorite, name, identifier)
47
48 if sys.argv[1] == "state":
49         properties = manager.GetProperties()
50
51         print "System is %s" % (properties["State"])
52
53 elif sys.argv[1] in ["services", "list", "show"]:
54         properties = manager.GetProperties()
55
56         print_services(properties["Services"])
57
58 elif sys.argv[1] in ["autoconnect", "autoconn"]:
59         if (len(sys.argv) < 3):
60                 print "Need at least service parameter"
61                 sys.exit(1)
62
63         path = "/net/connman/service/" + sys.argv[2]
64
65         service = dbus.Interface(bus.get_object("net.connman", path),
66                                                 "net.connman.Service")
67
68         if (len(sys.argv) > 3):
69                 flag = sys.argv[3].strip().lower()
70                 autoconnect = dbus.Boolean(flag not in ['false', 'f', 'n', '0'])
71
72                 service.SetProperty("AutoConnect", autoconnect);
73
74                 print "Auto connect %s for %s" % (autoconnect, sys.argv[2])
75         else:
76                 properties = service.GetProperties()
77
78                 if "Name" in properties.keys():
79                         name = properties["Name"]
80                 else:
81                         name = "{" + properties["Type"] + "}"
82
83                 if "AutoConnect" in properties.keys():
84                         autoconnect = properties["AutoConnect"]
85                 else:
86                         autoconnect = dbus.Boolean(0)
87
88                 print "Auto connect %s for %s" % (autoconnect, name)
89
90 elif sys.argv[1] in ["connect", "conn"]:
91         if (len(sys.argv) < 3):
92                 print "Need at least service parameter"
93                 sys.exit(1)
94
95         path = "/net/connman/service/" + sys.argv[2]
96
97         service = dbus.Interface(bus.get_object("net.connman", path),
98                                                 "net.connman.Service")
99
100         try:
101                 service.Connect(timeout=60000)
102         except dbus.DBusException, error:
103                 print "%s: %s" % (error._dbus_error_name, error.message)
104
105 elif sys.argv[1] in ["disconnect", "disc"]:
106         if (len(sys.argv) < 3):
107                 print "Need at least service parameter"
108                 sys.exit(1)
109
110         path = "/net/connman/service/" + sys.argv[2]
111
112         service = dbus.Interface(bus.get_object("net.connman", path),
113                                                 "net.connman.Service")
114
115         try:
116                 service.Disconnect()
117         except dbus.DBusException, error:
118                 print "%s: %s" % (error._dbus_error_name, error.message)
119
120 elif sys.argv[1] in ["remove"]:
121         if (len(sys.argv) < 3):
122                 print "Need at least service parameter"
123                 sys.exit(1)
124
125         path = "/net/connman/service/" + sys.argv[2]
126
127         service = dbus.Interface(bus.get_object("net.connman", path),
128                                                 "net.connman.Service")
129
130         properties = service.GetProperties()
131
132         if properties["Favorite"] == dbus.Boolean(0):
133                 print "Only favorite services can be removed"
134                 sys.exit(1)
135
136         try:
137                 service.Remove()
138         except dbus.DBusException, error:
139                 print "%s: %s" % (error._dbus_error_name, error.message)
140
141 elif sys.argv[1] == "scan":
142         if len(sys.argv) > 2:
143                 manager.RequestScan(sys.argv[2])
144         else:
145                 manager.RequestScan("")
146
147 elif sys.argv[1] == "enable":
148         if len(sys.argv) > 2:
149                 path = "/net/connman/technology/" + sys.argv[2]
150                 technology = dbus.Interface(bus.get_object("net.connman", path),
151                                             "net.connman.Technology")
152                 technology.SetProperty("Powered", True)
153
154 elif sys.argv[1] == "disable":
155         if len(sys.argv) > 2:
156                 path = "/net/connman/technology/" + sys.argv[2]
157                 technology = dbus.Interface(bus.get_object("net.connman", path),
158                                             "net.connman.Technology")
159                 technology.SetProperty("Powered", False)
160
161 elif sys.argv[1] in ["offlinemode", "flightmode"]:
162         if len(sys.argv) > 2:
163                 if sys.argv[2] == "on":
164                         active = dbus.Boolean(1)
165                 elif sys.argv[2] == "off":
166                         active = dbus.Boolean(0)
167                 else:
168                         active = dbus.Boolean(sys.argv[2])
169                 manager.SetProperty("OfflineMode", active)
170         else:
171                 properties = manager.GetProperties()
172                 print "Offline mode is %s" % (properties["OfflineMode"])
173
174 else:
175         print "Unknown command"