wacom: notify via signal when a drawing is available

pull/1/head
Peter Hutterer 2018-01-12 16:18:40 +10:00
parent 723282eb56
commit 8e907ba81a
2 changed files with 22 additions and 1 deletions

View File

@ -33,6 +33,8 @@ class Tuhi(GObject.Object):
self.bluez.connect('device-added', self._on_device_added) self.bluez.connect('device-added', self._on_device_added)
self.bluez.connect_to_bluez() self.bluez.connect_to_bluez()
self.drawings = []
def _on_device_added(self, manager, device): def _on_device_added(self, manager, device):
if device.vendor_id != WACOM_COMPANY_ID: if device.vendor_id != WACOM_COMPANY_ID:
return return
@ -44,8 +46,13 @@ class Tuhi(GObject.Object):
logger.debug('{}: connected'.format(device.address)) logger.debug('{}: connected'.format(device.address))
d = WacomDevice(device) d = WacomDevice(device)
d.connect('drawing', self._on_drawing_received)
d.start() d.start()
def _on_drawing_received(self, device, drawing):
logger.debug('Drawing received')
self.drawings.append(drawing)
def main(args): def main(args):
t = Tuhi() t = Tuhi()

View File

@ -111,7 +111,20 @@ class WacomCorruptDataException(WacomException):
class WacomDevice(GObject.Object): class WacomDevice(GObject.Object):
"""
Class to communicate with the Wacom device. Communication is handled in
a separate thread.
:param device: the BlueZDevice object that is this wacom device
"""
__gsignals__ = {
"drawing":
(GObject.SIGNAL_RUN_FIRST, None, (GObject.TYPE_PYOBJECT,)),
}
def __init__(self, device): def __init__(self, device):
GObject.Object.__init__(self)
self.device = device self.device = device
self.nordic_answer = None self.nordic_answer = None
self.pen_data_buffer = [] self.pen_data_buffer = []
@ -505,7 +518,8 @@ class WacomDevice(GObject.Object):
# note: \x38\x62\x74 translates to '8bt' # note: \x38\x62\x74 translates to '8bt'
if bytes(prefix) == b'\x62\x38\x62\x74': if bytes(prefix) == b'\x62\x38\x62\x74':
drawings = self.parse_pen_data(pen_data, timestamp) drawings = self.parse_pen_data(pen_data, timestamp)
# FIXME: Do something with the drawing for drawing in drawings:
self.emit('drawing', drawing)
self.ack_transaction() self.ack_transaction()
transaction_count += 1 transaction_count += 1
return transaction_count return transaction_count