@@ -134,7 +134,8 @@ def __getitem__(self, key):
134
134
if key > self ._max_size :
135
135
raise ValueError ("Register '{0}' greater than maximum FRAM size."
136
136
" ({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 )
138
139
elif isinstance (key , slice ):
139
140
registers = list (range (key .start if not key .start is None else 0 ,
140
141
key .stop if not key .stop is None else self ._max_size ,
@@ -143,9 +144,8 @@ def __getitem__(self, key):
143
144
raise ValueError ("Register + Length greater than maximum FRAM size."
144
145
" ({0})" .format (self ._max_size ))
145
146
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 )
149
149
150
150
return read_buffer
151
151
@@ -187,9 +187,6 @@ def __setitem__(self, key, value):
187
187
188
188
self ._write_page (key .start , value , self ._wraparound )
189
189
190
- def _read_byte (self , register ):
191
- return self ._read_register (register )
192
-
193
190
def _read_register (self , register ):
194
191
# Implemented by subclass
195
192
raise NotImplementedError
@@ -229,11 +226,10 @@ def __init__(self, i2c_bus, address=0x50, write_protect=False,
229
226
self ._i2c = i2cdev (i2c_bus , address )
230
227
super ().__init__ (_MAX_SIZE_I2C , write_protect , wp_pin )
231
228
232
- def _read_register (self , register ):
229
+ def _read_register (self , register , read_buffer ):
233
230
write_buffer = bytearray (2 )
234
231
write_buffer [0 ] = register >> 8
235
232
write_buffer [1 ] = register & 0xFF
236
- read_buffer = bytearray (1 )
237
233
with self ._i2c as i2c :
238
234
i2c .write_then_readinto (write_buffer , read_buffer )
239
235
return read_buffer
0 commit comments