All pastes #436997 Raw Edit

Miscellany

public python v1 · immutable
·published 2007-04-12 20:28 UTC
rendered paste body
import dbus, dbus.glibimport gobjectclass BTModel(gobject.GObject):        dbus_bluez_service = "org.bluez"    dbus_bluez_path = "/org/bluez"    dbus_bluez_manager_interface = dbus_bluez_service + ".Manager"    dbus_bluez_adapter_interface = dbus_bluez_service + ".Adapter"    dbus_btsdp_service = "com.nokia.btsdp"    dbus_btsdp_request_path = "/com/nokia/btsdp/request"    dbus_btsdp_request_interface = "com.nokia.btsdp.request"        __gsignals__ = {            'device-found':(gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_PYOBJECT, gobject.TYPE_PYOBJECT)),            'discovery-started':(gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, ()),            'discovery-completed':(gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, ()),            'name-updated':(gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_PYOBJECT, gobject.TYPE_PYOBJECT))                                }        def __init__(self):        gobject.GObject.__init__(self)        self.bus = None        self.bluez_manager = None        self.bluez_adapter = None        self.bluez_default_adapter = None        self.config_parser = None        self.btsdp_request = None        self.scanning = False        try:            self.init_bluez_adapter()        except TypeError, e:            print "Error in init_bluez_adapter()"    def init_bluez_adapter(self):        dbus_bluez_named_service = None        if self.bus is None:            self.bus = dbus.SystemBus()        if self.bluez_manager is None:            dbus_obj = self.bus.get_object('org.freedesktop.DBus', '/org/freedesktop/DBus', introspect=False)            dbus_bluez_named_service = dbus_obj.GetNameOwner('org.bluez', dbus_interface='org.freedesktop.DBus')            bluez_obj = self.bus.get_object(self.dbus_bluez_service, self.dbus_bluez_path, introspect=False)            self.bluez_manager = dbus.Interface(bluez_obj, self.dbus_bluez_manager_interface)                        btsdp_obj = self.bus.get_object("com.nokia.btsdp", "/com/nokia/btsdp/request", introspect=False)            btsdp_request = dbus.Interface(btsdp_obj, "com.nokia.btsdp.request")        if self.bluez_default_adapter is None:            self.bluez_default_adapter = self.bluez_manager.DefaultAdapter()            self.bus.add_signal_receiver(handler_function=self.cb_discovery_started,                                         signal_name='DiscoveryStarted',                                         dbus_interface=self.dbus_bluez_adapter_interface,                                         named_service=dbus_bluez_named_service,                                         path=self.bluez_default_adapter)            self.bus.add_signal_receiver(handler_function=self.cb_remote_device_found,                                         signal_name='RemoteDeviceFound',                                         dbus_interface=self.dbus_bluez_adapter_interface,                                         named_service=dbus_bluez_named_service,                                         path=self.bluez_default_adapter)            self.bus.add_signal_receiver(handler_function=self.cb_remote_name_updated,                                         signal_name='RemoteNameUpdated',                                         dbus_interface=self.dbus_bluez_adapter_interface,                                         named_service=dbus_bluez_named_service,                                         path=self.bluez_default_adapter)            self.bus.add_signal_receiver(handler_function=self.cb_discovery_completed,                                         signal_name='DiscoveryCompleted',                                         dbus_interface=self.dbus_bluez_adapter_interface,                                         named_service=dbus_bluez_named_service,                                         path=self.bluez_default_adapter)        bluez_object = self.bus.get_object(self.dbus_bluez_service, self.bluez_default_adapter, introspect=False)        self.bluez_adapter = dbus.Interface(bluez_object, self.dbus_bluez_adapter_interface)            def scan_bt_devices(self):        if not self.scanning:            self.bluez_adapter.DiscoverDevices()    def cancel_scan_bt_devices(self):        if self.bluez_adapter is not None and self.scanning:            self.bluez_adapter.CancelDiscovery()            self.scanning = False                def cb_remote_device_found(self, address, *args):        self.emit('device-found', address, *args)                def cb_discovery_started(self):        self.scanning = True        self.emit('discovery-started')            def cb_discovery_completed(self):        self.scanning = False        self.emit('discovery-completed')            def cb_remote_name_updated(self, address, name, *args):        self.emit('name-updated', name, *args)