| #!/usr/bin/python |
| |
| import gobject |
| |
| import dbus |
| import dbus.service |
| import dbus.mainloop.glib |
| from optparse import OptionParser |
| |
| eir_test_data = [0x16,0x00\ |
| ,0x01,0x02,0x03,0x04,0x05,0x06\ |
| ,0x08,0x09,0x41,0x72,0x72,0x61,0x6b,0x69,0x73\ |
| ,0x04,0x0d,0x6e,0x01,0x00] |
| |
| wsc_test_data = [0x10,0x4A,0x00,0x01,0x10\ |
| ,0x10,0x45,0x00,0x08\ |
| ,0x74,0x65,0x73,0x74,0x73,0x73,0x69,0x64\ |
| ,0x10,0x27,0x00,0x06\ |
| ,0x62,0x6C,0x61,0x62,0x6C,0x61] |
| |
| power_state = None |
| |
| def print_fields(fields): |
| if 'EIR' in fields: |
| s = ' '.join('{:#02x}'.format(i) for i in fields['EIR']) |
| print ' EIR: %s' % s |
| |
| if 'nokia.com:bt' in fields: |
| s = ' '.join('{:#02x}'.format(i) for i in fields['nokia.com:bt']) |
| print ' nokia.com:bt: %s' % s |
| |
| if 'State' in fields: |
| print ' State: %s' % fields['State'] |
| |
| if 'WSC' in fields: |
| s = ' '.join('{:#02x}'.format(i) for i in fields['WSC']) |
| print ' WSC: %s' % s |
| |
| class BTHOAgent(dbus.service.Object): |
| |
| @dbus.service.method('org.neard.HandoverAgent', |
| in_signature='', |
| out_signature='') |
| def Release(self): |
| print 'Release' |
| mainloop.quit() |
| |
| @dbus.service.method('org.neard.HandoverAgent', |
| in_signature='a{sv}', |
| out_signature='') |
| def PushOOB(self, fields): |
| print 'PushOOB' |
| print_fields(fields) |
| |
| @dbus.service.method('org.neard.HandoverAgent', |
| in_signature='a{sv}', |
| out_signature='a{sv}') |
| |
| def RequestOOB(self, fields): |
| print 'RequestOOB' |
| print_fields(fields) |
| |
| print ' Replying with' |
| s = ' '.join('{:#02x}'.format(i) for i in eir_test_data) |
| print ' EIR: %s' % s |
| |
| if power_state != 'unknown': |
| print ' State: %s' % power_state |
| return {'EIR' : eir_test_data, 'State' : power_state} |
| else: |
| return {'EIR' : eir_test_data} |
| |
| class WiFiHOAgent(dbus.service.Object): |
| |
| @dbus.service.method('org.neard.HandoverAgent', |
| in_signature='', |
| out_signature='') |
| def Release(self): |
| print 'Release' |
| mainloop.quit() |
| |
| @dbus.service.method('org.neard.HandoverAgent', |
| in_signature='a{sv}', |
| out_signature='') |
| def PushOOB(self, fields): |
| print 'PushOOB' |
| print_fields(fields) |
| |
| @dbus.service.method('org.neard.HandoverAgent', |
| in_signature='a{sv}', |
| out_signature='a{sv}') |
| |
| def RequestOOB(self, fields): |
| print 'RequestOOB' |
| print_fields(fields) |
| |
| print ' Replying with' |
| s = ' '.join('{:#02x}'.format(i) for i in wsc_test_data) |
| print ' WSC: %s' % s |
| |
| if power_state != 'unknown': |
| print ' State: %s' % power_state |
| return {'WSC' : wsc_test_data, 'State' : power_state} |
| else: |
| return {'WSC' : wsc_test_data} |
| |
| if __name__ == '__main__': |
| dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) |
| |
| bus = dbus.SystemBus() |
| |
| parser = OptionParser() |
| parser.add_option("-s", "--power-state", action="store", type="string", |
| dest="power_state", default="active", |
| help="active inactive activating unknown") |
| (options, args) = parser.parse_args() |
| |
| power_state = options.power_state |
| |
| obj = bus.get_object("org.neard", "/org/neard"); |
| manager = dbus.Interface(obj, "org.neard.AgentManager") |
| |
| btpath = '/test/handover/bt/agent' |
| btcarrier = 'bluetooth' |
| btobject = BTHOAgent(bus, btpath) |
| |
| wifipath = '/test/handover/wifi/agent' |
| wificarrier = 'wifi' |
| wifiobject = WiFiHOAgent(bus, wifipath) |
| |
| manager.RegisterHandoverAgent(btpath, btcarrier) |
| manager.RegisterHandoverAgent(wifipath, wificarrier) |
| |
| mainloop = gobject.MainLoop() |
| |
| try: |
| mainloop.run() |
| except (KeyboardInterrupt): |
| manager.UnregisterHandoverAgent(btpath, btcarrier) |
| manager.UnregisterHandoverAgent(wifipath, wificarrier) |