@@ -57,7 +57,7 @@ class I2CDevice:
57
57
device.write(bytes_read)
58
58
"""
59
59
60
- def __init__ (self , i2c , device_address ):
60
+ def __init__ (self , i2c , device_address , * , debug = False ):
61
61
"""
62
62
Try to read a byte from an address,
63
63
if you get an OSError it means the device is not there
@@ -79,6 +79,7 @@ def __init__(self, i2c, device_address):
79
79
80
80
self .i2c = i2c
81
81
self .device_address = device_address
82
+ self ._debug = debug
82
83
83
84
def readinto (self , buf , ** kwargs ):
84
85
"""
@@ -94,6 +95,8 @@ def readinto(self, buf, **kwargs):
94
95
:param int end: Index to write up to but not include
95
96
"""
96
97
self .i2c .readfrom_into (self .device_address , buf , ** kwargs )
98
+ if self ._debug :
99
+ print ("i2c_device.readinto:" , [hex (i ) for i in buf ])
97
100
98
101
def write (self , buf , ** kwargs ):
99
102
"""
@@ -110,6 +113,8 @@ def write(self, buf, **kwargs):
110
113
:param bool stop: If true, output an I2C stop condition after the buffer is written
111
114
"""
112
115
self .i2c .writeto (self .device_address , buf , ** kwargs )
116
+ if self ._debug :
117
+ print ("i2c_device.write:" , [hex (i ) for i in buf ])
113
118
114
119
#pylint: disable-msg=too-many-arguments
115
120
def write_then_readinto (self , out_buffer , in_buffer , * ,
@@ -143,14 +148,26 @@ def write_then_readinto(self, out_buffer, in_buffer, *,
143
148
if in_end is None :
144
149
in_end = len (in_buffer )
145
150
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 ]])
146
154
# In linux, at least, this is a special kernel function call
147
155
self .i2c .writeto_then_readfrom (self .device_address , out_buffer , in_buffer ,
148
156
out_start = out_start , out_end = out_end ,
149
157
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 ]])
150
161
else :
151
162
# If we don't have a special implementation, we can fake it with two calls
152
163
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 ]])
153
167
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 ]])
154
171
155
172
#pylint: enable-msg=too-many-arguments
156
173
0 commit comments