#!/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 manager = dbus.Interface(bus.get_object('org.neard', '/'), 'org.neard.Manager') 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)