test: Add wifi carrier support for handover_agent test
[platform/upstream/neard.git] / test / handover-agent
1 #!/usr/bin/python
2
3 import gobject
4
5 import dbus
6 import dbus.service
7 import dbus.mainloop.glib
8 from optparse import OptionParser
9
10 eir_test_data = [0x16,0x00\
11                 ,0x01,0x02,0x03,0x04,0x05,0x06\
12                 ,0x08,0x09,0x41,0x72,0x72,0x61,0x6b,0x69,0x73\
13                 ,0x04,0x0d,0x6e,0x01,0x00]
14
15 wsc_test_data = [0x10,0x4A,0x00,0x01,0x10\
16                 ,0x10,0x45,0x00,0x08\
17                 ,0x74,0x65,0x73,0x74,0x73,0x73,0x69,0x64\
18                 ,0x10,0x27,0x00,0x06\
19                 ,0x62,0x6C,0x61,0x62,0x6C,0x61]
20
21 power_state = None
22
23 def print_fields(fields):
24         if 'EIR' in fields:
25                 s = ' '.join('{:#02x}'.format(i) for i in fields['EIR'])
26                 print '  EIR:  %s' % s
27
28         if 'nokia.com:bt' in fields:
29                 s = ' '.join('{:#02x}'.format(i) for i in fields['nokia.com:bt'])
30                 print '  nokia.com:bt:  %s' % s
31
32         if 'State' in fields:
33                 print '  State: %s' % fields['State']
34
35         if 'WSC' in fields:
36                 s = ' '.join('{:#02x}'.format(i) for i in fields['WSC'])
37                 print '  WSC:  %s' % s
38
39 class BTHOAgent(dbus.service.Object):
40
41         @dbus.service.method('org.neard.HandoverAgent',
42                                         in_signature='',
43                                         out_signature='')
44         def Release(self):
45                 print 'Release'
46                 mainloop.quit()
47
48         @dbus.service.method('org.neard.HandoverAgent',
49                                         in_signature='a{sv}',
50                                         out_signature='')
51         def PushOOB(self, fields):
52                 print 'PushOOB'
53                 print_fields(fields)
54
55         @dbus.service.method('org.neard.HandoverAgent',
56                                         in_signature='a{sv}',
57                                         out_signature='a{sv}')
58
59         def RequestOOB(self, fields):
60                 print 'RequestOOB'
61                 print_fields(fields)
62
63                 print '  Replying with'
64                 s = ' '.join('{:#02x}'.format(i) for i in eir_test_data)
65                 print '    EIR: %s' % s
66
67                 if power_state != 'unknown':
68                         print '    State: %s' % power_state
69                         return {'EIR' : eir_test_data, 'State' : power_state}
70                 else:
71                         return {'EIR' : eir_test_data}
72
73 class WiFiHOAgent(dbus.service.Object):
74
75         @dbus.service.method('org.neard.HandoverAgent',
76                                         in_signature='',
77                                         out_signature='')
78         def Release(self):
79                 print 'Release'
80                 mainloop.quit()
81
82         @dbus.service.method('org.neard.HandoverAgent',
83                                         in_signature='a{sv}',
84                                         out_signature='')
85         def PushOOB(self, fields):
86                 print 'PushOOB'
87                 print_fields(fields)
88
89         @dbus.service.method('org.neard.HandoverAgent',
90                                         in_signature='a{sv}',
91                                         out_signature='a{sv}')
92
93         def RequestOOB(self, fields):
94                 print 'RequestOOB'
95                 print_fields(fields)
96
97                 print '  Replying with'
98                 s = ' '.join('{:#02x}'.format(i) for i in wsc_test_data)
99                 print '    WSC: %s' % s
100
101                 if power_state != 'unknown':
102                         print '    State: %s' % power_state
103                         return {'WSC' : wsc_test_data, 'State' : power_state}
104                 else:
105                         return {'WSC' : wsc_test_data}
106
107 if __name__ == '__main__':
108         dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
109
110         bus = dbus.SystemBus()
111
112         parser = OptionParser()
113         parser.add_option("-s", "--power-state", action="store", type="string",
114                                 dest="power_state", default="active",
115                                 help="active inactive activating unknown")
116         (options, args) = parser.parse_args()
117
118         power_state = options.power_state
119
120         manager = dbus.Interface(bus.get_object('org.neard', '/'),
121                                                         'org.neard.Manager')
122
123         btpath = '/test/handover/bt/agent'
124         btcarrier = 'bluetooth'
125         btobject = BTHOAgent(bus, btpath)
126
127         wifipath = '/test/handover/wifi/agent'
128         wificarrier = 'wifi'
129         wifiobject = WiFiHOAgent(bus, wifipath)
130
131         manager.RegisterHandoverAgent(btpath, btcarrier)
132         manager.RegisterHandoverAgent(wifipath, wificarrier)
133
134         mainloop = gobject.MainLoop()
135
136         try:
137                 mainloop.run()
138         except (KeyboardInterrupt):
139                 manager.UnregisterHandoverAgent(btpath, btcarrier)
140                 manager.UnregisterHandoverAgent(wifipath, wificarrier)