wacom: use 'with' to group request/replies together
Previously, the YAML output was basically: - send: [0xb9, 0x01, 0x00] - recv: [0xba, 0x02, 0x44, 0x00] using a context manager where replies are expeced we can now group the replies in the yaml file: with logger as _: self.send_nordic_command(...) self.wait_nordic_data(...) And that will prodice a grouped entry in the YAML file: - send: [0xb9, 0x01, 0x00] recv: [0xba, 0x02, 0x44, 0x00] Which means processing those becomes a bit easier. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
parent
3e0ba27856
commit
a0fb4cf0f9
|
@ -124,11 +124,13 @@ class DataLogger(object):
|
||||||
A wrapper to log data transfer between the device and Tuhi. Use as::
|
A wrapper to log data transfer between the device and Tuhi. Use as::
|
||||||
|
|
||||||
logger = DataLogger()
|
logger = DataLogger()
|
||||||
|
with logger as _:
|
||||||
logger.nordic.request(nordic_data)
|
logger.nordic.request(nordic_data)
|
||||||
logger.nordic.recv([1, 2, 3...])
|
logger.nordic.recv([1, 2, 3...])
|
||||||
|
|
||||||
This uses a logger for stdout, but it also writes the log files to disk
|
This uses a logger for stdout, but it also writes the log files to disk
|
||||||
for future re-use.
|
for future re-use. The context manager ('with') helps to group the
|
||||||
|
requests/replies together in the yaml file.
|
||||||
|
|
||||||
Targets for log are $HOME/.share/tuhi/12:AB:23:CD:.../<timestamp>.yml
|
Targets for log are $HOME/.share/tuhi/12:AB:23:CD:.../<timestamp>.yml
|
||||||
|
|
||||||
|
@ -177,6 +179,8 @@ class DataLogger(object):
|
||||||
self.pen = DataLogger._Pen(self)
|
self.pen = DataLogger._Pen(self)
|
||||||
self.sysevent = DataLogger._SysEvent(self)
|
self.sysevent = DataLogger._SysEvent(self)
|
||||||
self.logfile = None
|
self.logfile = None
|
||||||
|
self._in_context = True
|
||||||
|
self._last_source = None
|
||||||
|
|
||||||
def _on_bluez_connected(self, bluez_device):
|
def _on_bluez_connected(self, bluez_device):
|
||||||
self._init_file()
|
self._init_file()
|
||||||
|
@ -222,7 +226,23 @@ class DataLogger(object):
|
||||||
|
|
||||||
self.logger.debug(f'{self.btaddr}: RX {source} <-- {convert(data)}')
|
self.logger.debug(f'{self.btaddr}: RX {source} <-- {convert(data)}')
|
||||||
self._init_file()
|
self._init_file()
|
||||||
self.logfile.write(f' - recv: {list2hexlist(data)}\n')
|
|
||||||
|
# If we're inside a context, group the request/reply together in the
|
||||||
|
# yaml file, unless the source changes. This means that for the
|
||||||
|
# majority of requests we get an entry like this:
|
||||||
|
#
|
||||||
|
# # GET_BATTERY
|
||||||
|
# - send: [0xb9, 0x01, 0x00]
|
||||||
|
# recv: [0xba, 0x02, 0x44, 0x00]
|
||||||
|
#
|
||||||
|
# Which makes YAML processing a lot easier.
|
||||||
|
if self._last_source != source:
|
||||||
|
self._in_context = False
|
||||||
|
self._last_source = source
|
||||||
|
self.logfile.write(f'# resetting source to {source}\n')
|
||||||
|
prefix = ' ' if self._in_context else ' -'
|
||||||
|
|
||||||
|
self.logfile.write(f'{prefix} recv: {list2hexlist(data)}\n')
|
||||||
if source != 'NORDIC':
|
if source != 'NORDIC':
|
||||||
self.logfile.write(f' source: {source}\n')
|
self.logfile.write(f' source: {source}\n')
|
||||||
|
|
||||||
|
@ -240,6 +260,13 @@ class DataLogger(object):
|
||||||
if source != 'NORDIC':
|
if source != 'NORDIC':
|
||||||
self.logfile.write(f' source: {source}\n')
|
self.logfile.write(f' source: {source}\n')
|
||||||
|
|
||||||
|
def __enter__(self):
|
||||||
|
self._in_context = True
|
||||||
|
return self
|
||||||
|
|
||||||
|
def __exit__(self, *args, **kwargs):
|
||||||
|
self._in_context = False
|
||||||
|
|
||||||
|
|
||||||
class WacomPacket(GObject.Object):
|
class WacomPacket(GObject.Object):
|
||||||
'''
|
'''
|
||||||
|
@ -356,6 +383,7 @@ class WacomProtocolLowLevelComm(GObject.Object):
|
||||||
# The callback used by the protocol messages
|
# The callback used by the protocol messages
|
||||||
def nordic_data_exchange(self, request, requires_reply=False,
|
def nordic_data_exchange(self, request, requires_reply=False,
|
||||||
userdata=None, timeout=None):
|
userdata=None, timeout=None):
|
||||||
|
with self.fw_logger as _:
|
||||||
if request is not None:
|
if request is not None:
|
||||||
self.send_nordic_command(request)
|
self.send_nordic_command(request)
|
||||||
if requires_reply:
|
if requires_reply:
|
||||||
|
|
Loading…
Reference in New Issue