vl53l1_register_funcs.c
Go to the documentation of this file.
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 
68 #include "vl53l1_ll_def.h"
69 #include "vl53l1_platform.h"
70 #include "vl53l1_platform_log.h"
71 #include "vl53l1_core.h"
72 #include "vl53l1_register_map.h"
74 #include "vl53l1_register_funcs.h"
75 
76 #define LOG_FUNCTION_START(fmt, ...) \
77  _LOG_FUNCTION_START(VL53L1_TRACE_MODULE_REGISTERS, fmt, ##__VA_ARGS__)
78 #define LOG_FUNCTION_END(status, ...) \
79  _LOG_FUNCTION_END(VL53L1_TRACE_MODULE_REGISTERS, status, ##__VA_ARGS__)
80 #define LOG_FUNCTION_END_FMT(status, fmt, ...) \
81  _LOG_FUNCTION_END_FMT(VL53L1_TRACE_MODULE_REGISTERS, status, fmt, ##__VA_ARGS__)
82 
83 
86  uint16_t buf_size,
87  uint8_t *pbuffer)
88 {
95 
97 
100 
101  *(pbuffer + 0) =
102  pdata->i2c_slave__device_address & 0x7F;
103  *(pbuffer + 1) =
104  pdata->ana_config__vhv_ref_sel_vddpix & 0xF;
105  *(pbuffer + 2) =
106  pdata->ana_config__vhv_ref_sel_vquench & 0x7F;
107  *(pbuffer + 3) =
108  pdata->ana_config__reg_avdd1v2_sel & 0x3;
109  *(pbuffer + 4) =
110  pdata->ana_config__fast_osc__trim & 0x7F;
113  2,
114  pbuffer + 5);
115  *(pbuffer + 7) =
117  *(pbuffer + 8) =
119  *(pbuffer + 9) =
120  pdata->vhv_config__offset & 0x3F;
121  *(pbuffer + 10) =
122  pdata->vhv_config__init;
123  LOG_FUNCTION_END(status);
124 
125 
126  return status;
127 }
128 
129 
131  uint16_t buf_size,
132  uint8_t *pbuffer,
134 {
141 
142  LOG_FUNCTION_START("");
143 
146 
148  (*(pbuffer + 0)) & 0x7F;
150  (*(pbuffer + 1)) & 0xF;
152  (*(pbuffer + 2)) & 0x7F;
154  (*(pbuffer + 3)) & 0x3;
156  (*(pbuffer + 4)) & 0x7F;
158  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 5));
160  (*(pbuffer + 7));
161  pdata->vhv_config__count_thresh =
162  (*(pbuffer + 8));
163  pdata->vhv_config__offset =
164  (*(pbuffer + 9)) & 0x3F;
165  pdata->vhv_config__init =
166  (*(pbuffer + 10));
167 
168  LOG_FUNCTION_END(status);
169 
170  return status;
171 }
172 
173 
175  VL53L1_DEV Dev,
177 {
185 
186  LOG_FUNCTION_START("");
187 
188  if (status == VL53L1_ERROR_NONE) /*lint !e774 always true*/
190  pdata,
192  comms_buffer);
193 
194  if (status == VL53L1_ERROR_NONE)
195  status = VL53L1_WriteMulti(
196  Dev,
198  comms_buffer,
200 
201  LOG_FUNCTION_END(status);
202 
203  return status;
204 }
205 
206 
208  VL53L1_DEV Dev,
210 {
218 
219  LOG_FUNCTION_START("");
220 
221  if (status == VL53L1_ERROR_NONE) /*lint !e774 always true*/
222  status = VL53L1_ReadMulti(
223  Dev,
225  comms_buffer,
227 
228  if (status == VL53L1_ERROR_NONE)
231  comms_buffer,
232  pdata);
233 
234  LOG_FUNCTION_END(status);
235 
236  return status;
237 }
238 
239 
242  uint16_t buf_size,
243  uint8_t *pbuffer)
244 {
251 
252  LOG_FUNCTION_START("");
253 
256 
257  *(pbuffer + 0) =
259  *(pbuffer + 1) =
261  *(pbuffer + 2) =
263  *(pbuffer + 3) =
265  *(pbuffer + 4) =
267  *(pbuffer + 5) =
269  *(pbuffer + 6) =
271  *(pbuffer + 7) =
273  *(pbuffer + 8) =
274  pdata->ref_spad_man__ref_location & 0x3;
277  2,
278  pbuffer + 9);
281  2,
282  pbuffer + 11);
285  2,
286  pbuffer + 13);
289  2,
290  pbuffer + 15);
292  pdata->algo__part_to_part_range_offset_mm & 0x1FFF,
293  2,
294  pbuffer + 17);
297  2,
298  pbuffer + 19);
301  2,
302  pbuffer + 21);
303  LOG_FUNCTION_END(status);
304 
305 
306  return status;
307 }
308 
309 
311  uint16_t buf_size,
312  uint8_t *pbuffer,
314 {
321 
322  LOG_FUNCTION_START("");
323 
326 
328  (*(pbuffer + 0));
330  (*(pbuffer + 1));
332  (*(pbuffer + 2));
334  (*(pbuffer + 3));
336  (*(pbuffer + 4));
338  (*(pbuffer + 5)) & 0xF;
340  (*(pbuffer + 6));
342  (*(pbuffer + 7)) & 0x3F;
344  (*(pbuffer + 8)) & 0x3;
346  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 9));
348  (VL53L1_i2c_decode_int16_t(2, pbuffer + 11));
350  (VL53L1_i2c_decode_int16_t(2, pbuffer + 13));
352  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 15));
354  (VL53L1_i2c_decode_int16_t(2, pbuffer + 17)) & 0x1FFF;
356  (VL53L1_i2c_decode_int16_t(2, pbuffer + 19));
358  (VL53L1_i2c_decode_int16_t(2, pbuffer + 21));
359 
360  LOG_FUNCTION_END(status);
361 
362  return status;
363 }
364 
365 
367  VL53L1_DEV Dev,
369 {
377 
378  LOG_FUNCTION_START("");
379 
380  if (status == VL53L1_ERROR_NONE) /*lint !e774 always true*/
382  pdata,
384  comms_buffer);
385 
386  if (status == VL53L1_ERROR_NONE)
387  status = VL53L1_WriteMulti(
388  Dev,
390  comms_buffer,
392 
393  LOG_FUNCTION_END(status);
394 
395  return status;
396 }
397 
398 
400  VL53L1_DEV Dev,
402 {
410 
411  LOG_FUNCTION_START("");
412 
413  if (status == VL53L1_ERROR_NONE) /*lint !e774 always true*/
414  status = VL53L1_ReadMulti(
415  Dev,
417  comms_buffer,
419 
420  if (status == VL53L1_ERROR_NONE)
423  comms_buffer,
424  pdata);
425 
426  LOG_FUNCTION_END(status);
427 
428  return status;
429 }
430 
431 
433  VL53L1_static_config_t *pdata,
434  uint16_t buf_size,
435  uint8_t *pbuffer)
436 {
443 
444  LOG_FUNCTION_START("");
445 
448 
451  2,
452  pbuffer + 0);
453  *(pbuffer + 2) =
454  pdata->debug__ctrl & 0x1;
455  *(pbuffer + 3) =
456  pdata->test_mode__ctrl & 0xF;
457  *(pbuffer + 4) =
458  pdata->clk_gating__ctrl & 0xF;
459  *(pbuffer + 5) =
460  pdata->nvm_bist__ctrl & 0x1F;
461  *(pbuffer + 6) =
462  pdata->nvm_bist__num_nvm_words & 0x7F;
463  *(pbuffer + 7) =
464  pdata->nvm_bist__start_address & 0x7F;
465  *(pbuffer + 8) =
466  pdata->host_if__status & 0x1;
467  *(pbuffer + 9) =
468  pdata->pad_i2c_hv__config;
469  *(pbuffer + 10) =
470  pdata->pad_i2c_hv__extsup_config & 0x1;
471  *(pbuffer + 11) =
472  pdata->gpio_hv_pad__ctrl & 0x3;
473  *(pbuffer + 12) =
474  pdata->gpio_hv_mux__ctrl & 0x1F;
475  *(pbuffer + 13) =
476  pdata->gpio__tio_hv_status & 0x3;
477  *(pbuffer + 14) =
478  pdata->gpio__fio_hv_status & 0x3;
479  *(pbuffer + 15) =
480  pdata->ana_config__spad_sel_pswidth & 0x7;
481  *(pbuffer + 16) =
483  *(pbuffer + 17) =
485  *(pbuffer + 18) =
487  *(pbuffer + 19) =
489  *(pbuffer + 20) =
491  *(pbuffer + 21) =
493  *(pbuffer + 22) =
495  *(pbuffer + 23) =
499  2,
500  pbuffer + 24);
501  *(pbuffer + 26) =
503  *(pbuffer + 27) =
504  pdata->algo__range_min_clip;
505  *(pbuffer + 28) =
507  *(pbuffer + 29) =
509  *(pbuffer + 30) =
510  pdata->sd_config__reset_stages_msb & 0xF;
511  *(pbuffer + 31) =
513  LOG_FUNCTION_END(status);
514 
515 
516  return status;
517 }
518 
519 
521  uint16_t buf_size,
522  uint8_t *pbuffer,
523  VL53L1_static_config_t *pdata)
524 {
531 
532  LOG_FUNCTION_START("");
533 
536 
538  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 0));
539  pdata->debug__ctrl =
540  (*(pbuffer + 2)) & 0x1;
541  pdata->test_mode__ctrl =
542  (*(pbuffer + 3)) & 0xF;
543  pdata->clk_gating__ctrl =
544  (*(pbuffer + 4)) & 0xF;
545  pdata->nvm_bist__ctrl =
546  (*(pbuffer + 5)) & 0x1F;
547  pdata->nvm_bist__num_nvm_words =
548  (*(pbuffer + 6)) & 0x7F;
549  pdata->nvm_bist__start_address =
550  (*(pbuffer + 7)) & 0x7F;
551  pdata->host_if__status =
552  (*(pbuffer + 8)) & 0x1;
553  pdata->pad_i2c_hv__config =
554  (*(pbuffer + 9));
556  (*(pbuffer + 10)) & 0x1;
557  pdata->gpio_hv_pad__ctrl =
558  (*(pbuffer + 11)) & 0x3;
559  pdata->gpio_hv_mux__ctrl =
560  (*(pbuffer + 12)) & 0x1F;
561  pdata->gpio__tio_hv_status =
562  (*(pbuffer + 13)) & 0x3;
563  pdata->gpio__fio_hv_status =
564  (*(pbuffer + 14)) & 0x3;
566  (*(pbuffer + 15)) & 0x7;
568  (*(pbuffer + 16)) & 0x1F;
570  (*(pbuffer + 17)) & 0x1;
572  (*(pbuffer + 18));
574  (*(pbuffer + 19));
576  (*(pbuffer + 20));
578  (*(pbuffer + 21));
580  (*(pbuffer + 22));
582  (*(pbuffer + 23));
584  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 24));
586  (*(pbuffer + 26));
587  pdata->algo__range_min_clip =
588  (*(pbuffer + 27));
590  (*(pbuffer + 28)) & 0xF;
592  (*(pbuffer + 29));
594  (*(pbuffer + 30)) & 0xF;
596  (*(pbuffer + 31));
597 
598  LOG_FUNCTION_END(status);
599 
600  return status;
601 }
602 
603 
605  VL53L1_DEV Dev,
606  VL53L1_static_config_t *pdata)
607 {
615 
616  LOG_FUNCTION_START("");
617 
618  if (status == VL53L1_ERROR_NONE) /*lint !e774 always true*/
620  pdata,
622  comms_buffer);
623 
624  if (status == VL53L1_ERROR_NONE)
625  status = VL53L1_WriteMulti(
626  Dev,
628  comms_buffer,
630 
631  LOG_FUNCTION_END(status);
632 
633  return status;
634 }
635 
636 
637 #ifdef VL53L1_DEBUG
638 VL53L1_Error VL53L1_get_static_config(
639  VL53L1_DEV Dev,
640  VL53L1_static_config_t *pdata)
641 {
649 
650  LOG_FUNCTION_START("");
651 
652  if (status == VL53L1_ERROR_NONE) /*lint !e774 always true*/
653  status = VL53L1_ReadMulti(
654  Dev,
656  comms_buffer,
658 
659  if (status == VL53L1_ERROR_NONE)
662  comms_buffer,
663  pdata);
664 
665  LOG_FUNCTION_END(status);
666 
667  return status;
668 }
669 #endif
670 
671 
674  uint16_t buf_size,
675  uint8_t *pbuffer)
676 {
683 
684  LOG_FUNCTION_START("");
685 
688 
689  *(pbuffer + 0) =
691  *(pbuffer + 1) =
693  *(pbuffer + 2) =
695  *(pbuffer + 3) =
696  pdata->cal_config__vcsel_start & 0x7F;
698  pdata->cal_config__repeat_rate & 0xFFF,
699  2,
700  pbuffer + 4);
701  *(pbuffer + 6) =
702  pdata->global_config__vcsel_width & 0x7F;
703  *(pbuffer + 7) =
705  *(pbuffer + 8) =
707  *(pbuffer + 9) =
708  pdata->phasecal_config__override & 0x1;
709  *(pbuffer + 11) =
710  pdata->dss_config__roi_mode_control & 0x7;
713  2,
714  pbuffer + 12);
717  2,
718  pbuffer + 14);
721  2,
722  pbuffer + 16);
723  *(pbuffer + 18) =
725  *(pbuffer + 19) =
727  *(pbuffer + 20) =
729  *(pbuffer + 21) =
731  LOG_FUNCTION_END(status);
732 
733 
734  return status;
735 }
736 
737 
739  uint16_t buf_size,
740  uint8_t *pbuffer,
742 {
749 
750  LOG_FUNCTION_START("");
751 
754 
756  (*(pbuffer + 0));
758  (*(pbuffer + 1));
760  (*(pbuffer + 2));
761  pdata->cal_config__vcsel_start =
762  (*(pbuffer + 3)) & 0x7F;
763  pdata->cal_config__repeat_rate =
764  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 4)) & 0xFFF;
766  (*(pbuffer + 6)) & 0x7F;
768  (*(pbuffer + 7));
769  pdata->phasecal_config__target =
770  (*(pbuffer + 8));
772  (*(pbuffer + 9)) & 0x1;
774  (*(pbuffer + 11)) & 0x7;
775  pdata->system__thresh_rate_high =
776  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 12));
777  pdata->system__thresh_rate_low =
778  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 14));
780  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 16));
782  (*(pbuffer + 18));
784  (*(pbuffer + 19));
786  (*(pbuffer + 20));
788  (*(pbuffer + 21));
789 
790  LOG_FUNCTION_END(status);
791 
792  return status;
793 }
794 
795 
797  VL53L1_DEV Dev,
799 {
807 
808  LOG_FUNCTION_START("");
809 
810  if (status == VL53L1_ERROR_NONE) /*lint !e774 always true*/
812  pdata,
814  comms_buffer);
815 
816  if (status == VL53L1_ERROR_NONE)
817  status = VL53L1_WriteMulti(
818  Dev,
820  comms_buffer,
822 
823  LOG_FUNCTION_END(status);
824 
825  return status;
826 }
827 
828 
829 #ifdef VL53L1_DEBUG
830 VL53L1_Error VL53L1_get_general_config(
831  VL53L1_DEV Dev,
833 {
841 
842  LOG_FUNCTION_START("");
843 
844  if (status == VL53L1_ERROR_NONE) /*lint !e774 always true*/
845  status = VL53L1_ReadMulti(
846  Dev,
848  comms_buffer,
850 
851  if (status == VL53L1_ERROR_NONE)
854  comms_buffer,
855  pdata);
856 
857  LOG_FUNCTION_END(status);
858 
859  return status;
860 }
861 #endif
862 
863 
865  VL53L1_timing_config_t *pdata,
866  uint16_t buf_size,
867  uint8_t *pbuffer)
868 {
875 
876  LOG_FUNCTION_START("");
877 
880 
881  *(pbuffer + 0) =
882  pdata->mm_config__timeout_macrop_a_hi & 0xF;
883  *(pbuffer + 1) =
885  *(pbuffer + 2) =
886  pdata->mm_config__timeout_macrop_b_hi & 0xF;
887  *(pbuffer + 3) =
889  *(pbuffer + 4) =
891  *(pbuffer + 5) =
893  *(pbuffer + 6) =
894  pdata->range_config__vcsel_period_a & 0x3F;
895  *(pbuffer + 7) =
897  *(pbuffer + 8) =
899  *(pbuffer + 9) =
900  pdata->range_config__vcsel_period_b & 0x3F;
903  2,
904  pbuffer + 10);
907  2,
908  pbuffer + 12);
909  *(pbuffer + 14) =
911  *(pbuffer + 15) =
915  4,
916  pbuffer + 18);
917  *(pbuffer + 22) =
918  pdata->system__fractional_enable & 0x1;
919  LOG_FUNCTION_END(status);
920 
921 
922  return status;
923 }
924 
925 
926 #ifdef PAL_EXTENDED
927 VL53L1_Error VL53L1_i2c_decode_timing_config(
928  uint16_t buf_size,
929  uint8_t *pbuffer,
930  VL53L1_timing_config_t *pdata)
931 {
938 
939  LOG_FUNCTION_START("");
940 
943 
945  (*(pbuffer + 0)) & 0xF;
947  (*(pbuffer + 1));
949  (*(pbuffer + 2)) & 0xF;
951  (*(pbuffer + 3));
953  (*(pbuffer + 4)) & 0xF;
955  (*(pbuffer + 5));
957  (*(pbuffer + 6)) & 0x3F;
959  (*(pbuffer + 7)) & 0xF;
961  (*(pbuffer + 8));
963  (*(pbuffer + 9)) & 0x3F;
965  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 10));
967  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 12));
969  (*(pbuffer + 14));
971  (*(pbuffer + 15));
973  (VL53L1_i2c_decode_uint32_t(4, pbuffer + 18));
975  (*(pbuffer + 22)) & 0x1;
976 
977  LOG_FUNCTION_END(status);
978 
979  return status;
980 }
981 #endif
982 
983 
984 #ifdef PAL_EXTENDED
985 VL53L1_Error VL53L1_set_timing_config(
986  VL53L1_DEV Dev,
987  VL53L1_timing_config_t *pdata)
988 {
996 
997  LOG_FUNCTION_START("");
998 
999  if (status == VL53L1_ERROR_NONE) /*lint !e774 always true*/
1001  pdata,
1003  comms_buffer);
1004 
1005  if (status == VL53L1_ERROR_NONE)
1006  status = VL53L1_WriteMulti(
1007  Dev,
1009  comms_buffer,
1011 
1012  LOG_FUNCTION_END(status);
1013 
1014  return status;
1015 }
1016 #endif
1017 
1018 
1019 #ifdef VL53L1_DEBUG
1020 VL53L1_Error VL53L1_get_timing_config(
1021  VL53L1_DEV Dev,
1022  VL53L1_timing_config_t *pdata)
1023 {
1031 
1032  LOG_FUNCTION_START("");
1033 
1034  if (status == VL53L1_ERROR_NONE) /*lint !e774 always true*/
1035  status = VL53L1_ReadMulti(
1036  Dev,
1038  comms_buffer,
1040 
1041  if (status == VL53L1_ERROR_NONE)
1042  status = VL53L1_i2c_decode_timing_config(
1044  comms_buffer,
1045  pdata);
1046 
1047  LOG_FUNCTION_END(status);
1048 
1049  return status;
1050 }
1051 #endif
1052 
1053 
1055  VL53L1_dynamic_config_t *pdata,
1056  uint16_t buf_size,
1057  uint8_t *pbuffer)
1058 {
1065 
1066  LOG_FUNCTION_START("");
1067 
1068  if (VL53L1_DYNAMIC_CONFIG_I2C_SIZE_BYTES > buf_size)
1070 
1071  *(pbuffer + 0) =
1072  pdata->system__grouped_parameter_hold_0 & 0x3;
1074  pdata->system__thresh_high,
1075  2,
1076  pbuffer + 1);
1078  pdata->system__thresh_low,
1079  2,
1080  pbuffer + 3);
1081  *(pbuffer + 5) =
1082  pdata->system__enable_xtalk_per_quadrant & 0x1;
1083  *(pbuffer + 6) =
1084  pdata->system__seed_config & 0x7;
1085  *(pbuffer + 7) =
1086  pdata->sd_config__woi_sd0;
1087  *(pbuffer + 8) =
1088  pdata->sd_config__woi_sd1;
1089  *(pbuffer + 9) =
1090  pdata->sd_config__initial_phase_sd0 & 0x7F;
1091  *(pbuffer + 10) =
1092  pdata->sd_config__initial_phase_sd1 & 0x7F;
1093  *(pbuffer + 11) =
1094  pdata->system__grouped_parameter_hold_1 & 0x3;
1095  *(pbuffer + 12) =
1096  pdata->sd_config__first_order_select & 0x3;
1097  *(pbuffer + 13) =
1098  pdata->sd_config__quantifier & 0xF;
1099  *(pbuffer + 14) =
1101  *(pbuffer + 15) =
1103  *(pbuffer + 16) =
1104  pdata->system__sequence_config;
1105  *(pbuffer + 17) =
1106  pdata->system__grouped_parameter_hold & 0x3;
1107  LOG_FUNCTION_END(status);
1108 
1109 
1110  return status;
1111 }
1112 
1113 #ifdef PAL_EXTENDED
1114 VL53L1_Error VL53L1_i2c_decode_dynamic_config(
1115  uint16_t buf_size,
1116  uint8_t *pbuffer,
1117  VL53L1_dynamic_config_t *pdata)
1118 {
1125 
1126  LOG_FUNCTION_START("");
1127 
1128  if (VL53L1_DYNAMIC_CONFIG_I2C_SIZE_BYTES > buf_size)
1130 
1132  (*(pbuffer + 0)) & 0x3;
1133  pdata->system__thresh_high =
1134  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 1));
1135  pdata->system__thresh_low =
1136  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 3));
1138  (*(pbuffer + 5)) & 0x1;
1139  pdata->system__seed_config =
1140  (*(pbuffer + 6)) & 0x7;
1141  pdata->sd_config__woi_sd0 =
1142  (*(pbuffer + 7));
1143  pdata->sd_config__woi_sd1 =
1144  (*(pbuffer + 8));
1146  (*(pbuffer + 9)) & 0x7F;
1148  (*(pbuffer + 10)) & 0x7F;
1150  (*(pbuffer + 11)) & 0x3;
1152  (*(pbuffer + 12)) & 0x3;
1153  pdata->sd_config__quantifier =
1154  (*(pbuffer + 13)) & 0xF;
1156  (*(pbuffer + 14));
1158  (*(pbuffer + 15));
1159  pdata->system__sequence_config =
1160  (*(pbuffer + 16));
1162  (*(pbuffer + 17)) & 0x3;
1163 
1164  LOG_FUNCTION_END(status);
1165 
1166  return status;
1167 }
1168 #endif
1169 
1170 
1172  VL53L1_DEV Dev,
1173  VL53L1_dynamic_config_t *pdata)
1174 {
1182 
1183  LOG_FUNCTION_START("");
1184 
1185  if (status == VL53L1_ERROR_NONE) /*lint !e774 always true*/
1187  pdata,
1189  comms_buffer);
1190 
1191  if (status == VL53L1_ERROR_NONE)
1192  status = VL53L1_WriteMulti(
1193  Dev,
1195  comms_buffer,
1197 
1198  LOG_FUNCTION_END(status);
1199 
1200  return status;
1201 }
1202 
1203 
1204 #ifdef VL53L1_DEBUG
1205 VL53L1_Error VL53L1_get_dynamic_config(
1206  VL53L1_DEV Dev,
1207  VL53L1_dynamic_config_t *pdata)
1208 {
1216 
1217  LOG_FUNCTION_START("");
1218 
1219  if (status == VL53L1_ERROR_NONE) /*lint !e774 always true*/
1220  status = VL53L1_ReadMulti(
1221  Dev,
1223  comms_buffer,
1225 
1226  if (status == VL53L1_ERROR_NONE)
1227  status = VL53L1_i2c_decode_dynamic_config(
1229  comms_buffer,
1230  pdata);
1231 
1232  LOG_FUNCTION_END(status);
1233 
1234  return status;
1235 }
1236 #endif
1237 
1238 
1240  VL53L1_system_control_t *pdata,
1241  uint16_t buf_size,
1242  uint8_t *pbuffer)
1243 {
1250 
1251  LOG_FUNCTION_START("");
1252 
1253  if (VL53L1_SYSTEM_CONTROL_I2C_SIZE_BYTES > buf_size)
1255 
1256  *(pbuffer + 0) =
1257  pdata->power_management__go1_power_force & 0x1;
1258  *(pbuffer + 1) =
1259  pdata->system__stream_count_ctrl & 0x1;
1260  *(pbuffer + 2) =
1261  pdata->firmware__enable & 0x1;
1262  *(pbuffer + 3) =
1263  pdata->system__interrupt_clear & 0x3;
1264  *(pbuffer + 4) =
1265  pdata->system__mode_start;
1266  LOG_FUNCTION_END(status);
1267 
1268 
1269  return status;
1270 }
1271 
1272 
1273 #ifdef PAL_EXTENDED
1274 VL53L1_Error VL53L1_i2c_decode_system_control(
1275  uint16_t buf_size,
1276  uint8_t *pbuffer,
1277  VL53L1_system_control_t *pdata)
1278 {
1285 
1286  LOG_FUNCTION_START("");
1287 
1288  if (VL53L1_SYSTEM_CONTROL_I2C_SIZE_BYTES > buf_size)
1290 
1292  (*(pbuffer + 0)) & 0x1;
1293  pdata->system__stream_count_ctrl =
1294  (*(pbuffer + 1)) & 0x1;
1295  pdata->firmware__enable =
1296  (*(pbuffer + 2)) & 0x1;
1297  pdata->system__interrupt_clear =
1298  (*(pbuffer + 3)) & 0x3;
1299  pdata->system__mode_start =
1300  (*(pbuffer + 4));
1301 
1302  LOG_FUNCTION_END(status);
1303 
1304  return status;
1305 }
1306 #endif
1307 
1308 
1310  VL53L1_DEV Dev,
1311  VL53L1_system_control_t *pdata)
1312 {
1320 
1321  LOG_FUNCTION_START("");
1322 
1323  if (status == VL53L1_ERROR_NONE) /*lint !e774 always true*/
1325  pdata,
1327  comms_buffer);
1328 
1329  if (status == VL53L1_ERROR_NONE)
1330  status = VL53L1_WriteMulti(
1331  Dev,
1333  comms_buffer,
1335 
1336  LOG_FUNCTION_END(status);
1337 
1338  return status;
1339 }
1340 
1341 
1342 #ifdef VL53L1_DEBUG
1343 VL53L1_Error VL53L1_get_system_control(
1344  VL53L1_DEV Dev,
1345  VL53L1_system_control_t *pdata)
1346 {
1354 
1355  LOG_FUNCTION_START("");
1356 
1357  if (status == VL53L1_ERROR_NONE) /*lint !e774 always true*/
1358  status = VL53L1_ReadMulti(
1359  Dev,
1361  comms_buffer,
1363 
1364  if (status == VL53L1_ERROR_NONE)
1365  status = VL53L1_i2c_decode_system_control(
1367  comms_buffer,
1368  pdata);
1369 
1370  LOG_FUNCTION_END(status);
1371 
1372  return status;
1373 }
1374 #endif
1375 
1376 
1377 #ifdef PAL_EXTENDED
1378 VL53L1_Error VL53L1_i2c_encode_system_results(
1379  VL53L1_system_results_t *pdata,
1380  uint16_t buf_size,
1381  uint8_t *pbuffer)
1382 {
1389 
1390  LOG_FUNCTION_START("");
1391 
1392  if (VL53L1_SYSTEM_RESULTS_I2C_SIZE_BYTES > buf_size)
1394 
1395  *(pbuffer + 0) =
1396  pdata->result__interrupt_status & 0x3F;
1397  *(pbuffer + 1) =
1398  pdata->result__range_status;
1399  *(pbuffer + 2) =
1400  pdata->result__report_status & 0xF;
1401  *(pbuffer + 3) =
1402  pdata->result__stream_count;
1405  2,
1406  pbuffer + 4);
1409  2,
1410  pbuffer + 6);
1413  2,
1414  pbuffer + 8);
1416  pdata->result__sigma_sd0,
1417  2,
1418  pbuffer + 10);
1420  pdata->result__phase_sd0,
1421  2,
1422  pbuffer + 12);
1425  2,
1426  pbuffer + 14);
1429  2,
1430  pbuffer + 16);
1433  2,
1434  pbuffer + 18);
1437  2,
1438  pbuffer + 20);
1441  2,
1442  pbuffer + 22);
1445  2,
1446  pbuffer + 24);
1449  2,
1450  pbuffer + 26);
1453  2,
1454  pbuffer + 28);
1456  pdata->result__sigma_sd1,
1457  2,
1458  pbuffer + 30);
1460  pdata->result__phase_sd1,
1461  2,
1462  pbuffer + 32);
1465  2,
1466  pbuffer + 34);
1468  pdata->result__spare_0_sd1,
1469  2,
1470  pbuffer + 36);
1472  pdata->result__spare_1_sd1,
1473  2,
1474  pbuffer + 38);
1476  pdata->result__spare_2_sd1,
1477  2,
1478  pbuffer + 40);
1479  *(pbuffer + 42) =
1480  pdata->result__spare_3_sd1;
1481  *(pbuffer + 43) =
1482  pdata->result__thresh_info;
1483  LOG_FUNCTION_END(status);
1484 
1485 
1486  return status;
1487 }
1488 #endif
1489 
1490 
1492  uint16_t buf_size,
1493  uint8_t *pbuffer,
1494  VL53L1_system_results_t *pdata)
1495 {
1502 
1503  LOG_FUNCTION_START("");
1504 
1505  if (VL53L1_SYSTEM_RESULTS_I2C_SIZE_BYTES > buf_size)
1507 
1508  pdata->result__interrupt_status =
1509  (*(pbuffer + 0)) & 0x3F;
1510  pdata->result__range_status =
1511  (*(pbuffer + 1));
1512  pdata->result__report_status =
1513  (*(pbuffer + 2)) & 0xF;
1514  pdata->result__stream_count =
1515  (*(pbuffer + 3));
1517  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 4));
1519  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 6));
1521  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 8));
1522  pdata->result__sigma_sd0 =
1523  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 10));
1524  pdata->result__phase_sd0 =
1525  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 12));
1527  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 14));
1529  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 16));
1531  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 18));
1533  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 20));
1535  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 22));
1537  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 24));
1539  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 26));
1541  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 28));
1542  pdata->result__sigma_sd1 =
1543  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 30));
1544  pdata->result__phase_sd1 =
1545  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 32));
1547  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 34));
1548  pdata->result__spare_0_sd1 =
1549  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 36));
1550  pdata->result__spare_1_sd1 =
1551  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 38));
1552  pdata->result__spare_2_sd1 =
1553  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 40));
1554  pdata->result__spare_3_sd1 =
1555  (*(pbuffer + 42));
1556  pdata->result__thresh_info =
1557  (*(pbuffer + 43));
1558 
1559  LOG_FUNCTION_END(status);
1560 
1561  return status;
1562 }
1563 
1564 
1565 #ifdef PAL_EXTENDED
1566 VL53L1_Error VL53L1_set_system_results(
1567  VL53L1_DEV Dev,
1568  VL53L1_system_results_t *pdata)
1569 {
1577 
1578  LOG_FUNCTION_START("");
1579 
1580  if (status == VL53L1_ERROR_NONE) /*lint !e774 always true*/
1581  status = VL53L1_i2c_encode_system_results(
1582  pdata,
1584  comms_buffer);
1585 
1586  if (status == VL53L1_ERROR_NONE)
1587  status = VL53L1_WriteMulti(
1588  Dev,
1590  comms_buffer,
1592 
1593  LOG_FUNCTION_END(status);
1594 
1595  return status;
1596 }
1597 #endif
1598 
1599 
1601  VL53L1_DEV Dev,
1602  VL53L1_system_results_t *pdata)
1603 {
1611 
1612  LOG_FUNCTION_START("");
1613 
1614  if (status == VL53L1_ERROR_NONE) /*lint !e774 always true*/
1615  status = VL53L1_ReadMulti(
1616  Dev,
1618  comms_buffer,
1620 
1621  if (status == VL53L1_ERROR_NONE)
1624  comms_buffer,
1625  pdata);
1626 
1627  LOG_FUNCTION_END(status);
1628 
1629  return status;
1630 }
1631 
1632 
1633 #ifdef PAL_EXTENDED
1634 VL53L1_Error VL53L1_i2c_encode_core_results(
1635  VL53L1_core_results_t *pdata,
1636  uint16_t buf_size,
1637  uint8_t *pbuffer)
1638 {
1645 
1646  LOG_FUNCTION_START("");
1647 
1648  if (VL53L1_CORE_RESULTS_I2C_SIZE_BYTES > buf_size)
1650 
1653  4,
1654  pbuffer + 0);
1657  4,
1658  pbuffer + 4);
1661  4,
1662  pbuffer + 8);
1665  4,
1666  pbuffer + 12);
1669  4,
1670  pbuffer + 16);
1673  4,
1674  pbuffer + 20);
1677  4,
1678  pbuffer + 24);
1681  4,
1682  pbuffer + 28);
1683  *(pbuffer + 32) =
1684  pdata->result_core__spare_0;
1685  LOG_FUNCTION_END(status);
1686 
1687 
1688  return status;
1689 }
1690 #endif
1691 
1692 
1694  uint16_t buf_size,
1695  uint8_t *pbuffer,
1696  VL53L1_core_results_t *pdata)
1697 {
1704 
1705  LOG_FUNCTION_START("");
1706 
1707  if (VL53L1_CORE_RESULTS_I2C_SIZE_BYTES > buf_size)
1709 
1711  (VL53L1_i2c_decode_uint32_t(4, pbuffer + 0));
1713  (VL53L1_i2c_decode_uint32_t(4, pbuffer + 4));
1715  (VL53L1_i2c_decode_int32_t(4, pbuffer + 8));
1717  (VL53L1_i2c_decode_uint32_t(4, pbuffer + 12));
1719  (VL53L1_i2c_decode_uint32_t(4, pbuffer + 16));
1721  (VL53L1_i2c_decode_uint32_t(4, pbuffer + 20));
1723  (VL53L1_i2c_decode_int32_t(4, pbuffer + 24));
1725  (VL53L1_i2c_decode_uint32_t(4, pbuffer + 28));
1726  pdata->result_core__spare_0 =
1727  (*(pbuffer + 32));
1728 
1729  LOG_FUNCTION_END(status);
1730 
1731  return status;
1732 }
1733 
1734 
1735 #ifdef VL53L1_DEBUG
1736 VL53L1_Error VL53L1_set_core_results(
1737  VL53L1_DEV Dev,
1738  VL53L1_core_results_t *pdata)
1739 {
1747 
1748  LOG_FUNCTION_START("");
1749 
1750  if (status == VL53L1_ERROR_NONE) /*lint !e774 always true*/
1751  status = VL53L1_i2c_encode_core_results(
1752  pdata,
1754  comms_buffer);
1755 
1756  if (status == VL53L1_ERROR_NONE)
1757  status = VL53L1_disable_firmware(Dev);
1758 
1759  if (status == VL53L1_ERROR_NONE)
1760  status = VL53L1_WriteMulti(
1761  Dev,
1763  comms_buffer,
1765 
1766  if (status == VL53L1_ERROR_NONE)
1767  status = VL53L1_enable_firmware(Dev);
1768 
1769  LOG_FUNCTION_END(status);
1770 
1771  return status;
1772 }
1773 #endif
1774 
1775 
1776 #ifdef PAL_EXTENDED
1777 VL53L1_Error VL53L1_get_core_results(
1778  VL53L1_DEV Dev,
1779  VL53L1_core_results_t *pdata)
1780 {
1788 
1789  LOG_FUNCTION_START("");
1790 
1791  if (status == VL53L1_ERROR_NONE) /*lint !e774 always true*/
1792  status = VL53L1_ReadMulti(
1793  Dev,
1795  comms_buffer,
1797 
1798  if (status == VL53L1_ERROR_NONE)
1801  comms_buffer,
1802  pdata);
1803 
1804  LOG_FUNCTION_END(status);
1805 
1806  return status;
1807 }
1808 #endif
1809 
1810 
1811 #ifdef VL53L1_DEBUG
1812 VL53L1_Error VL53L1_i2c_encode_debug_results(
1813  VL53L1_debug_results_t *pdata,
1814  uint16_t buf_size,
1815  uint8_t *pbuffer)
1816 {
1823 
1824  LOG_FUNCTION_START("");
1825 
1826  if (VL53L1_DEBUG_RESULTS_I2C_SIZE_BYTES > buf_size)
1828 
1831  2,
1832  pbuffer + 0);
1833  *(pbuffer + 2) =
1834  pdata->phasecal_result__vcsel_start & 0x7F;
1835  *(pbuffer + 3) =
1837  *(pbuffer + 4) =
1839  *(pbuffer + 5) =
1840  pdata->vhv_result__coldboot_status & 0x1;
1841  *(pbuffer + 6) =
1842  pdata->vhv_result__search_result & 0x3F;
1843  *(pbuffer + 7) =
1844  pdata->vhv_result__latest_setting & 0x3F;
1846  pdata->result__osc_calibrate_val & 0x3FF,
1847  2,
1848  pbuffer + 8);
1849  *(pbuffer + 10) =
1850  pdata->ana_config__powerdown_go1 & 0x3;
1851  *(pbuffer + 11) =
1852  pdata->ana_config__ref_bg_ctrl & 0x3;
1853  *(pbuffer + 12) =
1854  pdata->ana_config__regdvdd1v2_ctrl & 0xF;
1855  *(pbuffer + 13) =
1856  pdata->ana_config__osc_slow_ctrl & 0x7;
1857  *(pbuffer + 14) =
1858  pdata->test_mode__status & 0x1;
1859  *(pbuffer + 15) =
1860  pdata->firmware__system_status & 0x3;
1861  *(pbuffer + 16) =
1862  pdata->firmware__mode_status;
1863  *(pbuffer + 17) =
1866  pdata->firmware__cal_repeat_rate_counter & 0xFFF,
1867  2,
1868  pbuffer + 18);
1870  pdata->gph__system__thresh_high,
1871  2,
1872  pbuffer + 22);
1874  pdata->gph__system__thresh_low,
1875  2,
1876  pbuffer + 24);
1877  *(pbuffer + 26) =
1879  *(pbuffer + 27) =
1880  pdata->gph__spare_0 & 0x7;
1881  *(pbuffer + 28) =
1882  pdata->gph__sd_config__woi_sd0;
1883  *(pbuffer + 29) =
1884  pdata->gph__sd_config__woi_sd1;
1885  *(pbuffer + 30) =
1886  pdata->gph__sd_config__initial_phase_sd0 & 0x7F;
1887  *(pbuffer + 31) =
1888  pdata->gph__sd_config__initial_phase_sd1 & 0x7F;
1889  *(pbuffer + 32) =
1891  *(pbuffer + 33) =
1892  pdata->gph__sd_config__quantifier & 0xF;
1893  *(pbuffer + 34) =
1895  *(pbuffer + 35) =
1897  *(pbuffer + 36) =
1899  *(pbuffer + 37) =
1900  pdata->gph__gph_id & 0x1;
1901  *(pbuffer + 38) =
1902  pdata->system__interrupt_set & 0x3;
1903  *(pbuffer + 39) =
1904  pdata->interrupt_manager__enables & 0x1F;
1905  *(pbuffer + 40) =
1906  pdata->interrupt_manager__clear & 0x1F;
1907  *(pbuffer + 41) =
1908  pdata->interrupt_manager__status & 0x1F;
1909  *(pbuffer + 42) =
1910  pdata->mcu_to_host_bank__wr_access_en & 0x1;
1911  *(pbuffer + 43) =
1913  *(pbuffer + 44) =
1914  pdata->pad_startup_mode__value_ro & 0x3;
1915  *(pbuffer + 45) =
1916  pdata->pad_startup_mode__value_ctrl & 0x3F;
1918  pdata->pll_period_us & 0x3FFFF,
1919  4,
1920  pbuffer + 46);
1923  4,
1924  pbuffer + 50);
1925  *(pbuffer + 54) =
1926  pdata->nvm_bist__complete & 0x1;
1927  *(pbuffer + 55) =
1928  pdata->nvm_bist__status & 0x1;
1929  LOG_FUNCTION_END(status);
1930 
1931 
1932  return status;
1933 }
1934 #endif
1935 
1936 
1938  uint16_t buf_size,
1939  uint8_t *pbuffer,
1940  VL53L1_debug_results_t *pdata)
1941 {
1948 
1949  LOG_FUNCTION_START("");
1950 
1951  if (VL53L1_DEBUG_RESULTS_I2C_SIZE_BYTES > buf_size)
1953 
1955  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 0));
1957  (*(pbuffer + 2)) & 0x7F;
1959  (*(pbuffer + 3)) & 0x3F;
1961  (*(pbuffer + 4)) & 0x3;
1963  (*(pbuffer + 5)) & 0x1;
1964  pdata->vhv_result__search_result =
1965  (*(pbuffer + 6)) & 0x3F;
1967  (*(pbuffer + 7)) & 0x3F;
1968  pdata->result__osc_calibrate_val =
1969  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 8)) & 0x3FF;
1970  pdata->ana_config__powerdown_go1 =
1971  (*(pbuffer + 10)) & 0x3;
1972  pdata->ana_config__ref_bg_ctrl =
1973  (*(pbuffer + 11)) & 0x3;
1975  (*(pbuffer + 12)) & 0xF;
1976  pdata->ana_config__osc_slow_ctrl =
1977  (*(pbuffer + 13)) & 0x7;
1978  pdata->test_mode__status =
1979  (*(pbuffer + 14)) & 0x1;
1980  pdata->firmware__system_status =
1981  (*(pbuffer + 15)) & 0x3;
1982  pdata->firmware__mode_status =
1983  (*(pbuffer + 16));
1985  (*(pbuffer + 17));
1987  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 18)) & 0xFFF;
1988  pdata->gph__system__thresh_high =
1989  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 22));
1990  pdata->gph__system__thresh_low =
1991  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 24));
1993  (*(pbuffer + 26)) & 0x1;
1994  pdata->gph__spare_0 =
1995  (*(pbuffer + 27)) & 0x7;
1996  pdata->gph__sd_config__woi_sd0 =
1997  (*(pbuffer + 28));
1998  pdata->gph__sd_config__woi_sd1 =
1999  (*(pbuffer + 29));
2001  (*(pbuffer + 30)) & 0x7F;
2003  (*(pbuffer + 31)) & 0x7F;
2005  (*(pbuffer + 32)) & 0x3;
2007  (*(pbuffer + 33)) & 0xF;
2009  (*(pbuffer + 34));
2011  (*(pbuffer + 35));
2013  (*(pbuffer + 36));
2014  pdata->gph__gph_id =
2015  (*(pbuffer + 37)) & 0x1;
2016  pdata->system__interrupt_set =
2017  (*(pbuffer + 38)) & 0x3;
2019  (*(pbuffer + 39)) & 0x1F;
2020  pdata->interrupt_manager__clear =
2021  (*(pbuffer + 40)) & 0x1F;
2022  pdata->interrupt_manager__status =
2023  (*(pbuffer + 41)) & 0x1F;
2025  (*(pbuffer + 42)) & 0x1;
2027  (*(pbuffer + 43)) & 0x1;
2029  (*(pbuffer + 44)) & 0x3;
2031  (*(pbuffer + 45)) & 0x3F;
2032  pdata->pll_period_us =
2033  (VL53L1_i2c_decode_uint32_t(4, pbuffer + 46)) & 0x3FFFF;
2035  (VL53L1_i2c_decode_uint32_t(4, pbuffer + 50));
2036  pdata->nvm_bist__complete =
2037  (*(pbuffer + 54)) & 0x1;
2038  pdata->nvm_bist__status =
2039  (*(pbuffer + 55)) & 0x1;
2040 
2041  LOG_FUNCTION_END(status);
2042 
2043  return status;
2044 }
2045 
2046 
2047 #ifdef VL53L1_DEBUG
2048 VL53L1_Error VL53L1_set_debug_results(
2049  VL53L1_DEV Dev,
2050  VL53L1_debug_results_t *pdata)
2051 {
2059 
2060  LOG_FUNCTION_START("");
2061 
2062  if (status == VL53L1_ERROR_NONE) /*lint !e774 always true*/
2063  status = VL53L1_i2c_encode_debug_results(
2064  pdata,
2066  comms_buffer);
2067 
2068  if (status == VL53L1_ERROR_NONE)
2069  status = VL53L1_disable_firmware(Dev);
2070 
2071  if (status == VL53L1_ERROR_NONE)
2072  status = VL53L1_WriteMulti(
2073  Dev,
2075  comms_buffer,
2077 
2078  if (status == VL53L1_ERROR_NONE)
2079  status = VL53L1_enable_firmware(Dev);
2080 
2081  LOG_FUNCTION_END(status);
2082 
2083  return status;
2084 }
2085 
2086 
2087 VL53L1_Error VL53L1_get_debug_results(
2088  VL53L1_DEV Dev,
2089  VL53L1_debug_results_t *pdata)
2090 {
2098 
2099  LOG_FUNCTION_START("");
2100 
2101  if (status == VL53L1_ERROR_NONE) /*lint !e774 always true*/
2102  status = VL53L1_ReadMulti(
2103  Dev,
2105  comms_buffer,
2107 
2108  if (status == VL53L1_ERROR_NONE)
2111  comms_buffer,
2112  pdata);
2113 
2114  LOG_FUNCTION_END(status);
2115 
2116  return status;
2117 }
2118 #endif
2119 
2120 
2121 #ifdef PAL_EXTENDED
2122 VL53L1_Error VL53L1_i2c_encode_nvm_copy_data(
2123  VL53L1_nvm_copy_data_t *pdata,
2124  uint16_t buf_size,
2125  uint8_t *pbuffer)
2126 {
2133 
2134  LOG_FUNCTION_START("");
2135 
2136  if (VL53L1_NVM_COPY_DATA_I2C_SIZE_BYTES > buf_size)
2138 
2139  *(pbuffer + 0) =
2140  pdata->identification__model_id;
2141  *(pbuffer + 1) =
2143  *(pbuffer + 2) =
2147  2,
2148  pbuffer + 3);
2149  *(pbuffer + 5) =
2150  pdata->ana_config__fast_osc__trim_max & 0x7F;
2151  *(pbuffer + 6) =
2152  pdata->ana_config__fast_osc__freq_set & 0x7;
2153  *(pbuffer + 7) =
2154  pdata->ana_config__vcsel_trim & 0x7;
2155  *(pbuffer + 8) =
2156  pdata->ana_config__vcsel_selion & 0x3F;
2157  *(pbuffer + 9) =
2158  pdata->ana_config__vcsel_selion_max & 0x3F;
2159  *(pbuffer + 10) =
2160  pdata->protected_laser_safety__lock_bit & 0x1;
2161  *(pbuffer + 11) =
2162  pdata->laser_safety__key & 0x7F;
2163  *(pbuffer + 12) =
2164  pdata->laser_safety__key_ro & 0x1;
2165  *(pbuffer + 13) =
2166  pdata->laser_safety__clip & 0x3F;
2167  *(pbuffer + 14) =
2168  pdata->laser_safety__mult & 0x3F;
2169  *(pbuffer + 15) =
2171  *(pbuffer + 16) =
2173  *(pbuffer + 17) =
2175  *(pbuffer + 18) =
2177  *(pbuffer + 19) =
2179  *(pbuffer + 20) =
2181  *(pbuffer + 21) =
2183  *(pbuffer + 22) =
2185  *(pbuffer + 23) =
2187  *(pbuffer + 24) =
2189  *(pbuffer + 25) =
2191  *(pbuffer + 26) =
2193  *(pbuffer + 27) =
2195  *(pbuffer + 28) =
2197  *(pbuffer + 29) =
2199  *(pbuffer + 30) =
2201  *(pbuffer + 31) =
2203  *(pbuffer + 32) =
2205  *(pbuffer + 33) =
2207  *(pbuffer + 34) =
2209  *(pbuffer + 35) =
2211  *(pbuffer + 36) =
2213  *(pbuffer + 37) =
2215  *(pbuffer + 38) =
2217  *(pbuffer + 39) =
2219  *(pbuffer + 40) =
2221  *(pbuffer + 41) =
2223  *(pbuffer + 42) =
2225  *(pbuffer + 43) =
2227  *(pbuffer + 44) =
2229  *(pbuffer + 45) =
2231  *(pbuffer + 46) =
2233  *(pbuffer + 47) =
2235  *(pbuffer + 48) =
2237  LOG_FUNCTION_END(status);
2238 
2239 
2240  return status;
2241 }
2242 #endif
2243 
2244 
2246  uint16_t buf_size,
2247  uint8_t *pbuffer,
2248  VL53L1_nvm_copy_data_t *pdata)
2249 {
2256 
2257  LOG_FUNCTION_START("");
2258 
2259  if (VL53L1_NVM_COPY_DATA_I2C_SIZE_BYTES > buf_size)
2261 
2262  pdata->identification__model_id =
2263  (*(pbuffer + 0));
2265  (*(pbuffer + 1));
2267  (*(pbuffer + 2));
2268  pdata->identification__module_id =
2269  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 3));
2271  (*(pbuffer + 5)) & 0x7F;
2273  (*(pbuffer + 6)) & 0x7;
2274  pdata->ana_config__vcsel_trim =
2275  (*(pbuffer + 7)) & 0x7;
2276  pdata->ana_config__vcsel_selion =
2277  (*(pbuffer + 8)) & 0x3F;
2279  (*(pbuffer + 9)) & 0x3F;
2281  (*(pbuffer + 10)) & 0x1;
2282  pdata->laser_safety__key =
2283  (*(pbuffer + 11)) & 0x7F;
2284  pdata->laser_safety__key_ro =
2285  (*(pbuffer + 12)) & 0x1;
2286  pdata->laser_safety__clip =
2287  (*(pbuffer + 13)) & 0x3F;
2288  pdata->laser_safety__mult =
2289  (*(pbuffer + 14)) & 0x3F;
2291  (*(pbuffer + 15));
2293  (*(pbuffer + 16));
2295  (*(pbuffer + 17));
2297  (*(pbuffer + 18));
2299  (*(pbuffer + 19));
2301  (*(pbuffer + 20));
2303  (*(pbuffer + 21));
2305  (*(pbuffer + 22));
2307  (*(pbuffer + 23));
2309  (*(pbuffer + 24));
2311  (*(pbuffer + 25));
2313  (*(pbuffer + 26));
2315  (*(pbuffer + 27));
2317  (*(pbuffer + 28));
2319  (*(pbuffer + 29));
2321  (*(pbuffer + 30));
2323  (*(pbuffer + 31));
2325  (*(pbuffer + 32));
2327  (*(pbuffer + 33));
2329  (*(pbuffer + 34));
2331  (*(pbuffer + 35));
2333  (*(pbuffer + 36));
2335  (*(pbuffer + 37));
2337  (*(pbuffer + 38));
2339  (*(pbuffer + 39));
2341  (*(pbuffer + 40));
2343  (*(pbuffer + 41));
2345  (*(pbuffer + 42));
2347  (*(pbuffer + 43));
2349  (*(pbuffer + 44));
2351  (*(pbuffer + 45));
2353  (*(pbuffer + 46));
2355  (*(pbuffer + 47));
2357  (*(pbuffer + 48));
2358 
2359  LOG_FUNCTION_END(status);
2360 
2361  return status;
2362 }
2363 
2364 #ifdef PAL_EXTENDED
2365 VL53L1_Error VL53L1_set_nvm_copy_data(
2366  VL53L1_DEV Dev,
2367  VL53L1_nvm_copy_data_t *pdata)
2368 {
2376 
2377  LOG_FUNCTION_START("");
2378 
2379  if (status == VL53L1_ERROR_NONE) /*lint !e774 always true*/
2380  status = VL53L1_i2c_encode_nvm_copy_data(
2381  pdata,
2383  comms_buffer);
2384 
2385  if (status == VL53L1_ERROR_NONE)
2386  status = VL53L1_disable_firmware(Dev);
2387 
2388  if (status == VL53L1_ERROR_NONE)
2389  status = VL53L1_WriteMulti(
2390  Dev,
2392  comms_buffer,
2394 
2395  if (status == VL53L1_ERROR_NONE)
2396  status = VL53L1_enable_firmware(Dev);
2397 
2398  LOG_FUNCTION_END(status);
2399 
2400  return status;
2401 }
2402 #endif
2403 
2404 
2406  VL53L1_DEV Dev,
2407  VL53L1_nvm_copy_data_t *pdata)
2408 {
2416 
2417  LOG_FUNCTION_START("");
2418 
2419  if (status == VL53L1_ERROR_NONE) /*lint !e774 always true*/
2420  status = VL53L1_ReadMulti(
2421  Dev,
2423  comms_buffer,
2425 
2426  if (status == VL53L1_ERROR_NONE)
2429  comms_buffer,
2430  pdata);
2431 
2432  LOG_FUNCTION_END(status);
2433 
2434  return status;
2435 }
2436 
2437 
2438 #ifdef VL53L1_DEBUG
2439 VL53L1_Error VL53L1_i2c_encode_prev_shadow_system_results(
2441  uint16_t buf_size,
2442  uint8_t *pbuffer)
2443 {
2450 
2451  LOG_FUNCTION_START("");
2452 
2455 
2456  *(pbuffer + 0) =
2458  *(pbuffer + 1) =
2460  *(pbuffer + 2) =
2461  pdata->prev_shadow_result__report_status & 0xF;
2462  *(pbuffer + 3) =
2466  2,
2467  pbuffer + 4);
2470  2,
2471  pbuffer + 6);
2474  2,
2475  pbuffer + 8);
2478  2,
2479  pbuffer + 10);
2482  2,
2483  pbuffer + 12);
2486  2,
2487  pbuffer + 14);
2490  2,
2491  pbuffer + 16);
2494  2,
2495  pbuffer + 18);
2498  2,
2499  pbuffer + 20);
2502  2,
2503  pbuffer + 22);
2506  2,
2507  pbuffer + 24);
2510  2,
2511  pbuffer + 26);
2514  2,
2515  pbuffer + 28);
2518  2,
2519  pbuffer + 30);
2522  2,
2523  pbuffer + 32);
2526  2,
2527  pbuffer + 34);
2530  2,
2531  pbuffer + 36);
2534  2,
2535  pbuffer + 38);
2538  2,
2539  pbuffer + 40);
2542  2,
2543  pbuffer + 42);
2544  LOG_FUNCTION_END(status);
2545 
2546 
2547  return status;
2548 }
2549 
2550 
2551 VL53L1_Error VL53L1_i2c_decode_prev_shadow_system_results(
2552  uint16_t buf_size,
2553  uint8_t *pbuffer,
2555 {
2562 
2563  LOG_FUNCTION_START("");
2564 
2567 
2569  (*(pbuffer + 0)) & 0x3F;
2571  (*(pbuffer + 1));
2573  (*(pbuffer + 2)) & 0xF;
2575  (*(pbuffer + 3));
2577  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 4));
2579  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 6));
2581  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 8));
2583  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 10));
2585  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 12));
2587  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 14));
2589  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 16));
2591  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 18));
2593  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 20));
2595  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 22));
2597  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 24));
2599  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 26));
2601  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 28));
2603  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 30));
2605  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 32));
2607  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 34));
2609  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 36));
2611  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 38));
2613  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 40));
2615  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 42));
2616 
2617  LOG_FUNCTION_END(status);
2618 
2619  return status;
2620 }
2621 
2622 
2623 VL53L1_Error VL53L1_set_prev_shadow_system_results(
2624  VL53L1_DEV Dev,
2626 {
2634 
2635  LOG_FUNCTION_START("");
2636 
2637  if (status == VL53L1_ERROR_NONE) /*lint !e774 always true*/
2638  status = VL53L1_i2c_encode_prev_shadow_system_results(
2639  pdata,
2641  comms_buffer);
2642 
2643  if (status == VL53L1_ERROR_NONE)
2644  status = VL53L1_disable_firmware(Dev);
2645 
2646  if (status == VL53L1_ERROR_NONE)
2647  status = VL53L1_WriteMulti(
2648  Dev,
2650  comms_buffer,
2652 
2653  if (status == VL53L1_ERROR_NONE)
2654  status = VL53L1_enable_firmware(Dev);
2655 
2656  LOG_FUNCTION_END(status);
2657 
2658  return status;
2659 }
2660 
2661 
2662 VL53L1_Error VL53L1_get_prev_shadow_system_results(
2663  VL53L1_DEV Dev,
2665 {
2673 
2674  LOG_FUNCTION_START("");
2675 
2676  if (status == VL53L1_ERROR_NONE) /*lint !e774 always true*/
2677  status = VL53L1_disable_firmware(Dev);
2678 
2679  if (status == VL53L1_ERROR_NONE)
2680  status = VL53L1_ReadMulti(
2681  Dev,
2683  comms_buffer,
2685 
2686  if (status == VL53L1_ERROR_NONE)
2687  status = VL53L1_enable_firmware(Dev);
2688 
2689  if (status == VL53L1_ERROR_NONE)
2690  status = VL53L1_i2c_decode_prev_shadow_system_results(
2692  comms_buffer,
2693  pdata);
2694 
2695  LOG_FUNCTION_END(status);
2696 
2697  return status;
2698 }
2699 
2700 
2701 VL53L1_Error VL53L1_i2c_encode_prev_shadow_core_results(
2703  uint16_t buf_size,
2704  uint8_t *pbuffer)
2705 {
2712 
2713  LOG_FUNCTION_START("");
2714 
2717 
2720  4,
2721  pbuffer + 0);
2724  4,
2725  pbuffer + 4);
2728  4,
2729  pbuffer + 8);
2732  4,
2733  pbuffer + 12);
2736  4,
2737  pbuffer + 16);
2740  4,
2741  pbuffer + 20);
2744  4,
2745  pbuffer + 24);
2748  4,
2749  pbuffer + 28);
2750  *(pbuffer + 32) =
2752  LOG_FUNCTION_END(status);
2753 
2754 
2755  return status;
2756 }
2757 
2758 
2759 VL53L1_Error VL53L1_i2c_decode_prev_shadow_core_results(
2760  uint16_t buf_size,
2761  uint8_t *pbuffer,
2763 {
2770 
2771  LOG_FUNCTION_START("");
2772 
2775 
2777  (VL53L1_i2c_decode_uint32_t(4, pbuffer + 0));
2779  (VL53L1_i2c_decode_uint32_t(4, pbuffer + 4));
2781  (VL53L1_i2c_decode_int32_t(4, pbuffer + 8));
2783  (VL53L1_i2c_decode_uint32_t(4, pbuffer + 12));
2785  (VL53L1_i2c_decode_uint32_t(4, pbuffer + 16));
2787  (VL53L1_i2c_decode_uint32_t(4, pbuffer + 20));
2789  (VL53L1_i2c_decode_int32_t(4, pbuffer + 24));
2791  (VL53L1_i2c_decode_uint32_t(4, pbuffer + 28));
2793  (*(pbuffer + 32));
2794 
2795  LOG_FUNCTION_END(status);
2796 
2797  return status;
2798 }
2799 
2800 
2801 VL53L1_Error VL53L1_set_prev_shadow_core_results(
2802  VL53L1_DEV Dev,
2804 {
2812 
2813  LOG_FUNCTION_START("");
2814 
2815  if (status == VL53L1_ERROR_NONE) /*lint !e774 always true*/
2816  status = VL53L1_i2c_encode_prev_shadow_core_results(
2817  pdata,
2819  comms_buffer);
2820 
2821  if (status == VL53L1_ERROR_NONE)
2822  status = VL53L1_disable_firmware(Dev);
2823 
2824  if (status == VL53L1_ERROR_NONE)
2825  status = VL53L1_WriteMulti(
2826  Dev,
2828  comms_buffer,
2830 
2831  if (status == VL53L1_ERROR_NONE)
2832  status = VL53L1_enable_firmware(Dev);
2833 
2834  LOG_FUNCTION_END(status);
2835 
2836  return status;
2837 }
2838 
2839 
2840 VL53L1_Error VL53L1_get_prev_shadow_core_results(
2841  VL53L1_DEV Dev,
2843 {
2851 
2852  LOG_FUNCTION_START("");
2853 
2854  if (status == VL53L1_ERROR_NONE) /*lint !e774 always true*/
2855  status = VL53L1_disable_firmware(Dev);
2856 
2857  if (status == VL53L1_ERROR_NONE)
2858  status = VL53L1_ReadMulti(
2859  Dev,
2861  comms_buffer,
2863 
2864  if (status == VL53L1_ERROR_NONE)
2865  status = VL53L1_enable_firmware(Dev);
2866 
2867  if (status == VL53L1_ERROR_NONE)
2868  status = VL53L1_i2c_decode_prev_shadow_core_results(
2870  comms_buffer,
2871  pdata);
2872 
2873  LOG_FUNCTION_END(status);
2874 
2875  return status;
2876 }
2877 
2878 
2879 VL53L1_Error VL53L1_i2c_encode_patch_debug(
2880  VL53L1_patch_debug_t *pdata,
2881  uint16_t buf_size,
2882  uint8_t *pbuffer)
2883 {
2890 
2891  LOG_FUNCTION_START("");
2892 
2893  if (VL53L1_PATCH_DEBUG_I2C_SIZE_BYTES > buf_size)
2895 
2896  *(pbuffer + 0) =
2897  pdata->result__debug_status;
2898  *(pbuffer + 1) =
2899  pdata->result__debug_stage;
2900  LOG_FUNCTION_END(status);
2901 
2902 
2903  return status;
2904 }
2905 
2906 VL53L1_Error VL53L1_i2c_decode_patch_debug(
2907  uint16_t buf_size,
2908  uint8_t *pbuffer,
2909  VL53L1_patch_debug_t *pdata)
2910 {
2917 
2918  LOG_FUNCTION_START("");
2919 
2920  if (VL53L1_PATCH_DEBUG_I2C_SIZE_BYTES > buf_size)
2922 
2923  pdata->result__debug_status =
2924  (*(pbuffer + 0));
2925  pdata->result__debug_stage =
2926  (*(pbuffer + 1));
2927 
2928  LOG_FUNCTION_END(status);
2929 
2930  return status;
2931 }
2932 
2933 
2934 VL53L1_Error VL53L1_set_patch_debug(
2935  VL53L1_DEV Dev,
2936  VL53L1_patch_debug_t *pdata)
2937 {
2945 
2946  LOG_FUNCTION_START("");
2947 
2948  if (status == VL53L1_ERROR_NONE) /*lint !e774 always true*/
2949  status = VL53L1_i2c_encode_patch_debug(
2950  pdata,
2952  comms_buffer);
2953 
2954  if (status == VL53L1_ERROR_NONE)
2955  status = VL53L1_disable_firmware(Dev);
2956 
2957  if (status == VL53L1_ERROR_NONE)
2958  status = VL53L1_WriteMulti(
2959  Dev,
2961  comms_buffer,
2963 
2964  if (status == VL53L1_ERROR_NONE)
2965  status = VL53L1_enable_firmware(Dev);
2966 
2967  LOG_FUNCTION_END(status);
2968 
2969  return status;
2970 }
2971 
2972 
2973 VL53L1_Error VL53L1_get_patch_debug(
2974  VL53L1_DEV Dev,
2975  VL53L1_patch_debug_t *pdata)
2976 {
2984 
2985  LOG_FUNCTION_START("");
2986 
2987  if (status == VL53L1_ERROR_NONE) /*lint !e774 always true*/
2988  status = VL53L1_disable_firmware(Dev);
2989 
2990  if (status == VL53L1_ERROR_NONE)
2991  status = VL53L1_ReadMulti(
2992  Dev,
2994  comms_buffer,
2996 
2997  if (status == VL53L1_ERROR_NONE)
2998  status = VL53L1_enable_firmware(Dev);
2999 
3000  if (status == VL53L1_ERROR_NONE)
3001  status = VL53L1_i2c_decode_patch_debug(
3003  comms_buffer,
3004  pdata);
3005 
3006  LOG_FUNCTION_END(status);
3007 
3008  return status;
3009 }
3010 #endif
3011 
3012 #ifdef PAL_EXTENDED
3013 VL53L1_Error VL53L1_i2c_encode_gph_general_config(
3015  uint16_t buf_size,
3016  uint8_t *pbuffer)
3017 {
3024 
3025  LOG_FUNCTION_START("");
3026 
3029 
3032  2,
3033  pbuffer + 0);
3036  2,
3037  pbuffer + 2);
3038  *(pbuffer + 4) =
3040  LOG_FUNCTION_END(status);
3041 
3042 
3043  return status;
3044 }
3045 #endif
3046 
3047 
3048 #ifdef PAL_EXTENDED
3049 VL53L1_Error VL53L1_i2c_decode_gph_general_config(
3050  uint16_t buf_size,
3051  uint8_t *pbuffer,
3053 {
3060 
3061  LOG_FUNCTION_START("");
3062 
3065 
3067  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 0));
3069  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 2));
3071  (*(pbuffer + 4));
3072 
3073  LOG_FUNCTION_END(status);
3074 
3075  return status;
3076 }
3077 #endif
3078 
3079 
3080 #ifdef PAL_EXTENDED
3081 VL53L1_Error VL53L1_set_gph_general_config(
3082  VL53L1_DEV Dev,
3084 {
3092 
3093  LOG_FUNCTION_START("");
3094 
3095  if (status == VL53L1_ERROR_NONE) /*lint !e774 always true*/
3096  status = VL53L1_i2c_encode_gph_general_config(
3097  pdata,
3099  comms_buffer);
3100 
3101  if (status == VL53L1_ERROR_NONE)
3102  status = VL53L1_disable_firmware(Dev);
3103 
3104  if (status == VL53L1_ERROR_NONE)
3105  status = VL53L1_WriteMulti(
3106  Dev,
3108  comms_buffer,
3110 
3111  if (status == VL53L1_ERROR_NONE)
3112  status = VL53L1_enable_firmware(Dev);
3113 
3114  LOG_FUNCTION_END(status);
3115 
3116  return status;
3117 }
3118 #endif
3119 
3120 
3121 #ifdef PAL_EXTENDED
3122 VL53L1_Error VL53L1_get_gph_general_config(
3123  VL53L1_DEV Dev,
3125 {
3133 
3134  LOG_FUNCTION_START("");
3135 
3136  if (status == VL53L1_ERROR_NONE) /*lint !e774 always true*/
3137  status = VL53L1_disable_firmware(Dev);
3138 
3139  if (status == VL53L1_ERROR_NONE)
3140  status = VL53L1_ReadMulti(
3141  Dev,
3143  comms_buffer,
3145 
3146  if (status == VL53L1_ERROR_NONE)
3147  status = VL53L1_enable_firmware(Dev);
3148 
3149  if (status == VL53L1_ERROR_NONE)
3150  status = VL53L1_i2c_decode_gph_general_config(
3152  comms_buffer,
3153  pdata);
3154 
3155  LOG_FUNCTION_END(status);
3156 
3157  return status;
3158 }
3159 #endif
3160 
3161 
3162 #ifdef PAL_EXTENDED
3163 VL53L1_Error VL53L1_i2c_encode_gph_static_config(
3165  uint16_t buf_size,
3166  uint8_t *pbuffer)
3167 {
3174 
3175  LOG_FUNCTION_START("");
3176 
3179 
3180  *(pbuffer + 0) =
3181  pdata->gph__dss_config__roi_mode_control & 0x7;
3184  2,
3185  pbuffer + 1);
3186  *(pbuffer + 3) =
3188  *(pbuffer + 4) =
3190  *(pbuffer + 5) =
3192  LOG_FUNCTION_END(status);
3193 
3194 
3195  return status;
3196 }
3197 #endif
3198 
3199 #ifdef PAL_EXTENDED
3200 VL53L1_Error VL53L1_i2c_decode_gph_static_config(
3201  uint16_t buf_size,
3202  uint8_t *pbuffer,
3204 {
3211 
3212  LOG_FUNCTION_START("");
3213 
3216 
3218  (*(pbuffer + 0)) & 0x7;
3220  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 1));
3222  (*(pbuffer + 3));
3224  (*(pbuffer + 4));
3226  (*(pbuffer + 5));
3227 
3228  LOG_FUNCTION_END(status);
3229 
3230  return status;
3231 }
3232 #endif
3233 
3234 
3235 #ifdef PAL_EXTENDED
3236 VL53L1_Error VL53L1_set_gph_static_config(
3237  VL53L1_DEV Dev,
3239 {
3247 
3248  LOG_FUNCTION_START("");
3249 
3250  if (status == VL53L1_ERROR_NONE) /*lint !e774 always true*/
3251  status = VL53L1_i2c_encode_gph_static_config(
3252  pdata,
3254  comms_buffer);
3255 
3256  if (status == VL53L1_ERROR_NONE)
3257  status = VL53L1_disable_firmware(Dev);
3258 
3259  if (status == VL53L1_ERROR_NONE)
3260  status = VL53L1_WriteMulti(
3261  Dev,
3263  comms_buffer,
3265 
3266  if (status == VL53L1_ERROR_NONE)
3267  status = VL53L1_enable_firmware(Dev);
3268 
3269  LOG_FUNCTION_END(status);
3270 
3271  return status;
3272 }
3273 #endif
3274 
3275 
3276 #ifdef PAL_EXTENDED
3277 VL53L1_Error VL53L1_get_gph_static_config(
3278  VL53L1_DEV Dev,
3280 {
3288 
3289  LOG_FUNCTION_START("");
3290 
3291  if (status == VL53L1_ERROR_NONE) /*lint !e774 always true*/
3292  status = VL53L1_disable_firmware(Dev);
3293 
3294  if (status == VL53L1_ERROR_NONE)
3295  status = VL53L1_ReadMulti(
3296  Dev,
3298  comms_buffer,
3300 
3301  if (status == VL53L1_ERROR_NONE)
3302  status = VL53L1_enable_firmware(Dev);
3303 
3304  if (status == VL53L1_ERROR_NONE)
3305  status = VL53L1_i2c_decode_gph_static_config(
3307  comms_buffer,
3308  pdata);
3309 
3310  LOG_FUNCTION_END(status);
3311 
3312  return status;
3313 }
3314 #endif
3315 
3316 
3317 #ifdef PAL_EXTENDED
3318 VL53L1_Error VL53L1_i2c_encode_gph_timing_config(
3320  uint16_t buf_size,
3321  uint8_t *pbuffer)
3322 {
3329 
3330  LOG_FUNCTION_START("");
3331 
3334 
3335  *(pbuffer + 0) =
3337  *(pbuffer + 1) =
3339  *(pbuffer + 2) =
3341  *(pbuffer + 3) =
3343  *(pbuffer + 4) =
3345  *(pbuffer + 5) =
3347  *(pbuffer + 6) =
3348  pdata->gph__range_config__vcsel_period_a & 0x3F;
3349  *(pbuffer + 7) =
3350  pdata->gph__range_config__vcsel_period_b & 0x3F;
3351  *(pbuffer + 8) =
3353  *(pbuffer + 9) =
3357  2,
3358  pbuffer + 10);
3361  2,
3362  pbuffer + 12);
3363  *(pbuffer + 14) =
3365  *(pbuffer + 15) =
3367  LOG_FUNCTION_END(status);
3368 
3369 
3370  return status;
3371 }
3372 #endif
3373 
3374 
3375 #ifdef PAL_EXTENDED
3376 VL53L1_Error VL53L1_i2c_decode_gph_timing_config(
3377  uint16_t buf_size,
3378  uint8_t *pbuffer,
3380 {
3387 
3388  LOG_FUNCTION_START("");
3389 
3392 
3394  (*(pbuffer + 0)) & 0xF;
3396  (*(pbuffer + 1));
3398  (*(pbuffer + 2)) & 0xF;
3400  (*(pbuffer + 3));
3402  (*(pbuffer + 4)) & 0xF;
3404  (*(pbuffer + 5));
3406  (*(pbuffer + 6)) & 0x3F;
3408  (*(pbuffer + 7)) & 0x3F;
3410  (*(pbuffer + 8)) & 0xF;
3412  (*(pbuffer + 9));
3414  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 10));
3416  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 12));
3418  (*(pbuffer + 14));
3420  (*(pbuffer + 15));
3421 
3422  LOG_FUNCTION_END(status);
3423 
3424  return status;
3425 }
3426 #endif
3427 
3428 
3429 #ifdef VL53L1_DEBUG
3430 VL53L1_Error VL53L1_set_gph_timing_config(
3431  VL53L1_DEV Dev,
3433 {
3441 
3442  LOG_FUNCTION_START("");
3443 
3444  if (status == VL53L1_ERROR_NONE) /*lint !e774 always true*/
3445  status = VL53L1_i2c_encode_gph_timing_config(
3446  pdata,
3448  comms_buffer);
3449 
3450  if (status == VL53L1_ERROR_NONE)
3451  status = VL53L1_disable_firmware(Dev);
3452 
3453  if (status == VL53L1_ERROR_NONE)
3454  status = VL53L1_WriteMulti(
3455  Dev,
3457  comms_buffer,
3459 
3460  if (status == VL53L1_ERROR_NONE)
3461  status = VL53L1_enable_firmware(Dev);
3462 
3463  LOG_FUNCTION_END(status);
3464 
3465  return status;
3466 }
3467 #endif
3468 
3469 
3470 #ifdef PAL_EXTENDED
3471 VL53L1_Error VL53L1_get_gph_timing_config(
3472  VL53L1_DEV Dev,
3474 {
3482 
3483  LOG_FUNCTION_START("");
3484 
3485  if (status == VL53L1_ERROR_NONE) /*lint !e774 always true*/
3486  status = VL53L1_disable_firmware(Dev);
3487 
3488  if (status == VL53L1_ERROR_NONE)
3489  status = VL53L1_ReadMulti(
3490  Dev,
3492  comms_buffer,
3494 
3495  if (status == VL53L1_ERROR_NONE)
3496  status = VL53L1_enable_firmware(Dev);
3497 
3498  if (status == VL53L1_ERROR_NONE)
3499  status = VL53L1_i2c_decode_gph_timing_config(
3501  comms_buffer,
3502  pdata);
3503 
3504  LOG_FUNCTION_END(status);
3505 
3506  return status;
3507 }
3508 #endif
3509 
3510 
3511 #ifdef VL53L1_DEBUG
3512 VL53L1_Error VL53L1_i2c_encode_fw_internal(
3513  VL53L1_fw_internal_t *pdata,
3514  uint16_t buf_size,
3515  uint8_t *pbuffer)
3516 {
3523 
3524  LOG_FUNCTION_START("");
3525 
3526  if (VL53L1_FW_INTERNAL_I2C_SIZE_BYTES > buf_size)
3528 
3529  *(pbuffer + 0) =
3531  *(pbuffer + 1) =
3533  LOG_FUNCTION_END(status);
3534 
3535 
3536  return status;
3537 }
3538 
3539 
3540 VL53L1_Error VL53L1_i2c_decode_fw_internal(
3541  uint16_t buf_size,
3542  uint8_t *pbuffer,
3543  VL53L1_fw_internal_t *pdata)
3544 {
3551 
3552  LOG_FUNCTION_START("");
3553 
3554  if (VL53L1_FW_INTERNAL_I2C_SIZE_BYTES > buf_size)
3556 
3558  (*(pbuffer + 0));
3560  (*(pbuffer + 1));
3561 
3562  LOG_FUNCTION_END(status);
3563 
3564  return status;
3565 }
3566 
3567 
3568 VL53L1_Error VL53L1_set_fw_internal(
3569  VL53L1_DEV Dev,
3570  VL53L1_fw_internal_t *pdata)
3571 {
3579 
3580  LOG_FUNCTION_START("");
3581 
3582  if (status == VL53L1_ERROR_NONE) /*lint !e774 always true*/
3583  status = VL53L1_i2c_encode_fw_internal(
3584  pdata,
3586  comms_buffer);
3587 
3588  if (status == VL53L1_ERROR_NONE)
3589  status = VL53L1_disable_firmware(Dev);
3590 
3591  if (status == VL53L1_ERROR_NONE)
3592  status = VL53L1_WriteMulti(
3593  Dev,
3595  comms_buffer,
3597 
3598  if (status == VL53L1_ERROR_NONE)
3599  status = VL53L1_enable_firmware(Dev);
3600 
3601  LOG_FUNCTION_END(status);
3602 
3603  return status;
3604 }
3605 
3606 VL53L1_Error VL53L1_get_fw_internal(
3607  VL53L1_DEV Dev,
3608  VL53L1_fw_internal_t *pdata)
3609 {
3617 
3618  LOG_FUNCTION_START("");
3619 
3620  if (status == VL53L1_ERROR_NONE) /*lint !e774 always true*/
3621  status = VL53L1_disable_firmware(Dev);
3622 
3623  if (status == VL53L1_ERROR_NONE)
3624  status = VL53L1_ReadMulti(
3625  Dev,
3627  comms_buffer,
3629 
3630  if (status == VL53L1_ERROR_NONE)
3631  status = VL53L1_enable_firmware(Dev);
3632 
3633  if (status == VL53L1_ERROR_NONE)
3634  status = VL53L1_i2c_decode_fw_internal(
3636  comms_buffer,
3637  pdata);
3638 
3639  LOG_FUNCTION_END(status);
3640 
3641  return status;
3642 }
3643 
3644 
3645 VL53L1_Error VL53L1_i2c_encode_patch_results(
3646  VL53L1_patch_results_t *pdata,
3647  uint16_t buf_size,
3648  uint8_t *pbuffer)
3649 {
3656 
3657  LOG_FUNCTION_START("");
3658 
3659  if (VL53L1_PATCH_RESULTS_I2C_SIZE_BYTES > buf_size)
3661 
3662  *(pbuffer + 0) =
3663  pdata->dss_calc__roi_ctrl & 0x3;
3664  *(pbuffer + 1) =
3665  pdata->dss_calc__spare_1;
3666  *(pbuffer + 2) =
3667  pdata->dss_calc__spare_2;
3668  *(pbuffer + 3) =
3669  pdata->dss_calc__spare_3;
3670  *(pbuffer + 4) =
3671  pdata->dss_calc__spare_4;
3672  *(pbuffer + 5) =
3673  pdata->dss_calc__spare_5;
3674  *(pbuffer + 6) =
3675  pdata->dss_calc__spare_6;
3676  *(pbuffer + 7) =
3677  pdata->dss_calc__spare_7;
3678  *(pbuffer + 8) =
3680  *(pbuffer + 9) =
3682  *(pbuffer + 10) =
3684  *(pbuffer + 11) =
3686  *(pbuffer + 12) =
3688  *(pbuffer + 13) =
3690  *(pbuffer + 14) =
3692  *(pbuffer + 15) =
3694  *(pbuffer + 16) =
3696  *(pbuffer + 17) =
3698  *(pbuffer + 18) =
3700  *(pbuffer + 19) =
3702  *(pbuffer + 20) =
3704  *(pbuffer + 21) =
3706  *(pbuffer + 22) =
3708  *(pbuffer + 23) =
3710  *(pbuffer + 24) =
3712  *(pbuffer + 25) =
3714  *(pbuffer + 26) =
3716  *(pbuffer + 27) =
3718  *(pbuffer + 28) =
3720  *(pbuffer + 29) =
3722  *(pbuffer + 30) =
3724  *(pbuffer + 31) =
3726  *(pbuffer + 32) =
3728  *(pbuffer + 33) =
3730  *(pbuffer + 34) =
3732  *(pbuffer + 35) =
3734  *(pbuffer + 36) =
3736  *(pbuffer + 37) =
3738  *(pbuffer + 38) =
3740  *(pbuffer + 39) =
3742  *(pbuffer + 40) =
3743  pdata->dss_calc__user_roi_0;
3744  *(pbuffer + 41) =
3745  pdata->dss_calc__user_roi_1;
3746  *(pbuffer + 42) =
3747  pdata->dss_calc__mode_roi_0;
3748  *(pbuffer + 43) =
3749  pdata->dss_calc__mode_roi_1;
3750  *(pbuffer + 44) =
3754  2,
3755  pbuffer + 46);
3758  4,
3759  pbuffer + 48);
3762  2,
3763  pbuffer + 52);
3766  2,
3767  pbuffer + 54);
3768  *(pbuffer + 56) =
3772  2,
3773  pbuffer + 58);
3776  2,
3777  pbuffer + 62);
3780  2,
3781  pbuffer + 64);
3783  pdata->mm_result__total_offset,
3784  2,
3785  pbuffer + 66);
3787  pdata->xtalk_calc__xtalk_for_enabled_spads & 0xFFFFFF,
3788  4,
3789  pbuffer + 68);
3791  pdata->xtalk_result__avg_xtalk_user_roi_kcps & 0xFFFFFF,
3792  4,
3793  pbuffer + 72);
3796  4,
3797  pbuffer + 76);
3800  4,
3801  pbuffer + 80);
3804  4,
3805  pbuffer + 84);
3808  2,
3809  pbuffer + 88);
3810  LOG_FUNCTION_END(status);
3811 
3812 
3813  return status;
3814 }
3815 
3816 
3817 VL53L1_Error VL53L1_i2c_decode_patch_results(
3818  uint16_t buf_size,
3819  uint8_t *pbuffer,
3820  VL53L1_patch_results_t *pdata)
3821 {
3828 
3829  LOG_FUNCTION_START("");
3830 
3831  if (VL53L1_PATCH_RESULTS_I2C_SIZE_BYTES > buf_size)
3833 
3834  pdata->dss_calc__roi_ctrl =
3835  (*(pbuffer + 0)) & 0x3;
3836  pdata->dss_calc__spare_1 =
3837  (*(pbuffer + 1));
3838  pdata->dss_calc__spare_2 =
3839  (*(pbuffer + 2));
3840  pdata->dss_calc__spare_3 =
3841  (*(pbuffer + 3));
3842  pdata->dss_calc__spare_4 =
3843  (*(pbuffer + 4));
3844  pdata->dss_calc__spare_5 =
3845  (*(pbuffer + 5));
3846  pdata->dss_calc__spare_6 =
3847  (*(pbuffer + 6));
3848  pdata->dss_calc__spare_7 =
3849  (*(pbuffer + 7));
3851  (*(pbuffer + 8));
3853  (*(pbuffer + 9));
3855  (*(pbuffer + 10));
3857  (*(pbuffer + 11));
3859  (*(pbuffer + 12));
3861  (*(pbuffer + 13));
3863  (*(pbuffer + 14));
3865  (*(pbuffer + 15));
3867  (*(pbuffer + 16));
3869  (*(pbuffer + 17));
3871  (*(pbuffer + 18));
3873  (*(pbuffer + 19));
3875  (*(pbuffer + 20));
3877  (*(pbuffer + 21));
3879  (*(pbuffer + 22));
3881  (*(pbuffer + 23));
3883  (*(pbuffer + 24));
3885  (*(pbuffer + 25));
3887  (*(pbuffer + 26));
3889  (*(pbuffer + 27));
3891  (*(pbuffer + 28));
3893  (*(pbuffer + 29));
3895  (*(pbuffer + 30));
3897  (*(pbuffer + 31));
3899  (*(pbuffer + 32));
3901  (*(pbuffer + 33));
3903  (*(pbuffer + 34));
3905  (*(pbuffer + 35));
3907  (*(pbuffer + 36));
3909  (*(pbuffer + 37));
3911  (*(pbuffer + 38));
3913  (*(pbuffer + 39));
3914  pdata->dss_calc__user_roi_0 =
3915  (*(pbuffer + 40));
3916  pdata->dss_calc__user_roi_1 =
3917  (*(pbuffer + 41));
3918  pdata->dss_calc__mode_roi_0 =
3919  (*(pbuffer + 42));
3920  pdata->dss_calc__mode_roi_1 =
3921  (*(pbuffer + 43));
3923  (*(pbuffer + 44));
3925  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 46));
3927  (VL53L1_i2c_decode_uint32_t(4, pbuffer + 48));
3929  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 52));
3931  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 54));
3933  (*(pbuffer + 56));
3935  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 58));
3937  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 62));
3939  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 64));
3940  pdata->mm_result__total_offset =
3941  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 66));
3943  (VL53L1_i2c_decode_uint32_t(4, pbuffer + 68)) & 0xFFFFFF;
3945  (VL53L1_i2c_decode_uint32_t(4, pbuffer + 72)) & 0xFFFFFF;
3947  (VL53L1_i2c_decode_uint32_t(4, pbuffer + 76)) & 0xFFFFFF;
3949  (VL53L1_i2c_decode_uint32_t(4, pbuffer + 80)) & 0xFFFFFF;
3950  pdata->range_result__accum_phase =
3951  (VL53L1_i2c_decode_uint32_t(4, pbuffer + 84));
3953  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 88));
3954 
3955  LOG_FUNCTION_END(status);
3956 
3957  return status;
3958 }
3959 
3960 
3961 VL53L1_Error VL53L1_set_patch_results(
3962  VL53L1_DEV Dev,
3963  VL53L1_patch_results_t *pdata)
3964 {
3972 
3973  LOG_FUNCTION_START("");
3974 
3975  if (status == VL53L1_ERROR_NONE) /*lint !e774 always true*/
3976  status = VL53L1_i2c_encode_patch_results(
3977  pdata,
3979  comms_buffer);
3980 
3981  if (status == VL53L1_ERROR_NONE)
3982  status = VL53L1_disable_firmware(Dev);
3983 
3984  if (status == VL53L1_ERROR_NONE)
3985  status = VL53L1_WriteMulti(
3986  Dev,
3988  comms_buffer,
3990 
3991  if (status == VL53L1_ERROR_NONE)
3992  status = VL53L1_enable_firmware(Dev);
3993 
3994  LOG_FUNCTION_END(status);
3995 
3996  return status;
3997 }
3998 
3999 VL53L1_Error VL53L1_get_patch_results(
4000  VL53L1_DEV Dev,
4001  VL53L1_patch_results_t *pdata)
4002 {
4010 
4011  LOG_FUNCTION_START("");
4012 
4013  if (status == VL53L1_ERROR_NONE) /*lint !e774 always true*/
4014  status = VL53L1_disable_firmware(Dev);
4015 
4016  if (status == VL53L1_ERROR_NONE)
4017  status = VL53L1_ReadMulti(
4018  Dev,
4020  comms_buffer,
4022 
4023  if (status == VL53L1_ERROR_NONE)
4024  status = VL53L1_enable_firmware(Dev);
4025 
4026  if (status == VL53L1_ERROR_NONE)
4027  status = VL53L1_i2c_decode_patch_results(
4029  comms_buffer,
4030  pdata);
4031 
4032  LOG_FUNCTION_END(status);
4033 
4034  return status;
4035 }
4036 
4037 
4038 VL53L1_Error VL53L1_i2c_encode_shadow_system_results(
4040  uint16_t buf_size,
4041  uint8_t *pbuffer)
4042 {
4049 
4050  LOG_FUNCTION_START("");
4051 
4054 
4055  *(pbuffer + 0) =
4057  *(pbuffer + 2) =
4058  pdata->shadow_result__interrupt_status & 0x3F;
4059  *(pbuffer + 3) =
4061  *(pbuffer + 4) =
4062  pdata->shadow_result__report_status & 0xF;
4063  *(pbuffer + 5) =
4067  2,
4068  pbuffer + 6);
4071  2,
4072  pbuffer + 8);
4075  2,
4076  pbuffer + 10);
4078  pdata->shadow_result__sigma_sd0,
4079  2,
4080  pbuffer + 12);
4082  pdata->shadow_result__phase_sd0,
4083  2,
4084  pbuffer + 14);
4087  2,
4088  pbuffer + 16);
4091  2,
4092  pbuffer + 18);
4095  2,
4096  pbuffer + 20);
4099  2,
4100  pbuffer + 22);
4103  2,
4104  pbuffer + 24);
4107  2,
4108  pbuffer + 26);
4111  2,
4112  pbuffer + 28);
4115  2,
4116  pbuffer + 30);
4118  pdata->shadow_result__sigma_sd1,
4119  2,
4120  pbuffer + 32);
4122  pdata->shadow_result__phase_sd1,
4123  2,
4124  pbuffer + 34);
4127  2,
4128  pbuffer + 36);
4131  2,
4132  pbuffer + 38);
4135  2,
4136  pbuffer + 40);
4139  2,
4140  pbuffer + 42);
4141  *(pbuffer + 44) =
4143  *(pbuffer + 45) =
4145  *(pbuffer + 80) =
4147  *(pbuffer + 81) =
4149  LOG_FUNCTION_END(status);
4150 
4151 
4152  return status;
4153 }
4154 
4155 
4156 VL53L1_Error VL53L1_i2c_decode_shadow_system_results(
4157  uint16_t buf_size,
4158  uint8_t *pbuffer,
4160 {
4167 
4168  LOG_FUNCTION_START("");
4169 
4172 
4174  (*(pbuffer + 0));
4176  (*(pbuffer + 2)) & 0x3F;
4178  (*(pbuffer + 3));
4180  (*(pbuffer + 4)) & 0xF;
4182  (*(pbuffer + 5));
4184  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 6));
4186  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 8));
4188  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 10));
4189  pdata->shadow_result__sigma_sd0 =
4190  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 12));
4191  pdata->shadow_result__phase_sd0 =
4192  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 14));
4194  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 16));
4196  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 18));
4198  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 20));
4200  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 22));
4202  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 24));
4204  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 26));
4206  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 28));
4208  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 30));
4209  pdata->shadow_result__sigma_sd1 =
4210  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 32));
4211  pdata->shadow_result__phase_sd1 =
4212  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 34));
4214  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 36));
4216  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 38));
4218  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 40));
4220  (VL53L1_i2c_decode_uint16_t(2, pbuffer + 42));
4222  (*(pbuffer + 44));
4224  (*(pbuffer + 45));
4226  (*(pbuffer + 80));
4228  (*(pbuffer + 81));
4229 
4230  LOG_FUNCTION_END(status);
4231 
4232  return status;
4233 }
4234 
4235 
4236 VL53L1_Error VL53L1_set_shadow_system_results(
4237  VL53L1_DEV Dev,
4239 {
4247 
4248  LOG_FUNCTION_START("");
4249 
4250  if (status == VL53L1_ERROR_NONE) /*lint !e774 always true*/
4251  status = VL53L1_i2c_encode_shadow_system_results(
4252  pdata,
4254  comms_buffer);
4255 
4256  if (status == VL53L1_ERROR_NONE)
4257  status = VL53L1_disable_firmware(Dev);
4258 
4259  if (status == VL53L1_ERROR_NONE)
4260  status = VL53L1_WriteMulti(
4261  Dev,
4263  comms_buffer,
4265 
4266  if (status == VL53L1_ERROR_NONE)
4267  status = VL53L1_enable_firmware(Dev);
4268 
4269  LOG_FUNCTION_END(status);
4270 
4271  return status;
4272 }
4273 
4274 VL53L1_Error VL53L1_get_shadow_system_results(
4275  VL53L1_DEV Dev,
4277 {
4285 
4286  LOG_FUNCTION_START("");
4287 
4288  if (status == VL53L1_ERROR_NONE) /*lint !e774 always true*/
4289  status = VL53L1_disable_firmware(Dev);
4290 
4291  if (status == VL53L1_ERROR_NONE)
4292  status = VL53L1_ReadMulti(
4293  Dev,
4295  comms_buffer,
4297 
4298  if (status == VL53L1_ERROR_NONE)
4299  status = VL53L1_enable_firmware(Dev);
4300 
4301  if (status == VL53L1_ERROR_NONE)
4302  status = VL53L1_i2c_decode_shadow_system_results(
4304  comms_buffer,
4305  pdata);
4306 
4307  LOG_FUNCTION_END(status);
4308 
4309  return status;
4310 }
4311 
4312 
4313 VL53L1_Error VL53L1_i2c_encode_shadow_core_results(
4315  uint16_t buf_size,
4316  uint8_t *pbuffer)
4317 {
4324 
4325  LOG_FUNCTION_START("");
4326 
4329 
4332  4,
4333  pbuffer + 0);
4336  4,
4337  pbuffer + 4);
4340  4,
4341  pbuffer + 8);
4344  4,
4345  pbuffer + 12);
4348  4,
4349  pbuffer + 16);
4352  4,
4353  pbuffer + 20);
4356  4,
4357  pbuffer + 24);
4360  4,
4361  pbuffer + 28);
4362  *(pbuffer + 32) =
4364  LOG_FUNCTION_END(status);
4365 
4366 
4367  return status;
4368 }
4369 
4370 
4371 VL53L1_Error VL53L1_i2c_decode_shadow_core_results(
4372  uint16_t buf_size,
4373  uint8_t *pbuffer,
4375 {
4382 
4383  LOG_FUNCTION_START("");
4384 
4387 
4389  (VL53L1_i2c_decode_uint32_t(4, pbuffer + 0));
4391  (VL53L1_i2c_decode_uint32_t(4, pbuffer + 4));
4393  (VL53L1_i2c_decode_int32_t(4, pbuffer + 8));
4395  (VL53L1_i2c_decode_uint32_t(4, pbuffer + 12));
4397  (VL53L1_i2c_decode_uint32_t(4, pbuffer + 16));
4399  (VL53L1_i2c_decode_uint32_t(4, pbuffer + 20));
4401  (VL53L1_i2c_decode_int32_t(4, pbuffer + 24));
4403  (VL53L1_i2c_decode_uint32_t(4, pbuffer + 28));
4405  (*(pbuffer + 32));
4406 
4407  LOG_FUNCTION_END(status);
4408 
4409  return status;
4410 }
4411 
4412 
4413 VL53L1_Error VL53L1_set_shadow_core_results(
4414  VL53L1_DEV Dev,
4416 {
4424 
4425  LOG_FUNCTION_START("");
4426 
4427  if (status == VL53L1_ERROR_NONE) /*lint !e774 always true*/
4428  status = VL53L1_i2c_encode_shadow_core_results(
4429  pdata,
4431  comms_buffer);
4432 
4433  if (status == VL53L1_ERROR_NONE)
4434  status = VL53L1_disable_firmware(Dev);
4435 
4436  if (status == VL53L1_ERROR_NONE)
4437  status = VL53L1_WriteMulti(
4438  Dev,
4440  comms_buffer,
4442 
4443  if (status == VL53L1_ERROR_NONE)
4444  status = VL53L1_enable_firmware(Dev);
4445 
4446  LOG_FUNCTION_END(status);
4447 
4448  return status;
4449 }
4450 
4451 
4452 VL53L1_Error VL53L1_get_shadow_core_results(
4453  VL53L1_DEV Dev,
4455 {
4463 
4464  LOG_FUNCTION_START("");
4465 
4466  if (status == VL53L1_ERROR_NONE) /*lint !e774 always true*/
4467  status = VL53L1_disable_firmware(Dev);
4468 
4469  if (status == VL53L1_ERROR_NONE)
4470  status = VL53L1_ReadMulti(
4471  Dev,
4473  comms_buffer,
4475 
4476  if (status == VL53L1_ERROR_NONE)
4477  status = VL53L1_enable_firmware(Dev);
4478 
4479  if (status == VL53L1_ERROR_NONE)
4480  status = VL53L1_i2c_decode_shadow_core_results(
4482  comms_buffer,
4483  pdata);
4484 
4485  LOG_FUNCTION_END(status);
4486 
4487  return status;
4488 }
4489 #endif
VL53L1_nvm_copy_data_t::global_config__spad_enables_rtn_20
uint8_t global_config__spad_enables_rtn_20
Definition: vl53l1_register_structs.h:2550
VL53L1_system_results_t
Definition: vl53l1_register_structs.h:1359
VL53L1_system_control_t::system__stream_count_ctrl
uint8_t system__stream_count_ctrl
Definition: vl53l1_register_structs.h:1301
VL53L1_general_config_t::system__thresh_rate_high
uint16_t system__thresh_rate_high
Definition: vl53l1_register_structs.h:850
VL53L1_shadow_system_results_t::shadow_result__interrupt_status
uint8_t shadow_result__interrupt_status
Definition: vl53l1_register_structs.h:4019
VL53L1_prev_shadow_system_results_t::prev_shadow_result__interrupt_status
uint8_t prev_shadow_result__interrupt_status
Definition: vl53l1_register_structs.h:2703
VL53L1_customer_nvm_managed_t::ref_spad_man__ref_location
uint8_t ref_spad_man__ref_location
Definition: vl53l1_register_structs.h:324
VL53L1_system_control_t::firmware__enable
uint8_t firmware__enable
Definition: vl53l1_register_structs.h:1311
VL53L1_system_results_t::result__dss_actual_effective_spads_sd1
uint16_t result__dss_actual_effective_spads_sd1
Definition: vl53l1_register_structs.h:1505
VL53L1_shadow_system_results_t::shadow_result__sigma_sd1
uint16_t shadow_result__sigma_sd1
Definition: vl53l1_register_structs.h:4194
VL53L1_PREV_SHADOW_SYSTEM_RESULTS_I2C_SIZE_BYTES
#define VL53L1_PREV_SHADOW_SYSTEM_RESULTS_I2C_SIZE_BYTES
Definition: vl53l1_register_structs.h:107
VL53L1_debug_results_t::interrupt_manager__enables
uint8_t interrupt_manager__enables
Definition: vl53l1_register_structs.h:2070
VL53L1_timing_config_t
Definition: vl53l1_register_structs.h:932
VL53L1_timing_config_t::mm_config__timeout_macrop_b_lo
uint8_t mm_config__timeout_macrop_b_lo
Definition: vl53l1_register_structs.h:963
VL53L1_debug_results_t::gph__sd_config__first_order_select
uint8_t gph__sd_config__first_order_select
Definition: vl53l1_register_structs.h:1991
vl53l1_ll_def.h
Type definitions for VL53L1 LL Driver.
VL53L1_dynamic_config_t::system__thresh_low
uint16_t system__thresh_low
Definition: vl53l1_register_structs.h:1127
VL53L1_core_results_t::result_core__spare_0
uint8_t result_core__spare_0
Definition: vl53l1_register_structs.h:1709
VL53L1_patch_results_t::dss_calc__spare_4
uint8_t dss_calc__spare_4
Definition: vl53l1_register_structs.h:3436
VL53L1_SYSTEM_RESULTS_I2C_SIZE_BYTES
#define VL53L1_SYSTEM_RESULTS_I2C_SIZE_BYTES
Definition: vl53l1_register_structs.h:103
VL53L1_gph_timing_config_t::gph__range_config__vcsel_period_a
uint8_t gph__range_config__vcsel_period_a
Definition: vl53l1_register_structs.h:3269
uint8_t
unsigned char uint8_t
Typedef defining 8 bit unsigned char type. The developer should modify this to suit the platform bein...
Definition: vl53l1_types.h:133
VL53L1_gph_timing_config_t::gph__range_config__valid_phase_high
uint8_t gph__range_config__valid_phase_high
Definition: vl53l1_register_structs.h:3339
VL53L1_i2c_encode_system_control
VL53L1_Error VL53L1_i2c_encode_system_control(VL53L1_system_control_t *pdata, uint16_t buf_size, uint8_t *pbuffer)
Gets dynamic_config register group.
Definition: vl53l1_register_funcs.c:1239
VL53L1_shadow_system_results_t::shadow_phasecal_result__reference_phase_lo
uint8_t shadow_phasecal_result__reference_phase_lo
Definition: vl53l1_register_structs.h:4285
VL53L1_shadow_system_results_t::shadow_result__sigma_sd0
uint16_t shadow_result__sigma_sd0
Definition: vl53l1_register_structs.h:4094
VL53L1_core_results_t::result_core__ambient_window_events_sd0
uint32_t result_core__ambient_window_events_sd0
Definition: vl53l1_register_structs.h:1629
VL53L1_debug_results_t::result__osc_calibrate_val
uint16_t result__osc_calibrate_val
Definition: vl53l1_register_structs.h:1802
VL53L1_timing_config_t::mm_config__timeout_macrop_a_lo
uint8_t mm_config__timeout_macrop_a_lo
Definition: vl53l1_register_structs.h:943
VL53L1_PREV_SHADOW_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD0
#define VL53L1_PREV_SHADOW_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD0
Definition: vl53l1_register_map.h:8833
VL53L1_gph_timing_config_t::gph__range_config__timeout_macrop_b_lo
uint8_t gph__range_config__timeout_macrop_b_lo
Definition: vl53l1_register_structs.h:3299
vl53l1_platform_log.h
EwokPlus25 platform logging function definition.
VL53L1_debug_results_t::vhv_result__search_result
uint8_t vhv_result__search_result
Definition: vl53l1_register_structs.h:1782
VL53L1_prev_shadow_core_results_t::prev_shadow_result_core__signal_total_events_sd1
int32_t prev_shadow_result_core__signal_total_events_sd1
Definition: vl53l1_register_structs.h:3021
VL53L1_nvm_copy_data_t::global_config__spad_enables_rtn_5
uint8_t global_config__spad_enables_rtn_5
Definition: vl53l1_register_structs.h:2400
VL53L1_dynamic_config_t::sd_config__woi_sd1
uint8_t sd_config__woi_sd1
Definition: vl53l1_register_structs.h:1168
VL53L1_i2c_decode_system_results
VL53L1_Error VL53L1_i2c_decode_system_results(uint16_t buf_size, uint8_t *pbuffer, VL53L1_system_results_t *pdata)
Gets system_control register group.
Definition: vl53l1_register_funcs.c:1491
VL53L1_static_config_t::ana_config__vcsel_pulse_width_offset
uint8_t ana_config__vcsel_pulse_width_offset
Definition: vl53l1_register_structs.h:579
VL53L1_prev_shadow_system_results_t::prev_shadow_result__phase_sd1
uint16_t prev_shadow_result__phase_sd1
Definition: vl53l1_register_structs.h:2888
VL53L1_patch_results_t::dss_calc__user_roi_spad_en_19
uint8_t dss_calc__user_roi_spad_en_19
Definition: vl53l1_register_structs.h:3666
VL53L1_core_results_t
Definition: vl53l1_register_structs.h:1628
VL53L1_system_results_t::result__phase_sd1
uint16_t result__phase_sd1
Definition: vl53l1_register_structs.h:1545
VL53L1_i2c_encode_uint32_t
void VL53L1_i2c_encode_uint32_t(uint32_t ip_value, uint16_t count, uint8_t *pbuffer)
Encodes a uint32_t register value into an I2C write buffer.
Definition: vl53l1_core.c:603
VL53L1_prev_shadow_system_results_t::prev_shadow_result__avg_signal_count_rate_mcps_sd0
uint16_t prev_shadow_result__avg_signal_count_rate_mcps_sd0
Definition: vl53l1_register_structs.h:2838
VL53L1_system_results_t::result__final_crosstalk_corrected_range_mm_sd0
uint16_t result__final_crosstalk_corrected_range_mm_sd0
Definition: vl53l1_register_structs.h:1455
VL53L1_prev_shadow_system_results_t::prev_shadow_result__dss_actual_effective_spads_sd0
uint16_t prev_shadow_result__dss_actual_effective_spads_sd0
Definition: vl53l1_register_structs.h:2748
VL53L1_system_control_t::power_management__go1_power_force
uint8_t power_management__go1_power_force
Definition: vl53l1_register_structs.h:1291
VL53L1_gph_timing_config_t::gph__range_config__sigma_thresh
uint16_t gph__range_config__sigma_thresh
Definition: vl53l1_register_structs.h:3309
VL53L1_core_results_t::result_core__signal_total_events_sd0
int32_t result_core__signal_total_events_sd0
Definition: vl53l1_register_structs.h:1649
VL53L1_i2c_encode_static_config
VL53L1_Error VL53L1_i2c_encode_static_config(VL53L1_static_config_t *pdata, uint16_t buf_size, uint8_t *pbuffer)
Encodes data structure VL53L1_static_config_t into a I2C write buffer.
Definition: vl53l1_register_funcs.c:432
VL53L1_PHASECAL_RESULT__REFERENCE_PHASE
#define VL53L1_PHASECAL_RESULT__REFERENCE_PHASE
Definition: vl53l1_register_map.h:3058
VL53L1_patch_results_t::xtalk_result__avg_xtalk_mm_outer_roi_kcps
uint32_t xtalk_result__avg_xtalk_mm_outer_roi_kcps
Definition: vl53l1_register_structs.h:3966
VL53L1_dynamic_config_t::roi_config__user_roi_centre_spad
uint8_t roi_config__user_roi_centre_spad
Definition: vl53l1_register_structs.h:1230
VL53L1_debug_results_t::ref_spad_char_result__num_actual_ref_spads
uint8_t ref_spad_char_result__num_actual_ref_spads
Definition: vl53l1_register_structs.h:1752
VL53L1_i2c_encode_uint16_t
void VL53L1_i2c_encode_uint16_t(uint16_t ip_value, uint16_t count, uint8_t *pbuffer)
Encodes a uint16_t register value into an I2C write buffer.
Definition: vl53l1_core.c:519
VL53L1_static_config_t::sigma_estimator__effective_pulse_width_ns
uint8_t sigma_estimator__effective_pulse_width_ns
Definition: vl53l1_register_structs.h:599
VL53L1_static_config_t::pad_i2c_hv__config
uint8_t pad_i2c_hv__config
Definition: vl53l1_register_structs.h:501
VL53L1_gph_static_config_t::gph__dss_config__manual_block_select
uint8_t gph__dss_config__manual_block_select
Definition: vl53l1_register_structs.h:3166
VL53L1_customer_nvm_managed_t::global_config__ref_en_start_select
uint8_t global_config__ref_en_start_select
Definition: vl53l1_register_structs.h:304
VL53L1_dynamic_config_t::system__thresh_high
uint16_t system__thresh_high
Definition: vl53l1_register_structs.h:1117
VL53L1_patch_results_t::dss_calc__spare_7
uint8_t dss_calc__spare_7
Definition: vl53l1_register_structs.h:3466
VL53L1_prev_shadow_system_results_t::prev_shadow_result__spare_0_sd1
uint16_t prev_shadow_result__spare_0_sd1
Definition: vl53l1_register_structs.h:2908
VL53L1_prev_shadow_core_results_t::prev_shadow_result_core__total_periods_elapsed_sd1
uint32_t prev_shadow_result_core__total_periods_elapsed_sd1
Definition: vl53l1_register_structs.h:3031
VL53L1_DSS_CONFIG__TARGET_TOTAL_RATE_MCPS
#define VL53L1_DSS_CONFIG__TARGET_TOTAL_RATE_MCPS
Definition: vl53l1_register_map.h:586
VL53L1_timing_config_t::range_config__sigma_thresh
uint16_t range_config__sigma_thresh
Definition: vl53l1_register_structs.h:1033
VL53L1_system_control_t::system__mode_start
uint8_t system__mode_start
Definition: vl53l1_register_structs.h:1332
VL53L1_timing_config_t::range_config__vcsel_period_a
uint8_t range_config__vcsel_period_a
Definition: vl53l1_register_structs.h:993
VL53L1_dynamic_config_t::sd_config__initial_phase_sd0
uint8_t sd_config__initial_phase_sd0
Definition: vl53l1_register_structs.h:1178
VL53L1_patch_results_t::phasecal_result__phase_output_ref
uint16_t phasecal_result__phase_output_ref
Definition: vl53l1_register_structs.h:3866
VL53L1_CUSTOMER_NVM_MANAGED_I2C_SIZE_BYTES
#define VL53L1_CUSTOMER_NVM_MANAGED_I2C_SIZE_BYTES
Definition: vl53l1_register_structs.h:97
VL53L1_SYSTEM__GROUPED_PARAMETER_HOLD_0
#define VL53L1_SYSTEM__GROUPED_PARAMETER_HOLD_0
Definition: vl53l1_register_map.h:1691
VL53L1_gph_timing_config_t::gph__mm_config__timeout_macrop_a_lo
uint8_t gph__mm_config__timeout_macrop_a_lo
Definition: vl53l1_register_structs.h:3219
VL53L1_debug_results_t::vhv_result__latest_setting
uint8_t vhv_result__latest_setting
Definition: vl53l1_register_structs.h:1792
VL53L1_shadow_core_results_t::shadow_result_core__signal_total_events_sd0
int32_t shadow_result_core__signal_total_events_sd0
Definition: vl53l1_register_structs.h:4328
VL53L1_debug_results_t::gph__sd_config__quantifier
uint8_t gph__sd_config__quantifier
Definition: vl53l1_register_structs.h:2002
VL53L1_nvm_copy_data_t::global_config__spad_enables_rtn_17
uint8_t global_config__spad_enables_rtn_17
Definition: vl53l1_register_structs.h:2520
VL53L1_patch_results_t::dss_calc__user_roi_spad_en_28
uint8_t dss_calc__user_roi_spad_en_28
Definition: vl53l1_register_structs.h:3756
VL53L1_gph_general_config_t::gph__system__interrupt_config_gpio
uint8_t gph__system__interrupt_config_gpio
Definition: vl53l1_register_structs.h:3117
VL53L1_prev_shadow_system_results_t::prev_shadow_result__range_status
uint8_t prev_shadow_result__range_status
Definition: vl53l1_register_structs.h:2715
VL53L1_prev_shadow_core_results_t::prev_shadow_result_core__ambient_window_events_sd0
uint32_t prev_shadow_result_core__ambient_window_events_sd0
Definition: vl53l1_register_structs.h:2961
VL53L1_prev_shadow_core_results_t::prev_shadow_result_core__spare_0
uint8_t prev_shadow_result_core__spare_0
Definition: vl53l1_register_structs.h:3041
VL53L1_GPH_CONFIG__STREAM_COUNT_UPDATE_VALUE
#define VL53L1_GPH_CONFIG__STREAM_COUNT_UPDATE_VALUE
Definition: vl53l1_register_map.h:1078
VL53L1_patch_results_t::dss_calc__user_roi_spad_en_11
uint8_t dss_calc__user_roi_spad_en_11
Definition: vl53l1_register_structs.h:3586
VL53L1_gph_general_config_t::gph__system__thresh_rate_high
uint16_t gph__system__thresh_rate_high
Definition: vl53l1_register_structs.h:3097
VL53L1_general_config_t::dss_config__manual_effective_spads_select
uint16_t dss_config__manual_effective_spads_select
Definition: vl53l1_register_structs.h:870
VL53L1_static_config_t::algo__range_ignore_valid_height_mm
uint8_t algo__range_ignore_valid_height_mm
Definition: vl53l1_register_structs.h:669
VL53L1_debug_results_t::gph__spare_0
uint8_t gph__spare_0
Definition: vl53l1_register_structs.h:1939
VL53L1_general_config_t::system__interrupt_config_gpio
uint8_t system__interrupt_config_gpio
Definition: vl53l1_register_structs.h:764
VL53L1_system_results_t::result__ambient_count_rate_mcps_sd0
uint16_t result__ambient_count_rate_mcps_sd0
Definition: vl53l1_register_structs.h:1425
VL53L1_gph_timing_config_t::gph__mm_config__timeout_macrop_b_lo
uint8_t gph__mm_config__timeout_macrop_b_lo
Definition: vl53l1_register_structs.h:3239
VL53L1_general_config_t::dss_config__max_spads_limit
uint8_t dss_config__max_spads_limit
Definition: vl53l1_register_structs.h:900
VL53L1_GPH_GENERAL_CONFIG_I2C_SIZE_BYTES
#define VL53L1_GPH_GENERAL_CONFIG_I2C_SIZE_BYTES
Definition: vl53l1_register_structs.h:110
VL53L1_shadow_system_results_t::shadow_result__spare_0_sd1
uint16_t shadow_result__spare_0_sd1
Definition: vl53l1_register_structs.h:4224
VL53L1_timing_config_t::range_config__timeout_macrop_a_lo
uint8_t range_config__timeout_macrop_a_lo
Definition: vl53l1_register_structs.h:983
VL53L1_general_config_t
Definition: vl53l1_register_structs.h:743
VL53L1_static_config_t::dss_config__target_total_rate_mcps
uint16_t dss_config__target_total_rate_mcps
Definition: vl53l1_register_structs.h:417
VL53L1_timing_config_t::range_config__timeout_macrop_a_hi
uint8_t range_config__timeout_macrop_a_hi
Definition: vl53l1_register_structs.h:973
VL53L1_debug_results_t::interrupt_scheduler__data_out
uint32_t interrupt_scheduler__data_out
Definition: vl53l1_register_structs.h:2166
VL53L1_patch_results_t::dss_calc__user_roi_spad_en_24
uint8_t dss_calc__user_roi_spad_en_24
Definition: vl53l1_register_structs.h:3716
VL53L1_prev_shadow_system_results_t::prev_shadow_result__peak_signal_count_rate_crosstalk_corrected_mcps_sd0
uint16_t prev_shadow_result__peak_signal_count_rate_crosstalk_corrected_mcps_sd0
Definition: vl53l1_register_structs.h:2808
VL53L1_general_config_t::dss_config__roi_mode_control
uint8_t dss_config__roi_mode_control
Definition: vl53l1_register_structs.h:839
VL53L1_prev_shadow_core_results_t
Definition: vl53l1_register_structs.h:2960
VL53L1_i2c_decode_static_nvm_managed
VL53L1_Error VL53L1_i2c_decode_static_nvm_managed(uint16_t buf_size, uint8_t *pbuffer, VL53L1_static_nvm_managed_t *pdata)
Decodes data structure VL53L1_static_nvm_managed_t from the input I2C read buffer.
Definition: vl53l1_register_funcs.c:130
VL53L1_patch_results_t::dss_calc__user_roi_spad_en_25
uint8_t dss_calc__user_roi_spad_en_25
Definition: vl53l1_register_structs.h:3726
VL53L1_shadow_system_results_t::shadow_result__dss_actual_effective_spads_sd0
uint16_t shadow_result__dss_actual_effective_spads_sd0
Definition: vl53l1_register_structs.h:4064
VL53L1_set_static_config
VL53L1_Error VL53L1_set_static_config(VL53L1_DEV Dev, VL53L1_static_config_t *pdata)
Sets static_config register group.
Definition: vl53l1_register_funcs.c:604
VL53L1_patch_results_t::xtalk_result__avg_xtalk_user_roi_kcps
uint32_t xtalk_result__avg_xtalk_user_roi_kcps
Definition: vl53l1_register_structs.h:3946
VL53L1_debug_results_t::interrupt_manager__status
uint8_t interrupt_manager__status
Definition: vl53l1_register_structs.h:2098
VL53L1_PATCH_RESULTS_I2C_SIZE_BYTES
#define VL53L1_PATCH_RESULTS_I2C_SIZE_BYTES
Definition: vl53l1_register_structs.h:114
VL53L1_general_config_t::global_config__stream_divider
uint8_t global_config__stream_divider
Definition: vl53l1_register_structs.h:754
VL53L1_nvm_copy_data_t::identification__module_type
uint8_t identification__module_type
Definition: vl53l1_register_structs.h:2219
VL53L1_set_customer_nvm_managed
VL53L1_Error VL53L1_set_customer_nvm_managed(VL53L1_DEV Dev, VL53L1_customer_nvm_managed_t *pdata)
Sets customer_nvm_managed register group.
Definition: vl53l1_register_funcs.c:366
VL53L1_timing_config_t::range_config__min_count_rate_rtn_limit_mcps
uint16_t range_config__min_count_rate_rtn_limit_mcps
Definition: vl53l1_register_structs.h:1043
VL53L1_static_config_t::algo__range_min_clip
uint8_t algo__range_min_clip
Definition: vl53l1_register_structs.h:679
VL53L1_shadow_system_results_t::shadow_result__ambient_count_rate_mcps_sd0
uint16_t shadow_result__ambient_count_rate_mcps_sd0
Definition: vl53l1_register_structs.h:4084
VL53L1_shadow_system_results_t::shadow_result__final_crosstalk_corrected_range_mm_sd0
uint16_t shadow_result__final_crosstalk_corrected_range_mm_sd0
Definition: vl53l1_register_structs.h:4114
VL53L1_enable_firmware
VL53L1_Error VL53L1_enable_firmware(VL53L1_DEV Dev)
Enables MCU firmware.
Definition: vl53l1_core.c:768
VL53L1_debug_results_t::nvm_bist__status
uint8_t nvm_bist__status
Definition: vl53l1_register_structs.h:2186
VL53L1_dynamic_config_t::sd_config__first_order_select
uint8_t sd_config__first_order_select
Definition: vl53l1_register_structs.h:1209
VL53L1_static_nvm_managed_t::ana_config__vhv_ref_sel_vddpix
uint8_t ana_config__vhv_ref_sel_vddpix
Definition: vl53l1_register_structs.h:139
VL53L1_dynamic_config_t::sd_config__quantifier
uint8_t sd_config__quantifier
Definition: vl53l1_register_structs.h:1220
VL53L1_nvm_copy_data_t::global_config__spad_enables_rtn_8
uint8_t global_config__spad_enables_rtn_8
Definition: vl53l1_register_structs.h:2430
VL53L1_ERROR_COMMS_BUFFER_TOO_SMALL
#define VL53L1_ERROR_COMMS_BUFFER_TOO_SMALL
Definition: vl53l1_error_codes.h:114
VL53L1_patch_results_t::xtalk_calc__xtalk_for_enabled_spads
uint32_t xtalk_calc__xtalk_for_enabled_spads
Definition: vl53l1_register_structs.h:3936
VL53L1_nvm_copy_data_t::ana_config__vcsel_selion
uint8_t ana_config__vcsel_selion
Definition: vl53l1_register_structs.h:2280
VL53L1_SHADOW_SYSTEM_RESULTS_I2C_SIZE_BYTES
#define VL53L1_SHADOW_SYSTEM_RESULTS_I2C_SIZE_BYTES
Definition: vl53l1_register_structs.h:115
VL53L1_debug_results_t::phasecal_result__reference_phase
uint16_t phasecal_result__reference_phase
Definition: vl53l1_register_structs.h:1732
VL53L1_static_config_t::pad_i2c_hv__extsup_config
uint8_t pad_i2c_hv__extsup_config
Definition: vl53l1_register_structs.h:516
VL53L1_general_config_t::dss_config__min_spads_limit
uint8_t dss_config__min_spads_limit
Definition: vl53l1_register_structs.h:910
VL53L1_patch_results_t::dss_calc__user_roi_spad_en_20
uint8_t dss_calc__user_roi_spad_en_20
Definition: vl53l1_register_structs.h:3676
VL53L1_patch_results_t::dss_calc__user_roi_spad_en_30
uint8_t dss_calc__user_roi_spad_en_30
Definition: vl53l1_register_structs.h:3776
VL53L1_system_results_t::result__spare_1_sd1
uint16_t result__spare_1_sd1
Definition: vl53l1_register_structs.h:1575
VL53L1_static_config_t::gpio_hv_pad__ctrl
uint8_t gpio_hv_pad__ctrl
Definition: vl53l1_register_structs.h:526
VL53L1_i2c_decode_uint32_t
uint32_t VL53L1_i2c_decode_uint32_t(uint16_t count, uint8_t *pbuffer)
Decodes a uint32_t register value from an I2C read buffer.
Definition: vl53l1_core.c:624
VL53L1_nvm_copy_data_t::laser_safety__clip
uint8_t laser_safety__clip
Definition: vl53l1_register_structs.h:2330
VL53L1_core_results_t::result_core__signal_total_events_sd1
int32_t result_core__signal_total_events_sd1
Definition: vl53l1_register_structs.h:1689
VL53L1_static_config_t::spare_host_config__static_config_spare_0
uint8_t spare_host_config__static_config_spare_0
Definition: vl53l1_register_structs.h:639
VL53L1_general_config_t::phasecal_config__override
uint8_t phasecal_config__override
Definition: vl53l1_register_structs.h:829
VL53L1_debug_results_t::firmware__system_status
uint8_t firmware__system_status
Definition: vl53l1_register_structs.h:1868
VL53L1_nvm_copy_data_t::global_config__spad_enables_rtn_0
uint8_t global_config__spad_enables_rtn_0
Definition: vl53l1_register_structs.h:2350
VL53L1_prev_shadow_system_results_t::prev_shadow_result__final_crosstalk_corrected_range_mm_sd0
uint16_t prev_shadow_result__final_crosstalk_corrected_range_mm_sd0
Definition: vl53l1_register_structs.h:2798
VL53L1_patch_results_t::dss_calc__user_roi_spad_en_29
uint8_t dss_calc__user_roi_spad_en_29
Definition: vl53l1_register_structs.h:3766
VL53L1_nvm_copy_data_t::global_config__spad_enables_rtn_25
uint8_t global_config__spad_enables_rtn_25
Definition: vl53l1_register_structs.h:2600
VL53L1_debug_results_t::gph__sd_config__woi_sd0
uint8_t gph__sd_config__woi_sd0
Definition: vl53l1_register_structs.h:1951
VL53L1_nvm_copy_data_t::roi_config__mode_roi_centre_spad
uint8_t roi_config__mode_roi_centre_spad
Definition: vl53l1_register_structs.h:2670
VL53L1_shadow_system_results_t::shadow_result__phase_sd1
uint16_t shadow_result__phase_sd1
Definition: vl53l1_register_structs.h:4204
VL53L1_CORE_RESULTS_I2C_SIZE_BYTES
#define VL53L1_CORE_RESULTS_I2C_SIZE_BYTES
Definition: vl53l1_register_structs.h:104
VL53L1_gph_timing_config_t::gph__range_config__min_count_rate_rtn_limit_mcps
uint16_t gph__range_config__min_count_rate_rtn_limit_mcps
Definition: vl53l1_register_structs.h:3319
VL53L1_debug_results_t::ana_config__ref_bg_ctrl
uint8_t ana_config__ref_bg_ctrl
Definition: vl53l1_register_structs.h:1823
VL53L1_dynamic_config_t::system__grouped_parameter_hold_1
uint8_t system__grouped_parameter_hold_1
Definition: vl53l1_register_structs.h:1198
VL53L1_debug_results_t::firmware__cal_repeat_rate_counter
uint16_t firmware__cal_repeat_rate_counter
Definition: vl53l1_register_structs.h:1899
VL53L1_nvm_copy_data_t::identification__revision_id
uint8_t identification__revision_id
Definition: vl53l1_register_structs.h:2229
VL53L1_patch_results_t::dss_calc__spare_6
uint8_t dss_calc__spare_6
Definition: vl53l1_register_structs.h:3456
VL53L1_SHADOW_PHASECAL_RESULT__VCSEL_START
#define VL53L1_SHADOW_PHASECAL_RESULT__VCSEL_START
Definition: vl53l1_register_map.h:10839
VL53L1_shadow_system_results_t::shadow_result__report_status
uint8_t shadow_result__report_status
Definition: vl53l1_register_structs.h:4044
vl53l1_core.h
EwokPlus25 core function definitions.
VL53L1_system_results_t::result__peak_signal_count_rate_crosstalk_corrected_mcps_sd0
uint16_t result__peak_signal_count_rate_crosstalk_corrected_mcps_sd0
Definition: vl53l1_register_structs.h:1465
VL53L1_static_config_t::spare_host_config__static_config_spare_2
uint8_t spare_host_config__static_config_spare_2
Definition: vl53l1_register_structs.h:700
VL53L1_nvm_copy_data_t::protected_laser_safety__lock_bit
uint8_t protected_laser_safety__lock_bit
Definition: vl53l1_register_structs.h:2300
VL53L1_gph_general_config_t
Definition: vl53l1_register_structs.h:3096
VL53L1_patch_results_t::dss_calc__user_roi_spad_en_5
uint8_t dss_calc__user_roi_spad_en_5
Definition: vl53l1_register_structs.h:3526
VL53L1_static_nvm_managed_t::vhv_config__offset
uint8_t vhv_config__offset
Definition: vl53l1_register_structs.h:210
VL53L1_customer_nvm_managed_t::global_config__spad_enables_ref_0
uint8_t global_config__spad_enables_ref_0
Definition: vl53l1_register_structs.h:244
VL53L1_nvm_copy_data_t::global_config__spad_enables_rtn_6
uint8_t global_config__spad_enables_rtn_6
Definition: vl53l1_register_structs.h:2410
VL53L1_prev_shadow_system_results_t::prev_shadow_result__sigma_sd0
uint16_t prev_shadow_result__sigma_sd0
Definition: vl53l1_register_structs.h:2778
VL53L1_debug_results_t::nvm_bist__complete
uint8_t nvm_bist__complete
Definition: vl53l1_register_structs.h:2176
VL53L1_patch_debug_t::result__debug_status
uint8_t result__debug_status
Definition: vl53l1_register_structs.h:3064
VL53L1_system_results_t::result__spare_0_sd1
uint16_t result__spare_0_sd1
Definition: vl53l1_register_structs.h:1565
VL53L1_static_config_t::ana_config__spad_sel_pswidth
uint8_t ana_config__spad_sel_pswidth
Definition: vl53l1_register_structs.h:569
VL53L1_dynamic_config_t::sd_config__initial_phase_sd1
uint8_t sd_config__initial_phase_sd1
Definition: vl53l1_register_structs.h:1188
VL53L1_prev_shadow_system_results_t::prev_shadow_result__final_crosstalk_corrected_range_mm_sd1
uint16_t prev_shadow_result__final_crosstalk_corrected_range_mm_sd1
Definition: vl53l1_register_structs.h:2898
VL53L1_shadow_system_results_t::shadow_result__peak_signal_count_rate_mcps_sd1
uint16_t shadow_result__peak_signal_count_rate_mcps_sd1
Definition: vl53l1_register_structs.h:4174
VL53L1_prev_shadow_system_results_t::prev_shadow_result__spare_3_sd1
uint16_t prev_shadow_result__spare_3_sd1
Definition: vl53l1_register_structs.h:2938
VL53L1_customer_nvm_managed_t
Definition: vl53l1_register_structs.h:243
VL53L1_system_results_t::result__phase_sd0
uint16_t result__phase_sd0
Definition: vl53l1_register_structs.h:1445
VL53L1_static_nvm_managed_t::vhv_config__timeout_macrop_loop_bound
uint8_t vhv_config__timeout_macrop_loop_bound
Definition: vl53l1_register_structs.h:189
VL53L1_nvm_copy_data_t::global_config__spad_enables_rtn_27
uint8_t global_config__spad_enables_rtn_27
Definition: vl53l1_register_structs.h:2620
VL53L1_system_results_t::result__peak_signal_count_rate_mcps_sd1
uint16_t result__peak_signal_count_rate_mcps_sd1
Definition: vl53l1_register_structs.h:1515
VL53L1_static_config_t::sigma_estimator__sigma_ref_mm
uint8_t sigma_estimator__sigma_ref_mm
Definition: vl53l1_register_structs.h:619
VL53L1_prev_shadow_core_results_t::prev_shadow_result_core__ranging_total_events_sd0
uint32_t prev_shadow_result_core__ranging_total_events_sd0
Definition: vl53l1_register_structs.h:2971
VL53L1_static_nvm_managed_t::i2c_slave__device_address
uint8_t i2c_slave__device_address
Definition: vl53l1_register_structs.h:129
VL53L1_static_nvm_managed_t::osc_measured__fast_osc__frequency
uint16_t osc_measured__fast_osc__frequency
Definition: vl53l1_register_structs.h:179
VL53L1_nvm_copy_data_t::global_config__spad_enables_rtn_4
uint8_t global_config__spad_enables_rtn_4
Definition: vl53l1_register_structs.h:2390
vl53l1_register_funcs.h
VL53L1 Register Function declarations.
VL53L1_patch_results_t::vhv_result__peak_signal_rate_mcps
uint16_t vhv_result__peak_signal_rate_mcps
Definition: vl53l1_register_structs.h:3846
VL53L1_Dev_t
Definition: vl53l1_platform_user_data.h:78
VL53L1_SHADOW_CORE_RESULTS_I2C_SIZE_BYTES
#define VL53L1_SHADOW_CORE_RESULTS_I2C_SIZE_BYTES
Definition: vl53l1_register_structs.h:116
VL53L1_gph_timing_config_t::gph__range_config__timeout_macrop_a_lo
uint8_t gph__range_config__timeout_macrop_a_lo
Definition: vl53l1_register_structs.h:3259
VL53L1_static_config_t::sigma_estimator__effective_ambient_width_ns
uint8_t sigma_estimator__effective_ambient_width_ns
Definition: vl53l1_register_structs.h:609
VL53L1_gph_general_config_t::gph__system__thresh_rate_low
uint16_t gph__system__thresh_rate_low
Definition: vl53l1_register_structs.h:3107
VL53L1_GPH__DSS_CONFIG__ROI_MODE_CONTROL
#define VL53L1_GPH__DSS_CONFIG__ROI_MODE_CONTROL
Definition: vl53l1_register_map.h:9300
VL53L1_patch_results_t::dss_calc__mode_roi_1
uint8_t dss_calc__mode_roi_1
Definition: vl53l1_register_structs.h:3826
VL53L1_debug_results_t::mcu_to_host_bank__wr_access_en
uint8_t mcu_to_host_bank__wr_access_en
Definition: vl53l1_register_structs.h:2112
VL53L1_patch_results_t::mm_result__outer_complement_rate
uint16_t mm_result__outer_complement_rate
Definition: vl53l1_register_structs.h:3916
VL53L1_set_dynamic_config
VL53L1_Error VL53L1_set_dynamic_config(VL53L1_DEV Dev, VL53L1_dynamic_config_t *pdata)
Decodes data structure VL53L1_dynamic_config_t from the input I2C read buffer.
Definition: vl53l1_register_funcs.c:1171
VL53L1_system_results_t::result__sigma_sd1
uint16_t result__sigma_sd1
Definition: vl53l1_register_structs.h:1535
VL53L1_i2c_decode_general_config
VL53L1_Error VL53L1_i2c_decode_general_config(uint16_t buf_size, uint8_t *pbuffer, VL53L1_general_config_t *pdata)
Decodes data structure VL53L1_general_config_t from the input I2C read buffer.
Definition: vl53l1_register_funcs.c:738
VL53L1_debug_results_t::ana_config__osc_slow_ctrl
uint8_t ana_config__osc_slow_ctrl
Definition: vl53l1_register_structs.h:1846
VL53L1_static_config_t::gpio__fio_hv_status
uint8_t gpio__fio_hv_status
Definition: vl53l1_register_structs.h:559
VL53L1_dynamic_config_t
Definition: vl53l1_register_structs.h:1105
VL53L1_patch_results_t::xtalk_result__avg_xtalk_mm_inner_roi_kcps
uint32_t xtalk_result__avg_xtalk_mm_inner_roi_kcps
Definition: vl53l1_register_structs.h:3956
VL53L1_patch_results_t::sigma_estimator_calc__spare_0
uint8_t sigma_estimator_calc__spare_0
Definition: vl53l1_register_structs.h:3836
VL53L1_patch_results_t::dss_calc__user_roi_spad_en_0
uint8_t dss_calc__user_roi_spad_en_0
Definition: vl53l1_register_structs.h:3476
VL53L1_debug_results_t::gph__sd_config__initial_phase_sd0
uint8_t gph__sd_config__initial_phase_sd0
Definition: vl53l1_register_structs.h:1971
VL53L1_system_control_t::system__interrupt_clear
uint8_t system__interrupt_clear
Definition: vl53l1_register_structs.h:1321
VL53L1_debug_results_t
Definition: vl53l1_register_structs.h:1731
VL53L1_shadow_core_results_t::shadow_result_core__ambient_window_events_sd0
uint32_t shadow_result_core__ambient_window_events_sd0
Definition: vl53l1_register_structs.h:4308
VL53L1_RESULT__INTERRUPT_STATUS
#define VL53L1_RESULT__INTERRUPT_STATUS
Definition: vl53l1_register_map.h:2052
VL53L1_nvm_copy_data_t::identification__model_id
uint8_t identification__model_id
Definition: vl53l1_register_structs.h:2209
VL53L1_general_config_t::dss_config__aperture_attenuation
uint8_t dss_config__aperture_attenuation
Definition: vl53l1_register_structs.h:890
VL53L1_patch_results_t::dss_calc__spare_3
uint8_t dss_calc__spare_3
Definition: vl53l1_register_structs.h:3426
VL53L1_core_results_t::result_core__ranging_total_events_sd0
uint32_t result_core__ranging_total_events_sd0
Definition: vl53l1_register_structs.h:1639
VL53L1_patch_results_t::dss_calc__user_roi_spad_en_21
uint8_t dss_calc__user_roi_spad_en_21
Definition: vl53l1_register_structs.h:3686
VL53L1_patch_results_t::dss_calc__user_roi_spad_en_18
uint8_t dss_calc__user_roi_spad_en_18
Definition: vl53l1_register_structs.h:3656
VL53L1_gph_timing_config_t
Definition: vl53l1_register_structs.h:3208
VL53L1_prev_shadow_system_results_t::prev_shadow_result__peak_signal_count_rate_mcps_sd0
uint16_t prev_shadow_result__peak_signal_count_rate_mcps_sd0
Definition: vl53l1_register_structs.h:2758
VL53L1_patch_results_t::dss_calc__spare_1
uint8_t dss_calc__spare_1
Definition: vl53l1_register_structs.h:3406
VL53L1_gph_static_config_t::gph__dss_config__max_spads_limit
uint8_t gph__dss_config__max_spads_limit
Definition: vl53l1_register_structs.h:3176
VL53L1_static_config_t::nvm_bist__num_nvm_words
uint8_t nvm_bist__num_nvm_words
Definition: vl53l1_register_structs.h:471
VL53L1_TIMING_CONFIG_I2C_SIZE_BYTES
#define VL53L1_TIMING_CONFIG_I2C_SIZE_BYTES
Definition: vl53l1_register_structs.h:100
VL53L1_customer_nvm_managed_t::global_config__spad_enables_ref_1
uint8_t global_config__spad_enables_ref_1
Definition: vl53l1_register_structs.h:254
VL53L1_patch_results_t::dss_calc__user_roi_spad_en_15
uint8_t dss_calc__user_roi_spad_en_15
Definition: vl53l1_register_structs.h:3626
VL53L1_patch_debug_t
Definition: vl53l1_register_structs.h:3063
VL53L1_debug_results_t::gph__system__enable_xtalk_per_quadrant
uint8_t gph__system__enable_xtalk_per_quadrant
Definition: vl53l1_register_structs.h:1929
VL53L1_dynamic_config_t::system__enable_xtalk_per_quadrant
uint8_t system__enable_xtalk_per_quadrant
Definition: vl53l1_register_structs.h:1137
VL53L1_general_config_t::gph_config__stream_count_update_value
uint8_t gph_config__stream_count_update_value
Definition: vl53l1_register_structs.h:744
VL53L1_gph_timing_config_t::gph__mm_config__timeout_macrop_a_hi
uint8_t gph__mm_config__timeout_macrop_a_hi
Definition: vl53l1_register_structs.h:3209
VL53L1_i2c_decode_uint16_t
uint16_t VL53L1_i2c_decode_uint16_t(uint16_t count, uint8_t *pbuffer)
Decodes a uint16_t register value from an I2C read buffer.
Definition: vl53l1_core.c:540
VL53L1_shadow_system_results_t::shadow_result__ambient_count_rate_mcps_sd1
uint16_t shadow_result__ambient_count_rate_mcps_sd1
Definition: vl53l1_register_structs.h:4184
VL53L1_nvm_copy_data_t::global_config__spad_enables_rtn_3
uint8_t global_config__spad_enables_rtn_3
Definition: vl53l1_register_structs.h:2380
VL53L1_timing_config_t::range_config__timeout_macrop_b_hi
uint8_t range_config__timeout_macrop_b_hi
Definition: vl53l1_register_structs.h:1003
VL53L1_patch_results_t::dss_calc__roi_ctrl
uint8_t dss_calc__roi_ctrl
Definition: vl53l1_register_structs.h:3395
VL53L1_shadow_system_results_t::shadow_result__peak_signal_count_rate_mcps_sd0
uint16_t shadow_result__peak_signal_count_rate_mcps_sd0
Definition: vl53l1_register_structs.h:4074
VL53L1_system_results_t::result__spare_2_sd1
uint16_t result__spare_2_sd1
Definition: vl53l1_register_structs.h:1585
VL53L1_nvm_copy_data_t::global_config__spad_enables_rtn_13
uint8_t global_config__spad_enables_rtn_13
Definition: vl53l1_register_structs.h:2480
VL53L1_patch_results_t::dss_result__num_requested_spads
uint16_t dss_result__num_requested_spads
Definition: vl53l1_register_structs.h:3896
VL53L1_nvm_copy_data_t::identification__module_id
uint16_t identification__module_id
Definition: vl53l1_register_structs.h:2240
VL53L1_prev_shadow_core_results_t::prev_shadow_result_core__total_periods_elapsed_sd0
uint32_t prev_shadow_result_core__total_periods_elapsed_sd0
Definition: vl53l1_register_structs.h:2991
VL53L1_shadow_system_results_t::shadow_result__final_crosstalk_corrected_range_mm_sd1
uint16_t shadow_result__final_crosstalk_corrected_range_mm_sd1
Definition: vl53l1_register_structs.h:4214
VL53L1_debug_results_t::pad_startup_mode__value_ro
uint8_t pad_startup_mode__value_ro
Definition: vl53l1_register_structs.h:2132
VL53L1_core_results_t::result_core__total_periods_elapsed_sd0
uint32_t result_core__total_periods_elapsed_sd0
Definition: vl53l1_register_structs.h:1659
VL53L1_nvm_copy_data_t::global_config__spad_enables_rtn_1
uint8_t global_config__spad_enables_rtn_1
Definition: vl53l1_register_structs.h:2360
VL53L1_nvm_copy_data_t::ana_config__fast_osc__trim_max
uint8_t ana_config__fast_osc__trim_max
Definition: vl53l1_register_structs.h:2250
VL53L1_static_config_t::nvm_bist__start_address
uint8_t nvm_bist__start_address
Definition: vl53l1_register_structs.h:481
VL53L1_debug_results_t::ana_config__regdvdd1v2_ctrl
uint8_t ana_config__regdvdd1v2_ctrl
Definition: vl53l1_register_structs.h:1834
VL53L1_nvm_copy_data_t::global_config__spad_enables_rtn_26
uint8_t global_config__spad_enables_rtn_26
Definition: vl53l1_register_structs.h:2610
VL53L1_general_config_t::dss_config__manual_block_select
uint8_t dss_config__manual_block_select
Definition: vl53l1_register_structs.h:880
VL53L1_core_results_t::result_core__total_periods_elapsed_sd1
uint32_t result_core__total_periods_elapsed_sd1
Definition: vl53l1_register_structs.h:1699
vl53l1_register_map.h
VL53L1 Register Map definitions.
VL53L1_gph_static_config_t::gph__dss_config__manual_effective_spads_select
uint16_t gph__dss_config__manual_effective_spads_select
Definition: vl53l1_register_structs.h:3156
VL53L1_nvm_copy_data_t::global_config__spad_enables_rtn_2
uint8_t global_config__spad_enables_rtn_2
Definition: vl53l1_register_structs.h:2370
VL53L1_shadow_core_results_t::shadow_result_core__spare_0
uint8_t shadow_result_core__spare_0
Definition: vl53l1_register_structs.h:4388
VL53L1_DYNAMIC_CONFIG_I2C_SIZE_BYTES
#define VL53L1_DYNAMIC_CONFIG_I2C_SIZE_BYTES
Definition: vl53l1_register_structs.h:101
VL53L1_nvm_copy_data_t::roi_config__mode_roi_xy_size
uint8_t roi_config__mode_roi_xy_size
Definition: vl53l1_register_structs.h:2680
VL53L1_set_system_control
VL53L1_Error VL53L1_set_system_control(VL53L1_DEV Dev, VL53L1_system_control_t *pdata)
Decodes data structure VL53L1_system_control_t from the input I2C read buffer.
Definition: vl53l1_register_funcs.c:1309
VL53L1_general_config_t::cal_config__vcsel_start
uint8_t cal_config__vcsel_start
Definition: vl53l1_register_structs.h:779
VL53L1_static_nvm_managed_t::vhv_config__init
uint8_t vhv_config__init
Definition: vl53l1_register_structs.h:220
VL53L1_patch_results_t::dss_result__enabled_blocks
uint8_t dss_result__enabled_blocks
Definition: vl53l1_register_structs.h:3886
VL53L1_nvm_copy_data_t::global_config__spad_enables_rtn_7
uint8_t global_config__spad_enables_rtn_7
Definition: vl53l1_register_structs.h:2420
VL53L1_patch_results_t::range_result__offset_corrected_range
uint16_t range_result__offset_corrected_range
Definition: vl53l1_register_structs.h:3986
VL53L1_shadow_system_results_t::shadow_result__avg_signal_count_rate_mcps_sd0
uint16_t shadow_result__avg_signal_count_rate_mcps_sd0
Definition: vl53l1_register_structs.h:4154
vl53l1_register_structs.h
VL53L1 Register Structure definitions.
VL53L1_system_results_t::result__avg_signal_count_rate_mcps_sd0
uint16_t result__avg_signal_count_rate_mcps_sd0
Definition: vl53l1_register_structs.h:1495
VL53L1_patch_results_t::dss_calc__user_roi_1
uint8_t dss_calc__user_roi_1
Definition: vl53l1_register_structs.h:3806
VL53L1_MM_CONFIG__TIMEOUT_MACROP_A_HI
#define VL53L1_MM_CONFIG__TIMEOUT_MACROP_A_HI
Definition: vl53l1_register_map.h:1395
VL53L1_STATIC_NVM_MANAGED_I2C_SIZE_BYTES
#define VL53L1_STATIC_NVM_MANAGED_I2C_SIZE_BYTES
Definition: vl53l1_register_structs.h:96
VL53L1_general_config_t::global_config__vcsel_width
uint8_t global_config__vcsel_width
Definition: vl53l1_register_structs.h:799
VL53L1_i2c_decode_debug_results
VL53L1_Error VL53L1_i2c_decode_debug_results(uint16_t buf_size, uint8_t *pbuffer, VL53L1_debug_results_t *pdata)
Sets core_results register group.
Definition: vl53l1_register_funcs.c:1937
LOG_FUNCTION_END
#define LOG_FUNCTION_END(status,...)
Definition: vl53l1_register_funcs.c:78
VL53L1_debug_results_t::phasecal_result__vcsel_start
uint8_t phasecal_result__vcsel_start
Definition: vl53l1_register_structs.h:1742
VL53L1_i2c_decode_customer_nvm_managed
VL53L1_Error VL53L1_i2c_decode_customer_nvm_managed(uint16_t buf_size, uint8_t *pbuffer, VL53L1_customer_nvm_managed_t *pdata)
Decodes data structure VL53L1_customer_nvm_managed_t from the input I2C read buffer.
Definition: vl53l1_register_funcs.c:310
VL53L1_debug_results_t::gph__system__thresh_high
uint16_t gph__system__thresh_high
Definition: vl53l1_register_structs.h:1909
VL53L1_dynamic_config_t::system__grouped_parameter_hold_0
uint8_t system__grouped_parameter_hold_0
Definition: vl53l1_register_structs.h:1106
VL53L1_nvm_copy_data_t::ana_config__vcsel_trim
uint8_t ana_config__vcsel_trim
Definition: vl53l1_register_structs.h:2270
VL53L1_shadow_system_results_t::shadow_result__spare_1_sd1
uint16_t shadow_result__spare_1_sd1
Definition: vl53l1_register_structs.h:4234
VL53L1_system_results_t::result__thresh_info
uint8_t result__thresh_info
Definition: vl53l1_register_structs.h:1605
VL53L1_general_config_t::phasecal_config__target
uint8_t phasecal_config__target
Definition: vl53l1_register_structs.h:819
VL53L1_ReadMulti
VL53L1_Error VL53L1_ReadMulti(VL53L1_DEV Dev, uint16_t index, uint8_t *pdata, uint32_t count)
Definition: vl53l1_platform.c:16
VL53L1_shadow_system_results_t::shadow_result__peak_signal_count_rate_crosstalk_corrected_mcps_sd0
uint16_t shadow_result__peak_signal_count_rate_crosstalk_corrected_mcps_sd0
Definition: vl53l1_register_structs.h:4124
VL53L1_WriteMulti
VL53L1_Error VL53L1_WriteMulti(VL53L1_DEV Dev, uint16_t index, uint8_t *pdata, uint32_t count)
Definition: vl53l1_platform.c:11
VL53L1_timing_config_t::range_config__timeout_macrop_b_lo
uint8_t range_config__timeout_macrop_b_lo
Definition: vl53l1_register_structs.h:1013
VL53L1_customer_nvm_managed_t::global_config__spad_enables_ref_5
uint8_t global_config__spad_enables_ref_5
Definition: vl53l1_register_structs.h:294
VL53L1_customer_nvm_managed_t::ref_spad_char__total_rate_target_mcps
uint16_t ref_spad_char__total_rate_target_mcps
Definition: vl53l1_register_structs.h:364
VL53L1_prev_shadow_system_results_t
Definition: vl53l1_register_structs.h:2702
VL53L1_customer_nvm_managed_t::global_config__spad_enables_ref_4
uint8_t global_config__spad_enables_ref_4
Definition: vl53l1_register_structs.h:284
VL53L1_gph_timing_config_t::gph__range_config__valid_phase_low
uint8_t gph__range_config__valid_phase_low
Definition: vl53l1_register_structs.h:3329
VL53L1_static_config_t
Definition: vl53l1_register_structs.h:416
VL53L1_patch_results_t::dss_calc__user_roi_spad_en_6
uint8_t dss_calc__user_roi_spad_en_6
Definition: vl53l1_register_structs.h:3536
VL53L1_i2c_encode_customer_nvm_managed
VL53L1_Error VL53L1_i2c_encode_customer_nvm_managed(VL53L1_customer_nvm_managed_t *pdata, uint16_t buf_size, uint8_t *pbuffer)
Encodes data structure VL53L1_customer_nvm_managed_t into a I2C write buffer.
Definition: vl53l1_register_funcs.c:240
VL53L1_GPH_STATIC_CONFIG_I2C_SIZE_BYTES
#define VL53L1_GPH_STATIC_CONFIG_I2C_SIZE_BYTES
Definition: vl53l1_register_structs.h:111
VL53L1_system_results_t::result__stream_count
uint8_t result__stream_count
Definition: vl53l1_register_structs.h:1395
VL53L1_prev_shadow_core_results_t::prev_shadow_result_core__ambient_window_events_sd1
uint32_t prev_shadow_result_core__ambient_window_events_sd1
Definition: vl53l1_register_structs.h:3001
VL53L1_system_results_t::result__spare_3_sd1
uint8_t result__spare_3_sd1
Definition: vl53l1_register_structs.h:1595
VL53L1_dynamic_config_t::system__sequence_config
uint8_t system__sequence_config
Definition: vl53l1_register_structs.h:1250
VL53L1_timing_config_t::system__intermeasurement_period
uint32_t system__intermeasurement_period
Definition: vl53l1_register_structs.h:1073
VL53L1_debug_results_t::gph__roi_config__user_roi_requested_global_xy_size
uint8_t gph__roi_config__user_roi_requested_global_xy_size
Definition: vl53l1_register_structs.h:2022
VL53L1_static_config_t::test_mode__ctrl
uint8_t test_mode__ctrl
Definition: vl53l1_register_structs.h:437
VL53L1_ERROR_NONE
#define VL53L1_ERROR_NONE
Definition: vl53l1_error_codes.h:91
VL53L1_PREV_SHADOW_CORE_RESULTS_I2C_SIZE_BYTES
#define VL53L1_PREV_SHADOW_CORE_RESULTS_I2C_SIZE_BYTES
Definition: vl53l1_register_structs.h:108
VL53L1_shadow_system_results_t::shadow_result__mm_outer_actual_effective_spads_sd0
uint16_t shadow_result__mm_outer_actual_effective_spads_sd0
Definition: vl53l1_register_structs.h:4144
VL53L1_shadow_core_results_t::shadow_result_core__ambient_window_events_sd1
uint32_t shadow_result_core__ambient_window_events_sd1
Definition: vl53l1_register_structs.h:4348
VL53L1_NVM_COPY_DATA_I2C_SIZE_BYTES
#define VL53L1_NVM_COPY_DATA_I2C_SIZE_BYTES
Definition: vl53l1_register_structs.h:106
VL53L1_debug_results_t::firmware__secondary_mode_status
uint8_t firmware__secondary_mode_status
Definition: vl53l1_register_structs.h:1889
VL53L1_nvm_copy_data_t::global_config__spad_enables_rtn_23
uint8_t global_config__spad_enables_rtn_23
Definition: vl53l1_register_structs.h:2580
VL53L1_shadow_system_results_t::shadow_result__stream_count
uint8_t shadow_result__stream_count
Definition: vl53l1_register_structs.h:4054
VL53L1_dynamic_config_t::roi_config__user_roi_requested_global_xy_size
uint8_t roi_config__user_roi_requested_global_xy_size
Definition: vl53l1_register_structs.h:1240
VL53L1_gph_timing_config_t::gph__range_config__timeout_macrop_b_hi
uint8_t gph__range_config__timeout_macrop_b_hi
Definition: vl53l1_register_structs.h:3289
VL53L1_nvm_copy_data_t::global_config__spad_enables_rtn_9
uint8_t global_config__spad_enables_rtn_9
Definition: vl53l1_register_structs.h:2440
VL53L1_static_config_t::algo__range_ignore_threshold_mcps
uint16_t algo__range_ignore_threshold_mcps
Definition: vl53l1_register_structs.h:659
VL53L1_shadow_system_results_t::shadow_result__range_status
uint8_t shadow_result__range_status
Definition: vl53l1_register_structs.h:4031
VL53L1_patch_results_t::dss_calc__user_roi_spad_en_27
uint8_t dss_calc__user_roi_spad_en_27
Definition: vl53l1_register_structs.h:3746
VL53L1_debug_results_t::firmware__mode_status
uint8_t firmware__mode_status
Definition: vl53l1_register_structs.h:1879
VL53L1_system_results_t::result__mm_inner_actual_effective_spads_sd0
uint16_t result__mm_inner_actual_effective_spads_sd0
Definition: vl53l1_register_structs.h:1475
VL53L1_nvm_copy_data_t::ana_config__fast_osc__freq_set
uint8_t ana_config__fast_osc__freq_set
Definition: vl53l1_register_structs.h:2260
VL53L1_get_static_nvm_managed
VL53L1_Error VL53L1_get_static_nvm_managed(VL53L1_DEV Dev, VL53L1_static_nvm_managed_t *pdata)
Gets static_nvm_managed register group.
Definition: vl53l1_register_funcs.c:207
VL53L1_static_nvm_managed_t::vhv_config__count_thresh
uint8_t vhv_config__count_thresh
Definition: vl53l1_register_structs.h:200
VL53L1_general_config_t::system__thresh_rate_low
uint16_t system__thresh_rate_low
Definition: vl53l1_register_structs.h:860
VL53L1_patch_results_t::mm_result__total_offset
uint16_t mm_result__total_offset
Definition: vl53l1_register_structs.h:3926
VL53L1_i2c_encode_timing_config
VL53L1_Error VL53L1_i2c_encode_timing_config(VL53L1_timing_config_t *pdata, uint16_t buf_size, uint8_t *pbuffer)
Gets general_config register group.
Definition: vl53l1_register_funcs.c:864
VL53L1_nvm_copy_data_t::global_config__spad_enables_rtn_31
uint8_t global_config__spad_enables_rtn_31
Definition: vl53l1_register_structs.h:2660
VL53L1_patch_results_t::dss_calc__user_roi_0
uint8_t dss_calc__user_roi_0
Definition: vl53l1_register_structs.h:3796
VL53L1_nvm_copy_data_t::laser_safety__key
uint8_t laser_safety__key
Definition: vl53l1_register_structs.h:2310
VL53L1_customer_nvm_managed_t::mm_config__outer_offset_mm
int16_t mm_config__outer_offset_mm
Definition: vl53l1_register_structs.h:394
VL53L1_SYSTEM_CONTROL_I2C_SIZE_BYTES
#define VL53L1_SYSTEM_CONTROL_I2C_SIZE_BYTES
Definition: vl53l1_register_structs.h:102
VL53L1_customer_nvm_managed_t::algo__crosstalk_compensation_x_plane_gradient_kcps
int16_t algo__crosstalk_compensation_x_plane_gradient_kcps
Definition: vl53l1_register_structs.h:344
VL53L1_debug_results_t::vhv_result__coldboot_status
uint8_t vhv_result__coldboot_status
Definition: vl53l1_register_structs.h:1772
VL53L1_DEBUG_RESULTS_I2C_SIZE_BYTES
#define VL53L1_DEBUG_RESULTS_I2C_SIZE_BYTES
Definition: vl53l1_register_structs.h:105
VL53L1_nvm_copy_data_t::global_config__spad_enables_rtn_22
uint8_t global_config__spad_enables_rtn_22
Definition: vl53l1_register_structs.h:2570
VL53L1_debug_results_t::gph__system__thresh_low
uint16_t gph__system__thresh_low
Definition: vl53l1_register_structs.h:1919
VL53L1_i2c_encode_int16_t
void VL53L1_i2c_encode_int16_t(int16_t ip_value, uint16_t count, uint8_t *pbuffer)
Encodes a int16_t register value into an I2C write buffer.
Definition: vl53l1_core.c:559
VL53L1_customer_nvm_managed_t::ref_spad_man__num_requested_ref_spads
uint8_t ref_spad_man__num_requested_ref_spads
Definition: vl53l1_register_structs.h:314
VL53L1_nvm_copy_data_t::global_config__spad_enables_rtn_12
uint8_t global_config__spad_enables_rtn_12
Definition: vl53l1_register_structs.h:2470
VL53L1_timing_config_t::mm_config__timeout_macrop_b_hi
uint8_t mm_config__timeout_macrop_b_hi
Definition: vl53l1_register_structs.h:953
VL53L1_shadow_core_results_t::shadow_result_core__ranging_total_events_sd0
uint32_t shadow_result_core__ranging_total_events_sd0
Definition: vl53l1_register_structs.h:4318
VL53L1_debug_results_t::gph__gph_id
uint8_t gph__gph_id
Definition: vl53l1_register_structs.h:2049
VL53L1_customer_nvm_managed_t::global_config__spad_enables_ref_2
uint8_t global_config__spad_enables_ref_2
Definition: vl53l1_register_structs.h:264
VL53L1_prev_shadow_system_results_t::prev_shadow_result__mm_inner_actual_effective_spads_sd0
uint16_t prev_shadow_result__mm_inner_actual_effective_spads_sd0
Definition: vl53l1_register_structs.h:2818
VL53L1_FIRMWARE__INTERNAL_STREAM_COUNT_DIV
#define VL53L1_FIRMWARE__INTERNAL_STREAM_COUNT_DIV
Definition: vl53l1_register_map.h:9628
VL53L1_patch_results_t::dss_calc__user_roi_spad_en_17
uint8_t dss_calc__user_roi_spad_en_17
Definition: vl53l1_register_structs.h:3646
VL53L1_nvm_copy_data_t::global_config__spad_enables_rtn_24
uint8_t global_config__spad_enables_rtn_24
Definition: vl53l1_register_structs.h:2590
VL53L1_FW_INTERNAL_I2C_SIZE_BYTES
#define VL53L1_FW_INTERNAL_I2C_SIZE_BYTES
Definition: vl53l1_register_structs.h:113
VL53L1_gph_timing_config_t::gph__range_config__vcsel_period_b
uint8_t gph__range_config__vcsel_period_b
Definition: vl53l1_register_structs.h:3279
VL53L1_debug_results_t::system__interrupt_set
uint8_t system__interrupt_set
Definition: vl53l1_register_structs.h:2059
VL53L1_system_results_t::result__range_status
uint8_t result__range_status
Definition: vl53l1_register_structs.h:1372
VL53L1_prev_shadow_system_results_t::prev_shadow_result__ambient_count_rate_mcps_sd1
uint16_t prev_shadow_result__ambient_count_rate_mcps_sd1
Definition: vl53l1_register_structs.h:2868
VL53L1_patch_results_t::dss_calc__user_roi_spad_en_16
uint8_t dss_calc__user_roi_spad_en_16
Definition: vl53l1_register_structs.h:3636
VL53L1_debug_results_t::pad_startup_mode__value_ctrl
uint8_t pad_startup_mode__value_ctrl
Definition: vl53l1_register_structs.h:2143
VL53L1_nvm_copy_data_t::global_config__spad_enables_rtn_30
uint8_t global_config__spad_enables_rtn_30
Definition: vl53l1_register_structs.h:2650
VL53L1_customer_nvm_managed_t::algo__crosstalk_compensation_plane_offset_kcps
uint16_t algo__crosstalk_compensation_plane_offset_kcps
Definition: vl53l1_register_structs.h:334
VL53L1_system_results_t::result__ambient_count_rate_mcps_sd1
uint16_t result__ambient_count_rate_mcps_sd1
Definition: vl53l1_register_structs.h:1525
VL53L1_debug_results_t::ana_config__powerdown_go1
uint8_t ana_config__powerdown_go1
Definition: vl53l1_register_structs.h:1812
VL53L1_customer_nvm_managed_t::algo__part_to_part_range_offset_mm
int16_t algo__part_to_part_range_offset_mm
Definition: vl53l1_register_structs.h:374
VL53L1_i2c_encode_int32_t
void VL53L1_i2c_encode_int32_t(int32_t ip_value, uint16_t count, uint8_t *pbuffer)
Encodes a int32_t register value into an I2C write buffer.
Definition: vl53l1_core.c:675
VL53L1_nvm_copy_data_t::global_config__spad_enables_rtn_14
uint8_t global_config__spad_enables_rtn_14
Definition: vl53l1_register_structs.h:2490
VL53L1_prev_shadow_system_results_t::prev_shadow_result__stream_count
uint8_t prev_shadow_result__stream_count
Definition: vl53l1_register_structs.h:2738
VL53L1_nvm_copy_data_t::global_config__spad_enables_rtn_21
uint8_t global_config__spad_enables_rtn_21
Definition: vl53l1_register_structs.h:2560
VL53L1_general_config_t::cal_config__repeat_rate
uint16_t cal_config__repeat_rate
Definition: vl53l1_register_structs.h:789
VL53L1_static_nvm_managed_t::ana_config__reg_avdd1v2_sel
uint8_t ana_config__reg_avdd1v2_sel
Definition: vl53l1_register_structs.h:159
VL53L1_system_results_t::result__dss_actual_effective_spads_sd0
uint16_t result__dss_actual_effective_spads_sd0
Definition: vl53l1_register_structs.h:1405
VL53L1_patch_debug_t::result__debug_stage
uint8_t result__debug_stage
Definition: vl53l1_register_structs.h:3074
VL53L1_system_control_t
Definition: vl53l1_register_structs.h:1290
VL53L1_static_config_t::debug__ctrl
uint8_t debug__ctrl
Definition: vl53l1_register_structs.h:427
VL53L1_nvm_copy_data_t::global_config__spad_enables_rtn_29
uint8_t global_config__spad_enables_rtn_29
Definition: vl53l1_register_structs.h:2640
VL53L1_i2c_encode_general_config
VL53L1_Error VL53L1_i2c_encode_general_config(VL53L1_general_config_t *pdata, uint16_t buf_size, uint8_t *pbuffer)
Gets static_config register group.
Definition: vl53l1_register_funcs.c:672
VL53L1_dynamic_config_t::system__grouped_parameter_hold
uint8_t system__grouped_parameter_hold
Definition: vl53l1_register_structs.h:1267
VL53L1_i2c_decode_int32_t
int32_t VL53L1_i2c_decode_int32_t(uint16_t count, uint8_t *pbuffer)
Decodes a int32_t register value from an I2C read buffer.
Definition: vl53l1_core.c:696
VL53L1_core_results_t::result_core__ambient_window_events_sd1
uint32_t result_core__ambient_window_events_sd1
Definition: vl53l1_register_structs.h:1669
VL53L1_i2c_decode_static_config
VL53L1_Error VL53L1_i2c_decode_static_config(uint16_t buf_size, uint8_t *pbuffer, VL53L1_static_config_t *pdata)
Decodes data structure VL53L1_static_config_t from the input I2C read buffer.
Definition: vl53l1_register_funcs.c:520
VL53L1_debug_results_t::test_mode__status
uint8_t test_mode__status
Definition: vl53l1_register_structs.h:1858
VL53L1_debug_results_t::interrupt_manager__clear
uint8_t interrupt_manager__clear
Definition: vl53l1_register_structs.h:2084
VL53L1_set_general_config
VL53L1_Error VL53L1_set_general_config(VL53L1_DEV Dev, VL53L1_general_config_t *pdata)
Sets general_config register group.
Definition: vl53l1_register_funcs.c:796
VL53L1_set_static_nvm_managed
VL53L1_Error VL53L1_set_static_nvm_managed(VL53L1_DEV Dev, VL53L1_static_nvm_managed_t *pdata)
Sets static_nvm_managed register group.
Definition: vl53l1_register_funcs.c:174
VL53L1_debug_results_t::gph__sd_config__woi_sd1
uint8_t gph__sd_config__woi_sd1
Definition: vl53l1_register_structs.h:1961
VL53L1_customer_nvm_managed_t::global_config__spad_enables_ref_3
uint8_t global_config__spad_enables_ref_3
Definition: vl53l1_register_structs.h:274
VL53L1_static_nvm_managed_t::ana_config__vhv_ref_sel_vquench
uint8_t ana_config__vhv_ref_sel_vquench
Definition: vl53l1_register_structs.h:149
VL53L1_patch_results_t::dss_calc__spare_2
uint8_t dss_calc__spare_2
Definition: vl53l1_register_structs.h:3416
VL53L1_patch_results_t::range_result__accum_phase
uint32_t range_result__accum_phase
Definition: vl53l1_register_structs.h:3976
VL53L1_nvm_copy_data_t::global_config__spad_enables_rtn_19
uint8_t global_config__spad_enables_rtn_19
Definition: vl53l1_register_structs.h:2540
VL53L1_customer_nvm_managed_t::mm_config__inner_offset_mm
int16_t mm_config__inner_offset_mm
Definition: vl53l1_register_structs.h:384
VL53L1_system_results_t::result__report_status
uint8_t result__report_status
Definition: vl53l1_register_structs.h:1385
VL53L1_patch_results_t
Definition: vl53l1_register_structs.h:3394
VL53L1_gph_static_config_t::gph__dss_config__min_spads_limit
uint8_t gph__dss_config__min_spads_limit
Definition: vl53l1_register_structs.h:3186
VL53L1_PATCH_DEBUG_I2C_SIZE_BYTES
#define VL53L1_PATCH_DEBUG_I2C_SIZE_BYTES
Definition: vl53l1_register_structs.h:109
VL53L1_shadow_system_results_t::shadow_result__spare_2_sd1
uint16_t shadow_result__spare_2_sd1
Definition: vl53l1_register_structs.h:4244
VL53L1_nvm_copy_data_t::laser_safety__key_ro
uint8_t laser_safety__key_ro
Definition: vl53l1_register_structs.h:2320
VL53L1_nvm_copy_data_t::global_config__spad_enables_rtn_28
uint8_t global_config__spad_enables_rtn_28
Definition: vl53l1_register_structs.h:2630
VL53L1_patch_results_t::dss_calc__user_roi_spad_en_3
uint8_t dss_calc__user_roi_spad_en_3
Definition: vl53l1_register_structs.h:3506
VL53L1_DSS_CALC__ROI_CTRL
#define VL53L1_DSS_CALC__ROI_CTRL
Definition: vl53l1_register_map.h:9658
VL53L1_debug_results_t::gph__roi_config__user_roi_centre_spad
uint8_t gph__roi_config__user_roi_centre_spad
Definition: vl53l1_register_structs.h:2012
VL53L1_POWER_MANAGEMENT__GO1_POWER_FORCE
#define VL53L1_POWER_MANAGEMENT__GO1_POWER_FORCE
Definition: vl53l1_register_map.h:1971
VL53L1_static_config_t::spare_host_config__static_config_spare_1
uint8_t spare_host_config__static_config_spare_1
Definition: vl53l1_register_structs.h:649
VL53L1_patch_results_t::dss_calc__user_roi_spad_en_23
uint8_t dss_calc__user_roi_spad_en_23
Definition: vl53l1_register_structs.h:3706
VL53L1_nvm_copy_data_t::global_config__spad_enables_rtn_16
uint8_t global_config__spad_enables_rtn_16
Definition: vl53l1_register_structs.h:2510
VL53L1_patch_results_t::dss_calc__user_roi_spad_en_2
uint8_t dss_calc__user_roi_spad_en_2
Definition: vl53l1_register_structs.h:3496
VL53L1_dynamic_config_t::system__seed_config
uint8_t system__seed_config
Definition: vl53l1_register_structs.h:1147
VL53L1_GENERAL_CONFIG_I2C_SIZE_BYTES
#define VL53L1_GENERAL_CONFIG_I2C_SIZE_BYTES
Definition: vl53l1_register_structs.h:99
VL53L1_shadow_core_results_t::shadow_result_core__ranging_total_events_sd1
uint32_t shadow_result_core__ranging_total_events_sd1
Definition: vl53l1_register_structs.h:4358
VL53L1_core_results_t::result_core__ranging_total_events_sd1
uint32_t result_core__ranging_total_events_sd1
Definition: vl53l1_register_structs.h:1679
VL53L1_gph_static_config_t
Definition: vl53l1_register_structs.h:3144
VL53L1_GPH__SYSTEM__THRESH_RATE_HIGH
#define VL53L1_GPH__SYSTEM__THRESH_RATE_HIGH
Definition: vl53l1_register_map.h:9222
VL53L1_prev_shadow_core_results_t::prev_shadow_result_core__signal_total_events_sd0
int32_t prev_shadow_result_core__signal_total_events_sd0
Definition: vl53l1_register_structs.h:2981
VL53L1_static_config_t::host_if__status
uint8_t host_if__status
Definition: vl53l1_register_structs.h:491
VL53L1_nvm_copy_data_t::ana_config__vcsel_selion_max
uint8_t ana_config__vcsel_selion_max
Definition: vl53l1_register_structs.h:2290
VL53L1_RESULT__DEBUG_STATUS
#define VL53L1_RESULT__DEBUG_STATUS
Definition: vl53l1_register_map.h:9192
VL53L1_shadow_system_results_t::shadow_result__dss_actual_effective_spads_sd1
uint16_t shadow_result__dss_actual_effective_spads_sd1
Definition: vl53l1_register_structs.h:4164
VL53L1_static_config_t::sd_config__reset_stages_lsb
uint8_t sd_config__reset_stages_lsb
Definition: vl53l1_register_structs.h:720
VL53L1_patch_results_t::mm_result__inner_intersection_rate
uint16_t mm_result__inner_intersection_rate
Definition: vl53l1_register_structs.h:3906
VL53L1_static_config_t::gpio__tio_hv_status
uint8_t gpio__tio_hv_status
Definition: vl53l1_register_structs.h:548
VL53L1_patch_results_t::dss_calc__spare_5
uint8_t dss_calc__spare_5
Definition: vl53l1_register_structs.h:3446
vl53l1_platform.h
VL53L1_patch_results_t::dss_calc__user_roi_spad_en_26
uint8_t dss_calc__user_roi_spad_en_26
Definition: vl53l1_register_structs.h:3736
VL53L1_fw_internal_t
Definition: vl53l1_register_structs.h:3361
VL53L1_i2c_decode_int16_t
int16_t VL53L1_i2c_decode_int16_t(uint16_t count, uint8_t *pbuffer)
Decodes a int16_t register value from an I2C read buffer.
Definition: vl53l1_core.c:580
VL53L1_timing_config_t::system__fractional_enable
uint8_t system__fractional_enable
Definition: vl53l1_register_structs.h:1083
VL53L1_shadow_core_results_t::shadow_result_core__signal_total_events_sd1
int32_t shadow_result_core__signal_total_events_sd1
Definition: vl53l1_register_structs.h:4368
VL53L1_shadow_core_results_t::shadow_result_core__total_periods_elapsed_sd1
uint32_t shadow_result_core__total_periods_elapsed_sd1
Definition: vl53l1_register_structs.h:4378
VL53L1_debug_results_t::ref_spad_char_result__ref_location
uint8_t ref_spad_char_result__ref_location
Definition: vl53l1_register_structs.h:1762
VL53L1_timing_config_t::range_config__valid_phase_low
uint8_t range_config__valid_phase_low
Definition: vl53l1_register_structs.h:1053
VL53L1_I2C_SLAVE__DEVICE_ADDRESS
#define VL53L1_I2C_SLAVE__DEVICE_ADDRESS
Definition: vl53l1_register_map.h:82
VL53L1_dynamic_config_t::sd_config__woi_sd0
uint8_t sd_config__woi_sd0
Definition: vl53l1_register_structs.h:1158
VL53L1_patch_results_t::dss_calc__mode_roi_0
uint8_t dss_calc__mode_roi_0
Definition: vl53l1_register_structs.h:3816
VL53L1_system_results_t::result__peak_signal_count_rate_mcps_sd0
uint16_t result__peak_signal_count_rate_mcps_sd0
Definition: vl53l1_register_structs.h:1415
VL53L1_static_config_t::nvm_bist__ctrl
uint8_t nvm_bist__ctrl
Definition: vl53l1_register_structs.h:460
VL53L1_i2c_decode_nvm_copy_data
VL53L1_Error VL53L1_i2c_decode_nvm_copy_data(uint16_t buf_size, uint8_t *pbuffer, VL53L1_nvm_copy_data_t *pdata)
Sets debug_results register group.
Definition: vl53l1_register_funcs.c:2245
VL53L1_system_results_t::result__sigma_sd0
uint16_t result__sigma_sd0
Definition: vl53l1_register_structs.h:1435
VL53L1_shadow_system_results_t::shadow_result__thresh_info
uint8_t shadow_result__thresh_info
Definition: vl53l1_register_structs.h:4264
VL53L1_debug_results_t::power_management__go1_reset_status
uint8_t power_management__go1_reset_status
Definition: vl53l1_register_structs.h:2122
VL53L1_nvm_copy_data_t
Definition: vl53l1_register_structs.h:2208
VL53L1_get_customer_nvm_managed
VL53L1_Error VL53L1_get_customer_nvm_managed(VL53L1_DEV Dev, VL53L1_customer_nvm_managed_t *pdata)
Gets customer_nvm_managed register group.
Definition: vl53l1_register_funcs.c:399
VL53L1_shadow_system_results_t::shadow_result__mm_inner_actual_effective_spads_sd0
uint16_t shadow_result__mm_inner_actual_effective_spads_sd0
Definition: vl53l1_register_structs.h:4134
VL53L1_patch_results_t::dss_calc__user_roi_spad_en_13
uint8_t dss_calc__user_roi_spad_en_13
Definition: vl53l1_register_structs.h:3606
VL53L1_Error
int8_t VL53L1_Error
Definition: vl53l1_error_codes.h:89
VL53L1_general_config_t::phasecal_config__timeout_macrop
uint8_t phasecal_config__timeout_macrop
Definition: vl53l1_register_structs.h:809
VL53L1_prev_shadow_system_results_t::prev_shadow_result__mm_outer_actual_effective_spads_sd0
uint16_t prev_shadow_result__mm_outer_actual_effective_spads_sd0
Definition: vl53l1_register_structs.h:2828
VL53L1_prev_shadow_system_results_t::prev_shadow_result__dss_actual_effective_spads_sd1
uint16_t prev_shadow_result__dss_actual_effective_spads_sd1
Definition: vl53l1_register_structs.h:2848
VL53L1_patch_results_t::dss_result__total_rate_per_spad
uint16_t dss_result__total_rate_per_spad
Definition: vl53l1_register_structs.h:3876
VL53L1_static_config_t::sd_config__reset_stages_msb
uint8_t sd_config__reset_stages_msb
Definition: vl53l1_register_structs.h:710
VL53L1_system_results_t::result__interrupt_status
uint8_t result__interrupt_status
Definition: vl53l1_register_structs.h:1360
VL53L1_fw_internal_t::firmware__internal_stream_count_div
uint8_t firmware__internal_stream_count_div
Definition: vl53l1_register_structs.h:3362
VL53L1_debug_results_t::gph__system__sequence_config
uint8_t gph__system__sequence_config
Definition: vl53l1_register_structs.h:2032
VL53L1_shadow_system_results_t::shadow_result__phase_sd0
uint16_t shadow_result__phase_sd0
Definition: vl53l1_register_structs.h:4104
VL53L1_patch_results_t::vhv_result__signal_total_events_ref
uint32_t vhv_result__signal_total_events_ref
Definition: vl53l1_register_structs.h:3856
VL53L1_static_config_t::ana_config__fast_osc__config_ctrl
uint8_t ana_config__fast_osc__config_ctrl
Definition: vl53l1_register_structs.h:589
VL53L1_system_results_t::result__mm_outer_actual_effective_spads_sd0
uint16_t result__mm_outer_actual_effective_spads_sd0
Definition: vl53l1_register_structs.h:1485
VL53L1_i2c_encode_dynamic_config
VL53L1_Error VL53L1_i2c_encode_dynamic_config(VL53L1_dynamic_config_t *pdata, uint16_t buf_size, uint8_t *pbuffer)
Decodes data structure VL53L1_timing_config_t from the input I2C read buffer.
Definition: vl53l1_register_funcs.c:1054
LOG_FUNCTION_START
#define LOG_FUNCTION_START(fmt,...)
Definition: vl53l1_register_funcs.c:76
VL53L1_timing_config_t::range_config__vcsel_period_b
uint8_t range_config__vcsel_period_b
Definition: vl53l1_register_structs.h:1023
VL53L1_i2c_encode_static_nvm_managed
VL53L1_Error VL53L1_i2c_encode_static_nvm_managed(VL53L1_static_nvm_managed_t *pdata, uint16_t buf_size, uint8_t *pbuffer)
Encodes data structure VL53L1_static_nvm_managed_t into a I2C write buffer.
Definition: vl53l1_register_funcs.c:84
VL53L1_shadow_system_results_t
Definition: vl53l1_register_structs.h:4008
VL53L1_patch_results_t::dss_calc__user_roi_spad_en_31
uint8_t dss_calc__user_roi_spad_en_31
Definition: vl53l1_register_structs.h:3786
VL53L1_static_config_t::algo__crosstalk_compensation_valid_height_mm
uint8_t algo__crosstalk_compensation_valid_height_mm
Definition: vl53l1_register_structs.h:629
uint16_t
unsigned short uint16_t
Typedef defining 16 bit unsigned short type. The developer should modify this to suit the platform be...
Definition: vl53l1_types.h:123
VL53L1_disable_firmware
VL53L1_Error VL53L1_disable_firmware(VL53L1_DEV Dev)
Disables MCU firmware.
Definition: vl53l1_core.c:787
VL53L1_static_config_t::gpio_hv_mux__ctrl
uint8_t gpio_hv_mux__ctrl
Definition: vl53l1_register_structs.h:537
VL53L1_IDENTIFICATION__MODEL_ID
#define VL53L1_IDENTIFICATION__MODEL_ID
Definition: vl53l1_register_map.h:3870
VL53L1_prev_shadow_system_results_t::prev_shadow_result__phase_sd0
uint16_t prev_shadow_result__phase_sd0
Definition: vl53l1_register_structs.h:2788
VL53L1_patch_results_t::dss_calc__user_roi_spad_en_22
uint8_t dss_calc__user_roi_spad_en_22
Definition: vl53l1_register_structs.h:3696
VL53L1_patch_results_t::dss_calc__user_roi_spad_en_10
uint8_t dss_calc__user_roi_spad_en_10
Definition: vl53l1_register_structs.h:3576
VL53L1_patch_results_t::dss_calc__user_roi_spad_en_8
uint8_t dss_calc__user_roi_spad_en_8
Definition: vl53l1_register_structs.h:3556
VL53L1_shadow_system_results_t::shadow_result__spare_3_sd1
uint8_t shadow_result__spare_3_sd1
Definition: vl53l1_register_structs.h:4254
VL53L1_shadow_system_results_t::shadow_phasecal_result__vcsel_start
uint8_t shadow_phasecal_result__vcsel_start
Definition: vl53l1_register_structs.h:4009
VL53L1_shadow_core_results_t
Definition: vl53l1_register_structs.h:4307
VL53L1_PREV_SHADOW_RESULT__INTERRUPT_STATUS
#define VL53L1_PREV_SHADOW_RESULT__INTERRUPT_STATUS
Definition: vl53l1_register_map.h:8188
VL53L1_patch_results_t::dss_calc__user_roi_spad_en_4
uint8_t dss_calc__user_roi_spad_en_4
Definition: vl53l1_register_structs.h:3516
VL53L1_debug_results_t::pll_period_us
uint32_t pll_period_us
Definition: vl53l1_register_structs.h:2156
VL53L1_patch_results_t::dss_calc__user_roi_spad_en_1
uint8_t dss_calc__user_roi_spad_en_1
Definition: vl53l1_register_structs.h:3486
VL53L1_shadow_core_results_t::shadow_result_core__total_periods_elapsed_sd0
uint32_t shadow_result_core__total_periods_elapsed_sd0
Definition: vl53l1_register_structs.h:4338
VL53L1_prev_shadow_system_results_t::prev_shadow_result__report_status
uint8_t prev_shadow_result__report_status
Definition: vl53l1_register_structs.h:2728
VL53L1_gph_timing_config_t::gph__mm_config__timeout_macrop_b_hi
uint8_t gph__mm_config__timeout_macrop_b_hi
Definition: vl53l1_register_structs.h:3229
VL53L1_GPH__MM_CONFIG__TIMEOUT_MACROP_A_HI
#define VL53L1_GPH__MM_CONFIG__TIMEOUT_MACROP_A_HI
Definition: vl53l1_register_map.h:9390
VL53L1_debug_results_t::gph__sd_config__initial_phase_sd1
uint8_t gph__sd_config__initial_phase_sd1
Definition: vl53l1_register_structs.h:1981
VL53L1_prev_shadow_system_results_t::prev_shadow_result__spare_2_sd1
uint16_t prev_shadow_result__spare_2_sd1
Definition: vl53l1_register_structs.h:2928
VL53L1_prev_shadow_system_results_t::prev_shadow_result__sigma_sd1
uint16_t prev_shadow_result__sigma_sd1
Definition: vl53l1_register_structs.h:2878
VL53L1_SHADOW_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD0
#define VL53L1_SHADOW_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD0
Definition: vl53l1_register_map.h:11501
VL53L1_gph_timing_config_t::gph__range_config__timeout_macrop_a_hi
uint8_t gph__range_config__timeout_macrop_a_hi
Definition: vl53l1_register_structs.h:3249
VL53L1_GPH_TIMING_CONFIG_I2C_SIZE_BYTES
#define VL53L1_GPH_TIMING_CONFIG_I2C_SIZE_BYTES
Definition: vl53l1_register_structs.h:112
VL53L1_prev_shadow_system_results_t::prev_shadow_result__spare_1_sd1
uint16_t prev_shadow_result__spare_1_sd1
Definition: vl53l1_register_structs.h:2918
VL53L1_nvm_copy_data_t::global_config__spad_enables_rtn_15
uint8_t global_config__spad_enables_rtn_15
Definition: vl53l1_register_structs.h:2500
VL53L1_static_nvm_managed_t
Definition: vl53l1_register_structs.h:128
VL53L1_prev_shadow_system_results_t::prev_shadow_result__ambient_count_rate_mcps_sd0
uint16_t prev_shadow_result__ambient_count_rate_mcps_sd0
Definition: vl53l1_register_structs.h:2768
VL53L1_system_results_t::result__final_crosstalk_corrected_range_mm_sd1
uint16_t result__final_crosstalk_corrected_range_mm_sd1
Definition: vl53l1_register_structs.h:1555
VL53L1_static_nvm_managed_t::ana_config__fast_osc__trim
uint8_t ana_config__fast_osc__trim
Definition: vl53l1_register_structs.h:169
VL53L1_static_config_t::clk_gating__ctrl
uint8_t clk_gating__ctrl
Definition: vl53l1_register_structs.h:447
VL53L1_prev_shadow_core_results_t::prev_shadow_result_core__ranging_total_events_sd1
uint32_t prev_shadow_result_core__ranging_total_events_sd1
Definition: vl53l1_register_structs.h:3011
VL53L1_GLOBAL_CONFIG__SPAD_ENABLES_REF_0
#define VL53L1_GLOBAL_CONFIG__SPAD_ENABLES_REF_0
Definition: vl53l1_register_map.h:248
VL53L1_fw_internal_t::firmware__internal_stream_counter_val
uint8_t firmware__internal_stream_counter_val
Definition: vl53l1_register_structs.h:3372
VL53L1_get_system_results
VL53L1_Error VL53L1_get_system_results(VL53L1_DEV Dev, VL53L1_system_results_t *pdata)
Sets system_results register group.
Definition: vl53l1_register_funcs.c:1600
VL53L1_i2c_decode_core_results
VL53L1_Error VL53L1_i2c_decode_core_results(uint16_t buf_size, uint8_t *pbuffer, VL53L1_core_results_t *pdata)
Encodes data structure VL53L1_core_results_t into a I2C write buffer.
Definition: vl53l1_register_funcs.c:1693
VL53L1_get_nvm_copy_data
VL53L1_Error VL53L1_get_nvm_copy_data(VL53L1_DEV Dev, VL53L1_nvm_copy_data_t *pdata)
Sets nvm_copy_data register group.
Definition: vl53l1_register_funcs.c:2405
VL53L1_nvm_copy_data_t::laser_safety__mult
uint8_t laser_safety__mult
Definition: vl53l1_register_structs.h:2340
VL53L1_patch_results_t::dss_calc__user_roi_spad_en_12
uint8_t dss_calc__user_roi_spad_en_12
Definition: vl53l1_register_structs.h:3596
VL53L1_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD0
#define VL53L1_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD0
Definition: vl53l1_register_map.h:2699
VL53L1_nvm_copy_data_t::global_config__spad_enables_rtn_10
uint8_t global_config__spad_enables_rtn_10
Definition: vl53l1_register_structs.h:2450
VL53L1_patch_results_t::dss_calc__user_roi_spad_en_14
uint8_t dss_calc__user_roi_spad_en_14
Definition: vl53l1_register_structs.h:3616
VL53L1_STATIC_CONFIG_I2C_SIZE_BYTES
#define VL53L1_STATIC_CONFIG_I2C_SIZE_BYTES
Definition: vl53l1_register_structs.h:98
VL53L1_nvm_copy_data_t::global_config__spad_enables_rtn_11
uint8_t global_config__spad_enables_rtn_11
Definition: vl53l1_register_structs.h:2460
VL53L1_timing_config_t::range_config__valid_phase_high
uint8_t range_config__valid_phase_high
Definition: vl53l1_register_structs.h:1063
VL53L1_gph_static_config_t::gph__dss_config__roi_mode_control
uint8_t gph__dss_config__roi_mode_control
Definition: vl53l1_register_structs.h:3145
VL53L1_shadow_system_results_t::shadow_phasecal_result__reference_phase_hi
uint8_t shadow_phasecal_result__reference_phase_hi
Definition: vl53l1_register_structs.h:4275
VL53L1_patch_results_t::dss_calc__user_roi_spad_en_7
uint8_t dss_calc__user_roi_spad_en_7
Definition: vl53l1_register_structs.h:3546
VL53L1_customer_nvm_managed_t::algo__crosstalk_compensation_y_plane_gradient_kcps
int16_t algo__crosstalk_compensation_y_plane_gradient_kcps
Definition: vl53l1_register_structs.h:354
VL53L1_static_config_t::algo__consistency_check__tolerance
uint8_t algo__consistency_check__tolerance
Definition: vl53l1_register_structs.h:690
VL53L1_timing_config_t::mm_config__timeout_macrop_a_hi
uint8_t mm_config__timeout_macrop_a_hi
Definition: vl53l1_register_structs.h:933
VL53L1_prev_shadow_system_results_t::prev_shadow_result__peak_signal_count_rate_mcps_sd1
uint16_t prev_shadow_result__peak_signal_count_rate_mcps_sd1
Definition: vl53l1_register_structs.h:2858
VL53L1_nvm_copy_data_t::global_config__spad_enables_rtn_18
uint8_t global_config__spad_enables_rtn_18
Definition: vl53l1_register_structs.h:2530
VL53L1_patch_results_t::dss_calc__user_roi_spad_en_9
uint8_t dss_calc__user_roi_spad_en_9
Definition: vl53l1_register_structs.h:3566


vl53l1x
Author(s):
autogenerated on Fri Aug 2 2024 08:35:54