@@ -117,12 +117,12 @@ def __len__(self):
117
117
len(fram)
118
118
119
119
# can be used with range
120
- for i in range(0, len(fram) - 1 )
120
+ for i in range(0, len(fram))
121
121
"""
122
122
return self ._max_size
123
123
124
124
125
- def __getitem__ (self , key ):
125
+ def __getitem__ (self , address ):
126
126
""" Read the value at the given index, or values in a slice.
127
127
128
128
.. code-block:: python
@@ -133,28 +133,29 @@ def __getitem__(self, key):
133
133
# read values 0 thru 9 with a slice
134
134
fram[0:9]
135
135
"""
136
- if isinstance (key , int ):
137
- if key >= self ._max_size :
138
- raise ValueError ("Register '{0}' greater than maximum FRAM register ."
139
- " ({1})" .format (key , self ._max_size - 1 ))
136
+ if isinstance (address , int ):
137
+ if not ( 0 < address < self ._max_size ) :
138
+ raise ValueError ("Address '{0}' out of range. It must be 0 <= address < {1} ."
139
+ .format (address , self ._max_size ))
140
140
buffer = bytearray (1 )
141
- read_buffer = self ._read_register (key , buffer )
142
- elif isinstance (key , slice ):
143
- if key .step is not None :
141
+ read_buffer = self ._read_register (address , buffer )
142
+ elif isinstance (address , slice ):
143
+ if address .step is not None :
144
144
raise ValueError ("Slice stepping is not currently available." )
145
145
146
- registers = list (range (key .start if key .start is not None else 0 ,
147
- key .stop if key .stop is not None else self ._max_size ))
148
- if (registers [0 ] + len (registers )) > self ._max_size :
149
- raise ValueError ("Register + Length greater than maximum FRAM register."
150
- " ({0})" .format (self ._max_size - 1 ))
146
+ registers = list (range (address .start if address .start is not None else 0 ,
147
+ address .stop + 1 if address .stop is not None else self ._max_size ))
148
+ if registers [0 ] < 0 or (registers [0 ] + len (registers )) > self ._max_size :
149
+ raise ValueError ("Address slice out of range. It must be 0 <= [starting address"
150
+ ":stopping address] < {1}."
151
+ .format (address , self ._max_size ))
151
152
152
153
buffer = bytearray (len (registers ))
153
154
read_buffer = self ._read_register (registers [0 ], buffer )
154
155
155
156
return read_buffer
156
157
157
- def __setitem__ (self , key , value ):
158
+ def __setitem__ (self , address , value ):
158
159
""" Write the value at the given starting index.
159
160
160
161
.. code-block:: python
@@ -168,17 +169,17 @@ def __setitem__(self, key, value):
168
169
if self .write_protected :
169
170
raise RuntimeError ("FRAM currently write protected." )
170
171
171
- if isinstance (key , int ):
172
+ if isinstance (address , int ):
172
173
if not isinstance (value , (int , bytearray , list , tuple )):
173
174
raise ValueError ("Data must be a single integer, or a bytearray,"
174
175
" list, or tuple." )
175
- if key >= self ._max_size :
176
- raise ValueError ("Requested register '{0}' greater than maximum "
177
- " FRAM register. ({1})" . format (key , self ._max_size - 1 ))
176
+ if not ( 0 < address < self ._max_size ) :
177
+ raise ValueError ("Address '{0}' out of range. It must be 0 <= address < {1}. "
178
+ . format (address , self ._max_size ))
178
179
179
- self ._write (key , value , self ._wraparound )
180
+ self ._write (address , value , self ._wraparound )
180
181
181
- elif isinstance (key , slice ):
182
+ elif isinstance (address , slice ):
182
183
raise ValueError ("Slicing not available during write operations." )
183
184
184
185
def _read_register (self , register , read_buffer ):
@@ -241,7 +242,7 @@ def _write(self, start_register, data, wraparound=False):
241
242
pass
242
243
else :
243
244
raise ValueError ("Starting register + data length extends beyond"
244
- " FRAM maximum register . Use ``write_wraparound`` to"
245
+ " FRAM maximum address . Use ``write_wraparound`` to"
245
246
" override this warning." )
246
247
with self ._i2c as i2c :
247
248
for i in range (0 , data_length ):
0 commit comments