74 lines
2.2 KiB
Python
74 lines
2.2 KiB
Python
from __future__ import print_function
|
|
from __future__ import division
|
|
from __future__ import absolute_import
|
|
from __future__ import unicode_literals
|
|
|
|
import dbus
|
|
from blueman.Sdp import uuid128_to_uuid16, uuid16_to_name
|
|
from blueman.bluez.BlueZInterface import BlueZInterface
|
|
|
|
|
|
class Service(object):
|
|
__group__ = None
|
|
__svclass_id__ = None
|
|
__description__ = None
|
|
__icon__ = None
|
|
__priority__ = None
|
|
|
|
_legacy_interface = None
|
|
|
|
def __init__(self, device, uuid, init_legacy_interface=True):
|
|
self.__device = device
|
|
self.__uuid = uuid
|
|
if init_legacy_interface and BlueZInterface.get_interface_version()[0] < 5:
|
|
bus = dbus.SystemBus()
|
|
proxy = bus.get_object("org.bluez", self.__device.get_object_path())
|
|
self._legacy_interface = dbus.Interface(proxy, 'org.bluez.%s' % self.__class__.__name__)
|
|
|
|
@property
|
|
def name(self):
|
|
return uuid16_to_name(uuid128_to_uuid16(self.__uuid))
|
|
|
|
@property
|
|
def device(self):
|
|
return self.__device
|
|
|
|
@property
|
|
def uuid(self):
|
|
return self.__uuid
|
|
|
|
@property
|
|
def description(self):
|
|
return self.__description__
|
|
|
|
@property
|
|
def icon(self):
|
|
return self.__icon__
|
|
|
|
@property
|
|
def priority(self):
|
|
return self.__priority__
|
|
|
|
@property
|
|
def group(self):
|
|
return self.__group__
|
|
|
|
@property
|
|
def connected(self):
|
|
if self._legacy_interface:
|
|
return self._legacy_interface.GetProperties()['Connected']
|
|
else:
|
|
return self.__device.Device.get_properties()['Connected']
|
|
|
|
def connect(self, reply_handler=None, error_handler=None):
|
|
if self._legacy_interface:
|
|
self._legacy_interface.Connect(self.__uuid, reply_handler=reply_handler, error_handler=error_handler)
|
|
else:
|
|
self.__device.Device.connect(reply_handler=reply_handler, error_handler=error_handler)
|
|
|
|
def disconnect(self, reply_handler=None, error_handler=None, *args):
|
|
if self._legacy_interface:
|
|
self._legacy_interface.Disconnect(self.__uuid, reply_handler=reply_handler, error_handler=error_handler)
|
|
else:
|
|
self.__device.Device.disconnect(reply_handler=reply_handler, error_handler=error_handler)
|