@@ -134,7 +134,8 @@ def __getitem__(self, key):
134134 if key > self ._max_size :
135135 raise ValueError ("Register '{0}' greater than maximum FRAM size."
136136 " ({1})" .format (key , self ._max_size ))
137- read_buffer = self ._read_byte (key )
137+ buffer = bytearray (1 )
138+ read_buffer = self ._read_register (key , buffer )
138139 elif isinstance (key , slice ):
139140 registers = list (range (key .start if not key .start is None else 0 ,
140141 key .stop if not key .stop is None else self ._max_size ,
@@ -143,9 +144,8 @@ def __getitem__(self, key):
143144 raise ValueError ("Register + Length greater than maximum FRAM size."
144145 " ({0})" .format (self ._max_size ))
145146
146- read_buffer = bytearray (len (registers ))
147- for i , register in enumerate (registers ):
148- read_buffer [i ] = self ._read_byte (register )[0 ]
147+ buffer = bytearray (len (registers ))
148+ read_buffer = self ._read_register (registers [0 ], buffer )
149149
150150 return read_buffer
151151
@@ -187,9 +187,6 @@ def __setitem__(self, key, value):
187187
188188 self ._write_page (key .start , value , self ._wraparound )
189189
190- def _read_byte (self , register ):
191- return self ._read_register (register )
192-
193190 def _read_register (self , register ):
194191 # Implemented by subclass
195192 raise NotImplementedError
@@ -229,11 +226,10 @@ def __init__(self, i2c_bus, address=0x50, write_protect=False,
229226 self ._i2c = i2cdev (i2c_bus , address )
230227 super ().__init__ (_MAX_SIZE_I2C , write_protect , wp_pin )
231228
232- def _read_register (self , register ):
229+ def _read_register (self , register , read_buffer ):
233230 write_buffer = bytearray (2 )
234231 write_buffer [0 ] = register >> 8
235232 write_buffer [1 ] = register & 0xFF
236- read_buffer = bytearray (1 )
237233 with self ._i2c as i2c :
238234 i2c .write_then_readinto (write_buffer , read_buffer )
239235 return read_buffer
0 commit comments