Skip to content

Commit 3e6bf71

Browse files
authored
Merge pull request #24 from kattni/add-debug-to-i2cdevice
Added debug to i2c_device.
2 parents 285fcf3 + 7aa7496 commit 3e6bf71

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

adafruit_bus_device/i2c_device.py

+18-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ class I2CDevice:
5757
device.write(bytes_read)
5858
"""
5959

60-
def __init__(self, i2c, device_address):
60+
def __init__(self, i2c, device_address, *, debug=False):
6161
"""
6262
Try to read a byte from an address,
6363
if you get an OSError it means the device is not there
@@ -79,6 +79,7 @@ def __init__(self, i2c, device_address):
7979

8080
self.i2c = i2c
8181
self.device_address = device_address
82+
self._debug = debug
8283

8384
def readinto(self, buf, **kwargs):
8485
"""
@@ -94,6 +95,8 @@ def readinto(self, buf, **kwargs):
9495
:param int end: Index to write up to but not include
9596
"""
9697
self.i2c.readfrom_into(self.device_address, buf, **kwargs)
98+
if self._debug:
99+
print("i2c_device.readinto:", [hex(i) for i in buf])
97100

98101
def write(self, buf, **kwargs):
99102
"""
@@ -110,6 +113,8 @@ def write(self, buf, **kwargs):
110113
:param bool stop: If true, output an I2C stop condition after the buffer is written
111114
"""
112115
self.i2c.writeto(self.device_address, buf, **kwargs)
116+
if self._debug:
117+
print("i2c_device.write:", [hex(i) for i in buf])
113118

114119
#pylint: disable-msg=too-many-arguments
115120
def write_then_readinto(self, out_buffer, in_buffer, *,
@@ -143,14 +148,26 @@ def write_then_readinto(self, out_buffer, in_buffer, *,
143148
if in_end is None:
144149
in_end = len(in_buffer)
145150
if hasattr(self.i2c, 'writeto_then_readfrom'):
151+
if self._debug:
152+
print("i2c_device.writeto_then_readfrom.out_buffer:",
153+
[hex(i) for i in out_buffer[out_start:out_end]])
146154
# In linux, at least, this is a special kernel function call
147155
self.i2c.writeto_then_readfrom(self.device_address, out_buffer, in_buffer,
148156
out_start=out_start, out_end=out_end,
149157
in_start=in_start, in_end=in_end, stop=stop)
158+
if self._debug:
159+
print("i2c_device.writeto_then_readfrom.in_buffer:",
160+
[hex(i) for i in in_buffer[in_start:in_end]])
150161
else:
151162
# If we don't have a special implementation, we can fake it with two calls
152163
self.write(out_buffer, start=out_start, end=out_end, stop=stop)
164+
if self._debug:
165+
print("i2c_device.write_then_readinto.write.out_buffer:",
166+
[hex(i) for i in out_buffer[out_start:out_end]])
153167
self.readinto(in_buffer, start=in_start, end=in_end)
168+
if self._debug:
169+
print("i2c_device.write_then_readinto.readinto.in_buffer:",
170+
[hex(i) for i in in_buffer[in_start:in_end]])
154171

155172
#pylint: enable-msg=too-many-arguments
156173

0 commit comments

Comments
 (0)