1 /*
2 * Copyright (c) 2017, STMicroelectronics - All Rights Reserved
3 *
4 * This file is part of VL53L1 Core and is dual licensed,
5 * either 'STMicroelectronics
6 * Proprietary license'
7 * or 'BSD 3-clause "New" or "Revised" License' , at your option.
8 *
9 ********************************************************************************
10 *
11 * 'STMicroelectronics Proprietary license'
12 *
13 ********************************************************************************
14 *
15 * License terms: STMicroelectronics Proprietary in accordance with licensing
16 * terms at www.st.com/sla0081
17 *
18 * STMicroelectronics confidential
19 * Reproduction and Communication of this document is strictly prohibited unless
20 * specifically authorized in writing by STMicroelectronics.
21 *
22 *
23 ********************************************************************************
24 *
25 * Alternatively, VL53L1 Core may be distributed under the terms of
26 * 'BSD 3-clause "New" or "Revised" License', in which case the following
27 * provisions apply instead of the ones mentioned above :
28 *
29 ********************************************************************************
30 *
31 * License terms: BSD 3-clause "New" or "Revised" License.
32 *
33 * Redistribution and use in source and binary forms, with or without
34 * modification, are permitted provided that the following conditions are met:
35 *
36 * 1. Redistributions of source code must retain the above copyright notice, this
37 * list of conditions and the following disclaimer.
38 *
39 * 2. Redistributions in binary form must reproduce the above copyright notice,
40 * this list of conditions and the following disclaimer in the documentation
41 * and/or other materials provided with the distribution.
42 *
43 * 3. Neither the name of the copyright holder nor the names of its contributors
44 * may be used to endorse or promote products derived from this software
45 * without specific prior written permission.
46 *
47 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
48 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
49 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
50 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
51 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
52 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
53 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
54 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
55 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
56 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
57 *
58 *
59 ********************************************************************************
60 *
61 */
62 
63 /**
64  * @file   vl53l1_register_structs.h
65  * @brief  VL53L1 Register Structure definitions
66  */
67 
68 #ifndef _VL53L1_REGISTER_STRUCTS_H_
69 #define _VL53L1_REGISTER_STRUCTS_H_
70 
71 #include "vl53l1_types.h"
72 #include "vl53l1_register_map.h"
73 
74 #define VL53L1_STATIC_NVM_MANAGED_I2C_INDEX               VL53L1_I2C_SLAVE__DEVICE_ADDRESS
75 #define VL53L1_CUSTOMER_NVM_MANAGED_I2C_INDEX             VL53L1_GLOBAL_CONFIG__SPAD_ENABLES_REF_0
76 #define VL53L1_STATIC_CONFIG_I2C_INDEX                    VL53L1_DSS_CONFIG__TARGET_TOTAL_RATE_MCPS
77 #define VL53L1_GENERAL_CONFIG_I2C_INDEX                   VL53L1_GPH_CONFIG__STREAM_COUNT_UPDATE_VALUE
78 #define VL53L1_TIMING_CONFIG_I2C_INDEX                    VL53L1_MM_CONFIG__TIMEOUT_MACROP_A_HI
79 #define VL53L1_DYNAMIC_CONFIG_I2C_INDEX                   VL53L1_SYSTEM__GROUPED_PARAMETER_HOLD_0
80 #define VL53L1_SYSTEM_CONTROL_I2C_INDEX                   VL53L1_POWER_MANAGEMENT__GO1_POWER_FORCE
81 #define VL53L1_SYSTEM_RESULTS_I2C_INDEX                   VL53L1_RESULT__INTERRUPT_STATUS
82 #define VL53L1_CORE_RESULTS_I2C_INDEX                     VL53L1_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD0
83 #define VL53L1_DEBUG_RESULTS_I2C_INDEX                    VL53L1_PHASECAL_RESULT__REFERENCE_PHASE
84 #define VL53L1_NVM_COPY_DATA_I2C_INDEX                    VL53L1_IDENTIFICATION__MODEL_ID
85 #define VL53L1_PREV_SHADOW_SYSTEM_RESULTS_I2C_INDEX       VL53L1_PREV_SHADOW_RESULT__INTERRUPT_STATUS
86 #define VL53L1_PREV_SHADOW_CORE_RESULTS_I2C_INDEX         VL53L1_PREV_SHADOW_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD0
87 #define VL53L1_PATCH_DEBUG_I2C_INDEX                      VL53L1_RESULT__DEBUG_STATUS
88 #define VL53L1_GPH_GENERAL_CONFIG_I2C_INDEX               VL53L1_GPH__SYSTEM__THRESH_RATE_HIGH
89 #define VL53L1_GPH_STATIC_CONFIG_I2C_INDEX                VL53L1_GPH__DSS_CONFIG__ROI_MODE_CONTROL
90 #define VL53L1_GPH_TIMING_CONFIG_I2C_INDEX                VL53L1_GPH__MM_CONFIG__TIMEOUT_MACROP_A_HI
91 #define VL53L1_FW_INTERNAL_I2C_INDEX                      VL53L1_FIRMWARE__INTERNAL_STREAM_COUNT_DIV
92 #define VL53L1_PATCH_RESULTS_I2C_INDEX                    VL53L1_DSS_CALC__ROI_CTRL
93 #define VL53L1_SHADOW_SYSTEM_RESULTS_I2C_INDEX            VL53L1_SHADOW_PHASECAL_RESULT__VCSEL_START
94 #define VL53L1_SHADOW_CORE_RESULTS_I2C_INDEX              VL53L1_SHADOW_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD0
95 
96 #define VL53L1_STATIC_NVM_MANAGED_I2C_SIZE_BYTES           11
97 #define VL53L1_CUSTOMER_NVM_MANAGED_I2C_SIZE_BYTES         23
98 #define VL53L1_STATIC_CONFIG_I2C_SIZE_BYTES                32
99 #define VL53L1_GENERAL_CONFIG_I2C_SIZE_BYTES               22
100 #define VL53L1_TIMING_CONFIG_I2C_SIZE_BYTES                23
101 #define VL53L1_DYNAMIC_CONFIG_I2C_SIZE_BYTES               18
102 #define VL53L1_SYSTEM_CONTROL_I2C_SIZE_BYTES                5
103 #define VL53L1_SYSTEM_RESULTS_I2C_SIZE_BYTES               44
104 #define VL53L1_CORE_RESULTS_I2C_SIZE_BYTES                 33
105 #define VL53L1_DEBUG_RESULTS_I2C_SIZE_BYTES                56
106 #define VL53L1_NVM_COPY_DATA_I2C_SIZE_BYTES                49
107 #define VL53L1_PREV_SHADOW_SYSTEM_RESULTS_I2C_SIZE_BYTES   44
108 #define VL53L1_PREV_SHADOW_CORE_RESULTS_I2C_SIZE_BYTES     33
109 #define VL53L1_PATCH_DEBUG_I2C_SIZE_BYTES                   2
110 #define VL53L1_GPH_GENERAL_CONFIG_I2C_SIZE_BYTES            5
111 #define VL53L1_GPH_STATIC_CONFIG_I2C_SIZE_BYTES             6
112 #define VL53L1_GPH_TIMING_CONFIG_I2C_SIZE_BYTES            16
113 #define VL53L1_FW_INTERNAL_I2C_SIZE_BYTES                   2
114 #define VL53L1_PATCH_RESULTS_I2C_SIZE_BYTES                90
115 #define VL53L1_SHADOW_SYSTEM_RESULTS_I2C_SIZE_BYTES        82
116 #define VL53L1_SHADOW_CORE_RESULTS_I2C_SIZE_BYTES          33
117 
118 
119 /**
120  * @struct VL53L1_static_nvm_managed_t
121  *
122  * - registers    =     10
123  * - first_index  =      1 (0x0001)
124  * - last _index  =     11 (0x000B)
125  * - i2c_size     =     11
126  */
127 
128 typedef struct {
129 	uint8_t   i2c_slave__device_address;
130 /*!<
131 	info: \n
132 		- msb =  6
133 		- lsb =  0
134 		- i2c_size =  1
135 
136 	fields: \n
137 		- [6:0] = i2c_slave_device_address
138 */
139 	uint8_t   ana_config__vhv_ref_sel_vddpix;
140 /*!<
141 	info: \n
142 		- msb =  3
143 		- lsb =  0
144 		- i2c_size =  1
145 
146 	fields: \n
147 		- [3:0] = ref_sel_vddpix
148 */
149 	uint8_t   ana_config__vhv_ref_sel_vquench;
150 /*!<
151 	info: \n
152 		- msb =  6
153 		- lsb =  3
154 		- i2c_size =  1
155 
156 	fields: \n
157 		- [6:3] = ref_sel_vquench
158 */
159 	uint8_t   ana_config__reg_avdd1v2_sel;
160 /*!<
161 	info: \n
162 		- msb =  1
163 		- lsb =  0
164 		- i2c_size =  1
165 
166 	fields: \n
167 		- [1:0] = reg_avdd1v2_sel
168 */
169 	uint8_t   ana_config__fast_osc__trim;
170 /*!<
171 	info: \n
172 		- msb =  6
173 		- lsb =  0
174 		- i2c_size =  1
175 
176 	fields: \n
177 		- [6:0] = fast_osc_trim
178 */
179 	uint16_t  osc_measured__fast_osc__frequency;
180 /*!<
181 	info: \n
182 		- msb = 15
183 		- lsb =  0
184 		- i2c_size =  2
185 
186 	fields: \n
187 		- [15:0] = osc_frequency (fixed point 4.12)
188 */
189 	uint8_t   vhv_config__timeout_macrop_loop_bound;
190 /*!<
191 	info: \n
192 		- msb =  7
193 		- lsb =  0
194 		- i2c_size =  1
195 
196 	fields: \n
197 		- [1:0] = vhv_timeout__macrop
198 		- [7:2] = vhv_loop_bound
199 */
200 	uint8_t   vhv_config__count_thresh;
201 /*!<
202 	info: \n
203 		- msb =  7
204 		- lsb =  0
205 		- i2c_size =  1
206 
207 	fields: \n
208 		- [7:0] = vhv_count_thresh
209 */
210 	uint8_t   vhv_config__offset;
211 /*!<
212 	info: \n
213 		- msb =  5
214 		- lsb =  0
215 		- i2c_size =  1
216 
217 	fields: \n
218 		- [5:0] = vhv_step_val
219 */
220 	uint8_t   vhv_config__init;
221 /*!<
222 	info: \n
223 		- msb =  7
224 		- lsb =  0
225 		- i2c_size =  1
226 
227 	fields: \n
228 		-   [7] = vhv0_init_enable
229 		- [5:0] = vhv0_init_value
230 */
231 } VL53L1_static_nvm_managed_t;
232 
233 
234 /**
235  * @struct VL53L1_customer_nvm_managed_t
236  *
237  * - registers    =     16
238  * - first_index  =     13 (0x000D)
239  * - last _index  =     34 (0x0022)
240  * - i2c_size     =     23
241  */
242 
243 typedef struct {
244 	uint8_t   global_config__spad_enables_ref_0;
245 /*!<
246 	info: \n
247 		- msb =  7
248 		- lsb =  0
249 		- i2c_size =  1
250 
251 	fields: \n
252 		- [7:0] = spad_enables_ref_0
253 */
254 	uint8_t   global_config__spad_enables_ref_1;
255 /*!<
256 	info: \n
257 		- msb =  7
258 		- lsb =  0
259 		- i2c_size =  1
260 
261 	fields: \n
262 		- [7:0] = spad_enables_ref_1
263 */
264 	uint8_t   global_config__spad_enables_ref_2;
265 /*!<
266 	info: \n
267 		- msb =  7
268 		- lsb =  0
269 		- i2c_size =  1
270 
271 	fields: \n
272 		- [7:0] = spad_enables_ref_2
273 */
274 	uint8_t   global_config__spad_enables_ref_3;
275 /*!<
276 	info: \n
277 		- msb =  7
278 		- lsb =  0
279 		- i2c_size =  1
280 
281 	fields: \n
282 		- [7:0] = spad_enables_ref_3
283 */
284 	uint8_t   global_config__spad_enables_ref_4;
285 /*!<
286 	info: \n
287 		- msb =  7
288 		- lsb =  0
289 		- i2c_size =  1
290 
291 	fields: \n
292 		- [7:0] = spad_enables_ref_4
293 */
294 	uint8_t   global_config__spad_enables_ref_5;
295 /*!<
296 	info: \n
297 		- msb =  3
298 		- lsb =  0
299 		- i2c_size =  1
300 
301 	fields: \n
302 		- [3:0] = spad_enables_ref_5
303 */
304 	uint8_t   global_config__ref_en_start_select;
305 /*!<
306 	info: \n
307 		- msb =  7
308 		- lsb =  0
309 		- i2c_size =  1
310 
311 	fields: \n
312 		- [7:0] = ref_en_start_select
313 */
314 	uint8_t   ref_spad_man__num_requested_ref_spads;
315 /*!<
316 	info: \n
317 		- msb =  5
318 		- lsb =  0
319 		- i2c_size =  1
320 
321 	fields: \n
322 		- [5:0] = ref_spad_man__num_requested_ref_spad
323 */
324 	uint8_t   ref_spad_man__ref_location;
325 /*!<
326 	info: \n
327 		- msb =  1
328 		- lsb =  0
329 		- i2c_size =  1
330 
331 	fields: \n
332 		- [1:0] = ref_spad_man__ref_location
333 */
334 	uint16_t  algo__crosstalk_compensation_plane_offset_kcps;
335 /*!<
336 	info: \n
337 		- msb = 15
338 		- lsb =  0
339 		- i2c_size =  2
340 
341 	fields: \n
342 		- [15:0] = crosstalk_compensation_plane_offset_kcps (fixed point 7.9)
343 */
344 	int16_t   algo__crosstalk_compensation_x_plane_gradient_kcps;
345 /*!<
346 	info: \n
347 		- msb = 15
348 		- lsb =  0
349 		- i2c_size =  2
350 
351 	fields: \n
352 		- [15:0] = crosstalk_compensation_x_plane_gradient_kcps (fixed point 5.11)
353 */
354 	int16_t   algo__crosstalk_compensation_y_plane_gradient_kcps;
355 /*!<
356 	info: \n
357 		- msb = 15
358 		- lsb =  0
359 		- i2c_size =  2
360 
361 	fields: \n
362 		- [15:0] = crosstalk_compensation_y_plane_gradient_kcps (fixed point 5.11)
363 */
364 	uint16_t  ref_spad_char__total_rate_target_mcps;
365 /*!<
366 	info: \n
367 		- msb = 15
368 		- lsb =  0
369 		- i2c_size =  2
370 
371 	fields: \n
372 		- [15:0] = ref_spad_char__total_rate_target_mcps (fixed point 9.7)
373 */
374 	int16_t   algo__part_to_part_range_offset_mm;
375 /*!<
376 	info: \n
377 		- msb = 12
378 		- lsb =  0
379 		- i2c_size =  2
380 
381 	fields: \n
382 		- [12:0] = part_to_part_offset_mm (fixed point 11.2)
383 */
384 	int16_t   mm_config__inner_offset_mm;
385 /*!<
386 	info: \n
387 		- msb = 15
388 		- lsb =  0
389 		- i2c_size =  2
390 
391 	fields: \n
392 		- [15:0] = mm_config__inner_offset_mm
393 */
394 	int16_t   mm_config__outer_offset_mm;
395 /*!<
396 	info: \n
397 		- msb = 15
398 		- lsb =  0
399 		- i2c_size =  2
400 
401 	fields: \n
402 		- [15:0] = mm_config__outer_offset_mm
403 */
404 } VL53L1_customer_nvm_managed_t;
405 
406 
407 /**
408  * @struct VL53L1_static_config_t
409  *
410  * - registers    =     30
411  * - first_index  =     36 (0x0024)
412  * - last _index  =     67 (0x0043)
413  * - i2c_size     =     32
414  */
415 
416 typedef struct {
417 	uint16_t  dss_config__target_total_rate_mcps;
418 /*!<
419 	info: \n
420 		- msb = 15
421 		- lsb =  0
422 		- i2c_size =  2
423 
424 	fields: \n
425 		- [15:0] = dss_config__target_total_rate_mcps (fixed point 9.7)
426 */
427 	uint8_t   debug__ctrl;
428 /*!<
429 	info: \n
430 		- msb =  0
431 		- lsb =  0
432 		- i2c_size =  1
433 
434 	fields: \n
435 		-   [0] = enable_result_logging
436 */
437 	uint8_t   test_mode__ctrl;
438 /*!<
439 	info: \n
440 		- msb =  3
441 		- lsb =  0
442 		- i2c_size =  1
443 
444 	fields: \n
445 		- [3:0] = test_mode__cmd
446 */
447 	uint8_t   clk_gating__ctrl;
448 /*!<
449 	info: \n
450 		- msb =  3
451 		- lsb =  0
452 		- i2c_size =  1
453 
454 	fields: \n
455 		-   [0] = clk_gate_en__mcu_bank
456 		-   [1] = clk_gate_en__mcu_patch_ctrl
457 		-   [2] = clk_gate_en__mcu_timers
458 		-   [3] = clk_gate_en__mcu_mult_div
459 */
460 	uint8_t   nvm_bist__ctrl;
461 /*!<
462 	info: \n
463 		- msb =  4
464 		- lsb =  0
465 		- i2c_size =  1
466 
467 	fields: \n
468 		- [2:0] = nvm_bist__cmd
469 		-   [4] = nvm_bist__ctrl
470 */
471 	uint8_t   nvm_bist__num_nvm_words;
472 /*!<
473 	info: \n
474 		- msb =  6
475 		- lsb =  0
476 		- i2c_size =  1
477 
478 	fields: \n
479 		- [6:0] = nvm_bist__num_nvm_words
480 */
481 	uint8_t   nvm_bist__start_address;
482 /*!<
483 	info: \n
484 		- msb =  6
485 		- lsb =  0
486 		- i2c_size =  1
487 
488 	fields: \n
489 		- [6:0] = nvm_bist__start_address
490 */
491 	uint8_t   host_if__status;
492 /*!<
493 	info: \n
494 		- msb =  0
495 		- lsb =  0
496 		- i2c_size =  1
497 
498 	fields: \n
499 		-   [0] = host_interface
500 */
501 	uint8_t   pad_i2c_hv__config;
502 /*!<
503 	info: \n
504 		- msb =  7
505 		- lsb =  0
506 		- i2c_size =  1
507 
508 	fields: \n
509 		-   [0] = pad_scl_sda__vmodeint_hv
510 		-   [1] = i2c_pad__test_hv
511 		-   [2] = pad_scl__fpen_hv
512 		- [4:3] = pad_scl__progdel_hv
513 		-   [5] = pad_sda__fpen_hv
514 		- [7:6] = pad_sda__progdel_hv
515 */
516 	uint8_t   pad_i2c_hv__extsup_config;
517 /*!<
518 	info: \n
519 		- msb =  0
520 		- lsb =  0
521 		- i2c_size =  1
522 
523 	fields: \n
524 		-   [0] = pad_scl_sda__extsup_hv
525 */
526 	uint8_t   gpio_hv_pad__ctrl;
527 /*!<
528 	info: \n
529 		- msb =  1
530 		- lsb =  0
531 		- i2c_size =  1
532 
533 	fields: \n
534 		-   [0] = gpio__extsup_hv
535 		-   [1] = gpio__vmodeint_hv
536 */
537 	uint8_t   gpio_hv_mux__ctrl;
538 /*!<
539 	info: \n
540 		- msb =  4
541 		- lsb =  0
542 		- i2c_size =  1
543 
544 	fields: \n
545 		- [3:0] = gpio__mux_select_hv
546 		-   [4] = gpio__mux_active_high_hv
547 */
548 	uint8_t   gpio__tio_hv_status;
549 /*!<
550 	info: \n
551 		- msb =  1
552 		- lsb =  0
553 		- i2c_size =  1
554 
555 	fields: \n
556 		-   [0] = gpio__tio_hv
557 		-   [1] = fresh_out_of_reset
558 */
559 	uint8_t   gpio__fio_hv_status;
560 /*!<
561 	info: \n
562 		- msb =  1
563 		- lsb =  1
564 		- i2c_size =  1
565 
566 	fields: \n
567 		-   [1] = gpio__fio_hv
568 */
569 	uint8_t   ana_config__spad_sel_pswidth;
570 /*!<
571 	info: \n
572 		- msb =  2
573 		- lsb =  0
574 		- i2c_size =  1
575 
576 	fields: \n
577 		- [2:0] = spad_sel_pswidth
578 */
579 	uint8_t   ana_config__vcsel_pulse_width_offset;
580 /*!<
581 	info: \n
582 		- msb =  4
583 		- lsb =  0
584 		- i2c_size =  1
585 
586 	fields: \n
587 		- [4:0] = vcsel_pulse_width_offset (fixed point 1.4)
588 */
589 	uint8_t   ana_config__fast_osc__config_ctrl;
590 /*!<
591 	info: \n
592 		- msb =  0
593 		- lsb =  0
594 		- i2c_size =  1
595 
596 	fields: \n
597 		-   [0] = osc_config__latch_bypass
598 */
599 	uint8_t   sigma_estimator__effective_pulse_width_ns;
600 /*!<
601 	info: \n
602 		- msb =  7
603 		- lsb =  0
604 		- i2c_size =  1
605 
606 	fields: \n
607 		- [7:0] = sigma_estimator__eff_pulse_width
608 */
609 	uint8_t   sigma_estimator__effective_ambient_width_ns;
610 /*!<
611 	info: \n
612 		- msb =  7
613 		- lsb =  0
614 		- i2c_size =  1
615 
616 	fields: \n
617 		- [7:0] = sigma_estimator__eff_ambient_width
618 */
619 	uint8_t   sigma_estimator__sigma_ref_mm;
620 /*!<
621 	info: \n
622 		- msb =  7
623 		- lsb =  0
624 		- i2c_size =  1
625 
626 	fields: \n
627 		- [7:0] = sigma_estimator__sigma_ref
628 */
629 	uint8_t   algo__crosstalk_compensation_valid_height_mm;
630 /*!<
631 	info: \n
632 		- msb =  7
633 		- lsb =  0
634 		- i2c_size =  1
635 
636 	fields: \n
637 		- [7:0] = crosstalk_compensation_valid_height_mm
638 */
639 	uint8_t   spare_host_config__static_config_spare_0;
640 /*!<
641 	info: \n
642 		- msb =  7
643 		- lsb =  0
644 		- i2c_size =  1
645 
646 	fields: \n
647 		- [7:0] = static_config_spare_0
648 */
649 	uint8_t   spare_host_config__static_config_spare_1;
650 /*!<
651 	info: \n
652 		- msb =  7
653 		- lsb =  0
654 		- i2c_size =  1
655 
656 	fields: \n
657 		- [7:0] = static_config_spare_1
658 */
659 	uint16_t  algo__range_ignore_threshold_mcps;
660 /*!<
661 	info: \n
662 		- msb = 15
663 		- lsb =  0
664 		- i2c_size =  2
665 
666 	fields: \n
667 		- [15:0] = range_ignore_thresh_mcps (fixed point 3.13)
668 */
669 	uint8_t   algo__range_ignore_valid_height_mm;
670 /*!<
671 	info: \n
672 		- msb =  7
673 		- lsb =  0
674 		- i2c_size =  1
675 
676 	fields: \n
677 		- [7:0] = range_ignore_height_mm
678 */
679 	uint8_t   algo__range_min_clip;
680 /*!<
681 	info: \n
682 		- msb =  7
683 		- lsb =  0
684 		- i2c_size =  1
685 
686 	fields: \n
687 		-   [0] = algo__range_min_clip_enable
688 		- [7:1] = algo__range_min_clip_value_mm
689 */
690 	uint8_t   algo__consistency_check__tolerance;
691 /*!<
692 	info: \n
693 		- msb =  3
694 		- lsb =  0
695 		- i2c_size =  1
696 
697 	fields: \n
698 		- [3:0] = consistency_check_tolerance (fixed point 1.3)
699 */
700 	uint8_t   spare_host_config__static_config_spare_2;
701 /*!<
702 	info: \n
703 		- msb =  7
704 		- lsb =  0
705 		- i2c_size =  1
706 
707 	fields: \n
708 		- [7:0] = static_config_spare_2
709 */
710 	uint8_t   sd_config__reset_stages_msb;
711 /*!<
712 	info: \n
713 		- msb =  3
714 		- lsb =  0
715 		- i2c_size =  1
716 
717 	fields: \n
718 		- [3:0] = loop_init__clear_stage
719 */
720 	uint8_t   sd_config__reset_stages_lsb;
721 /*!<
722 	info: \n
723 		- msb =  7
724 		- lsb =  0
725 		- i2c_size =  1
726 
727 	fields: \n
728 		- [7:4] = accum_reset__clear_stage
729 		- [3:0] = count_reset__clear_stage
730 */
731 } VL53L1_static_config_t;
732 
733 
734 /**
735  * @struct VL53L1_general_config_t
736  *
737  * - registers    =     17
738  * - first_index  =     68 (0x0044)
739  * - last _index  =     89 (0x0059)
740  * - i2c_size     =     22
741  */
742 
743 typedef struct {
744 	uint8_t   gph_config__stream_count_update_value;
745 /*!<
746 	info: \n
747 		- msb =  7
748 		- lsb =  0
749 		- i2c_size =  1
750 
751 	fields: \n
752 		- [7:0] = stream_count_update_value
753 */
754 	uint8_t   global_config__stream_divider;
755 /*!<
756 	info: \n
757 		- msb =  7
758 		- lsb =  0
759 		- i2c_size =  1
760 
761 	fields: \n
762 		- [7:0] = stream_count_internal_div
763 */
764 	uint8_t   system__interrupt_config_gpio;
765 /*!<
766 	info: \n
767 		- msb =  7
768 		- lsb =  0
769 		- i2c_size =  1
770 
771 	fields: \n
772 		- [1:0] = int_mode_distance
773 		- [3:2] = int_mode_rate
774 		-   [4] = int_spare
775 		-   [5] = int_new_measure_ready
776 		-   [6] = int_no_target_en
777 		-   [7] = int_combined_mode
778 */
779 	uint8_t   cal_config__vcsel_start;
780 /*!<
781 	info: \n
782 		- msb =  6
783 		- lsb =  0
784 		- i2c_size =  1
785 
786 	fields: \n
787 		- [6:0] = cal_config__vcsel_start
788 */
789 	uint16_t  cal_config__repeat_rate;
790 /*!<
791 	info: \n
792 		- msb = 11
793 		- lsb =  0
794 		- i2c_size =  2
795 
796 	fields: \n
797 		- [11:0] = cal_config__repeat_rate
798 */
799 	uint8_t   global_config__vcsel_width;
800 /*!<
801 	info: \n
802 		- msb =  6
803 		- lsb =  0
804 		- i2c_size =  1
805 
806 	fields: \n
807 		- [6:0] = global_config__vcsel_width
808 */
809 	uint8_t   phasecal_config__timeout_macrop;
810 /*!<
811 	info: \n
812 		- msb =  7
813 		- lsb =  0
814 		- i2c_size =  1
815 
816 	fields: \n
817 		- [7:0] = phasecal_config__timeout_macrop
818 */
819 	uint8_t   phasecal_config__target;
820 /*!<
821 	info: \n
822 		- msb =  7
823 		- lsb =  0
824 		- i2c_size =  1
825 
826 	fields: \n
827 		- [7:0] = algo_phasecal_lim
828 */
829 	uint8_t   phasecal_config__override;
830 /*!<
831 	info: \n
832 		- msb =  0
833 		- lsb =  0
834 		- i2c_size =  1
835 
836 	fields: \n
837 		-   [0] = phasecal_config__override
838 */
839 	uint8_t   dss_config__roi_mode_control;
840 /*!<
841 	info: \n
842 		- msb =  2
843 		- lsb =  0
844 		- i2c_size =  1
845 
846 	fields: \n
847 		- [1:0] = dss_config__input_mode
848 		-   [2] = calculate_roi_enable
849 */
850 	uint16_t  system__thresh_rate_high;
851 /*!<
852 	info: \n
853 		- msb = 15
854 		- lsb =  0
855 		- i2c_size =  2
856 
857 	fields: \n
858 		- [15:0] = thresh_rate_high (fixed point 9.7)
859 */
860 	uint16_t  system__thresh_rate_low;
861 /*!<
862 	info: \n
863 		- msb = 15
864 		- lsb =  0
865 		- i2c_size =  2
866 
867 	fields: \n
868 		- [15:0] = thresh_rate_low (fixed point 9.7)
869 */
870 	uint16_t  dss_config__manual_effective_spads_select;
871 /*!<
872 	info: \n
873 		- msb = 15
874 		- lsb =  0
875 		- i2c_size =  2
876 
877 	fields: \n
878 		- [15:0] = dss_config__manual_effective_spads_select
879 */
880 	uint8_t   dss_config__manual_block_select;
881 /*!<
882 	info: \n
883 		- msb =  7
884 		- lsb =  0
885 		- i2c_size =  1
886 
887 	fields: \n
888 		- [7:0] = dss_config__manual_block_select
889 */
890 	uint8_t   dss_config__aperture_attenuation;
891 /*!<
892 	info: \n
893 		- msb =  7
894 		- lsb =  0
895 		- i2c_size =  1
896 
897 	fields: \n
898 		- [7:0] = dss_config__aperture_attenuation
899 */
900 	uint8_t   dss_config__max_spads_limit;
901 /*!<
902 	info: \n
903 		- msb =  7
904 		- lsb =  0
905 		- i2c_size =  1
906 
907 	fields: \n
908 		- [7:0] = dss_config__max_spads_limit
909 */
910 	uint8_t   dss_config__min_spads_limit;
911 /*!<
912 	info: \n
913 		- msb =  7
914 		- lsb =  0
915 		- i2c_size =  1
916 
917 	fields: \n
918 		- [7:0] = dss_config__min_spads_limit
919 */
920 } VL53L1_general_config_t;
921 
922 
923 /**
924  * @struct VL53L1_timing_config_t
925  *
926  * - registers    =     16
927  * - first_index  =     90 (0x005A)
928  * - last _index  =    112 (0x0070)
929  * - i2c_size     =     23
930  */
931 
932 typedef struct {
933 	uint8_t   mm_config__timeout_macrop_a_hi;
934 /*!<
935 	info: \n
936 		- msb =  3
937 		- lsb =  0
938 		- i2c_size =  1
939 
940 	fields: \n
941 		- [3:0] = mm_config__config_timeout_macrop_a_hi
942 */
943 	uint8_t   mm_config__timeout_macrop_a_lo;
944 /*!<
945 	info: \n
946 		- msb =  7
947 		- lsb =  0
948 		- i2c_size =  1
949 
950 	fields: \n
951 		- [7:0] = mm_config__config_timeout_macrop_a_lo
952 */
953 	uint8_t   mm_config__timeout_macrop_b_hi;
954 /*!<
955 	info: \n
956 		- msb =  3
957 		- lsb =  0
958 		- i2c_size =  1
959 
960 	fields: \n
961 		- [3:0] = mm_config__config_timeout_macrop_b_hi
962 */
963 	uint8_t   mm_config__timeout_macrop_b_lo;
964 /*!<
965 	info: \n
966 		- msb =  7
967 		- lsb =  0
968 		- i2c_size =  1
969 
970 	fields: \n
971 		- [7:0] = mm_config__config_timeout_macrop_b_lo
972 */
973 	uint8_t   range_config__timeout_macrop_a_hi;
974 /*!<
975 	info: \n
976 		- msb =  3
977 		- lsb =  0
978 		- i2c_size =  1
979 
980 	fields: \n
981 		- [3:0] = range_timeout_overall_periods_macrop_a_hi
982 */
983 	uint8_t   range_config__timeout_macrop_a_lo;
984 /*!<
985 	info: \n
986 		- msb =  7
987 		- lsb =  0
988 		- i2c_size =  1
989 
990 	fields: \n
991 		- [7:0] = range_timeout_overall_periods_macrop_a_lo
992 */
993 	uint8_t   range_config__vcsel_period_a;
994 /*!<
995 	info: \n
996 		- msb =  5
997 		- lsb =  0
998 		- i2c_size =  1
999 
1000 	fields: \n
1001 		- [5:0] = range_config__vcsel_period_a
1002 */
1003 	uint8_t   range_config__timeout_macrop_b_hi;
1004 /*!<
1005 	info: \n
1006 		- msb =  3
1007 		- lsb =  0
1008 		- i2c_size =  1
1009 
1010 	fields: \n
1011 		- [3:0] = range_timeout_overall_periods_macrop_b_hi
1012 */
1013 	uint8_t   range_config__timeout_macrop_b_lo;
1014 /*!<
1015 	info: \n
1016 		- msb =  7
1017 		- lsb =  0
1018 		- i2c_size =  1
1019 
1020 	fields: \n
1021 		- [7:0] = range_timeout_overall_periods_macrop_b_lo
1022 */
1023 	uint8_t   range_config__vcsel_period_b;
1024 /*!<
1025 	info: \n
1026 		- msb =  5
1027 		- lsb =  0
1028 		- i2c_size =  1
1029 
1030 	fields: \n
1031 		- [5:0] = range_config__vcsel_period_b
1032 */
1033 	uint16_t  range_config__sigma_thresh;
1034 /*!<
1035 	info: \n
1036 		- msb = 15
1037 		- lsb =  0
1038 		- i2c_size =  2
1039 
1040 	fields: \n
1041 		- [15:0] = range_config__sigma_thresh (fixed point 14.2)
1042 */
1043 	uint16_t  range_config__min_count_rate_rtn_limit_mcps;
1044 /*!<
1045 	info: \n
1046 		- msb = 15
1047 		- lsb =  0
1048 		- i2c_size =  2
1049 
1050 	fields: \n
1051 		- [15:0] = range_config__min_count_rate_rtn_limit_mcps (fixed point 9.7)
1052 */
1053 	uint8_t   range_config__valid_phase_low;
1054 /*!<
1055 	info: \n
1056 		- msb =  7
1057 		- lsb =  0
1058 		- i2c_size =  1
1059 
1060 	fields: \n
1061 		- [7:0] = range_config__valid_phase_low (fixed point 5.3)
1062 */
1063 	uint8_t   range_config__valid_phase_high;
1064 /*!<
1065 	info: \n
1066 		- msb =  7
1067 		- lsb =  0
1068 		- i2c_size =  1
1069 
1070 	fields: \n
1071 		- [7:0] = range_config__valid_phase_high (fixed point 5.3)
1072 */
1073 	uint32_t  system__intermeasurement_period;
1074 /*!<
1075 	info: \n
1076 		- msb = 31
1077 		- lsb =  0
1078 		- i2c_size =  4
1079 
1080 	fields: \n
1081 		- [31:0] = intermeasurement_period
1082 */
1083 	uint8_t   system__fractional_enable;
1084 /*!<
1085 	info: \n
1086 		- msb =  0
1087 		- lsb =  0
1088 		- i2c_size =  1
1089 
1090 	fields: \n
1091 		-   [0] = range_fractional_enable
1092 */
1093 } VL53L1_timing_config_t;
1094 
1095 
1096 /**
1097  * @struct VL53L1_dynamic_config_t
1098  *
1099  * - registers    =     16
1100  * - first_index  =    113 (0x0071)
1101  * - last _index  =    130 (0x0082)
1102  * - i2c_size     =     18
1103  */
1104 
1105 typedef struct {
1106 	uint8_t   system__grouped_parameter_hold_0;
1107 /*!<
1108 	info: \n
1109 		- msb =  1
1110 		- lsb =  0
1111 		- i2c_size =  1
1112 
1113 	fields: \n
1114 		-   [0] = grouped_parameter_hold
1115 		-   [1] = grouped_parameter_hold_id
1116 */
1117 	uint16_t  system__thresh_high;
1118 /*!<
1119 	info: \n
1120 		- msb = 15
1121 		- lsb =  0
1122 		- i2c_size =  2
1123 
1124 	fields: \n
1125 		- [15:0] = thresh_high
1126 */
1127 	uint16_t  system__thresh_low;
1128 /*!<
1129 	info: \n
1130 		- msb = 15
1131 		- lsb =  0
1132 		- i2c_size =  2
1133 
1134 	fields: \n
1135 		- [15:0] = thresh_low
1136 */
1137 	uint8_t   system__enable_xtalk_per_quadrant;
1138 /*!<
1139 	info: \n
1140 		- msb =  0
1141 		- lsb =  0
1142 		- i2c_size =  1
1143 
1144 	fields: \n
1145 		-   [0] = system__enable_xtalk_per_quadrant
1146 */
1147 	uint8_t   system__seed_config;
1148 /*!<
1149 	info: \n
1150 		- msb =  2
1151 		- lsb =  0
1152 		- i2c_size =  1
1153 
1154 	fields: \n
1155 		- [1:0] = system__seed_config
1156 		-   [2] = system__fw_pause_ctrl
1157 */
1158 	uint8_t   sd_config__woi_sd0;
1159 /*!<
1160 	info: \n
1161 		- msb =  7
1162 		- lsb =  0
1163 		- i2c_size =  1
1164 
1165 	fields: \n
1166 		- [7:0] = sd_config__woi_sd0
1167 */
1168 	uint8_t   sd_config__woi_sd1;
1169 /*!<
1170 	info: \n
1171 		- msb =  7
1172 		- lsb =  0
1173 		- i2c_size =  1
1174 
1175 	fields: \n
1176 		- [7:0] = sd_config__woi_sd1
1177 */
1178 	uint8_t   sd_config__initial_phase_sd0;
1179 /*!<
1180 	info: \n
1181 		- msb =  6
1182 		- lsb =  0
1183 		- i2c_size =  1
1184 
1185 	fields: \n
1186 		- [6:0] = sd_config__initial_phase_sd0
1187 */
1188 	uint8_t   sd_config__initial_phase_sd1;
1189 /*!<
1190 	info: \n
1191 		- msb =  6
1192 		- lsb =  0
1193 		- i2c_size =  1
1194 
1195 	fields: \n
1196 		- [6:0] = sd_config__initial_phase_sd1
1197 */
1198 	uint8_t   system__grouped_parameter_hold_1;
1199 /*!<
1200 	info: \n
1201 		- msb =  1
1202 		- lsb =  0
1203 		- i2c_size =  1
1204 
1205 	fields: \n
1206 		-   [0] = grouped_parameter_hold
1207 		-   [1] = grouped_parameter_hold_id
1208 */
1209 	uint8_t   sd_config__first_order_select;
1210 /*!<
1211 	info: \n
1212 		- msb =  1
1213 		- lsb =  0
1214 		- i2c_size =  1
1215 
1216 	fields: \n
1217 		-   [0] = sd_config__first_order_select_rtn
1218 		-   [1] = sd_config__first_order_select_ref
1219 */
1220 	uint8_t   sd_config__quantifier;
1221 /*!<
1222 	info: \n
1223 		- msb =  3
1224 		- lsb =  0
1225 		- i2c_size =  1
1226 
1227 	fields: \n
1228 		- [3:0] = sd_config__quantifier
1229 */
1230 	uint8_t   roi_config__user_roi_centre_spad;
1231 /*!<
1232 	info: \n
1233 		- msb =  7
1234 		- lsb =  0
1235 		- i2c_size =  1
1236 
1237 	fields: \n
1238 		- [7:0] = user_roi_center_spad
1239 */
1240 	uint8_t   roi_config__user_roi_requested_global_xy_size;
1241 /*!<
1242 	info: \n
1243 		- msb =  7
1244 		- lsb =  0
1245 		- i2c_size =  1
1246 
1247 	fields: \n
1248 		- [7:0] = roi_config__user_roi_requested_global_xy_size
1249 */
1250 	uint8_t   system__sequence_config;
1251 /*!<
1252 	info: \n
1253 		- msb =  7
1254 		- lsb =  0
1255 		- i2c_size =  1
1256 
1257 	fields: \n
1258 		-   [0] = sequence_vhv_en
1259 		-   [1] = sequence_phasecal_en
1260 		-   [2] = sequence_reference_phase_en
1261 		-   [3] = sequence_dss1_en
1262 		-   [4] = sequence_dss2_en
1263 		-   [5] = sequence_mm1_en
1264 		-   [6] = sequence_mm2_en
1265 		-   [7] = sequence_range_en
1266 */
1267 	uint8_t   system__grouped_parameter_hold;
1268 /*!<
1269 	info: \n
1270 		- msb =  1
1271 		- lsb =  0
1272 		- i2c_size =  1
1273 
1274 	fields: \n
1275 		-   [0] = grouped_parameter_hold
1276 		-   [1] = grouped_parameter_hold_id
1277 */
1278 } VL53L1_dynamic_config_t;
1279 
1280 
1281 /**
1282  * @struct VL53L1_system_control_t
1283  *
1284  * - registers    =      5
1285  * - first_index  =    131 (0x0083)
1286  * - last _index  =    135 (0x0087)
1287  * - i2c_size     =      5
1288  */
1289 
1290 typedef struct {
1291 	uint8_t   power_management__go1_power_force;
1292 /*!<
1293 	info: \n
1294 		- msb =  0
1295 		- lsb =  0
1296 		- i2c_size =  1
1297 
1298 	fields: \n
1299 		-   [0] = go1_dig_powerforce
1300 */
1301 	uint8_t   system__stream_count_ctrl;
1302 /*!<
1303 	info: \n
1304 		- msb =  0
1305 		- lsb =  0
1306 		- i2c_size =  1
1307 
1308 	fields: \n
1309 		-   [0] = retain_stream_count
1310 */
1311 	uint8_t   firmware__enable;
1312 /*!<
1313 	info: \n
1314 		- msb =  0
1315 		- lsb =  0
1316 		- i2c_size =  1
1317 
1318 	fields: \n
1319 		-   [0] = firmware_enable
1320 */
1321 	uint8_t   system__interrupt_clear;
1322 /*!<
1323 	info: \n
1324 		- msb =  1
1325 		- lsb =  0
1326 		- i2c_size =  1
1327 
1328 	fields: \n
1329 		-   [0] = sys_interrupt_clear_range
1330 		-   [1] = sys_interrupt_clear_error
1331 */
1332 	uint8_t   system__mode_start;
1333 /*!<
1334 	info: \n
1335 		- msb =  7
1336 		- lsb =  0
1337 		- i2c_size =  1
1338 
1339 	fields: \n
1340 		- [1:0] = scheduler_mode
1341 		- [3:2] = readout_mode
1342 		-   [4] = mode_range__single_shot
1343 		-   [5] = mode_range__back_to_back
1344 		-   [6] = mode_range__timed
1345 		-   [7] = mode_range__abort
1346 */
1347 } VL53L1_system_control_t;
1348 
1349 
1350 /**
1351  * @struct VL53L1_system_results_t
1352  *
1353  * - registers    =     25
1354  * - first_index  =    136 (0x0088)
1355  * - last _index  =    179 (0x00B3)
1356  * - i2c_size     =     44
1357  */
1358 
1359 typedef struct {
1360 	uint8_t   result__interrupt_status;
1361 /*!<
1362 	info: \n
1363 		- msb =  5
1364 		- lsb =  0
1365 		- i2c_size =  1
1366 
1367 	fields: \n
1368 		- [2:0] = int_status
1369 		- [4:3] = int_error_status
1370 		-   [5] = gph_id_gpio_status
1371 */
1372 	uint8_t   result__range_status;
1373 /*!<
1374 	info: \n
1375 		- msb =  7
1376 		- lsb =  0
1377 		- i2c_size =  1
1378 
1379 	fields: \n
1380 		- [4:0] = range_status
1381 		-   [5] = max_threshold_hit
1382 		-   [6] = min_threshold_hit
1383 		-   [7] = gph_id_range_status
1384 */
1385 	uint8_t   result__report_status;
1386 /*!<
1387 	info: \n
1388 		- msb =  3
1389 		- lsb =  0
1390 		- i2c_size =  1
1391 
1392 	fields: \n
1393 		- [3:0] = report_status
1394 */
1395 	uint8_t   result__stream_count;
1396 /*!<
1397 	info: \n
1398 		- msb =  7
1399 		- lsb =  0
1400 		- i2c_size =  1
1401 
1402 	fields: \n
1403 		- [7:0] = result__stream_count
1404 */
1405 	uint16_t  result__dss_actual_effective_spads_sd0;
1406 /*!<
1407 	info: \n
1408 		- msb = 15
1409 		- lsb =  0
1410 		- i2c_size =  2
1411 
1412 	fields: \n
1413 		- [15:0] = result__dss_actual_effective_spads_sd0 (fixed point 8.8)
1414 */
1415 	uint16_t  result__peak_signal_count_rate_mcps_sd0;
1416 /*!<
1417 	info: \n
1418 		- msb = 15
1419 		- lsb =  0
1420 		- i2c_size =  2
1421 
1422 	fields: \n
1423 		- [15:0] = result__peak_signal_count_rate_mcps_sd0 (fixed point 9.7)
1424 */
1425 	uint16_t  result__ambient_count_rate_mcps_sd0;
1426 /*!<
1427 	info: \n
1428 		- msb = 15
1429 		- lsb =  0
1430 		- i2c_size =  2
1431 
1432 	fields: \n
1433 		- [15:0] = result__ambient_count_rate_mcps_sd0 (fixed point 9.7)
1434 */
1435 	uint16_t  result__sigma_sd0;
1436 /*!<
1437 	info: \n
1438 		- msb = 15
1439 		- lsb =  0
1440 		- i2c_size =  2
1441 
1442 	fields: \n
1443 		- [15:0] = result__sigma_sd0 (fixed point 14.2)
1444 */
1445 	uint16_t  result__phase_sd0;
1446 /*!<
1447 	info: \n
1448 		- msb = 15
1449 		- lsb =  0
1450 		- i2c_size =  2
1451 
1452 	fields: \n
1453 		- [15:0] = result__phase_sd0 (fixed point 5.11)
1454 */
1455 	uint16_t  result__final_crosstalk_corrected_range_mm_sd0;
1456 /*!<
1457 	info: \n
1458 		- msb = 15
1459 		- lsb =  0
1460 		- i2c_size =  2
1461 
1462 	fields: \n
1463 		- [15:0] = result__final_crosstalk_corrected_range_mm_sd0
1464 */
1465 	uint16_t  result__peak_signal_count_rate_crosstalk_corrected_mcps_sd0;
1466 /*!<
1467 	info: \n
1468 		- msb = 15
1469 		- lsb =  0
1470 		- i2c_size =  2
1471 
1472 	fields: \n
1473 		- [15:0] = result__peak_signal_count_rate_crosstalk_corrected_mcps_sd0 (fixed point 9.7)
1474 */
1475 	uint16_t  result__mm_inner_actual_effective_spads_sd0;
1476 /*!<
1477 	info: \n
1478 		- msb = 15
1479 		- lsb =  0
1480 		- i2c_size =  2
1481 
1482 	fields: \n
1483 		- [15:0] = result__mm_inner_actual_effective_spads_sd0 (fixed point 8.8)
1484 */
1485 	uint16_t  result__mm_outer_actual_effective_spads_sd0;
1486 /*!<
1487 	info: \n
1488 		- msb = 15
1489 		- lsb =  0
1490 		- i2c_size =  2
1491 
1492 	fields: \n
1493 		- [15:0] = result__mm_outer_actual_effective_spads_sd0 (fixed point 8.8)
1494 */
1495 	uint16_t  result__avg_signal_count_rate_mcps_sd0;
1496 /*!<
1497 	info: \n
1498 		- msb = 15
1499 		- lsb =  0
1500 		- i2c_size =  2
1501 
1502 	fields: \n
1503 		- [15:0] = result__avg_signal_count_rate_mcps_sd0 (fixed point 9.7)
1504 */
1505 	uint16_t  result__dss_actual_effective_spads_sd1;
1506 /*!<
1507 	info: \n
1508 		- msb = 15
1509 		- lsb =  0
1510 		- i2c_size =  2
1511 
1512 	fields: \n
1513 		- [15:0] = result__dss_actual_effective_spads_sd1 (fixed point 8.8)
1514 */
1515 	uint16_t  result__peak_signal_count_rate_mcps_sd1;
1516 /*!<
1517 	info: \n
1518 		- msb = 15
1519 		- lsb =  0
1520 		- i2c_size =  2
1521 
1522 	fields: \n
1523 		- [15:0] = result__peak_signal_count_rate_mcps_sd1 (fixed point 9.7)
1524 */
1525 	uint16_t  result__ambient_count_rate_mcps_sd1;
1526 /*!<
1527 	info: \n
1528 		- msb = 15
1529 		- lsb =  0
1530 		- i2c_size =  2
1531 
1532 	fields: \n
1533 		- [15:0] = result__ambient_count_rate_mcps_sd1 (fixed point 9.7)
1534 */
1535 	uint16_t  result__sigma_sd1;
1536 /*!<
1537 	info: \n
1538 		- msb = 15
1539 		- lsb =  0
1540 		- i2c_size =  2
1541 
1542 	fields: \n
1543 		- [15:0] = result__sigma_sd1 (fixed point 14.2)
1544 */
1545 	uint16_t  result__phase_sd1;
1546 /*!<
1547 	info: \n
1548 		- msb = 15
1549 		- lsb =  0
1550 		- i2c_size =  2
1551 
1552 	fields: \n
1553 		- [15:0] = result__phase_sd1 (fixed point 5.11)
1554 */
1555 	uint16_t  result__final_crosstalk_corrected_range_mm_sd1;
1556 /*!<
1557 	info: \n
1558 		- msb = 15
1559 		- lsb =  0
1560 		- i2c_size =  2
1561 
1562 	fields: \n
1563 		- [15:0] = result__final_crosstalk_corrected_range_mm_sd1
1564 */
1565 	uint16_t  result__spare_0_sd1;
1566 /*!<
1567 	info: \n
1568 		- msb = 15
1569 		- lsb =  0
1570 		- i2c_size =  2
1571 
1572 	fields: \n
1573 		- [15:0] = result__spare_0_sd1
1574 */
1575 	uint16_t  result__spare_1_sd1;
1576 /*!<
1577 	info: \n
1578 		- msb = 15
1579 		- lsb =  0
1580 		- i2c_size =  2
1581 
1582 	fields: \n
1583 		- [15:0] = result__spare_1_sd1
1584 */
1585 	uint16_t  result__spare_2_sd1;
1586 /*!<
1587 	info: \n
1588 		- msb = 15
1589 		- lsb =  0
1590 		- i2c_size =  2
1591 
1592 	fields: \n
1593 		- [15:0] = result__spare_2_sd1
1594 */
1595 	uint8_t   result__spare_3_sd1;
1596 /*!<
1597 	info: \n
1598 		- msb =  7
1599 		- lsb =  0
1600 		- i2c_size =  1
1601 
1602 	fields: \n
1603 		- [7:0] = result__spare_3_sd1
1604 */
1605 	uint8_t   result__thresh_info;
1606 /*!<
1607 	info: \n
1608 		- msb =  7
1609 		- lsb =  0
1610 		- i2c_size =  1
1611 
1612 	fields: \n
1613 		- [3:0] = result__distance_int_info
1614 		- [7:4] = result__rate_int_info
1615 */
1616 } VL53L1_system_results_t;
1617 
1618 
1619 /**
1620  * @struct VL53L1_core_results_t
1621  *
1622  * - registers    =      9
1623  * - first_index  =    180 (0x00B4)
1624  * - last _index  =    212 (0x00D4)
1625  * - i2c_size     =     33
1626  */
1627 
1628 typedef struct {
1629 	uint32_t  result_core__ambient_window_events_sd0;
1630 /*!<
1631 	info: \n
1632 		- msb = 31
1633 		- lsb =  0
1634 		- i2c_size =  4
1635 
1636 	fields: \n
1637 		- [31:0] = result_core__ambient_window_events_sd0
1638 */
1639 	uint32_t  result_core__ranging_total_events_sd0;
1640 /*!<
1641 	info: \n
1642 		- msb = 31
1643 		- lsb =  0
1644 		- i2c_size =  4
1645 
1646 	fields: \n
1647 		- [31:0] = result_core__ranging_total_events_sd0
1648 */
1649 	int32_t   result_core__signal_total_events_sd0;
1650 /*!<
1651 	info: \n
1652 		- msb = 31
1653 		- lsb =  0
1654 		- i2c_size =  4
1655 
1656 	fields: \n
1657 		- [31:0] = result_core__signal_total_events_sd0
1658 */
1659 	uint32_t  result_core__total_periods_elapsed_sd0;
1660 /*!<
1661 	info: \n
1662 		- msb = 31
1663 		- lsb =  0
1664 		- i2c_size =  4
1665 
1666 	fields: \n
1667 		- [31:0] = result_core__total_periods_elapsed_sd0
1668 */
1669 	uint32_t  result_core__ambient_window_events_sd1;
1670 /*!<
1671 	info: \n
1672 		- msb = 31
1673 		- lsb =  0
1674 		- i2c_size =  4
1675 
1676 	fields: \n
1677 		- [31:0] = result_core__ambient_window_events_sd1
1678 */
1679 	uint32_t  result_core__ranging_total_events_sd1;
1680 /*!<
1681 	info: \n
1682 		- msb = 31
1683 		- lsb =  0
1684 		- i2c_size =  4
1685 
1686 	fields: \n
1687 		- [31:0] = result_core__ranging_total_events_sd1
1688 */
1689 	int32_t   result_core__signal_total_events_sd1;
1690 /*!<
1691 	info: \n
1692 		- msb = 31
1693 		- lsb =  0
1694 		- i2c_size =  4
1695 
1696 	fields: \n
1697 		- [31:0] = result_core__signal_total_events_sd1
1698 */
1699 	uint32_t  result_core__total_periods_elapsed_sd1;
1700 /*!<
1701 	info: \n
1702 		- msb = 31
1703 		- lsb =  0
1704 		- i2c_size =  4
1705 
1706 	fields: \n
1707 		- [31:0] = result_core__total_periods_elapsed_sd1
1708 */
1709 	uint8_t   result_core__spare_0;
1710 /*!<
1711 	info: \n
1712 		- msb =  7
1713 		- lsb =  0
1714 		- i2c_size =  1
1715 
1716 	fields: \n
1717 		- [7:0] = result_core__spare_0
1718 */
1719 } VL53L1_core_results_t;
1720 
1721 
1722 /**
1723  * @struct VL53L1_debug_results_t
1724  *
1725  * - registers    =     43
1726  * - first_index  =    214 (0x00D6)
1727  * - last _index  =    269 (0x010D)
1728  * - i2c_size     =     56
1729  */
1730 
1731 typedef struct {
1732 	uint16_t  phasecal_result__reference_phase;
1733 /*!<
1734 	info: \n
1735 		- msb = 15
1736 		- lsb =  0
1737 		- i2c_size =  2
1738 
1739 	fields: \n
1740 		- [15:0] = result_phasecal__reference_phase (fixed point 5.11)
1741 */
1742 	uint8_t   phasecal_result__vcsel_start;
1743 /*!<
1744 	info: \n
1745 		- msb =  6
1746 		- lsb =  0
1747 		- i2c_size =  1
1748 
1749 	fields: \n
1750 		- [6:0] = result_phasecal__vcsel_start
1751 */
1752 	uint8_t   ref_spad_char_result__num_actual_ref_spads;
1753 /*!<
1754 	info: \n
1755 		- msb =  5
1756 		- lsb =  0
1757 		- i2c_size =  1
1758 
1759 	fields: \n
1760 		- [5:0] = ref_spad_char_result__num_actual_ref_spads
1761 */
1762 	uint8_t   ref_spad_char_result__ref_location;
1763 /*!<
1764 	info: \n
1765 		- msb =  1
1766 		- lsb =  0
1767 		- i2c_size =  1
1768 
1769 	fields: \n
1770 		- [1:0] = ref_spad_char_result__ref_location
1771 */
1772 	uint8_t   vhv_result__coldboot_status;
1773 /*!<
1774 	info: \n
1775 		- msb =  0
1776 		- lsb =  0
1777 		- i2c_size =  1
1778 
1779 	fields: \n
1780 		-   [0] = vhv_result__coldboot_status
1781 */
1782 	uint8_t   vhv_result__search_result;
1783 /*!<
1784 	info: \n
1785 		- msb =  5
1786 		- lsb =  0
1787 		- i2c_size =  1
1788 
1789 	fields: \n
1790 		- [5:0] = cp_sel_result
1791 */
1792 	uint8_t   vhv_result__latest_setting;
1793 /*!<
1794 	info: \n
1795 		- msb =  5
1796 		- lsb =  0
1797 		- i2c_size =  1
1798 
1799 	fields: \n
1800 		- [5:0] = cp_sel_latest_setting
1801 */
1802 	uint16_t  result__osc_calibrate_val;
1803 /*!<
1804 	info: \n
1805 		- msb =  9
1806 		- lsb =  0
1807 		- i2c_size =  2
1808 
1809 	fields: \n
1810 		- [9:0] = osc_calibrate_val
1811 */
1812 	uint8_t   ana_config__powerdown_go1;
1813 /*!<
1814 	info: \n
1815 		- msb =  1
1816 		- lsb =  0
1817 		- i2c_size =  1
1818 
1819 	fields: \n
1820 		-   [0] = go2_ref_bg_disable_avdd
1821 		-   [1] = go2_regdvdd1v2_enable_avdd
1822 */
1823 	uint8_t   ana_config__ref_bg_ctrl;
1824 /*!<
1825 	info: \n
1826 		- msb =  1
1827 		- lsb =  0
1828 		- i2c_size =  1
1829 
1830 	fields: \n
1831 		-   [0] = go2_ref_overdrvbg_avdd
1832 		-   [1] = go2_ref_forcebgison_avdd
1833 */
1834 	uint8_t   ana_config__regdvdd1v2_ctrl;
1835 /*!<
1836 	info: \n
1837 		- msb =  3
1838 		- lsb =  0
1839 		- i2c_size =  1
1840 
1841 	fields: \n
1842 		-   [0] = go2_regdvdd1v2_sel_pulldown_avdd
1843 		-   [1] = go2_regdvdd1v2_sel_boost_avdd
1844 		- [3:2] = go2_regdvdd1v2_selv_avdd
1845 */
1846 	uint8_t   ana_config__osc_slow_ctrl;
1847 /*!<
1848 	info: \n
1849 		- msb =  2
1850 		- lsb =  0
1851 		- i2c_size =  1
1852 
1853 	fields: \n
1854 		-   [0] = osc_slow_en
1855 		-   [1] = osc_slow_op_en
1856 		-   [2] = osc_slow_freq_sel
1857 */
1858 	uint8_t   test_mode__status;
1859 /*!<
1860 	info: \n
1861 		- msb =  0
1862 		- lsb =  0
1863 		- i2c_size =  1
1864 
1865 	fields: \n
1866 		-   [0] = test_mode_status
1867 */
1868 	uint8_t   firmware__system_status;
1869 /*!<
1870 	info: \n
1871 		- msb =  1
1872 		- lsb =  0
1873 		- i2c_size =  1
1874 
1875 	fields: \n
1876 		-   [0] = firmware_bootup
1877 		-   [1] = firmware_first_range
1878 */
1879 	uint8_t   firmware__mode_status;
1880 /*!<
1881 	info: \n
1882 		- msb =  7
1883 		- lsb =  0
1884 		- i2c_size =  1
1885 
1886 	fields: \n
1887 		- [7:0] = firmware_mode_status
1888 */
1889 	uint8_t   firmware__secondary_mode_status;
1890 /*!<
1891 	info: \n
1892 		- msb =  7
1893 		- lsb =  0
1894 		- i2c_size =  1
1895 
1896 	fields: \n
1897 		- [7:0] = fw_secondary_mode_status
1898 */
1899 	uint16_t  firmware__cal_repeat_rate_counter;
1900 /*!<
1901 	info: \n
1902 		- msb = 11
1903 		- lsb =  0
1904 		- i2c_size =  2
1905 
1906 	fields: \n
1907 		- [11:0] = firmware_cal_repeat_rate
1908 */
1909 	uint16_t  gph__system__thresh_high;
1910 /*!<
1911 	info: \n
1912 		- msb = 15
1913 		- lsb =  0
1914 		- i2c_size =  2
1915 
1916 	fields: \n
1917 		- [15:0] = shadow_thresh_high
1918 */
1919 	uint16_t  gph__system__thresh_low;
1920 /*!<
1921 	info: \n
1922 		- msb = 15
1923 		- lsb =  0
1924 		- i2c_size =  2
1925 
1926 	fields: \n
1927 		- [15:0] = shadow_thresh_low
1928 */
1929 	uint8_t   gph__system__enable_xtalk_per_quadrant;
1930 /*!<
1931 	info: \n
1932 		- msb =  0
1933 		- lsb =  0
1934 		- i2c_size =  1
1935 
1936 	fields: \n
1937 		-   [0] = shadow__enable_xtalk_per_quadrant
1938 */
1939 	uint8_t   gph__spare_0;
1940 /*!<
1941 	info: \n
1942 		- msb =  2
1943 		- lsb =  0
1944 		- i2c_size =  1
1945 
1946 	fields: \n
1947 		-   [0] = fw_safe_to_disable
1948 		-   [1] = shadow__spare_0
1949 		-   [2] = shadow__spare_1
1950 */
1951 	uint8_t   gph__sd_config__woi_sd0;
1952 /*!<
1953 	info: \n
1954 		- msb =  7
1955 		- lsb =  0
1956 		- i2c_size =  1
1957 
1958 	fields: \n
1959 		- [7:0] = shadow_sd_config__woi_sd0
1960 */
1961 	uint8_t   gph__sd_config__woi_sd1;
1962 /*!<
1963 	info: \n
1964 		- msb =  7
1965 		- lsb =  0
1966 		- i2c_size =  1
1967 
1968 	fields: \n
1969 		- [7:0] = shadow_sd_config__woi_sd1
1970 */
1971 	uint8_t   gph__sd_config__initial_phase_sd0;
1972 /*!<
1973 	info: \n
1974 		- msb =  6
1975 		- lsb =  0
1976 		- i2c_size =  1
1977 
1978 	fields: \n
1979 		- [6:0] = shadow_sd_config__initial_phase_sd0
1980 */
1981 	uint8_t   gph__sd_config__initial_phase_sd1;
1982 /*!<
1983 	info: \n
1984 		- msb =  6
1985 		- lsb =  0
1986 		- i2c_size =  1
1987 
1988 	fields: \n
1989 		- [6:0] = shadow_sd_config__initial_phase_sd1
1990 */
1991 	uint8_t   gph__sd_config__first_order_select;
1992 /*!<
1993 	info: \n
1994 		- msb =  1
1995 		- lsb =  0
1996 		- i2c_size =  1
1997 
1998 	fields: \n
1999 		-   [0] = shadow_sd_config__first_order_select_rtn
2000 		-   [1] = shadow_sd_config__first_order_select_ref
2001 */
2002 	uint8_t   gph__sd_config__quantifier;
2003 /*!<
2004 	info: \n
2005 		- msb =  3
2006 		- lsb =  0
2007 		- i2c_size =  1
2008 
2009 	fields: \n
2010 		- [3:0] = shadow_sd_config__quantifier
2011 */
2012 	uint8_t   gph__roi_config__user_roi_centre_spad;
2013 /*!<
2014 	info: \n
2015 		- msb =  7
2016 		- lsb =  0
2017 		- i2c_size =  1
2018 
2019 	fields: \n
2020 		- [7:0] = shadow_user_roi_center_spad_q0
2021 */
2022 	uint8_t   gph__roi_config__user_roi_requested_global_xy_size;
2023 /*!<
2024 	info: \n
2025 		- msb =  7
2026 		- lsb =  0
2027 		- i2c_size =  1
2028 
2029 	fields: \n
2030 		- [7:0] = shadow_user_roi_requested_global_xy_size
2031 */
2032 	uint8_t   gph__system__sequence_config;
2033 /*!<
2034 	info: \n
2035 		- msb =  7
2036 		- lsb =  0
2037 		- i2c_size =  1
2038 
2039 	fields: \n
2040 		-   [0] = shadow_sequence_vhv_en
2041 		-   [1] = shadow_sequence_phasecal_en
2042 		-   [2] = shadow_sequence_reference_phase_en
2043 		-   [3] = shadow_sequence_dss1_en
2044 		-   [4] = shadow_sequence_dss2_en
2045 		-   [5] = shadow_sequence_mm1_en
2046 		-   [6] = shadow_sequence_mm2_en
2047 		-   [7] = shadow_sequence_range_en
2048 */
2049 	uint8_t   gph__gph_id;
2050 /*!<
2051 	info: \n
2052 		- msb =  0
2053 		- lsb =  0
2054 		- i2c_size =  1
2055 
2056 	fields: \n
2057 		-   [0] = shadow_gph_id
2058 */
2059 	uint8_t   system__interrupt_set;
2060 /*!<
2061 	info: \n
2062 		- msb =  1
2063 		- lsb =  0
2064 		- i2c_size =  1
2065 
2066 	fields: \n
2067 		-   [0] = sys_interrupt_set_range
2068 		-   [1] = sys_interrupt_set_error
2069 */
2070 	uint8_t   interrupt_manager__enables;
2071 /*!<
2072 	info: \n
2073 		- msb =  4
2074 		- lsb =  0
2075 		- i2c_size =  1
2076 
2077 	fields: \n
2078 		-   [0] = interrupt_enable__single_shot
2079 		-   [1] = interrupt_enable__back_to_back
2080 		-   [2] = interrupt_enable__timed
2081 		-   [3] = interrupt_enable__abort
2082 		-   [4] = interrupt_enable__test
2083 */
2084 	uint8_t   interrupt_manager__clear;
2085 /*!<
2086 	info: \n
2087 		- msb =  4
2088 		- lsb =  0
2089 		- i2c_size =  1
2090 
2091 	fields: \n
2092 		-   [0] = interrupt_clear__single_shot
2093 		-   [1] = interrupt_clear__back_to_back
2094 		-   [2] = interrupt_clear__timed
2095 		-   [3] = interrupt_clear__abort
2096 		-   [4] = interrupt_clear__test
2097 */
2098 	uint8_t   interrupt_manager__status;
2099 /*!<
2100 	info: \n
2101 		- msb =  4
2102 		- lsb =  0
2103 		- i2c_size =  1
2104 
2105 	fields: \n
2106 		-   [0] = interrupt_status__single_shot
2107 		-   [1] = interrupt_status__back_to_back
2108 		-   [2] = interrupt_status__timed
2109 		-   [3] = interrupt_status__abort
2110 		-   [4] = interrupt_status__test
2111 */
2112 	uint8_t   mcu_to_host_bank__wr_access_en;
2113 /*!<
2114 	info: \n
2115 		- msb =  0
2116 		- lsb =  0
2117 		- i2c_size =  1
2118 
2119 	fields: \n
2120 		-   [0] = mcu_to_host_bank_wr_en
2121 */
2122 	uint8_t   power_management__go1_reset_status;
2123 /*!<
2124 	info: \n
2125 		- msb =  0
2126 		- lsb =  0
2127 		- i2c_size =  1
2128 
2129 	fields: \n
2130 		-   [0] = go1_status
2131 */
2132 	uint8_t   pad_startup_mode__value_ro;
2133 /*!<
2134 	info: \n
2135 		- msb =  1
2136 		- lsb =  0
2137 		- i2c_size =  1
2138 
2139 	fields: \n
2140 		-   [0] = pad_atest1_val_ro
2141 		-   [1] = pad_atest2_val_ro
2142 */
2143 	uint8_t   pad_startup_mode__value_ctrl;
2144 /*!<
2145 	info: \n
2146 		- msb =  5
2147 		- lsb =  0
2148 		- i2c_size =  1
2149 
2150 	fields: \n
2151 		-   [0] = pad_atest1_val
2152 		-   [1] = pad_atest2_val
2153 		-   [4] = pad_atest1_dig_enable
2154 		-   [5] = pad_atest2_dig_enable
2155 */
2156 	uint32_t  pll_period_us;
2157 /*!<
2158 	info: \n
2159 		- msb = 17
2160 		- lsb =  0
2161 		- i2c_size =  4
2162 
2163 	fields: \n
2164 		- [17:0] = pll_period_us (fixed point 0.24)
2165 */
2166 	uint32_t  interrupt_scheduler__data_out;
2167 /*!<
2168 	info: \n
2169 		- msb = 31
2170 		- lsb =  0
2171 		- i2c_size =  4
2172 
2173 	fields: \n
2174 		- [31:0] = interrupt_scheduler_data_out
2175 */
2176 	uint8_t   nvm_bist__complete;
2177 /*!<
2178 	info: \n
2179 		- msb =  0
2180 		- lsb =  0
2181 		- i2c_size =  1
2182 
2183 	fields: \n
2184 		-   [0] = nvm_bist__complete
2185 */
2186 	uint8_t   nvm_bist__status;
2187 /*!<
2188 	info: \n
2189 		- msb =  0
2190 		- lsb =  0
2191 		- i2c_size =  1
2192 
2193 	fields: \n
2194 		-   [0] = nvm_bist__status
2195 */
2196 } VL53L1_debug_results_t;
2197 
2198 
2199 /**
2200  * @struct VL53L1_nvm_copy_data_t
2201  *
2202  * - registers    =     48
2203  * - first_index  =    271 (0x010F)
2204  * - last _index  =    319 (0x013F)
2205  * - i2c_size     =     49
2206  */
2207 
2208 typedef struct {
2209 	uint8_t   identification__model_id;
2210 /*!<
2211 	info: \n
2212 		- msb =  7
2213 		- lsb =  0
2214 		- i2c_size =  1
2215 
2216 	fields: \n
2217 		- [7:0] = model_id
2218 */
2219 	uint8_t   identification__module_type;
2220 /*!<
2221 	info: \n
2222 		- msb =  7
2223 		- lsb =  0
2224 		- i2c_size =  1
2225 
2226 	fields: \n
2227 		- [7:0] = module_type
2228 */
2229 	uint8_t   identification__revision_id;
2230 /*!<
2231 	info: \n
2232 		- msb =  7
2233 		- lsb =  0
2234 		- i2c_size =  1
2235 
2236 	fields: \n
2237 		- [3:0] = nvm_revision_id
2238 		- [7:4] = mask_revision_id
2239 */
2240 	uint16_t  identification__module_id;
2241 /*!<
2242 	info: \n
2243 		- msb = 15
2244 		- lsb =  0
2245 		- i2c_size =  2
2246 
2247 	fields: \n
2248 		- [15:0] = module_id
2249 */
2250 	uint8_t   ana_config__fast_osc__trim_max;
2251 /*!<
2252 	info: \n
2253 		- msb =  6
2254 		- lsb =  0
2255 		- i2c_size =  1
2256 
2257 	fields: \n
2258 		- [6:0] = osc_trim_max
2259 */
2260 	uint8_t   ana_config__fast_osc__freq_set;
2261 /*!<
2262 	info: \n
2263 		- msb =  2
2264 		- lsb =  0
2265 		- i2c_size =  1
2266 
2267 	fields: \n
2268 		- [2:0] = osc_freq_set
2269 */
2270 	uint8_t   ana_config__vcsel_trim;
2271 /*!<
2272 	info: \n
2273 		- msb =  2
2274 		- lsb =  0
2275 		- i2c_size =  1
2276 
2277 	fields: \n
2278 		- [2:0] = vcsel_trim
2279 */
2280 	uint8_t   ana_config__vcsel_selion;
2281 /*!<
2282 	info: \n
2283 		- msb =  5
2284 		- lsb =  0
2285 		- i2c_size =  1
2286 
2287 	fields: \n
2288 		- [5:0] = vcsel_selion
2289 */
2290 	uint8_t   ana_config__vcsel_selion_max;
2291 /*!<
2292 	info: \n
2293 		- msb =  5
2294 		- lsb =  0
2295 		- i2c_size =  1
2296 
2297 	fields: \n
2298 		- [5:0] = vcsel_selion_max
2299 */
2300 	uint8_t   protected_laser_safety__lock_bit;
2301 /*!<
2302 	info: \n
2303 		- msb =  0
2304 		- lsb =  0
2305 		- i2c_size =  1
2306 
2307 	fields: \n
2308 		-   [0] = laser_safety__lock_bit
2309 */
2310 	uint8_t   laser_safety__key;
2311 /*!<
2312 	info: \n
2313 		- msb =  6
2314 		- lsb =  0
2315 		- i2c_size =  1
2316 
2317 	fields: \n
2318 		- [6:0] = laser_safety__key
2319 */
2320 	uint8_t   laser_safety__key_ro;
2321 /*!<
2322 	info: \n
2323 		- msb =  0
2324 		- lsb =  0
2325 		- i2c_size =  1
2326 
2327 	fields: \n
2328 		-   [0] = laser_safety__key_ro
2329 */
2330 	uint8_t   laser_safety__clip;
2331 /*!<
2332 	info: \n
2333 		- msb =  5
2334 		- lsb =  0
2335 		- i2c_size =  1
2336 
2337 	fields: \n
2338 		- [5:0] = vcsel_pulse_width_clip
2339 */
2340 	uint8_t   laser_safety__mult;
2341 /*!<
2342 	info: \n
2343 		- msb =  5
2344 		- lsb =  0
2345 		- i2c_size =  1
2346 
2347 	fields: \n
2348 		- [5:0] = vcsel_pulse_width_mult
2349 */
2350 	uint8_t   global_config__spad_enables_rtn_0;
2351 /*!<
2352 	info: \n
2353 		- msb =  7
2354 		- lsb =  0
2355 		- i2c_size =  1
2356 
2357 	fields: \n
2358 		- [7:0] = spad_enables_rtn_0
2359 */
2360 	uint8_t   global_config__spad_enables_rtn_1;
2361 /*!<
2362 	info: \n
2363 		- msb =  7
2364 		- lsb =  0
2365 		- i2c_size =  1
2366 
2367 	fields: \n
2368 		- [7:0] = spad_enables_rtn_1
2369 */
2370 	uint8_t   global_config__spad_enables_rtn_2;
2371 /*!<
2372 	info: \n
2373 		- msb =  7
2374 		- lsb =  0
2375 		- i2c_size =  1
2376 
2377 	fields: \n
2378 		- [7:0] = spad_enables_rtn_2
2379 */
2380 	uint8_t   global_config__spad_enables_rtn_3;
2381 /*!<
2382 	info: \n
2383 		- msb =  7
2384 		- lsb =  0
2385 		- i2c_size =  1
2386 
2387 	fields: \n
2388 		- [7:0] = spad_enables_rtn_3
2389 */
2390 	uint8_t   global_config__spad_enables_rtn_4;
2391 /*!<
2392 	info: \n
2393 		- msb =  7
2394 		- lsb =  0
2395 		- i2c_size =  1
2396 
2397 	fields: \n
2398 		- [7:0] = spad_enables_rtn_4
2399 */
2400 	uint8_t   global_config__spad_enables_rtn_5;
2401 /*!<
2402 	info: \n
2403 		- msb =  7
2404 		- lsb =  0
2405 		- i2c_size =  1
2406 
2407 	fields: \n
2408 		- [7:0] = spad_enables_rtn_5
2409 */
2410 	uint8_t   global_config__spad_enables_rtn_6;
2411 /*!<
2412 	info: \n
2413 		- msb =  7
2414 		- lsb =  0
2415 		- i2c_size =  1
2416 
2417 	fields: \n
2418 		- [7:0] = spad_enables_rtn_6
2419 */
2420 	uint8_t   global_config__spad_enables_rtn_7;
2421 /*!<
2422 	info: \n
2423 		- msb =  7
2424 		- lsb =  0
2425 		- i2c_size =  1
2426 
2427 	fields: \n
2428 		- [7:0] = spad_enables_rtn_7
2429 */
2430 	uint8_t   global_config__spad_enables_rtn_8;
2431 /*!<
2432 	info: \n
2433 		- msb =  7
2434 		- lsb =  0
2435 		- i2c_size =  1
2436 
2437 	fields: \n
2438 		- [7:0] = spad_enables_rtn_8
2439 */
2440 	uint8_t   global_config__spad_enables_rtn_9;
2441 /*!<
2442 	info: \n
2443 		- msb =  7
2444 		- lsb =  0
2445 		- i2c_size =  1
2446 
2447 	fields: \n
2448 		- [7:0] = spad_enables_rtn_9
2449 */
2450 	uint8_t   global_config__spad_enables_rtn_10;
2451 /*!<
2452 	info: \n
2453 		- msb =  7
2454 		- lsb =  0
2455 		- i2c_size =  1
2456 
2457 	fields: \n
2458 		- [7:0] = spad_enables_rtn_10
2459 */
2460 	uint8_t   global_config__spad_enables_rtn_11;
2461 /*!<
2462 	info: \n
2463 		- msb =  7
2464 		- lsb =  0
2465 		- i2c_size =  1
2466 
2467 	fields: \n
2468 		- [7:0] = spad_enables_rtn_11
2469 */
2470 	uint8_t   global_config__spad_enables_rtn_12;
2471 /*!<
2472 	info: \n
2473 		- msb =  7
2474 		- lsb =  0
2475 		- i2c_size =  1
2476 
2477 	fields: \n
2478 		- [7:0] = spad_enables_rtn_12
2479 */
2480 	uint8_t   global_config__spad_enables_rtn_13;
2481 /*!<
2482 	info: \n
2483 		- msb =  7
2484 		- lsb =  0
2485 		- i2c_size =  1
2486 
2487 	fields: \n
2488 		- [7:0] = spad_enables_rtn_13
2489 */
2490 	uint8_t   global_config__spad_enables_rtn_14;
2491 /*!<
2492 	info: \n
2493 		- msb =  7
2494 		- lsb =  0
2495 		- i2c_size =  1
2496 
2497 	fields: \n
2498 		- [7:0] = spad_enables_rtn_14
2499 */
2500 	uint8_t   global_config__spad_enables_rtn_15;
2501 /*!<
2502 	info: \n
2503 		- msb =  7
2504 		- lsb =  0
2505 		- i2c_size =  1
2506 
2507 	fields: \n
2508 		- [7:0] = spad_enables_rtn_15
2509 */
2510 	uint8_t   global_config__spad_enables_rtn_16;
2511 /*!<
2512 	info: \n
2513 		- msb =  7
2514 		- lsb =  0
2515 		- i2c_size =  1
2516 
2517 	fields: \n
2518 		- [7:0] = spad_enables_rtn_16
2519 */
2520 	uint8_t   global_config__spad_enables_rtn_17;
2521 /*!<
2522 	info: \n
2523 		- msb =  7
2524 		- lsb =  0
2525 		- i2c_size =  1
2526 
2527 	fields: \n
2528 		- [7:0] = spad_enables_rtn_17
2529 */
2530 	uint8_t   global_config__spad_enables_rtn_18;
2531 /*!<
2532 	info: \n
2533 		- msb =  7
2534 		- lsb =  0
2535 		- i2c_size =  1
2536 
2537 	fields: \n
2538 		- [7:0] = spad_enables_rtn_18
2539 */
2540 	uint8_t   global_config__spad_enables_rtn_19;
2541 /*!<
2542 	info: \n
2543 		- msb =  7
2544 		- lsb =  0
2545 		- i2c_size =  1
2546 
2547 	fields: \n
2548 		- [7:0] = spad_enables_rtn_19
2549 */
2550 	uint8_t   global_config__spad_enables_rtn_20;
2551 /*!<
2552 	info: \n
2553 		- msb =  7
2554 		- lsb =  0
2555 		- i2c_size =  1
2556 
2557 	fields: \n
2558 		- [7:0] = spad_enables_rtn_20
2559 */
2560 	uint8_t   global_config__spad_enables_rtn_21;
2561 /*!<
2562 	info: \n
2563 		- msb =  7
2564 		- lsb =  0
2565 		- i2c_size =  1
2566 
2567 	fields: \n
2568 		- [7:0] = spad_enables_rtn_21
2569 */
2570 	uint8_t   global_config__spad_enables_rtn_22;
2571 /*!<
2572 	info: \n
2573 		- msb =  7
2574 		- lsb =  0
2575 		- i2c_size =  1
2576 
2577 	fields: \n
2578 		- [7:0] = spad_enables_rtn_22
2579 */
2580 	uint8_t   global_config__spad_enables_rtn_23;
2581 /*!<
2582 	info: \n
2583 		- msb =  7
2584 		- lsb =  0
2585 		- i2c_size =  1
2586 
2587 	fields: \n
2588 		- [7:0] = spad_enables_rtn_23
2589 */
2590 	uint8_t   global_config__spad_enables_rtn_24;
2591 /*!<
2592 	info: \n
2593 		- msb =  7
2594 		- lsb =  0
2595 		- i2c_size =  1
2596 
2597 	fields: \n
2598 		- [7:0] = spad_enables_rtn_24
2599 */
2600 	uint8_t   global_config__spad_enables_rtn_25;
2601 /*!<
2602 	info: \n
2603 		- msb =  7
2604 		- lsb =  0
2605 		- i2c_size =  1
2606 
2607 	fields: \n
2608 		- [7:0] = spad_enables_rtn_25
2609 */
2610 	uint8_t   global_config__spad_enables_rtn_26;
2611 /*!<
2612 	info: \n
2613 		- msb =  7
2614 		- lsb =  0
2615 		- i2c_size =  1
2616 
2617 	fields: \n
2618 		- [7:0] = spad_enables_rtn_26
2619 */
2620 	uint8_t   global_config__spad_enables_rtn_27;
2621 /*!<
2622 	info: \n
2623 		- msb =  7
2624 		- lsb =  0
2625 		- i2c_size =  1
2626 
2627 	fields: \n
2628 		- [7:0] = spad_enables_rtn_27
2629 */
2630 	uint8_t   global_config__spad_enables_rtn_28;
2631 /*!<
2632 	info: \n
2633 		- msb =  7
2634 		- lsb =  0
2635 		- i2c_size =  1
2636 
2637 	fields: \n
2638 		- [7:0] = spad_enables_rtn_28
2639 */
2640 	uint8_t   global_config__spad_enables_rtn_29;
2641 /*!<
2642 	info: \n
2643 		- msb =  7
2644 		- lsb =  0
2645 		- i2c_size =  1
2646 
2647 	fields: \n
2648 		- [7:0] = spad_enables_rtn_29
2649 */
2650 	uint8_t   global_config__spad_enables_rtn_30;
2651 /*!<
2652 	info: \n
2653 		- msb =  7
2654 		- lsb =  0
2655 		- i2c_size =  1
2656 
2657 	fields: \n
2658 		- [7:0] = spad_enables_rtn_30
2659 */
2660 	uint8_t   global_config__spad_enables_rtn_31;
2661 /*!<
2662 	info: \n
2663 		- msb =  7
2664 		- lsb =  0
2665 		- i2c_size =  1
2666 
2667 	fields: \n
2668 		- [7:0] = spad_enables_rtn_31
2669 */
2670 	uint8_t   roi_config__mode_roi_centre_spad;
2671 /*!<
2672 	info: \n
2673 		- msb =  7
2674 		- lsb =  0
2675 		- i2c_size =  1
2676 
2677 	fields: \n
2678 		- [7:0] = mode_roi_center_spad
2679 */
2680 	uint8_t   roi_config__mode_roi_xy_size;
2681 /*!<
2682 	info: \n
2683 		- msb =  7
2684 		- lsb =  0
2685 		- i2c_size =  1
2686 
2687 	fields: \n
2688 		- [7:0] = mode_roi_xy_size
2689 */
2690 } VL53L1_nvm_copy_data_t;
2691 
2692 
2693 /**
2694  * @struct VL53L1_prev_shadow_system_results_t
2695  *
2696  * - registers    =     24
2697  * - first_index  =   3792 (0x0ED0)
2698  * - last _index  =   3834 (0x0EFA)
2699  * - i2c_size     =     44
2700  */
2701 
2702 typedef struct {
2703 	uint8_t   prev_shadow_result__interrupt_status;
2704 /*!<
2705 	info: \n
2706 		- msb =  5
2707 		- lsb =  0
2708 		- i2c_size =  1
2709 
2710 	fields: \n
2711 		- [2:0] = prev_shadow_int_status
2712 		- [4:3] = prev_shadow_int_error_status
2713 		-   [5] = prev_shadow_gph_id_gpio_status
2714 */
2715 	uint8_t   prev_shadow_result__range_status;
2716 /*!<
2717 	info: \n
2718 		- msb =  7
2719 		- lsb =  0
2720 		- i2c_size =  1
2721 
2722 	fields: \n
2723 		- [4:0] = prev_shadow_range_status
2724 		-   [5] = prev_shadow_max_threshold_hit
2725 		-   [6] = prev_shadow_min_threshold_hit
2726 		-   [7] = prev_shadow_gph_id_range_status
2727 */
2728 	uint8_t   prev_shadow_result__report_status;
2729 /*!<
2730 	info: \n
2731 		- msb =  3
2732 		- lsb =  0
2733 		- i2c_size =  1
2734 
2735 	fields: \n
2736 		- [3:0] = prev_shadow_report_status
2737 */
2738 	uint8_t   prev_shadow_result__stream_count;
2739 /*!<
2740 	info: \n
2741 		- msb =  7
2742 		- lsb =  0
2743 		- i2c_size =  1
2744 
2745 	fields: \n
2746 		- [7:0] = prev_shadow_result__stream_count
2747 */
2748 	uint16_t  prev_shadow_result__dss_actual_effective_spads_sd0;
2749 /*!<
2750 	info: \n
2751 		- msb = 15
2752 		- lsb =  0
2753 		- i2c_size =  2
2754 
2755 	fields: \n
2756 		- [15:0] = prev_shadow_result__dss_actual_effective_spads_sd0 (fixed point 8.8)
2757 */
2758 	uint16_t  prev_shadow_result__peak_signal_count_rate_mcps_sd0;
2759 /*!<
2760 	info: \n
2761 		- msb = 15
2762 		- lsb =  0
2763 		- i2c_size =  2
2764 
2765 	fields: \n
2766 		- [15:0] = prev_shadow_result__peak_signal_count_rate_mcps_sd0 (fixed point 9.7)
2767 */
2768 	uint16_t  prev_shadow_result__ambient_count_rate_mcps_sd0;
2769 /*!<
2770 	info: \n
2771 		- msb = 15
2772 		- lsb =  0
2773 		- i2c_size =  2
2774 
2775 	fields: \n
2776 		- [15:0] = prev_shadow_result__ambient_count_rate_mcps_sd0 (fixed point 9.7)
2777 */
2778 	uint16_t  prev_shadow_result__sigma_sd0;
2779 /*!<
2780 	info: \n
2781 		- msb = 15
2782 		- lsb =  0
2783 		- i2c_size =  2
2784 
2785 	fields: \n
2786 		- [15:0] = prev_shadow_result__sigma_sd0 (fixed point 14.2)
2787 */
2788 	uint16_t  prev_shadow_result__phase_sd0;
2789 /*!<
2790 	info: \n
2791 		- msb = 15
2792 		- lsb =  0
2793 		- i2c_size =  2
2794 
2795 	fields: \n
2796 		- [15:0] = prev_shadow_result__phase_sd0 (fixed point 5.11)
2797 */
2798 	uint16_t  prev_shadow_result__final_crosstalk_corrected_range_mm_sd0;
2799 /*!<
2800 	info: \n
2801 		- msb = 15
2802 		- lsb =  0
2803 		- i2c_size =  2
2804 
2805 	fields: \n
2806 		- [15:0] = prev_shadow_result__final_crosstalk_corrected_range_mm_sd0
2807 */
2808 	uint16_t  prev_shadow_result__peak_signal_count_rate_crosstalk_corrected_mcps_sd0;
2809 /*!<
2810 	info: \n
2811 		- msb = 15
2812 		- lsb =  0
2813 		- i2c_size =  2
2814 
2815 	fields: \n
2816 		- [15:0] = prev_shadow_result__peak_signal_count_rate_crosstalk_corrected_mcps_sd0 (fixed point 9.7)
2817 */
2818 	uint16_t  prev_shadow_result__mm_inner_actual_effective_spads_sd0;
2819 /*!<
2820 	info: \n
2821 		- msb = 15
2822 		- lsb =  0
2823 		- i2c_size =  2
2824 
2825 	fields: \n
2826 		- [15:0] = prev_shadow_result__mm_inner_actual_effective_spads_sd0 (fixed point 8.8)
2827 */
2828 	uint16_t  prev_shadow_result__mm_outer_actual_effective_spads_sd0;
2829 /*!<
2830 	info: \n
2831 		- msb = 15
2832 		- lsb =  0
2833 		- i2c_size =  2
2834 
2835 	fields: \n
2836 		- [15:0] = prev_shadow_result__mm_outer_actual_effective_spads_sd0 (fixed point 8.8)
2837 */
2838 	uint16_t  prev_shadow_result__avg_signal_count_rate_mcps_sd0;
2839 /*!<
2840 	info: \n
2841 		- msb = 15
2842 		- lsb =  0
2843 		- i2c_size =  2
2844 
2845 	fields: \n
2846 		- [15:0] = prev_shadow_result__avg_signal_count_rate_mcps_sd0 (fixed point 9.7)
2847 */
2848 	uint16_t  prev_shadow_result__dss_actual_effective_spads_sd1;
2849 /*!<
2850 	info: \n
2851 		- msb = 15
2852 		- lsb =  0
2853 		- i2c_size =  2
2854 
2855 	fields: \n
2856 		- [15:0] = prev_shadow_result__dss_actual_effective_spads_sd1 (fixed point 8.8)
2857 */
2858 	uint16_t  prev_shadow_result__peak_signal_count_rate_mcps_sd1;
2859 /*!<
2860 	info: \n
2861 		- msb = 15
2862 		- lsb =  0
2863 		- i2c_size =  2
2864 
2865 	fields: \n
2866 		- [15:0] = prev_shadow_result__peak_signal_count_rate_mcps_sd1 (fixed point 9.7)
2867 */
2868 	uint16_t  prev_shadow_result__ambient_count_rate_mcps_sd1;
2869 /*!<
2870 	info: \n
2871 		- msb = 15
2872 		- lsb =  0
2873 		- i2c_size =  2
2874 
2875 	fields: \n
2876 		- [15:0] = prev_shadow_result__ambient_count_rate_mcps_sd1 (fixed point 9.7)
2877 */
2878 	uint16_t  prev_shadow_result__sigma_sd1;
2879 /*!<
2880 	info: \n
2881 		- msb = 15
2882 		- lsb =  0
2883 		- i2c_size =  2
2884 
2885 	fields: \n
2886 		- [15:0] = prev_shadow_result__sigma_sd1 (fixed point 14.2)
2887 */
2888 	uint16_t  prev_shadow_result__phase_sd1;
2889 /*!<
2890 	info: \n
2891 		- msb = 15
2892 		- lsb =  0
2893 		- i2c_size =  2
2894 
2895 	fields: \n
2896 		- [15:0] = prev_shadow_result__phase_sd1 (fixed point 5.11)
2897 */
2898 	uint16_t  prev_shadow_result__final_crosstalk_corrected_range_mm_sd1;
2899 /*!<
2900 	info: \n
2901 		- msb = 15
2902 		- lsb =  0
2903 		- i2c_size =  2
2904 
2905 	fields: \n
2906 		- [15:0] = prev_shadow_result__final_crosstalk_corrected_range_mm_sd1
2907 */
2908 	uint16_t  prev_shadow_result__spare_0_sd1;
2909 /*!<
2910 	info: \n
2911 		- msb = 15
2912 		- lsb =  0
2913 		- i2c_size =  2
2914 
2915 	fields: \n
2916 		- [15:0] = prev_shadow_result__spare_0_sd1
2917 */
2918 	uint16_t  prev_shadow_result__spare_1_sd1;
2919 /*!<
2920 	info: \n
2921 		- msb = 15
2922 		- lsb =  0
2923 		- i2c_size =  2
2924 
2925 	fields: \n
2926 		- [15:0] = prev_shadow_result__spare_1_sd1
2927 */
2928 	uint16_t  prev_shadow_result__spare_2_sd1;
2929 /*!<
2930 	info: \n
2931 		- msb = 15
2932 		- lsb =  0
2933 		- i2c_size =  2
2934 
2935 	fields: \n
2936 		- [15:0] = prev_shadow_result__spare_2_sd1
2937 */
2938 	uint16_t  prev_shadow_result__spare_3_sd1;
2939 /*!<
2940 	info: \n
2941 		- msb = 15
2942 		- lsb =  0
2943 		- i2c_size =  2
2944 
2945 	fields: \n
2946 		- [15:0] = prev_shadow_result__spare_3_sd1
2947 */
2948 } VL53L1_prev_shadow_system_results_t;
2949 
2950 
2951 /**
2952  * @struct VL53L1_prev_shadow_core_results_t
2953  *
2954  * - registers    =      9
2955  * - first_index  =   3836 (0x0EFC)
2956  * - last _index  =   3868 (0x0F1C)
2957  * - i2c_size     =     33
2958  */
2959 
2960 typedef struct {
2961 	uint32_t  prev_shadow_result_core__ambient_window_events_sd0;
2962 /*!<
2963 	info: \n
2964 		- msb = 31
2965 		- lsb =  0
2966 		- i2c_size =  4
2967 
2968 	fields: \n
2969 		- [31:0] = prev_shadow_result_core__ambient_window_events_sd0
2970 */
2971 	uint32_t  prev_shadow_result_core__ranging_total_events_sd0;
2972 /*!<
2973 	info: \n
2974 		- msb = 31
2975 		- lsb =  0
2976 		- i2c_size =  4
2977 
2978 	fields: \n
2979 		- [31:0] = prev_shadow_result_core__ranging_total_events_sd0
2980 */
2981 	int32_t   prev_shadow_result_core__signal_total_events_sd0;
2982 /*!<
2983 	info: \n
2984 		- msb = 31
2985 		- lsb =  0
2986 		- i2c_size =  4
2987 
2988 	fields: \n
2989 		- [31:0] = prev_shadow_result_core__signal_total_events_sd0
2990 */
2991 	uint32_t  prev_shadow_result_core__total_periods_elapsed_sd0;
2992 /*!<
2993 	info: \n
2994 		- msb = 31
2995 		- lsb =  0
2996 		- i2c_size =  4
2997 
2998 	fields: \n
2999 		- [31:0] = prev_shadow_result_core__total_periods_elapsed_sd0
3000 */
3001 	uint32_t  prev_shadow_result_core__ambient_window_events_sd1;
3002 /*!<
3003 	info: \n
3004 		- msb = 31
3005 		- lsb =  0
3006 		- i2c_size =  4
3007 
3008 	fields: \n
3009 		- [31:0] = prev_shadow_result_core__ambient_window_events_sd1
3010 */
3011 	uint32_t  prev_shadow_result_core__ranging_total_events_sd1;
3012 /*!<
3013 	info: \n
3014 		- msb = 31
3015 		- lsb =  0
3016 		- i2c_size =  4
3017 
3018 	fields: \n
3019 		- [31:0] = prev_shadow_result_core__ranging_total_events_sd1
3020 */
3021 	int32_t   prev_shadow_result_core__signal_total_events_sd1;
3022 /*!<
3023 	info: \n
3024 		- msb = 31
3025 		- lsb =  0
3026 		- i2c_size =  4
3027 
3028 	fields: \n
3029 		- [31:0] = prev_shadow_result_core__signal_total_events_sd1
3030 */
3031 	uint32_t  prev_shadow_result_core__total_periods_elapsed_sd1;
3032 /*!<
3033 	info: \n
3034 		- msb = 31
3035 		- lsb =  0
3036 		- i2c_size =  4
3037 
3038 	fields: \n
3039 		- [31:0] = prev_shadow_result_core__total_periods_elapsed_sd1
3040 */
3041 	uint8_t   prev_shadow_result_core__spare_0;
3042 /*!<
3043 	info: \n
3044 		- msb =  7
3045 		- lsb =  0
3046 		- i2c_size =  1
3047 
3048 	fields: \n
3049 		- [7:0] = prev_shadow_result_core__spare_0
3050 */
3051 } VL53L1_prev_shadow_core_results_t;
3052 
3053 
3054 /**
3055  * @struct VL53L1_patch_debug_t
3056  *
3057  * - registers    =      2
3058  * - first_index  =   3872 (0x0F20)
3059  * - last _index  =   3873 (0x0F21)
3060  * - i2c_size     =      2
3061  */
3062 
3063 typedef struct {
3064 	uint8_t   result__debug_status;
3065 /*!<
3066 	info: \n
3067 		- msb =  7
3068 		- lsb =  0
3069 		- i2c_size =  1
3070 
3071 	fields: \n
3072 		- [7:0] = result_debug_status
3073 */
3074 	uint8_t   result__debug_stage;
3075 /*!<
3076 	info: \n
3077 		- msb =  7
3078 		- lsb =  0
3079 		- i2c_size =  1
3080 
3081 	fields: \n
3082 		- [7:0] = result_debug_stage
3083 */
3084 } VL53L1_patch_debug_t;
3085 
3086 
3087 /**
3088  * @struct VL53L1_gph_general_config_t
3089  *
3090  * - registers    =      3
3091  * - first_index  =   3876 (0x0F24)
3092  * - last _index  =   3880 (0x0F28)
3093  * - i2c_size     =      5
3094  */
3095 
3096 typedef struct {
3097 	uint16_t  gph__system__thresh_rate_high;
3098 /*!<
3099 	info: \n
3100 		- msb = 15
3101 		- lsb =  0
3102 		- i2c_size =  2
3103 
3104 	fields: \n
3105 		- [15:0] = gph__system_thresh_rate_high (fixed point 9.7)
3106 */
3107 	uint16_t  gph__system__thresh_rate_low;
3108 /*!<
3109 	info: \n
3110 		- msb = 15
3111 		- lsb =  0
3112 		- i2c_size =  2
3113 
3114 	fields: \n
3115 		- [15:0] = gph__system_thresh_rate_low (fixed point 9.7)
3116 */
3117 	uint8_t   gph__system__interrupt_config_gpio;
3118 /*!<
3119 	info: \n
3120 		- msb =  7
3121 		- lsb =  0
3122 		- i2c_size =  1
3123 
3124 	fields: \n
3125 		- [1:0] = gph__int_mode_distance
3126 		- [3:2] = gph__int_mode_rate
3127 		-   [4] = gph__int_spare
3128 		-   [5] = gph__int_new_measure_ready
3129 		-   [6] = gph__int_no_target_en
3130 		-   [7] = gph__int_combined_mode
3131 */
3132 } VL53L1_gph_general_config_t;
3133 
3134 
3135 /**
3136  * @struct VL53L1_gph_static_config_t
3137  *
3138  * - registers    =      5
3139  * - first_index  =   3887 (0x0F2F)
3140  * - last _index  =   3892 (0x0F34)
3141  * - i2c_size     =      6
3142  */
3143 
3144 typedef struct {
3145 	uint8_t   gph__dss_config__roi_mode_control;
3146 /*!<
3147 	info: \n
3148 		- msb =  2
3149 		- lsb =  0
3150 		- i2c_size =  1
3151 
3152 	fields: \n
3153 		- [1:0] = gph__dss_config__input_mode
3154 		-   [2] = gph__calculate_roi_enable
3155 */
3156 	uint16_t  gph__dss_config__manual_effective_spads_select;
3157 /*!<
3158 	info: \n
3159 		- msb = 15
3160 		- lsb =  0
3161 		- i2c_size =  2
3162 
3163 	fields: \n
3164 		- [15:0] = gph__dss_config__manual_effective_spads_select
3165 */
3166 	uint8_t   gph__dss_config__manual_block_select;
3167 /*!<
3168 	info: \n
3169 		- msb =  7
3170 		- lsb =  0
3171 		- i2c_size =  1
3172 
3173 	fields: \n
3174 		- [7:0] = gph__dss_config__manual_block_select
3175 */
3176 	uint8_t   gph__dss_config__max_spads_limit;
3177 /*!<
3178 	info: \n
3179 		- msb =  7
3180 		- lsb =  0
3181 		- i2c_size =  1
3182 
3183 	fields: \n
3184 		- [7:0] = gph__dss_config__max_spads_limit
3185 */
3186 	uint8_t   gph__dss_config__min_spads_limit;
3187 /*!<
3188 	info: \n
3189 		- msb =  7
3190 		- lsb =  0
3191 		- i2c_size =  1
3192 
3193 	fields: \n
3194 		- [7:0] = gph__dss_config__min_spads_limit
3195 */
3196 } VL53L1_gph_static_config_t;
3197 
3198 
3199 /**
3200  * @struct VL53L1_gph_timing_config_t
3201  *
3202  * - registers    =     14
3203  * - first_index  =   3894 (0x0F36)
3204  * - last _index  =   3909 (0x0F45)
3205  * - i2c_size     =     16
3206  */
3207 
3208 typedef struct {
3209 	uint8_t   gph__mm_config__timeout_macrop_a_hi;
3210 /*!<
3211 	info: \n
3212 		- msb =  3
3213 		- lsb =  0
3214 		- i2c_size =  1
3215 
3216 	fields: \n
3217 		- [3:0] = gph_mm_config__config_timeout_macrop_a_hi
3218 */
3219 	uint8_t   gph__mm_config__timeout_macrop_a_lo;
3220 /*!<
3221 	info: \n
3222 		- msb =  7
3223 		- lsb =  0
3224 		- i2c_size =  1
3225 
3226 	fields: \n
3227 		- [7:0] = gph_mm_config__config_timeout_macrop_a_lo
3228 */
3229 	uint8_t   gph__mm_config__timeout_macrop_b_hi;
3230 /*!<
3231 	info: \n
3232 		- msb =  3
3233 		- lsb =  0
3234 		- i2c_size =  1
3235 
3236 	fields: \n
3237 		- [3:0] = gph_mm_config__config_timeout_macrop_b_hi
3238 */
3239 	uint8_t   gph__mm_config__timeout_macrop_b_lo;
3240 /*!<
3241 	info: \n
3242 		- msb =  7
3243 		- lsb =  0
3244 		- i2c_size =  1
3245 
3246 	fields: \n
3247 		- [7:0] = gph_mm_config__config_timeout_macrop_b_lo
3248 */
3249 	uint8_t   gph__range_config__timeout_macrop_a_hi;
3250 /*!<
3251 	info: \n
3252 		- msb =  3
3253 		- lsb =  0
3254 		- i2c_size =  1
3255 
3256 	fields: \n
3257 		- [3:0] = gph_range_timeout_overall_periods_macrop_a_hi
3258 */
3259 	uint8_t   gph__range_config__timeout_macrop_a_lo;
3260 /*!<
3261 	info: \n
3262 		- msb =  7
3263 		- lsb =  0
3264 		- i2c_size =  1
3265 
3266 	fields: \n
3267 		- [7:0] = gph_range_timeout_overall_periods_macrop_a_lo
3268 */
3269 	uint8_t   gph__range_config__vcsel_period_a;
3270 /*!<
3271 	info: \n
3272 		- msb =  5
3273 		- lsb =  0
3274 		- i2c_size =  1
3275 
3276 	fields: \n
3277 		- [5:0] = gph_range_config__vcsel_period_a
3278 */
3279 	uint8_t   gph__range_config__vcsel_period_b;
3280 /*!<
3281 	info: \n
3282 		- msb =  5
3283 		- lsb =  0
3284 		- i2c_size =  1
3285 
3286 	fields: \n
3287 		- [5:0] = gph_range_config__vcsel_period_b
3288 */
3289 	uint8_t   gph__range_config__timeout_macrop_b_hi;
3290 /*!<
3291 	info: \n
3292 		- msb =  3
3293 		- lsb =  0
3294 		- i2c_size =  1
3295 
3296 	fields: \n
3297 		- [3:0] = gph_range_timeout_overall_periods_macrop_b_hi
3298 */
3299 	uint8_t   gph__range_config__timeout_macrop_b_lo;
3300 /*!<
3301 	info: \n
3302 		- msb =  7
3303 		- lsb =  0
3304 		- i2c_size =  1
3305 
3306 	fields: \n
3307 		- [7:0] = gph_range_timeout_overall_periods_macrop_b_lo
3308 */
3309 	uint16_t  gph__range_config__sigma_thresh;
3310 /*!<
3311 	info: \n
3312 		- msb = 15
3313 		- lsb =  0
3314 		- i2c_size =  2
3315 
3316 	fields: \n
3317 		- [15:0] = gph_range_config__sigma_thresh (fixed point 14.2)
3318 */
3319 	uint16_t  gph__range_config__min_count_rate_rtn_limit_mcps;
3320 /*!<
3321 	info: \n
3322 		- msb = 15
3323 		- lsb =  0
3324 		- i2c_size =  2
3325 
3326 	fields: \n
3327 		- [15:0] = gph_range_config__min_count_rate_rtn_limit_mcps (fixed point 9.7)
3328 */
3329 	uint8_t   gph__range_config__valid_phase_low;
3330 /*!<
3331 	info: \n
3332 		- msb =  7
3333 		- lsb =  0
3334 		- i2c_size =  1
3335 
3336 	fields: \n
3337 		- [7:0] = gph_range_config__valid_phase_low (fixed point 5.3)
3338 */
3339 	uint8_t   gph__range_config__valid_phase_high;
3340 /*!<
3341 	info: \n
3342 		- msb =  7
3343 		- lsb =  0
3344 		- i2c_size =  1
3345 
3346 	fields: \n
3347 		- [7:0] = gph_range_config__valid_phase_high (fixed point 5.3)
3348 */
3349 } VL53L1_gph_timing_config_t;
3350 
3351 
3352 /**
3353  * @struct VL53L1_fw_internal_t
3354  *
3355  * - registers    =      2
3356  * - first_index  =   3910 (0x0F46)
3357  * - last _index  =   3911 (0x0F47)
3358  * - i2c_size     =      2
3359  */
3360 
3361 typedef struct {
3362 	uint8_t   firmware__internal_stream_count_div;
3363 /*!<
3364 	info: \n
3365 		- msb =  7
3366 		- lsb =  0
3367 		- i2c_size =  1
3368 
3369 	fields: \n
3370 		- [7:0] = fw__internal_stream_count_div
3371 */
3372 	uint8_t   firmware__internal_stream_counter_val;
3373 /*!<
3374 	info: \n
3375 		- msb =  7
3376 		- lsb =  0
3377 		- i2c_size =  1
3378 
3379 	fields: \n
3380 		- [7:0] = fw__internal_stream_counter_val
3381 */
3382 } VL53L1_fw_internal_t;
3383 
3384 
3385 /**
3386  * @struct VL53L1_patch_results_t
3387  *
3388  * - registers    =     60
3389  * - first_index  =   3924 (0x0F54)
3390  * - last _index  =   4012 (0x0FAC)
3391  * - i2c_size     =     90
3392  */
3393 
3394 typedef struct {
3395 	uint8_t   dss_calc__roi_ctrl;
3396 /*!<
3397 	info: \n
3398 		- msb =  1
3399 		- lsb =  0
3400 		- i2c_size =  1
3401 
3402 	fields: \n
3403 		-   [0] = dss_calc__roi_intersect_enable
3404 		-   [1] = dss_calc__roi_subtract_enable
3405 */
3406 	uint8_t   dss_calc__spare_1;
3407 /*!<
3408 	info: \n
3409 		- msb =  7
3410 		- lsb =  0
3411 		- i2c_size =  1
3412 
3413 	fields: \n
3414 		- [7:0] = dss_calc__spare_1
3415 */
3416 	uint8_t   dss_calc__spare_2;
3417 /*!<
3418 	info: \n
3419 		- msb =  7
3420 		- lsb =  0
3421 		- i2c_size =  1
3422 
3423 	fields: \n
3424 		- [7:0] = dss_calc__spare_2
3425 */
3426 	uint8_t   dss_calc__spare_3;
3427 /*!<
3428 	info: \n
3429 		- msb =  7
3430 		- lsb =  0
3431 		- i2c_size =  1
3432 
3433 	fields: \n
3434 		- [7:0] = dss_calc__spare_3
3435 */
3436 	uint8_t   dss_calc__spare_4;
3437 /*!<
3438 	info: \n
3439 		- msb =  7
3440 		- lsb =  0
3441 		- i2c_size =  1
3442 
3443 	fields: \n
3444 		- [7:0] = dss_calc__spare_4
3445 */
3446 	uint8_t   dss_calc__spare_5;
3447 /*!<
3448 	info: \n
3449 		- msb =  7
3450 		- lsb =  0
3451 		- i2c_size =  1
3452 
3453 	fields: \n
3454 		- [7:0] = dss_calc__spare_5
3455 */
3456 	uint8_t   dss_calc__spare_6;
3457 /*!<
3458 	info: \n
3459 		- msb =  7
3460 		- lsb =  0
3461 		- i2c_size =  1
3462 
3463 	fields: \n
3464 		- [7:0] = dss_calc__spare_6
3465 */
3466 	uint8_t   dss_calc__spare_7;
3467 /*!<
3468 	info: \n
3469 		- msb =  7
3470 		- lsb =  0
3471 		- i2c_size =  1
3472 
3473 	fields: \n
3474 		- [7:0] = dss_calc__spare_7
3475 */
3476 	uint8_t   dss_calc__user_roi_spad_en_0;
3477 /*!<
3478 	info: \n
3479 		- msb =  7
3480 		- lsb =  0
3481 		- i2c_size =  1
3482 
3483 	fields: \n
3484 		- [7:0] = dss_calc__user_roi_spad_en_0
3485 */
3486 	uint8_t   dss_calc__user_roi_spad_en_1;
3487 /*!<
3488 	info: \n
3489 		- msb =  7
3490 		- lsb =  0
3491 		- i2c_size =  1
3492 
3493 	fields: \n
3494 		- [7:0] = dss_calc__user_roi_spad_en_1
3495 */
3496 	uint8_t   dss_calc__user_roi_spad_en_2;
3497 /*!<
3498 	info: \n
3499 		- msb =  7
3500 		- lsb =  0
3501 		- i2c_size =  1
3502 
3503 	fields: \n
3504 		- [7:0] = dss_calc__user_roi_spad_en_2
3505 */
3506 	uint8_t   dss_calc__user_roi_spad_en_3;
3507 /*!<
3508 	info: \n
3509 		- msb =  7
3510 		- lsb =  0
3511 		- i2c_size =  1
3512 
3513 	fields: \n
3514 		- [7:0] = dss_calc__user_roi_spad_en_3
3515 */
3516 	uint8_t   dss_calc__user_roi_spad_en_4;
3517 /*!<
3518 	info: \n
3519 		- msb =  7
3520 		- lsb =  0
3521 		- i2c_size =  1
3522 
3523 	fields: \n
3524 		- [7:0] = dss_calc__user_roi_spad_en_4
3525 */
3526 	uint8_t   dss_calc__user_roi_spad_en_5;
3527 /*!<
3528 	info: \n
3529 		- msb =  7
3530 		- lsb =  0
3531 		- i2c_size =  1
3532 
3533 	fields: \n
3534 		- [7:0] = dss_calc__user_roi_spad_en_5
3535 */
3536 	uint8_t   dss_calc__user_roi_spad_en_6;
3537 /*!<
3538 	info: \n
3539 		- msb =  7
3540 		- lsb =  0
3541 		- i2c_size =  1
3542 
3543 	fields: \n
3544 		- [7:0] = dss_calc__user_roi_spad_en_6
3545 */
3546 	uint8_t   dss_calc__user_roi_spad_en_7;
3547 /*!<
3548 	info: \n
3549 		- msb =  7
3550 		- lsb =  0
3551 		- i2c_size =  1
3552 
3553 	fields: \n
3554 		- [7:0] = dss_calc__user_roi_spad_en_7
3555 */
3556 	uint8_t   dss_calc__user_roi_spad_en_8;
3557 /*!<
3558 	info: \n
3559 		- msb =  7
3560 		- lsb =  0
3561 		- i2c_size =  1
3562 
3563 	fields: \n
3564 		- [7:0] = dss_calc__user_roi_spad_en_8
3565 */
3566 	uint8_t   dss_calc__user_roi_spad_en_9;
3567 /*!<
3568 	info: \n
3569 		- msb =  7
3570 		- lsb =  0
3571 		- i2c_size =  1
3572 
3573 	fields: \n
3574 		- [7:0] = dss_calc__user_roi_spad_en_9
3575 */
3576 	uint8_t   dss_calc__user_roi_spad_en_10;
3577 /*!<
3578 	info: \n
3579 		- msb =  7
3580 		- lsb =  0
3581 		- i2c_size =  1
3582 
3583 	fields: \n
3584 		- [7:0] = dss_calc__user_roi_spad_en_10
3585 */
3586 	uint8_t   dss_calc__user_roi_spad_en_11;
3587 /*!<
3588 	info: \n
3589 		- msb =  7
3590 		- lsb =  0
3591 		- i2c_size =  1
3592 
3593 	fields: \n
3594 		- [7:0] = dss_calc__user_roi_spad_en_11
3595 */
3596 	uint8_t   dss_calc__user_roi_spad_en_12;
3597 /*!<
3598 	info: \n
3599 		- msb =  7
3600 		- lsb =  0
3601 		- i2c_size =  1
3602 
3603 	fields: \n
3604 		- [7:0] = dss_calc__user_roi_spad_en_12
3605 */
3606 	uint8_t   dss_calc__user_roi_spad_en_13;
3607 /*!<
3608 	info: \n
3609 		- msb =  7
3610 		- lsb =  0
3611 		- i2c_size =  1
3612 
3613 	fields: \n
3614 		- [7:0] = dss_calc__user_roi_spad_en_13
3615 */
3616 	uint8_t   dss_calc__user_roi_spad_en_14;
3617 /*!<
3618 	info: \n
3619 		- msb =  7
3620 		- lsb =  0
3621 		- i2c_size =  1
3622 
3623 	fields: \n
3624 		- [7:0] = dss_calc__user_roi_spad_en_14
3625 */
3626 	uint8_t   dss_calc__user_roi_spad_en_15;
3627 /*!<
3628 	info: \n
3629 		- msb =  7
3630 		- lsb =  0
3631 		- i2c_size =  1
3632 
3633 	fields: \n
3634 		- [7:0] = dss_calc__user_roi_spad_en_15
3635 */
3636 	uint8_t   dss_calc__user_roi_spad_en_16;
3637 /*!<
3638 	info: \n
3639 		- msb =  7
3640 		- lsb =  0
3641 		- i2c_size =  1
3642 
3643 	fields: \n
3644 		- [7:0] = dss_calc__user_roi_spad_en_16
3645 */
3646 	uint8_t   dss_calc__user_roi_spad_en_17;
3647 /*!<
3648 	info: \n
3649 		- msb =  7
3650 		- lsb =  0
3651 		- i2c_size =  1
3652 
3653 	fields: \n
3654 		- [7:0] = dss_calc__user_roi_spad_en_17
3655 */
3656 	uint8_t   dss_calc__user_roi_spad_en_18;
3657 /*!<
3658 	info: \n
3659 		- msb =  7
3660 		- lsb =  0
3661 		- i2c_size =  1
3662 
3663 	fields: \n
3664 		- [7:0] = dss_calc__user_roi_spad_en_18
3665 */
3666 	uint8_t   dss_calc__user_roi_spad_en_19;
3667 /*!<
3668 	info: \n
3669 		- msb =  7
3670 		- lsb =  0
3671 		- i2c_size =  1
3672 
3673 	fields: \n
3674 		- [7:0] = dss_calc__user_roi_spad_en_19
3675 */
3676 	uint8_t   dss_calc__user_roi_spad_en_20;
3677 /*!<
3678 	info: \n
3679 		- msb =  7
3680 		- lsb =  0
3681 		- i2c_size =  1
3682 
3683 	fields: \n
3684 		- [7:0] = dss_calc__user_roi_spad_en_20
3685 */
3686 	uint8_t   dss_calc__user_roi_spad_en_21;
3687 /*!<
3688 	info: \n
3689 		- msb =  7
3690 		- lsb =  0
3691 		- i2c_size =  1
3692 
3693 	fields: \n
3694 		- [7:0] = dss_calc__user_roi_spad_en_21
3695 */
3696 	uint8_t   dss_calc__user_roi_spad_en_22;
3697 /*!<
3698 	info: \n
3699 		- msb =  7
3700 		- lsb =  0
3701 		- i2c_size =  1
3702 
3703 	fields: \n
3704 		- [7:0] = dss_calc__user_roi_spad_en_22
3705 */
3706 	uint8_t   dss_calc__user_roi_spad_en_23;
3707 /*!<
3708 	info: \n
3709 		- msb =  7
3710 		- lsb =  0
3711 		- i2c_size =  1
3712 
3713 	fields: \n
3714 		- [7:0] = dss_calc__user_roi_spad_en_23
3715 */
3716 	uint8_t   dss_calc__user_roi_spad_en_24;
3717 /*!<
3718 	info: \n
3719 		- msb =  7
3720 		- lsb =  0
3721 		- i2c_size =  1
3722 
3723 	fields: \n
3724 		- [7:0] = dss_calc__user_roi_spad_en_24
3725 */
3726 	uint8_t   dss_calc__user_roi_spad_en_25;
3727 /*!<
3728 	info: \n
3729 		- msb =  7
3730 		- lsb =  0
3731 		- i2c_size =  1
3732 
3733 	fields: \n
3734 		- [7:0] = dss_calc__user_roi_spad_en_25
3735 */
3736 	uint8_t   dss_calc__user_roi_spad_en_26;
3737 /*!<
3738 	info: \n
3739 		- msb =  7
3740 		- lsb =  0
3741 		- i2c_size =  1
3742 
3743 	fields: \n
3744 		- [7:0] = dss_calc__user_roi_spad_en_26
3745 */
3746 	uint8_t   dss_calc__user_roi_spad_en_27;
3747 /*!<
3748 	info: \n
3749 		- msb =  7
3750 		- lsb =  0
3751 		- i2c_size =  1
3752 
3753 	fields: \n
3754 		- [7:0] = dss_calc__user_roi_spad_en_27
3755 */
3756 	uint8_t   dss_calc__user_roi_spad_en_28;
3757 /*!<
3758 	info: \n
3759 		- msb =  7
3760 		- lsb =  0
3761 		- i2c_size =  1
3762 
3763 	fields: \n
3764 		- [7:0] = dss_calc__user_roi_spad_en_28
3765 */
3766 	uint8_t   dss_calc__user_roi_spad_en_29;
3767 /*!<
3768 	info: \n
3769 		- msb =  7
3770 		- lsb =  0
3771 		- i2c_size =  1
3772 
3773 	fields: \n
3774 		- [7:0] = dss_calc__user_roi_spad_en_29
3775 */
3776 	uint8_t   dss_calc__user_roi_spad_en_30;
3777 /*!<
3778 	info: \n
3779 		- msb =  7
3780 		- lsb =  0
3781 		- i2c_size =  1
3782 
3783 	fields: \n
3784 		- [7:0] = dss_calc__user_roi_spad_en_30
3785 */
3786 	uint8_t   dss_calc__user_roi_spad_en_31;
3787 /*!<
3788 	info: \n
3789 		- msb =  7
3790 		- lsb =  0
3791 		- i2c_size =  1
3792 
3793 	fields: \n
3794 		- [7:0] = dss_calc__user_roi_spad_en_31
3795 */
3796 	uint8_t   dss_calc__user_roi_0;
3797 /*!<
3798 	info: \n
3799 		- msb =  7
3800 		- lsb =  0
3801 		- i2c_size =  1
3802 
3803 	fields: \n
3804 		- [7:0] = dss_calc__user_roi_0
3805 */
3806 	uint8_t   dss_calc__user_roi_1;
3807 /*!<
3808 	info: \n
3809 		- msb =  7
3810 		- lsb =  0
3811 		- i2c_size =  1
3812 
3813 	fields: \n
3814 		- [7:0] = dss_calc__user_roi_1
3815 */
3816 	uint8_t   dss_calc__mode_roi_0;
3817 /*!<
3818 	info: \n
3819 		- msb =  7
3820 		- lsb =  0
3821 		- i2c_size =  1
3822 
3823 	fields: \n
3824 		- [7:0] = dss_calc__mode_roi_0
3825 */
3826 	uint8_t   dss_calc__mode_roi_1;
3827 /*!<
3828 	info: \n
3829 		- msb =  7
3830 		- lsb =  0
3831 		- i2c_size =  1
3832 
3833 	fields: \n
3834 		- [7:0] = dss_calc__mode_roi_1
3835 */
3836 	uint8_t   sigma_estimator_calc__spare_0;
3837 /*!<
3838 	info: \n
3839 		- msb =  7
3840 		- lsb =  0
3841 		- i2c_size =  1
3842 
3843 	fields: \n
3844 		- [7:0] = sigma_estimator_calc__spare_0
3845 */
3846 	uint16_t  vhv_result__peak_signal_rate_mcps;
3847 /*!<
3848 	info: \n
3849 		- msb = 15
3850 		- lsb =  0
3851 		- i2c_size =  2
3852 
3853 	fields: \n
3854 		- [15:0] = vhv_result__peak_signal_rate_mcps
3855 */
3856 	uint32_t  vhv_result__signal_total_events_ref;
3857 /*!<
3858 	info: \n
3859 		- msb = 31
3860 		- lsb =  0
3861 		- i2c_size =  4
3862 
3863 	fields: \n
3864 		- [31:0] = vhv_result__signal_total_events_ref
3865 */
3866 	uint16_t  phasecal_result__phase_output_ref;
3867 /*!<
3868 	info: \n
3869 		- msb = 15
3870 		- lsb =  0
3871 		- i2c_size =  2
3872 
3873 	fields: \n
3874 		- [15:0] = phasecal_result__normalised_phase_ref
3875 */
3876 	uint16_t  dss_result__total_rate_per_spad;
3877 /*!<
3878 	info: \n
3879 		- msb = 15
3880 		- lsb =  0
3881 		- i2c_size =  2
3882 
3883 	fields: \n
3884 		- [15:0] = dss_result__total_rate_per_spad
3885 */
3886 	uint8_t   dss_result__enabled_blocks;
3887 /*!<
3888 	info: \n
3889 		- msb =  7
3890 		- lsb =  0
3891 		- i2c_size =  1
3892 
3893 	fields: \n
3894 		- [7:0] = dss_result__enabled_blocks
3895 */
3896 	uint16_t  dss_result__num_requested_spads;
3897 /*!<
3898 	info: \n
3899 		- msb = 15
3900 		- lsb =  0
3901 		- i2c_size =  2
3902 
3903 	fields: \n
3904 		- [15:0] = dss_result__num_requested_spads (fixed point 8.8)
3905 */
3906 	uint16_t  mm_result__inner_intersection_rate;
3907 /*!<
3908 	info: \n
3909 		- msb = 15
3910 		- lsb =  0
3911 		- i2c_size =  2
3912 
3913 	fields: \n
3914 		- [15:0] = mm_result__inner_intersection_rate
3915 */
3916 	uint16_t  mm_result__outer_complement_rate;
3917 /*!<
3918 	info: \n
3919 		- msb = 15
3920 		- lsb =  0
3921 		- i2c_size =  2
3922 
3923 	fields: \n
3924 		- [15:0] = mm_result__outer_complement_rate
3925 */
3926 	uint16_t  mm_result__total_offset;
3927 /*!<
3928 	info: \n
3929 		- msb = 15
3930 		- lsb =  0
3931 		- i2c_size =  2
3932 
3933 	fields: \n
3934 		- [15:0] = mm_result__total_offset
3935 */
3936 	uint32_t  xtalk_calc__xtalk_for_enabled_spads;
3937 /*!<
3938 	info: \n
3939 		- msb = 23
3940 		- lsb =  0
3941 		- i2c_size =  4
3942 
3943 	fields: \n
3944 		- [23:0] = xtalk_calc__xtalk_for_enabled_spads (fixed point 11.13)
3945 */
3946 	uint32_t  xtalk_result__avg_xtalk_user_roi_kcps;
3947 /*!<
3948 	info: \n
3949 		- msb = 23
3950 		- lsb =  0
3951 		- i2c_size =  4
3952 
3953 	fields: \n
3954 		- [23:0] = xtalk_result__avg_xtalk_user_roi_kcps (fixed point 11.13)
3955 */
3956 	uint32_t  xtalk_result__avg_xtalk_mm_inner_roi_kcps;
3957 /*!<
3958 	info: \n
3959 		- msb = 23
3960 		- lsb =  0
3961 		- i2c_size =  4
3962 
3963 	fields: \n
3964 		- [23:0] = xtalk_result__avg_xtalk_mm_inner_roi_kcps (fixed point 11.13)
3965 */
3966 	uint32_t  xtalk_result__avg_xtalk_mm_outer_roi_kcps;
3967 /*!<
3968 	info: \n
3969 		- msb = 23
3970 		- lsb =  0
3971 		- i2c_size =  4
3972 
3973 	fields: \n
3974 		- [23:0] = xtalk_result__avg_xtalk_mm_outer_roi_kcps (fixed point 11.13)
3975 */
3976 	uint32_t  range_result__accum_phase;
3977 /*!<
3978 	info: \n
3979 		- msb = 31
3980 		- lsb =  0
3981 		- i2c_size =  4
3982 
3983 	fields: \n
3984 		- [31:0] = range_result__accum_phase
3985 */
3986 	uint16_t  range_result__offset_corrected_range;
3987 /*!<
3988 	info: \n
3989 		- msb = 15
3990 		- lsb =  0
3991 		- i2c_size =  2
3992 
3993 	fields: \n
3994 		- [15:0] = range_result__offset_corrected_range
3995 */
3996 } VL53L1_patch_results_t;
3997 
3998 
3999 /**
4000  * @struct VL53L1_shadow_system_results_t
4001  *
4002  * - registers    =     28
4003  * - first_index  =   4014 (0x0FAE)
4004  * - last _index  =   4095 (0x0FFF)
4005  * - i2c_size     =     82
4006  */
4007 
4008 typedef struct {
4009 	uint8_t   shadow_phasecal_result__vcsel_start;
4010 /*!<
4011 	info: \n
4012 		- msb =  7
4013 		- lsb =  0
4014 		- i2c_size =  1
4015 
4016 	fields: \n
4017 		- [7:0] = shadow_phasecal_result__vcsel_start
4018 */
4019 	uint8_t   shadow_result__interrupt_status;
4020 /*!<
4021 	info: \n
4022 		- msb =  5
4023 		- lsb =  0
4024 		- i2c_size =  1
4025 
4026 	fields: \n
4027 		- [2:0] = shadow_int_status
4028 		- [4:3] = shadow_int_error_status
4029 		-   [5] = shadow_gph_id_gpio_status
4030 */
4031 	uint8_t   shadow_result__range_status;
4032 /*!<
4033 	info: \n
4034 		- msb =  7
4035 		- lsb =  0
4036 		- i2c_size =  1
4037 
4038 	fields: \n
4039 		- [4:0] = shadow_range_status
4040 		-   [5] = shadow_max_threshold_hit
4041 		-   [6] = shadow_min_threshold_hit
4042 		-   [7] = shadow_gph_id_range_status
4043 */
4044 	uint8_t   shadow_result__report_status;
4045 /*!<
4046 	info: \n
4047 		- msb =  3
4048 		- lsb =  0
4049 		- i2c_size =  1
4050 
4051 	fields: \n
4052 		- [3:0] = shadow_report_status
4053 */
4054 	uint8_t   shadow_result__stream_count;
4055 /*!<
4056 	info: \n
4057 		- msb =  7
4058 		- lsb =  0
4059 		- i2c_size =  1
4060 
4061 	fields: \n
4062 		- [7:0] = shadow_result__stream_count
4063 */
4064 	uint16_t  shadow_result__dss_actual_effective_spads_sd0;
4065 /*!<
4066 	info: \n
4067 		- msb = 15
4068 		- lsb =  0
4069 		- i2c_size =  2
4070 
4071 	fields: \n
4072 		- [15:0] = shadow_result__dss_actual_effective_spads_sd0 (fixed point 8.8)
4073 */
4074 	uint16_t  shadow_result__peak_signal_count_rate_mcps_sd0;
4075 /*!<
4076 	info: \n
4077 		- msb = 15
4078 		- lsb =  0
4079 		- i2c_size =  2
4080 
4081 	fields: \n
4082 		- [15:0] = shadow_result__peak_signal_count_rate_mcps_sd0 (fixed point 9.7)
4083 */
4084 	uint16_t  shadow_result__ambient_count_rate_mcps_sd0;
4085 /*!<
4086 	info: \n
4087 		- msb = 15
4088 		- lsb =  0
4089 		- i2c_size =  2
4090 
4091 	fields: \n
4092 		- [15:0] = shadow_result__ambient_count_rate_mcps_sd0 (fixed point 9.7)
4093 */
4094 	uint16_t  shadow_result__sigma_sd0;
4095 /*!<
4096 	info: \n
4097 		- msb = 15
4098 		- lsb =  0
4099 		- i2c_size =  2
4100 
4101 	fields: \n
4102 		- [15:0] = shadow_result__sigma_sd0 (fixed point 14.2)
4103 */
4104 	uint16_t  shadow_result__phase_sd0;
4105 /*!<
4106 	info: \n
4107 		- msb = 15
4108 		- lsb =  0
4109 		- i2c_size =  2
4110 
4111 	fields: \n
4112 		- [15:0] = shadow_result__phase_sd0 (fixed point 5.11)
4113 */
4114 	uint16_t  shadow_result__final_crosstalk_corrected_range_mm_sd0;
4115 /*!<
4116 	info: \n
4117 		- msb = 15
4118 		- lsb =  0
4119 		- i2c_size =  2
4120 
4121 	fields: \n
4122 		- [15:0] = shadow_result__final_crosstalk_corrected_range_mm_sd0
4123 */
4124 	uint16_t  shadow_result__peak_signal_count_rate_crosstalk_corrected_mcps_sd0;
4125 /*!<
4126 	info: \n
4127 		- msb = 15
4128 		- lsb =  0
4129 		- i2c_size =  2
4130 
4131 	fields: \n
4132 		- [15:0] = shadow_result__peak_signal_count_rate_crosstalk_corrected_mcps_sd0 (fixed point 9.7)
4133 */
4134 	uint16_t  shadow_result__mm_inner_actual_effective_spads_sd0;
4135 /*!<
4136 	info: \n
4137 		- msb = 15
4138 		- lsb =  0
4139 		- i2c_size =  2
4140 
4141 	fields: \n
4142 		- [15:0] = shadow_result__mm_inner_actual_effective_spads_sd0 (fixed point 8.8)
4143 */
4144 	uint16_t  shadow_result__mm_outer_actual_effective_spads_sd0;
4145 /*!<
4146 	info: \n
4147 		- msb = 15
4148 		- lsb =  0
4149 		- i2c_size =  2
4150 
4151 	fields: \n
4152 		- [15:0] = shadow_result__mm_outer_actual_effective_spads_sd0 (fixed point 8.8)
4153 */
4154 	uint16_t  shadow_result__avg_signal_count_rate_mcps_sd0;
4155 /*!<
4156 	info: \n
4157 		- msb = 15
4158 		- lsb =  0
4159 		- i2c_size =  2
4160 
4161 	fields: \n
4162 		- [15:0] = shadow_result__avg_signal_count_rate_mcps_sd0 (fixed point 9.7)
4163 */
4164 	uint16_t  shadow_result__dss_actual_effective_spads_sd1;
4165 /*!<
4166 	info: \n
4167 		- msb = 15
4168 		- lsb =  0
4169 		- i2c_size =  2
4170 
4171 	fields: \n
4172 		- [15:0] = shadow_result__dss_actual_effective_spads_sd1 (fixed point 8.8)
4173 */
4174 	uint16_t  shadow_result__peak_signal_count_rate_mcps_sd1;
4175 /*!<
4176 	info: \n
4177 		- msb = 15
4178 		- lsb =  0
4179 		- i2c_size =  2
4180 
4181 	fields: \n
4182 		- [15:0] = shadow_result__peak_signal_count_rate_mcps_sd1 (fixed point 9.7)
4183 */
4184 	uint16_t  shadow_result__ambient_count_rate_mcps_sd1;
4185 /*!<
4186 	info: \n
4187 		- msb = 15
4188 		- lsb =  0
4189 		- i2c_size =  2
4190 
4191 	fields: \n
4192 		- [15:0] = shadow_result__ambient_count_rate_mcps_sd1 (fixed point 9.7)
4193 */
4194 	uint16_t  shadow_result__sigma_sd1;
4195 /*!<
4196 	info: \n
4197 		- msb = 15
4198 		- lsb =  0
4199 		- i2c_size =  2
4200 
4201 	fields: \n
4202 		- [15:0] = shadow_result__sigma_sd1 (fixed point 14.2)
4203 */
4204 	uint16_t  shadow_result__phase_sd1;
4205 /*!<
4206 	info: \n
4207 		- msb = 15
4208 		- lsb =  0
4209 		- i2c_size =  2
4210 
4211 	fields: \n
4212 		- [15:0] = shadow_result__phase_sd1 (fixed point 5.11)
4213 */
4214 	uint16_t  shadow_result__final_crosstalk_corrected_range_mm_sd1;
4215 /*!<
4216 	info: \n
4217 		- msb = 15
4218 		- lsb =  0
4219 		- i2c_size =  2
4220 
4221 	fields: \n
4222 		- [15:0] = shadow_result__final_crosstalk_corrected_range_mm_sd1
4223 */
4224 	uint16_t  shadow_result__spare_0_sd1;
4225 /*!<
4226 	info: \n
4227 		- msb = 15
4228 		- lsb =  0
4229 		- i2c_size =  2
4230 
4231 	fields: \n
4232 		- [15:0] = shadow_result__spare_0_sd1
4233 */
4234 	uint16_t  shadow_result__spare_1_sd1;
4235 /*!<
4236 	info: \n
4237 		- msb = 15
4238 		- lsb =  0
4239 		- i2c_size =  2
4240 
4241 	fields: \n
4242 		- [15:0] = shadow_result__spare_1_sd1
4243 */
4244 	uint16_t  shadow_result__spare_2_sd1;
4245 /*!<
4246 	info: \n
4247 		- msb = 15
4248 		- lsb =  0
4249 		- i2c_size =  2
4250 
4251 	fields: \n
4252 		- [15:0] = shadow_result__spare_2_sd1
4253 */
4254 	uint8_t   shadow_result__spare_3_sd1;
4255 /*!<
4256 	info: \n
4257 		- msb =  7
4258 		- lsb =  0
4259 		- i2c_size =  1
4260 
4261 	fields: \n
4262 		- [7:0] = shadow_result__spare_3_sd1
4263 */
4264 	uint8_t   shadow_result__thresh_info;
4265 /*!<
4266 	info: \n
4267 		- msb =  7
4268 		- lsb =  0
4269 		- i2c_size =  1
4270 
4271 	fields: \n
4272 		- [3:0] = shadow_result__distance_int_info
4273 		- [7:4] = shadow_result__rate_int_info
4274 */
4275 	uint8_t   shadow_phasecal_result__reference_phase_hi;
4276 /*!<
4277 	info: \n
4278 		- msb =  7
4279 		- lsb =  0
4280 		- i2c_size =  1
4281 
4282 	fields: \n
4283 		- [7:0] = shadow_phasecal_result__reference_phase_hi
4284 */
4285 	uint8_t   shadow_phasecal_result__reference_phase_lo;
4286 /*!<
4287 	info: \n
4288 		- msb =  7
4289 		- lsb =  0
4290 		- i2c_size =  1
4291 
4292 	fields: \n
4293 		- [7:0] = shadow_phasecal_result__reference_phase_lo
4294 */
4295 } VL53L1_shadow_system_results_t;
4296 
4297 
4298 /**
4299  * @struct VL53L1_shadow_core_results_t
4300  *
4301  * - registers    =      9
4302  * - first_index  =   4060 (0x0FDC)
4303  * - last _index  =   4092 (0x0FFC)
4304  * - i2c_size     =     33
4305  */
4306 
4307 typedef struct {
4308 	uint32_t  shadow_result_core__ambient_window_events_sd0;
4309 /*!<
4310 	info: \n
4311 		- msb = 31
4312 		- lsb =  0
4313 		- i2c_size =  4
4314 
4315 	fields: \n
4316 		- [31:0] = shadow_result_core__ambient_window_events_sd0
4317 */
4318 	uint32_t  shadow_result_core__ranging_total_events_sd0;
4319 /*!<
4320 	info: \n
4321 		- msb = 31
4322 		- lsb =  0
4323 		- i2c_size =  4
4324 
4325 	fields: \n
4326 		- [31:0] = shadow_result_core__ranging_total_events_sd0
4327 */
4328 	int32_t   shadow_result_core__signal_total_events_sd0;
4329 /*!<
4330 	info: \n
4331 		- msb = 31
4332 		- lsb =  0
4333 		- i2c_size =  4
4334 
4335 	fields: \n
4336 		- [31:0] = shadow_result_core__signal_total_events_sd0
4337 */
4338 	uint32_t  shadow_result_core__total_periods_elapsed_sd0;
4339 /*!<
4340 	info: \n
4341 		- msb = 31
4342 		- lsb =  0
4343 		- i2c_size =  4
4344 
4345 	fields: \n
4346 		- [31:0] = shadow_result_core__total_periods_elapsed_sd0
4347 */
4348 	uint32_t  shadow_result_core__ambient_window_events_sd1;
4349 /*!<
4350 	info: \n
4351 		- msb = 31
4352 		- lsb =  0
4353 		- i2c_size =  4
4354 
4355 	fields: \n
4356 		- [31:0] = shadow_result_core__ambient_window_events_sd1
4357 */
4358 	uint32_t  shadow_result_core__ranging_total_events_sd1;
4359 /*!<
4360 	info: \n
4361 		- msb = 31
4362 		- lsb =  0
4363 		- i2c_size =  4
4364 
4365 	fields: \n
4366 		- [31:0] = shadow_result_core__ranging_total_events_sd1
4367 */
4368 	int32_t   shadow_result_core__signal_total_events_sd1;
4369 /*!<
4370 	info: \n
4371 		- msb = 31
4372 		- lsb =  0
4373 		- i2c_size =  4
4374 
4375 	fields: \n
4376 		- [31:0] = shadow_result_core__signal_total_events_sd1
4377 */
4378 	uint32_t  shadow_result_core__total_periods_elapsed_sd1;
4379 /*!<
4380 	info: \n
4381 		- msb = 31
4382 		- lsb =  0
4383 		- i2c_size =  4
4384 
4385 	fields: \n
4386 		- [31:0] = shadow_result_core__total_periods_elapsed_sd1
4387 */
4388 	uint8_t   shadow_result_core__spare_0;
4389 /*!<
4390 	info: \n
4391 		- msb =  7
4392 		- lsb =  0
4393 		- i2c_size =  1
4394 
4395 	fields: \n
4396 		- [7:0] = shadow_result_core__spare_0
4397 */
4398 } VL53L1_shadow_core_results_t;
4399 
4400 
4401 #endif
4402 
4403