@@ -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