Statistics
| Branch: | Tag: | Revision:

amiro-lld / drivers / VL53L1X / v1 / api / core / vl53l1_register_structs.h @ 4dba9195

History | View | Annotate | Download (81.058 KB)

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