Skip to content

Commit 69abc5d

Browse files
committed
Add logging to Handler
1 parent dfbf502 commit 69abc5d

File tree

1 file changed

+26
-10
lines changed

1 file changed

+26
-10
lines changed

PSL/packet_handler.py

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -46,13 +46,15 @@ def __init__(
4646
self.load_burst = False
4747
self.input_queue_size = 0
4848
self.version = ""
49+
self._log = b""
50+
self._logging = False
4951
self.interface = serial.Serial()
50-
self.connect(port=port, baudrate=baudrate, timeout=timeout)
5152
self.send_byte = partial(self._send, size=1)
5253
self.send_int = partial(self._send, size=2)
5354
self.get_byte = partial(self._receive, size=1)
5455
self.get_int = partial(self._receive, size=2)
5556
self.get_long = partial(self._receive, size=4)
57+
self.connect(port=port, baudrate=baudrate, timeout=timeout)
5658

5759
# Backwards compatibility
5860
self.fd = self.interface
@@ -165,9 +167,11 @@ def get_version(self, *args) -> str: # *args for backwards compatibility
165167
str
166168
Version string.
167169
"""
168-
self.interface.write(CP.COMMON)
169-
self.interface.write(CP.GET_VERSION)
170-
return self.interface.readline().decode("utf-8")
170+
self.send_byte(CP.COMMON)
171+
self.send_byte(CP.GET_VERSION)
172+
version = self.interface.readline()
173+
self._write_log(version, "RX")
174+
return version.decode("utf-8")
171175

172176
def get_ack(self) -> int: # Make _internal?
173177
"""Get response code from PSLab.
@@ -183,7 +187,7 @@ def get_ack(self) -> int: # Make _internal?
183187
3 FAILED
184188
"""
185189
if not self.load_burst:
186-
response = self.interface.read(1)
190+
response = self.read(1)
187191
else:
188192
self.input_queue_size += 1
189193
return 1
@@ -229,8 +233,7 @@ def _send(self, value: Union[bytes, int], size: int = None):
229233
if self.load_burst:
230234
self.burst_buffer += packet
231235
else:
232-
self.interface.write(packet)
233-
# return self.get_ack?
236+
self.write(packet)
234237

235238
def _receive(self, size: int) -> int:
236239
"""Read and unpack the specified number of bytes from the serial port.
@@ -245,7 +248,7 @@ def _receive(self, size: int) -> int:
245248
int
246249
Unpacked bytes, or -1 if too few bytes were read.
247250
"""
248-
received = self.interface.read(size)
251+
received = self.read(size)
249252

250253
if len(received) == size:
251254
if size in (1, 2, 4):
@@ -261,6 +264,19 @@ def _receive(self, size: int) -> int:
261264

262265
return retval
263266

267+
def read(self, number_of_bytes: int) -> bytes:
268+
data = self.interface.read(number_of_bytes)
269+
self._write_log(data, "RX")
270+
return data
271+
272+
def write(self, data: bytes):
273+
self.interface.write(data)
274+
self._write_log(data, "TX")
275+
276+
def _write_log(self, data: bytes, direction: str):
277+
if self._logging:
278+
self._log += direction.encode() + data + "STOP".encode()
279+
264280
def wait_for_data(self, timeout: float = 0.2) -> bool:
265281
"""Wait for :timeout: seconds or until there is data in the input buffer.
266282
@@ -305,10 +321,10 @@ def send_burst(self) -> List[int]:
305321
List of response codes
306322
(see :meth:`get_ack <PSL.packet_handler.Handler.get_ack>`).
307323
"""
308-
self.interface.write(self.burst_buffer)
324+
self.write(self.burst_buffer)
309325
self.burst_buffer = b""
310326
self.load_burst = False
311-
acks = self.interface.read(self.input_queue_size)
327+
acks = self.read(self.input_queue_size)
312328
self.input_queue_size = 0
313329

314330
return list(acks)

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy