@@ -163,14 +163,11 @@ def __init__(self, i2c, address=41, io_timeout_s=0):
163
163
# Initialize access to the sensor. This is based on the logic from:
164
164
# https://github.com/pololu/vl53l0x-arduino/blob/master/VL53L0X.cpp
165
165
# Set I2C standard mode.
166
- self ._write_u8 (0x88 , 0x00 )
167
- self ._write_u8 (0x80 , 0x01 )
168
- self ._write_u8 (0xFF , 0x01 )
169
- self ._write_u8 (0x00 , 0x00 )
166
+ for pair in ((0x88 , 0x00 ), (0x80 , 0x01 ), (0xFF , 0x01 ), (0x00 , 0x00 )):
167
+ self ._write_u8 (pair [0 ], pair [1 ])
170
168
self ._stop_variable = self ._read_u8 (0x91 )
171
- self ._write_u8 (0x00 , 0x01 )
172
- self ._write_u8 (0xFF , 0x00 )
173
- self ._write_u8 (0x80 , 0x00 )
169
+ for pair in ((0x00 , 0x01 ), (0xFF , 0x00 ), (0x80 , 0x00 )):
170
+ self ._write_u8 (pair [0 ], pair [1 ])
174
171
# disable SIGNAL_RATE_MSRC (bit 1) and SIGNAL_RATE_PRE_RANGE (bit 4)
175
172
# limit checks
176
173
config_control = self ._read_u8 (_MSRC_CONFIG_CONTROL ) | 0x12
@@ -189,11 +186,14 @@ def __init__(self, i2c, address=41, io_timeout_s=0):
189
186
with self ._device :
190
187
self ._device .write (ref_spad_map , end = 1 )
191
188
self ._device .readinto (ref_spad_map , start = 1 )
192
- self ._write_u8 (0xFF , 0x01 )
193
- self ._write_u8 (_DYNAMIC_SPAD_REF_EN_START_OFFSET , 0x00 )
194
- self ._write_u8 (_DYNAMIC_SPAD_NUM_REQUESTED_REF_SPAD , 0x2C )
195
- self ._write_u8 (0xFF , 0x00 )
196
- self ._write_u8 (_GLOBAL_CONFIG_REF_EN_START_SELECT , 0xB4 )
189
+
190
+ for pair in ((0xFF , 0x01 ),
191
+ (_DYNAMIC_SPAD_REF_EN_START_OFFSET , 0x00 ),
192
+ (_DYNAMIC_SPAD_NUM_REQUESTED_REF_SPAD , 0x2C ),
193
+ (0xFF , 0x00 ),
194
+ (_GLOBAL_CONFIG_REF_EN_START_SELECT , 0xB4 )):
195
+ self ._write_u8 (pair [0 ], pair [1 ])
196
+
197
197
first_spad_to_enable = 12 if spad_is_aperture else 0
198
198
spads_enabled = 0
199
199
for i in range (48 ):
@@ -206,86 +206,28 @@ def __init__(self, i2c, address=41, io_timeout_s=0):
206
206
spads_enabled += 1
207
207
with self ._device :
208
208
self ._device .write (ref_spad_map )
209
- self ._write_u8 (0xFF , 0x01 )
210
- self ._write_u8 (0x00 , 0x00 )
211
- self ._write_u8 (0xFF , 0x00 )
212
- self ._write_u8 (0x09 , 0x00 )
213
- self ._write_u8 (0x10 , 0x00 )
214
- self ._write_u8 (0x11 , 0x00 )
215
- self ._write_u8 (0x24 , 0x01 )
216
- self ._write_u8 (0x25 , 0xFF )
217
- self ._write_u8 (0x75 , 0x00 )
218
- self ._write_u8 (0xFF , 0x01 )
219
- self ._write_u8 (0x4E , 0x2C )
220
- self ._write_u8 (0x48 , 0x00 )
221
- self ._write_u8 (0x30 , 0x20 )
222
- self ._write_u8 (0xFF , 0x00 )
223
- self ._write_u8 (0x30 , 0x09 )
224
- self ._write_u8 (0x54 , 0x00 )
225
- self ._write_u8 (0x31 , 0x04 )
226
- self ._write_u8 (0x32 , 0x03 )
227
- self ._write_u8 (0x40 , 0x83 )
228
- self ._write_u8 (0x46 , 0x25 )
229
- self ._write_u8 (0x60 , 0x00 )
230
- self ._write_u8 (0x27 , 0x00 )
231
- self ._write_u8 (0x50 , 0x06 )
232
- self ._write_u8 (0x51 , 0x00 )
233
- self ._write_u8 (0x52 , 0x96 )
234
- self ._write_u8 (0x56 , 0x08 )
235
- self ._write_u8 (0x57 , 0x30 )
236
- self ._write_u8 (0x61 , 0x00 )
237
- self ._write_u8 (0x62 , 0x00 )
238
- self ._write_u8 (0x64 , 0x00 )
239
- self ._write_u8 (0x65 , 0x00 )
240
- self ._write_u8 (0x66 , 0xA0 )
241
- self ._write_u8 (0xFF , 0x01 )
242
- self ._write_u8 (0x22 , 0x32 )
243
- self ._write_u8 (0x47 , 0x14 )
244
- self ._write_u8 (0x49 , 0xFF )
245
- self ._write_u8 (0x4A , 0x00 )
246
- self ._write_u8 (0xFF , 0x00 )
247
- self ._write_u8 (0x7A , 0x0A )
248
- self ._write_u8 (0x7B , 0x00 )
249
- self ._write_u8 (0x78 , 0x21 )
250
- self ._write_u8 (0xFF , 0x01 )
251
- self ._write_u8 (0x23 , 0x34 )
252
- self ._write_u8 (0x42 , 0x00 )
253
- self ._write_u8 (0x44 , 0xFF )
254
- self ._write_u8 (0x45 , 0x26 )
255
- self ._write_u8 (0x46 , 0x05 )
256
- self ._write_u8 (0x40 , 0x40 )
257
- self ._write_u8 (0x0E , 0x06 )
258
- self ._write_u8 (0x20 , 0x1A )
259
- self ._write_u8 (0x43 , 0x40 )
260
- self ._write_u8 (0xFF , 0x00 )
261
- self ._write_u8 (0x34 , 0x03 )
262
- self ._write_u8 (0x35 , 0x44 )
263
- self ._write_u8 (0xFF , 0x01 )
264
- self ._write_u8 (0x31 , 0x04 )
265
- self ._write_u8 (0x4B , 0x09 )
266
- self ._write_u8 (0x4C , 0x05 )
267
- self ._write_u8 (0x4D , 0x04 )
268
- self ._write_u8 (0xFF , 0x00 )
269
- self ._write_u8 (0x44 , 0x00 )
270
- self ._write_u8 (0x45 , 0x20 )
271
- self ._write_u8 (0x47 , 0x08 )
272
- self ._write_u8 (0x48 , 0x28 )
273
- self ._write_u8 (0x67 , 0x00 )
274
- self ._write_u8 (0x70 , 0x04 )
275
- self ._write_u8 (0x71 , 0x01 )
276
- self ._write_u8 (0x72 , 0xFE )
277
- self ._write_u8 (0x76 , 0x00 )
278
- self ._write_u8 (0x77 , 0x00 )
279
- self ._write_u8 (0xFF , 0x01 )
280
- self ._write_u8 (0x0D , 0x01 )
281
- self ._write_u8 (0xFF , 0x00 )
282
- self ._write_u8 (0x80 , 0x01 )
283
- self ._write_u8 (0x01 , 0xF8 )
284
- self ._write_u8 (0xFF , 0x01 )
285
- self ._write_u8 (0x8E , 0x01 )
286
- self ._write_u8 (0x00 , 0x01 )
287
- self ._write_u8 (0xFF , 0x00 )
288
- self ._write_u8 (0x80 , 0x00 )
209
+ for pair in ((0xFF , 0x01 ), (0x00 , 0x00 ), (0xFF , 0x00 ), (0x09 , 0x00 ),
210
+ (0x10 , 0x00 ), (0x11 , 0x00 ), (0x24 , 0x01 ), (0x25 , 0xFF ),
211
+ (0x75 , 0x00 ), (0xFF , 0x01 ), (0x4E , 0x2C ), (0x48 , 0x00 ),
212
+ (0x30 , 0x20 ), (0xFF , 0x00 ), (0x30 , 0x09 ), (0x54 , 0x00 ),
213
+ (0x31 , 0x04 ), (0x32 , 0x03 ), (0x40 , 0x83 ), (0x46 , 0x25 ),
214
+ (0x60 , 0x00 ), (0x27 , 0x00 ), (0x50 , 0x06 ), (0x51 , 0x00 ),
215
+ (0x52 , 0x96 ), (0x56 , 0x08 ), (0x57 , 0x30 ), (0x61 , 0x00 ),
216
+ (0x62 , 0x00 ), (0x64 , 0x00 ), (0x65 , 0x00 ), (0x66 , 0xA0 ),
217
+ (0xFF , 0x01 ), (0x22 , 0x32 ), (0x47 , 0x14 ), (0x49 , 0xFF ),
218
+ (0x4A , 0x00 ), (0xFF , 0x00 ), (0x7A , 0x0A ), (0x7B , 0x00 ),
219
+ (0x78 , 0x21 ), (0xFF , 0x01 ), (0x23 , 0x34 ), (0x42 , 0x00 ),
220
+ (0x44 , 0xFF ), (0x45 , 0x26 ), (0x46 , 0x05 ), (0x40 , 0x40 ),
221
+ (0x0E , 0x06 ), (0x20 , 0x1A ), (0x43 , 0x40 ), (0xFF , 0x00 ),
222
+ (0x34 , 0x03 ), (0x35 , 0x44 ), (0xFF , 0x01 ), (0x31 , 0x04 ),
223
+ (0x4B , 0x09 ), (0x4C , 0x05 ), (0x4D , 0x04 ), (0xFF , 0x00 ),
224
+ (0x44 , 0x00 ), (0x45 , 0x20 ), (0x47 , 0x08 ), (0x48 , 0x28 ),
225
+ (0x67 , 0x00 ), (0x70 , 0x04 ), (0x71 , 0x01 ), (0x72 , 0xFE ),
226
+ (0x76 , 0x00 ), (0x77 , 0x00 ), (0xFF , 0x01 ), (0x0D , 0x01 ),
227
+ (0xFF , 0x00 ), (0x80 , 0x01 ), (0x01 , 0xF8 ), (0xFF , 0x01 ),
228
+ (0x8E , 0x01 ), (0x00 , 0x01 ), (0xFF , 0x00 ), (0x80 , 0x00 )):
229
+ self ._write_u8 (pair [0 ], pair [1 ])
230
+
289
231
self ._write_u8 (_SYSTEM_INTERRUPT_CONFIG_GPIO , 0x04 )
290
232
gpio_hv_mux_active_high = self ._read_u8 (_GPIO_HV_MUX_ACTIVE_HIGH )
291
233
self ._write_u8 (_GPIO_HV_MUX_ACTIVE_HIGH ,
@@ -337,16 +279,12 @@ def _get_spad_info(self):
337
279
# Get reference SPAD count and type, returned as a 2-tuple of
338
280
# count and boolean is_aperture. Based on code from:
339
281
# https://github.com/pololu/vl53l0x-arduino/blob/master/VL53L0X.cpp
340
- self ._write_u8 (0x80 , 0x01 )
341
- self ._write_u8 (0xFF , 0x01 )
342
- self ._write_u8 (0x00 , 0x00 )
343
- self ._write_u8 (0xFF , 0x06 )
282
+ for pair in ((0x80 , 0x01 ), (0xFF , 0x01 ), (0x00 , 0x00 ), (0xFF , 0x06 )):
283
+ self ._write_u8 (pair [0 ], pair [1 ])
344
284
self ._write_u8 (0x83 , self ._read_u8 (0x83 ) | 0x04 )
345
- self ._write_u8 (0xFF , 0x07 )
346
- self ._write_u8 (0x81 , 0x01 )
347
- self ._write_u8 (0x80 , 0x01 )
348
- self ._write_u8 (0x94 , 0x6b )
349
- self ._write_u8 (0x83 , 0x00 )
285
+ for pair in ((0xFF , 0x07 ), (0x81 , 0x01 ), (0x80 , 0x01 ),
286
+ (0x94 , 0x6b ), (0x83 , 0x00 )):
287
+ self ._write_u8 (pair [0 ], pair [1 ])
350
288
start = time .monotonic ()
351
289
while self ._read_u8 (0x83 ) == 0x00 :
352
290
if self .io_timeout_s > 0 and \
@@ -356,13 +294,11 @@ def _get_spad_info(self):
356
294
tmp = self ._read_u8 (0x92 )
357
295
count = tmp & 0x7F
358
296
is_aperture = ((tmp >> 7 ) & 0x01 ) == 1
359
- self . _write_u8 ( 0x81 , 0x00 )
360
- self ._write_u8 (0xFF , 0x06 )
297
+ for pair in (( 0x81 , 0x00 ), ( 0xFF , 0x06 )):
298
+ self ._write_u8 (pair [ 0 ], pair [ 1 ] )
361
299
self ._write_u8 (0x83 , self ._read_u8 (0x83 ) & ~ 0x04 )
362
- self ._write_u8 (0xFF , 0x01 )
363
- self ._write_u8 (0x00 , 0x01 )
364
- self ._write_u8 (0xFF , 0x00 )
365
- self ._write_u8 (0x80 , 0x00 )
300
+ for pair in ((0xFF , 0x01 ), (0x00 , 0x01 ), (0xFF , 0x00 ), (0x80 , 0x00 )):
301
+ self ._write_u8 (pair [0 ], pair [1 ])
366
302
return (count , is_aperture )
367
303
368
304
def _perform_single_ref_calibration (self , vhv_init_byte ):
@@ -498,14 +434,10 @@ def range(self):
498
434
# Adapted from readRangeSingleMillimeters &
499
435
# readRangeContinuousMillimeters in pololu code at:
500
436
# https://github.com/pololu/vl53l0x-arduino/blob/master/VL53L0X.cpp
501
- self ._write_u8 (0x80 , 0x01 )
502
- self ._write_u8 (0xFF , 0x01 )
503
- self ._write_u8 (0x00 , 0x00 )
504
- self ._write_u8 (0x91 , self ._stop_variable )
505
- self ._write_u8 (0x00 , 0x01 )
506
- self ._write_u8 (0xFF , 0x00 )
507
- self ._write_u8 (0x80 , 0x00 )
508
- self ._write_u8 (_SYSRANGE_START , 0x01 )
437
+ for pair in ((0x80 , 0x01 ), (0xFF , 0x01 ), (0x00 , 0x00 ),
438
+ (0x91 , self ._stop_variable ), (0x00 , 0x01 ), (0xFF , 0x00 ),
439
+ (0x80 , 0x00 ), (_SYSRANGE_START , 0x01 )):
440
+ self ._write_u8 (pair [0 ], pair [1 ])
509
441
start = time .monotonic ()
510
442
while (self ._read_u8 (_SYSRANGE_START ) & 0x01 ) > 0 :
511
443
if self .io_timeout_s > 0 and \
0 commit comments