1
from __future__ import print_function
2
from __future__ import division
3
from __future__ import absolute_import
4
from __future__ import unicode_literals
6
from blueman.bluez.Adapter import Adapter
7
from _blueman import rfcomm_list, release_rfcomm_device, create_rfcomm_device
8
from blueman.Service import Service
9
from blueman.main.Mechanism import Mechanism
12
class SerialService(Service):
13
def __init__(self, device, uuid):
14
super(SerialService, self).__init__(device, uuid, False)
16
def serial_port_id(self, channel):
17
for dev in rfcomm_list():
18
if dev["dst"] == self.device.Address and dev["state"] == "connected" and dev["channel"] == channel:
25
def connect(self, reply_handler=None, error_handler=None):
26
props = self.device.get_properties()
29
port_id = create_rfcomm_device(Adapter(props['Adapter']).get_properties()['Address'], props['Address'], 1)
30
Mechanism().open_rfcomm(port_id)
32
reply_handler('/dev/rfcomm%d' % port_id)
33
except Exception as e:
40
def disconnect(self, *args):
41
Mechanism().close_rfcomm(args[0])
42
release_rfcomm_device(args[0])