1 /*
2 * Copyright (c) 2017, STMicroelectronics - All Rights Reserved
3 *
4 * This file is part of VL53L1 Core and is dual licensed,
5 * either 'STMicroelectronics
6 * Proprietary license'
7 * or 'BSD 3-clause "New" or "Revised" License' , at your option.
8 *
9 ********************************************************************************
10 *
11 * 'STMicroelectronics Proprietary license'
12 *
13 ********************************************************************************
14 *
15 * License terms: STMicroelectronics Proprietary in accordance with licensing
16 * terms at www.st.com/sla0081
17 *
18 * STMicroelectronics confidential
19 * Reproduction and Communication of this document is strictly prohibited unless
20 * specifically authorized in writing by STMicroelectronics.
21 *
22 *
23 ********************************************************************************
24 *
25 * Alternatively, VL53L1 Core may be distributed under the terms of
26 * 'BSD 3-clause "New" or "Revised" License', in which case the following
27 * provisions apply instead of the ones mentioned above :
28 *
29 ********************************************************************************
30 *
31 * License terms: BSD 3-clause "New" or "Revised" License.
32 *
33 * Redistribution and use in source and binary forms, with or without
34 * modification, are permitted provided that the following conditions are met:
35 *
36 * 1. Redistributions of source code must retain the above copyright notice, this
37 * list of conditions and the following disclaimer.
38 *
39 * 2. Redistributions in binary form must reproduce the above copyright notice,
40 * this list of conditions and the following disclaimer in the documentation
41 * and/or other materials provided with the distribution.
42 *
43 * 3. Neither the name of the copyright holder nor the names of its contributors
44 * may be used to endorse or promote products derived from this software
45 * without specific prior written permission.
46 *
47 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
48 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
49 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
50 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
51 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
52 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
53 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
54 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
55 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
56 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
57 *
58 *
59 ********************************************************************************
60 *
61 */
62
63 /**
64 * @file vl53l1_api_debug.c
65 * @brief EwokPlus25 low level Driver debug function definition
66 */
67
68 #include "vl53l1_ll_def.h"
69 #include "vl53l1_ll_device.h"
70 #include "vl53l1_register_structs.h"
71 #include "vl53l1_core.h"
72 #include "vl53l1_api_debug.h"
73
74 #define LOG_FUNCTION_START(fmt, ...) \
75 _LOG_FUNCTION_START(VL53L1_TRACE_MODULE_CORE, fmt, ##__VA_ARGS__)
76 #define LOG_FUNCTION_END(status, ...) \
77 _LOG_FUNCTION_END(VL53L1_TRACE_MODULE_CORE, status, ##__VA_ARGS__)
78 #define LOG_FUNCTION_END_FMT(status, fmt, ...) \
79 _LOG_FUNCTION_END_FMT(VL53L1_TRACE_MODULE_CORE, status, \
80 fmt, ##__VA_ARGS__)
81
82 #define trace_print(level, ...) \
83 _LOG_TRACE_PRINT(trace_flags, \
84 level, VL53L1_TRACE_FUNCTION_NONE, ##__VA_ARGS__)
85
86
87 /* Start Patch_AdditionalDebugData_11823 */
88
VL53L1_get_additional_data(VL53L1_DEV Dev,VL53L1_additional_data_t * pdata)89 VL53L1_Error VL53L1_get_additional_data(
90 VL53L1_DEV Dev,
91 VL53L1_additional_data_t *pdata)
92 {
93 /*
94 * Gets the addition debug data
95 */
96
97 VL53L1_Error status = VL53L1_ERROR_NONE;
98
99 VL53L1_LLDriverData_t *pdev = VL53L1DevStructGetLLDriverHandle(Dev);
100
101 LOG_FUNCTION_START("");
102
103 /* get LL Driver configuration parameters */
104
105 pdata->preset_mode = pdev->preset_mode;
106 pdata->measurement_mode = pdev->measurement_mode;
107
108 pdata->phasecal_config_timeout_us = pdev->phasecal_config_timeout_us;
109 pdata->mm_config_timeout_us = pdev->mm_config_timeout_us;
110 pdata->range_config_timeout_us = pdev->range_config_timeout_us;
111 pdata->inter_measurement_period_ms = pdev->inter_measurement_period_ms;
112 pdata->dss_config__target_total_rate_mcps =
113 pdev->dss_config__target_total_rate_mcps;
114
115 LOG_FUNCTION_END(status);
116
117 return status;
118 }
119
120 /* End Patch_AdditionalDebugData_11823 */
121
122 #ifdef VL53L1_LOG_ENABLE
123
VL53L1_signed_fixed_point_sprintf(int32_t signed_fp_value,uint8_t frac_bits,uint16_t buf_size,char * pbuffer)124 void VL53L1_signed_fixed_point_sprintf(
125 int32_t signed_fp_value,
126 uint8_t frac_bits,
127 uint16_t buf_size,
128 char *pbuffer)
129 {
130 /*
131 * Converts input signed fixed point number into a string
132 */
133
134 uint32_t fp_value = 0;
135 uint32_t unity_fp_value = 0;
136 uint32_t sign_bit = 0;
137 uint32_t int_part = 0;
138 uint32_t frac_part = 0;
139 uint32_t dec_points = 0;
140 uint32_t dec_scaler = 0;
141 uint32_t dec_part = 0;
142
143 uint64_t tmp_long_int = 0;
144
145 char fmt[VL53L1_MAX_STRING_LENGTH];
146
147 SUPPRESS_UNUSED_WARNING(buf_size);
148
149 /* split into integer and fractional values */
150
151 sign_bit = signed_fp_value >> 31;
152
153 if (sign_bit > 0) {
154 fp_value = 0x80000000 -
155 (0x7FFFFFFF & (uint32_t)signed_fp_value);
156 } else
157 fp_value = (uint32_t)signed_fp_value;
158
159 int_part = fp_value >> frac_bits;
160 unity_fp_value = 0x01 << frac_bits;
161 frac_part = fp_value & (unity_fp_value-1);
162
163 /* Calculate decimal scale factor and required decimal points
164 * min number of displayed places is 2
165 */
166 dec_points = 2;
167 dec_scaler = 100;
168
169 while (dec_scaler < unity_fp_value) {
170 dec_points++;
171 dec_scaler *= 10;
172 }
173
174 /* Build format string */
175 if (sign_bit > 0)
176 sprintf(fmt, "-%%u.%%0%uu", dec_points);
177 else
178 sprintf(fmt, "%%u.%%0%uu", dec_points);
179
180 /* Convert fractional part into a decimal
181 * need 64-bit head room at this point
182 */
183 tmp_long_int = (uint64_t)frac_part * (uint64_t)dec_scaler;
184 tmp_long_int += (uint64_t)unity_fp_value/2;
185
186 tmp_long_int = do_division_u(tmp_long_int, (uint64_t)unity_fp_value);
187
188 dec_part = (uint32_t)tmp_long_int;
189
190 /* Generate string for fixed point number */
191 sprintf(
192 pbuffer,
193 fmt,
194 int_part,
195 dec_part);
196 }
197
198
VL53L1_print_static_nvm_managed(VL53L1_static_nvm_managed_t * pdata,char * pprefix,uint32_t trace_flags)199 void VL53L1_print_static_nvm_managed(
200 VL53L1_static_nvm_managed_t *pdata,
201 char *pprefix,
202 uint32_t trace_flags)
203 {
204 /**
205 * Prints out VL53L1_static_nvm_managed_t for debug
206 */
207
208 char fp_text[VL53L1_MAX_STRING_LENGTH];
209
210 trace_print(
211 VL53L1_TRACE_LEVEL_INFO,
212 "%s%s = 0x%02X\n",
213 pprefix,
214 "i2c_slave__device_address",
215 pdata->i2c_slave__device_address);
216
217 trace_print(
218 VL53L1_TRACE_LEVEL_INFO,
219 "%s%s = %u\n",
220 pprefix,
221 "ana_config__vhv_ref_sel_vddpix",
222 pdata->ana_config__vhv_ref_sel_vddpix);
223
224 trace_print(
225 VL53L1_TRACE_LEVEL_INFO,
226 "%s%s = %u\n",
227 pprefix,
228 "ana_config__vhv_ref_sel_vquench",
229 pdata->ana_config__vhv_ref_sel_vquench);
230
231 trace_print(
232 VL53L1_TRACE_LEVEL_INFO,
233 "%s%s = %u\n",
234 pprefix,
235 "ana_config__reg_avdd1v2_sel",
236 pdata->ana_config__reg_avdd1v2_sel);
237
238 trace_print(
239 VL53L1_TRACE_LEVEL_INFO,
240 "%s%s = %u\n",
241 pprefix,
242 "ana_config__fast_osc__trim",
243 pdata->ana_config__fast_osc__trim);
244
245 VL53L1_signed_fixed_point_sprintf(
246 (int32_t)pdata->osc_measured__fast_osc__frequency,
247 12,
248 VL53L1_MAX_STRING_LENGTH,
249 fp_text);
250
251 trace_print(
252 VL53L1_TRACE_LEVEL_INFO,
253 "%s%s = %s\n",
254 pprefix,
255 "osc_measured__fast_osc__frequency",
256 fp_text);
257
258 trace_print(
259 VL53L1_TRACE_LEVEL_INFO,
260 "%s%s = %u\n",
261 pprefix,
262 "vhv_config__timeout_macrop_loop_bound",
263 pdata->vhv_config__timeout_macrop_loop_bound);
264
265 trace_print(
266 VL53L1_TRACE_LEVEL_INFO,
267 "%s%s = %u\n",
268 pprefix,
269 "vhv_config__count_thresh",
270 pdata->vhv_config__count_thresh);
271
272 trace_print(
273 VL53L1_TRACE_LEVEL_INFO,
274 "%s%s = %u\n",
275 pprefix,
276 "vhv_config__offset",
277 pdata->vhv_config__offset);
278
279 trace_print(
280 VL53L1_TRACE_LEVEL_INFO,
281 "%s%s = %u\n",
282 pprefix,
283 "vhv_config__init",
284 pdata->vhv_config__init);
285 }
286
287
VL53L1_print_customer_nvm_managed(VL53L1_customer_nvm_managed_t * pdata,char * pprefix,uint32_t trace_flags)288 void VL53L1_print_customer_nvm_managed(
289 VL53L1_customer_nvm_managed_t *pdata,
290 char *pprefix,
291 uint32_t trace_flags)
292 {
293 /*
294 * Prints out VL53L1_customer_nvm_managed_t for debug
295 */
296
297 char fp_text[VL53L1_MAX_STRING_LENGTH];
298
299 trace_print(VL53L1_TRACE_LEVEL_INFO,
300 "%s%s = %u\n",
301 pprefix,
302 "global_config__spad_enables_ref_0",
303 pdata->global_config__spad_enables_ref_0);
304
305 trace_print(VL53L1_TRACE_LEVEL_INFO,
306 "%s%s = %u\n",
307 pprefix,
308 "global_config__spad_enables_ref_1",
309 pdata->global_config__spad_enables_ref_1);
310
311 trace_print(VL53L1_TRACE_LEVEL_INFO,
312 "%s%s = %u\n",
313 pprefix,
314 "global_config__spad_enables_ref_2",
315 pdata->global_config__spad_enables_ref_2);
316
317 trace_print(VL53L1_TRACE_LEVEL_INFO,
318 "%s%s = %u\n",
319 pprefix,
320 "global_config__spad_enables_ref_3",
321 pdata->global_config__spad_enables_ref_3);
322
323 trace_print(VL53L1_TRACE_LEVEL_INFO,
324 "%s%s = %u\n",
325 pprefix,
326 "global_config__spad_enables_ref_4",
327 pdata->global_config__spad_enables_ref_4);
328
329 trace_print(VL53L1_TRACE_LEVEL_INFO,
330 "%s%s = %u\n",
331 pprefix,
332 "global_config__spad_enables_ref_5",
333 pdata->global_config__spad_enables_ref_5);
334
335 trace_print(VL53L1_TRACE_LEVEL_INFO,
336 "%s%s = %u\n",
337 pprefix,
338 "global_config__ref_en_start_select",
339 pdata->global_config__ref_en_start_select);
340
341 trace_print(VL53L1_TRACE_LEVEL_INFO,
342 "%s%s = %u\n",
343 pprefix,
344 "ref_spad_man__num_requested_ref_spads",
345 pdata->ref_spad_man__num_requested_ref_spads);
346
347 trace_print(VL53L1_TRACE_LEVEL_INFO,
348 "%s%s = %u\n",
349 pprefix,
350 "ref_spad_man__ref_location",
351 pdata->ref_spad_man__ref_location);
352
353 VL53L1_signed_fixed_point_sprintf(
354 (int32_t)pdata->algo__crosstalk_compensation_plane_offset_kcps,
355 9,
356 VL53L1_MAX_STRING_LENGTH,
357 fp_text);
358
359 trace_print(VL53L1_TRACE_LEVEL_INFO,
360 "%s%s = %s\n",
361 pprefix,
362 "algo__crosstalk_compensation_plane_offset_kcps",
363 fp_text);
364
365 VL53L1_signed_fixed_point_sprintf(
366 (int32_t)pdata->algo__crosstalk_compensation_x_plane_gradient_kcps,
367 11,
368 VL53L1_MAX_STRING_LENGTH,
369 fp_text);
370
371 trace_print(VL53L1_TRACE_LEVEL_INFO,
372 "%s%s = %s\n",
373 pprefix,
374 "algo__crosstalk_compensation_x_plane_gradient_kcps",
375 fp_text);
376
377 VL53L1_signed_fixed_point_sprintf(
378 (int32_t)pdata->algo__crosstalk_compensation_y_plane_gradient_kcps,
379 11,
380 VL53L1_MAX_STRING_LENGTH,
381 fp_text);
382
383 trace_print(VL53L1_TRACE_LEVEL_INFO,
384 "%s%s = %s\n",
385 pprefix,
386 "algo__crosstalk_compensation_y_plane_gradient_kcps",
387 fp_text);
388
389 VL53L1_signed_fixed_point_sprintf(
390 (int32_t)pdata->ref_spad_char__total_rate_target_mcps,
391 7,
392 VL53L1_MAX_STRING_LENGTH,
393 fp_text);
394
395 trace_print(VL53L1_TRACE_LEVEL_INFO,
396 "%s%s = %s\n",
397 pprefix,
398 "ref_spad_char__total_rate_target_mcps",
399 fp_text);
400
401 VL53L1_signed_fixed_point_sprintf(
402 (int32_t)pdata->algo__part_to_part_range_offset_mm,
403 2,
404 VL53L1_MAX_STRING_LENGTH,
405 fp_text);
406
407 trace_print(VL53L1_TRACE_LEVEL_INFO,
408 "%s%s = %s\n",
409 pprefix,
410 "algo__part_to_part_range_offset_mm",
411 fp_text);
412
413 trace_print(VL53L1_TRACE_LEVEL_INFO,
414 "%s%s = %d\n",
415 pprefix,
416 "mm_config__inner_offset_mm",
417 pdata->mm_config__inner_offset_mm);
418
419 trace_print(VL53L1_TRACE_LEVEL_INFO,
420 "%s%s = %d\n",
421 pprefix,
422 "mm_config__outer_offset_mm",
423 pdata->mm_config__outer_offset_mm);
424 }
425
426
VL53L1_print_nvm_copy_data(VL53L1_nvm_copy_data_t * pdata,char * pprefix,uint32_t trace_flags)427 void VL53L1_print_nvm_copy_data(
428 VL53L1_nvm_copy_data_t *pdata,
429 char *pprefix,
430 uint32_t trace_flags)
431 {
432 /**
433 * Prints out VL53L1_nvm_copy_data_t for debug
434 */
435
436 trace_print(
437 VL53L1_TRACE_LEVEL_INFO,
438 "%s%s = %u\n",
439 pprefix,
440 "identification__model_id",
441 pdata->identification__model_id);
442
443 trace_print(
444 VL53L1_TRACE_LEVEL_INFO,
445 "%s%s = %u\n",
446 pprefix,
447 "identification__module_type",
448 pdata->identification__module_type);
449
450 trace_print(
451 VL53L1_TRACE_LEVEL_INFO,
452 "%s%s = %u\n",
453 pprefix,
454 "identification__revision_id",
455 pdata->identification__revision_id);
456
457 trace_print(
458 VL53L1_TRACE_LEVEL_INFO,
459 "%s%s = %u\n",
460 pprefix,
461 "identification__module_id",
462 pdata->identification__module_id);
463
464 trace_print(
465 VL53L1_TRACE_LEVEL_INFO,
466 "%s%s = %u\n",
467 pprefix,
468 "ana_config__fast_osc__trim_max",
469 pdata->ana_config__fast_osc__trim_max);
470
471 trace_print(
472 VL53L1_TRACE_LEVEL_INFO,
473 "%s%s = %u\n",
474 pprefix,
475 "ana_config__fast_osc__freq_set",
476 pdata->ana_config__fast_osc__freq_set);
477
478 trace_print(
479 VL53L1_TRACE_LEVEL_INFO,
480 "%s%s = %u\n",
481 pprefix,
482 "ana_config__vcsel_trim",
483 pdata->ana_config__vcsel_trim);
484
485 trace_print(
486 VL53L1_TRACE_LEVEL_INFO,
487 "%s%s = %u\n",
488 pprefix,
489 "ana_config__vcsel_selion",
490 pdata->ana_config__vcsel_selion);
491
492 trace_print(
493 VL53L1_TRACE_LEVEL_INFO,
494 "%s%s = %u\n",
495 pprefix,
496 "ana_config__vcsel_selion_max",
497 pdata->ana_config__vcsel_selion_max);
498
499 trace_print(
500 VL53L1_TRACE_LEVEL_INFO,
501 "%s%s = %u\n",
502 pprefix,
503 "protected_laser_safety__lock_bit",
504 pdata->protected_laser_safety__lock_bit);
505
506 trace_print(
507 VL53L1_TRACE_LEVEL_INFO,
508 "%s%s = %u\n",
509 pprefix,
510 "laser_safety__key",
511 pdata->laser_safety__key);
512
513 trace_print(
514 VL53L1_TRACE_LEVEL_INFO,
515 "%s%s = %u\n",
516 pprefix,
517 "laser_safety__key_ro",
518 pdata->laser_safety__key_ro);
519
520 trace_print(
521 VL53L1_TRACE_LEVEL_INFO,
522 "%s%s = %u\n",
523 pprefix,
524 "laser_safety__clip",
525 pdata->laser_safety__clip);
526
527 trace_print(
528 VL53L1_TRACE_LEVEL_INFO,
529 "%s%s = %u\n",
530 pprefix,
531 "laser_safety__mult",
532 pdata->laser_safety__mult);
533
534 trace_print(
535 VL53L1_TRACE_LEVEL_INFO,
536 "%s%s = %u\n",
537 pprefix,
538 "global_config__spad_enables_rtn_0",
539 pdata->global_config__spad_enables_rtn_0);
540
541 trace_print(
542 VL53L1_TRACE_LEVEL_INFO,
543 "%s%s = %u\n",
544 pprefix,
545 "global_config__spad_enables_rtn_1",
546 pdata->global_config__spad_enables_rtn_1);
547
548 trace_print(
549 VL53L1_TRACE_LEVEL_INFO,
550 "%s%s = %u\n",
551 pprefix,
552 "global_config__spad_enables_rtn_2",
553 pdata->global_config__spad_enables_rtn_2);
554
555 trace_print(
556 VL53L1_TRACE_LEVEL_INFO,
557 "%s%s = %u\n",
558 pprefix,
559 "global_config__spad_enables_rtn_3",
560 pdata->global_config__spad_enables_rtn_3);
561
562 trace_print(
563 VL53L1_TRACE_LEVEL_INFO,
564 "%s%s = %u\n",
565 pprefix,
566 "global_config__spad_enables_rtn_4",
567 pdata->global_config__spad_enables_rtn_4);
568
569 trace_print(
570 VL53L1_TRACE_LEVEL_INFO,
571 "%s%s = %u\n",
572 pprefix,
573 "global_config__spad_enables_rtn_5",
574 pdata->global_config__spad_enables_rtn_5);
575
576 trace_print(
577 VL53L1_TRACE_LEVEL_INFO,
578 "%s%s = %u\n",
579 pprefix,
580 "global_config__spad_enables_rtn_6",
581 pdata->global_config__spad_enables_rtn_6);
582
583 trace_print(
584 VL53L1_TRACE_LEVEL_INFO,
585 "%s%s = %u\n",
586 pprefix,
587 "global_config__spad_enables_rtn_7",
588 pdata->global_config__spad_enables_rtn_7);
589
590 trace_print(
591 VL53L1_TRACE_LEVEL_INFO,
592 "%s%s = %u\n",
593 pprefix,
594 "global_config__spad_enables_rtn_8",
595 pdata->global_config__spad_enables_rtn_8);
596
597 trace_print(
598 VL53L1_TRACE_LEVEL_INFO,
599 "%s%s = %u\n",
600 pprefix,
601 "global_config__spad_enables_rtn_9",
602 pdata->global_config__spad_enables_rtn_9);
603
604 trace_print(
605 VL53L1_TRACE_LEVEL_INFO,
606 "%s%s = %u\n",
607 pprefix,
608 "global_config__spad_enables_rtn_10",
609 pdata->global_config__spad_enables_rtn_10);
610
611 trace_print(
612 VL53L1_TRACE_LEVEL_INFO,
613 "%s%s = %u\n",
614 pprefix,
615 "global_config__spad_enables_rtn_11",
616 pdata->global_config__spad_enables_rtn_11);
617
618 trace_print(
619 VL53L1_TRACE_LEVEL_INFO,
620 "%s%s = %u\n",
621 pprefix,
622 "global_config__spad_enables_rtn_12",
623 pdata->global_config__spad_enables_rtn_12);
624
625 trace_print(
626 VL53L1_TRACE_LEVEL_INFO,
627 "%s%s = %u\n",
628 pprefix,
629 "global_config__spad_enables_rtn_13",
630 pdata->global_config__spad_enables_rtn_13);
631
632 trace_print(
633 VL53L1_TRACE_LEVEL_INFO,
634 "%s%s = %u\n",
635 pprefix,
636 "global_config__spad_enables_rtn_14",
637 pdata->global_config__spad_enables_rtn_14);
638
639 trace_print(
640 VL53L1_TRACE_LEVEL_INFO,
641 "%s%s = %u\n",
642 pprefix,
643 "global_config__spad_enables_rtn_15",
644 pdata->global_config__spad_enables_rtn_15);
645
646 trace_print(
647 VL53L1_TRACE_LEVEL_INFO,
648 "%s%s = %u\n",
649 pprefix,
650 "global_config__spad_enables_rtn_16",
651 pdata->global_config__spad_enables_rtn_16);
652
653 trace_print(
654 VL53L1_TRACE_LEVEL_INFO,
655 "%s%s = %u\n",
656 pprefix,
657 "global_config__spad_enables_rtn_17",
658 pdata->global_config__spad_enables_rtn_17);
659
660 trace_print(
661 VL53L1_TRACE_LEVEL_INFO,
662 "%s%s = %u\n",
663 pprefix,
664 "global_config__spad_enables_rtn_18",
665 pdata->global_config__spad_enables_rtn_18);
666
667 trace_print(
668 VL53L1_TRACE_LEVEL_INFO,
669 "%s%s = %u\n",
670 pprefix,
671 "global_config__spad_enables_rtn_19",
672 pdata->global_config__spad_enables_rtn_19);
673
674 trace_print(
675 VL53L1_TRACE_LEVEL_INFO,
676 "%s%s = %u\n",
677 pprefix,
678 "global_config__spad_enables_rtn_20",
679 pdata->global_config__spad_enables_rtn_20);
680
681 trace_print(
682 VL53L1_TRACE_LEVEL_INFO,
683 "%s%s = %u\n",
684 pprefix,
685 "global_config__spad_enables_rtn_21",
686 pdata->global_config__spad_enables_rtn_21);
687
688 trace_print(
689 VL53L1_TRACE_LEVEL_INFO,
690 "%s%s = %u\n",
691 pprefix,
692 "global_config__spad_enables_rtn_22",
693 pdata->global_config__spad_enables_rtn_22);
694
695 trace_print(
696 VL53L1_TRACE_LEVEL_INFO,
697 "%s%s = %u\n",
698 pprefix,
699 "global_config__spad_enables_rtn_23",
700 pdata->global_config__spad_enables_rtn_23);
701
702 trace_print(
703 VL53L1_TRACE_LEVEL_INFO,
704 "%s%s = %u\n",
705 pprefix,
706 "global_config__spad_enables_rtn_24",
707 pdata->global_config__spad_enables_rtn_24);
708
709 trace_print(
710 VL53L1_TRACE_LEVEL_INFO,
711 "%s%s = %u\n",
712 pprefix,
713 "global_config__spad_enables_rtn_25",
714 pdata->global_config__spad_enables_rtn_25);
715
716 trace_print(
717 VL53L1_TRACE_LEVEL_INFO,
718 "%s%s = %u\n",
719 pprefix,
720 "global_config__spad_enables_rtn_26",
721 pdata->global_config__spad_enables_rtn_26);
722
723 trace_print(
724 VL53L1_TRACE_LEVEL_INFO,
725 "%s%s = %u\n",
726 pprefix,
727 "global_config__spad_enables_rtn_27",
728 pdata->global_config__spad_enables_rtn_27);
729
730 trace_print(
731 VL53L1_TRACE_LEVEL_INFO,
732 "%s%s = %u\n",
733 pprefix,
734 "global_config__spad_enables_rtn_28",
735 pdata->global_config__spad_enables_rtn_28);
736
737 trace_print(
738 VL53L1_TRACE_LEVEL_INFO,
739 "%s%s = %u\n",
740 pprefix,
741 "global_config__spad_enables_rtn_29",
742 pdata->global_config__spad_enables_rtn_29);
743
744 trace_print(
745 VL53L1_TRACE_LEVEL_INFO,
746 "%s%s = %u\n",
747 pprefix,
748 "global_config__spad_enables_rtn_30",
749 pdata->global_config__spad_enables_rtn_30);
750
751 trace_print(
752 VL53L1_TRACE_LEVEL_INFO,
753 "%s%s = %u\n",
754 pprefix,
755 "global_config__spad_enables_rtn_31",
756 pdata->global_config__spad_enables_rtn_31);
757
758 trace_print(
759 VL53L1_TRACE_LEVEL_INFO,
760 "%s%s = %u\n",
761 pprefix,
762 "roi_config__mode_roi_centre_spad",
763 pdata->roi_config__mode_roi_centre_spad);
764
765 trace_print(
766 VL53L1_TRACE_LEVEL_INFO,
767 "%s%s = 0x%02X\n",
768 pprefix,
769 "roi_config__mode_roi_xy_size",
770 pdata->roi_config__mode_roi_xy_size);
771 }
772
773
VL53L1_print_range_data(VL53L1_range_data_t * pdata,char * pprefix,uint32_t trace_flags)774 void VL53L1_print_range_data(
775 VL53L1_range_data_t *pdata,
776 char *pprefix,
777 uint32_t trace_flags)
778 {
779 /*
780 * Prints out the range data structure for debug
781 */
782
783 char fp_text[VL53L1_MAX_STRING_LENGTH];
784
785 trace_print(
786 VL53L1_TRACE_LEVEL_INFO,
787 "%s%s = %u\n",
788 pprefix,
789 "range_id",
790 pdata->range_id);
791
792 trace_print(
793 VL53L1_TRACE_LEVEL_INFO,
794 "%s%s = %u\n",
795 pprefix,
796 "time_stamp",
797 pdata->time_stamp);
798
799 VL53L1_signed_fixed_point_sprintf(
800 (int32_t)pdata->width,
801 4, VL53L1_MAX_STRING_LENGTH, fp_text);
802
803 trace_print(
804 VL53L1_TRACE_LEVEL_INFO,
805 "%s%s = %s\n",
806 pprefix,
807 "width",
808 fp_text);
809
810 trace_print(
811 VL53L1_TRACE_LEVEL_INFO,
812 "%s%s = %u\n",
813 pprefix,
814 "woi",
815 pdata->woi);
816
817 /* Fast Oscillator Frequency */
818
819 VL53L1_signed_fixed_point_sprintf(
820 (int32_t)pdata->fast_osc_frequency,
821 12, VL53L1_MAX_STRING_LENGTH, fp_text);
822
823 trace_print(
824 VL53L1_TRACE_LEVEL_INFO,
825 "%s%s = %s\n",
826 pprefix,
827 "fast_osc_frequency",
828 fp_text);
829
830 /* Zero Distance Phase */
831
832 VL53L1_signed_fixed_point_sprintf(
833 (int32_t)pdata->zero_distance_phase,
834 11, VL53L1_MAX_STRING_LENGTH, fp_text);
835
836 trace_print(
837 VL53L1_TRACE_LEVEL_INFO,
838 "%s%s = %s\n",
839 pprefix,
840 "zero_distance_phase",
841 fp_text);
842
843 /* Actual effective SPAD count */
844
845 VL53L1_signed_fixed_point_sprintf(
846 (int32_t)pdata->actual_effective_spads,
847 8, VL53L1_MAX_STRING_LENGTH, fp_text);
848
849 trace_print(
850 VL53L1_TRACE_LEVEL_INFO,
851 "%s%s = %s\n",
852 pprefix,
853 "actual_effective_spad",
854 fp_text);
855
856
857 trace_print(VL53L1_TRACE_LEVEL_INFO,
858 "%s%s = %u\n",
859 pprefix,
860 "total_periods_elapsed",
861 pdata->total_periods_elapsed);
862
863 trace_print(
864 VL53L1_TRACE_LEVEL_INFO,
865 "%s%s = %u\n",
866 pprefix,
867 "peak_duration_us",
868 pdata->peak_duration_us);
869
870 trace_print(
871 VL53L1_TRACE_LEVEL_INFO,
872 "%s%s = %u\n",
873 pprefix,
874 "woi_duration_us",
875 pdata->woi_duration_us);
876
877 trace_print(
878 VL53L1_TRACE_LEVEL_INFO,
879 "%s%s = %d\n",
880 pprefix,
881 "ambient_window_events",
882 pdata->ambient_window_events);
883
884 trace_print(
885 VL53L1_TRACE_LEVEL_INFO,
886 "%s%s = %d\n",
887 pprefix,
888 "ranging_total_events",
889 pdata->ranging_total_events);
890
891 trace_print(
892 VL53L1_TRACE_LEVEL_INFO,
893 "%s%s = %d\n",
894 pprefix,
895 "signal_total_events",
896 pdata->signal_total_events);
897
898 /* Rates */
899
900 VL53L1_signed_fixed_point_sprintf(
901 (int32_t)pdata->peak_signal_count_rate_mcps,
902 7, VL53L1_MAX_STRING_LENGTH, fp_text);
903
904 trace_print(
905 VL53L1_TRACE_LEVEL_INFO,
906 "%s%s = %s\n",
907 pprefix,
908 "peak_signal_count_rate_mcps",
909 fp_text);
910
911 VL53L1_signed_fixed_point_sprintf(
912 (int32_t)pdata->avg_signal_count_rate_mcps,
913 7, VL53L1_MAX_STRING_LENGTH, fp_text);
914
915 trace_print(
916 VL53L1_TRACE_LEVEL_INFO,
917 "%s%s = %s\n",
918 pprefix,
919 "avg_signal_count_rate_mcps",
920 fp_text);
921
922 VL53L1_signed_fixed_point_sprintf(
923 (int32_t)pdata->ambient_count_rate_mcps,
924 7, VL53L1_MAX_STRING_LENGTH, fp_text);
925
926 trace_print(
927 VL53L1_TRACE_LEVEL_INFO,
928 "%s%s = %s\n",
929 pprefix,
930 "ambient_count_rate_mcps",
931 fp_text);
932
933 VL53L1_signed_fixed_point_sprintf(
934 (int32_t)pdata->total_rate_per_spad_mcps,
935 13, VL53L1_MAX_STRING_LENGTH, fp_text);
936
937 trace_print(
938 VL53L1_TRACE_LEVEL_INFO,
939 "%s%s = %s\n",
940 pprefix,
941 "total_rate_per_spad_mcps",
942 fp_text);
943
944 VL53L1_signed_fixed_point_sprintf(
945 (int32_t)pdata->peak_rate_per_spad_kcps,
946 11, VL53L1_MAX_STRING_LENGTH, fp_text);
947
948 trace_print(
949 VL53L1_TRACE_LEVEL_INFO,
950 "%s%s = %s\n",
951 pprefix,
952 "peak_rate_per_spad_kcps",
953 fp_text);
954
955 /* Sigma */
956
957 VL53L1_signed_fixed_point_sprintf(
958 (int32_t)pdata->sigma_mm,
959 2, VL53L1_MAX_STRING_LENGTH, fp_text);
960
961 trace_print(
962 VL53L1_TRACE_LEVEL_INFO,
963 "%s%s = %s\n",
964 pprefix,
965 "sigma_mm",
966 fp_text);
967
968 /* Phase */
969
970 VL53L1_signed_fixed_point_sprintf(
971 (int32_t)pdata->median_phase,
972 11, VL53L1_MAX_STRING_LENGTH, fp_text);
973
974 trace_print(
975 VL53L1_TRACE_LEVEL_INFO,
976 "%s%s = %s\n",
977 pprefix,
978 "median_phase",
979 fp_text);
980
981 /* Offset Corrected Range */
982
983 trace_print(
984 VL53L1_TRACE_LEVEL_INFO,
985 "%s%s = %d\n",
986 pprefix,
987 "median_range_mm",
988 pdata->median_range_mm);
989
990 trace_print(
991 VL53L1_TRACE_LEVEL_INFO,
992 "%s%s = %u\n",
993 pprefix,
994 "range_status",
995 pdata->range_status);
996 }
997
998
VL53L1_print_range_results(VL53L1_range_results_t * pdata,char * pprefix,uint32_t trace_flags)999 void VL53L1_print_range_results(
1000 VL53L1_range_results_t *pdata,
1001 char *pprefix,
1002 uint32_t trace_flags)
1003 {
1004 /*
1005 * Prints out the range results data structure for debug
1006 */
1007
1008 trace_print(
1009 VL53L1_TRACE_LEVEL_INFO,
1010 "%s%s = %u\n",
1011 pprefix,
1012 "cfg_device_state",
1013 pdata->cfg_device_state);
1014
1015 trace_print(
1016 VL53L1_TRACE_LEVEL_INFO,
1017 "%s%s = %u\n",
1018 pprefix,
1019 "rd_device_state",
1020 pdata->rd_device_state);
1021
1022 trace_print(
1023 VL53L1_TRACE_LEVEL_INFO,
1024 "%s%s = %u\n",
1025 pprefix,
1026 "stream_count",
1027 pdata->stream_count);
1028
1029 trace_print(
1030 VL53L1_TRACE_LEVEL_INFO,
1031 "%s%s = %u\n",
1032 pprefix,
1033 "device_status",
1034 pdata->device_status);
1035
1036 }
1037
VL53L1_print_offset_range_results(VL53L1_offset_range_results_t * pdata,char * pprefix,uint32_t trace_flags)1038 void VL53L1_print_offset_range_results(
1039 VL53L1_offset_range_results_t *pdata,
1040 char *pprefix,
1041 uint32_t trace_flags)
1042 {
1043 /*
1044 * Prints out the offset range results data structure for debug
1045 */
1046
1047 char pre_text[VL53L1_MAX_STRING_LENGTH];
1048 char *ppre_text = &(pre_text[0]);
1049
1050 uint8_t i = 0;
1051
1052 trace_print(
1053 VL53L1_TRACE_LEVEL_INFO,
1054 "%s%s = %u\n",
1055 pprefix,
1056 "cal_distance_mm",
1057 pdata->cal_distance_mm);
1058
1059 trace_print(
1060 VL53L1_TRACE_LEVEL_INFO,
1061 "%s%s = %u\n",
1062 pprefix,
1063 "cal_status",
1064 pdata->cal_status);
1065
1066 trace_print(
1067 VL53L1_TRACE_LEVEL_INFO,
1068 "%s%s = %u\n",
1069 pprefix,
1070 "cal_report",
1071 pdata->cal_report);
1072
1073 trace_print(
1074 VL53L1_TRACE_LEVEL_INFO,
1075 "%s%s = %u\n",
1076 pprefix,
1077 "max_results",
1078 pdata->max_results);
1079
1080 trace_print(
1081 VL53L1_TRACE_LEVEL_INFO,
1082 "%s%s = %u\n",
1083 pprefix,
1084 "active_results",
1085 pdata->active_results);
1086
1087 for (i = 0 ; i < pdata->active_results ; i++) {
1088 sprintf(ppre_text, "%sdata[%u].", pprefix, i);
1089 VL53L1_print_offset_range_data(
1090 &(pdata->data[i]),
1091 ppre_text, trace_flags);
1092 }
1093 }
1094
VL53L1_print_offset_range_data(VL53L1_offset_range_data_t * pdata,char * pprefix,uint32_t trace_flags)1095 void VL53L1_print_offset_range_data(
1096 VL53L1_offset_range_data_t *pdata,
1097 char *pprefix,
1098 uint32_t trace_flags)
1099 {
1100 /*
1101 * Prints out the xtalk range (ROI) data structure for debug
1102 */
1103
1104 char fp_text[VL53L1_MAX_STRING_LENGTH];
1105
1106 trace_print(
1107 VL53L1_TRACE_LEVEL_INFO,
1108 "%s%s = %u\n",
1109 pprefix,
1110 "preset_mode",
1111 pdata->preset_mode);
1112
1113 trace_print(
1114 VL53L1_TRACE_LEVEL_INFO,
1115 "%s%s = %u\n",
1116 pprefix,
1117 "dss_config__roi_mode_control",
1118 pdata->dss_config__roi_mode_control);
1119
1120 VL53L1_signed_fixed_point_sprintf(
1121 (int32_t)pdata->dss_config__manual_effective_spads_select,
1122 8,
1123 VL53L1_MAX_STRING_LENGTH,
1124 fp_text);
1125
1126 trace_print(
1127 VL53L1_TRACE_LEVEL_INFO,
1128 "%s%s = %s\n",
1129 pprefix,
1130 "dss_config__manual_effective_spads_select",
1131 fp_text);
1132
1133 trace_print(
1134 VL53L1_TRACE_LEVEL_INFO,
1135 "%s%s = %u\n",
1136 pprefix,
1137 "no_of_samples",
1138 pdata->no_of_samples);
1139
1140
1141 VL53L1_signed_fixed_point_sprintf(
1142 (int32_t)pdata->effective_spads,
1143 8,
1144 VL53L1_MAX_STRING_LENGTH,
1145 fp_text);
1146
1147 trace_print(
1148 VL53L1_TRACE_LEVEL_INFO,
1149 "%s%s = %s\n",
1150 pprefix,
1151 "effective_spads",
1152 fp_text);
1153
1154 VL53L1_signed_fixed_point_sprintf(
1155 (int32_t)pdata->peak_rate_mcps,
1156 7,
1157 VL53L1_MAX_STRING_LENGTH,
1158 fp_text);
1159
1160 trace_print(
1161 VL53L1_TRACE_LEVEL_INFO,
1162 "%s%s = %s\n",
1163 pprefix,
1164 "peak_rate_mcps",
1165 fp_text);
1166
1167 VL53L1_signed_fixed_point_sprintf(
1168 (int32_t)pdata->sigma_mm,
1169 2,
1170 VL53L1_MAX_STRING_LENGTH,
1171 fp_text);
1172
1173 trace_print(
1174 VL53L1_TRACE_LEVEL_INFO,
1175 "%s%s = %s\n",
1176 pprefix,
1177 "sigma_mm",
1178 fp_text);
1179
1180 trace_print(
1181 VL53L1_TRACE_LEVEL_INFO,
1182 "%s%s = %d\n",
1183 pprefix,
1184 "median_range_mm",
1185 pdata->median_range_mm);
1186
1187 trace_print(
1188 VL53L1_TRACE_LEVEL_INFO,
1189 "%s%s = %d\n",
1190 pprefix,
1191 "range_mm_offset",
1192 pdata->range_mm_offset);
1193 }
1194
VL53L1_print_additional_offset_cal_data(VL53L1_additional_offset_cal_data_t * pdata,char * pprefix,uint32_t trace_flags)1195 void VL53L1_print_additional_offset_cal_data(
1196 VL53L1_additional_offset_cal_data_t *pdata,
1197 char *pprefix,
1198 uint32_t trace_flags)
1199 {
1200 /*
1201 * Prints out the xtalk range (ROI) data structure for debug
1202 */
1203
1204 char fp_text[VL53L1_MAX_STRING_LENGTH];
1205
1206 VL53L1_signed_fixed_point_sprintf(
1207 (int32_t)pdata->result__mm_inner_actual_effective_spads,
1208 8,
1209 VL53L1_MAX_STRING_LENGTH,
1210 fp_text);
1211
1212 trace_print(
1213 VL53L1_TRACE_LEVEL_INFO,
1214 "%s%s = %s\n",
1215 pprefix,
1216 "result__mm_inner_actual_effective_spads",
1217 fp_text);
1218
1219 VL53L1_signed_fixed_point_sprintf(
1220 (int32_t)pdata->result__mm_outer_actual_effective_spads,
1221 8,
1222 VL53L1_MAX_STRING_LENGTH,
1223 fp_text);
1224
1225 trace_print(
1226 VL53L1_TRACE_LEVEL_INFO,
1227 "%s%s = %s\n",
1228 pprefix,
1229 "result__mm_outer_actual_effective_spads",
1230 fp_text);
1231
1232 VL53L1_signed_fixed_point_sprintf(
1233 (int32_t)pdata->result__mm_inner_peak_signal_count_rtn_mcps,
1234 7,
1235 VL53L1_MAX_STRING_LENGTH,
1236 fp_text);
1237
1238 trace_print(
1239 VL53L1_TRACE_LEVEL_INFO,
1240 "%s%s = %s\n",
1241 pprefix,
1242 "result__mm_inner_peak_signal_count_rtn_mcps",
1243 fp_text);
1244
1245 VL53L1_signed_fixed_point_sprintf(
1246 (int32_t)pdata->result__mm_outer_peak_signal_count_rtn_mcps,
1247 7,
1248 VL53L1_MAX_STRING_LENGTH,
1249 fp_text);
1250
1251 trace_print(
1252 VL53L1_TRACE_LEVEL_INFO,
1253 "%s%s = %s\n",
1254 pprefix,
1255 "result__mm_outer_peak_signal_count_rtn_mcps",
1256 fp_text);
1257 }
1258
1259
VL53L1_print_cal_peak_rate_map(VL53L1_cal_peak_rate_map_t * pdata,char * pprefix,uint32_t trace_flags)1260 void VL53L1_print_cal_peak_rate_map(
1261 VL53L1_cal_peak_rate_map_t *pdata,
1262 char *pprefix,
1263 uint32_t trace_flags)
1264 {
1265 /*
1266 * Prints out peak rate map structure for debug
1267 */
1268
1269 char fp_text[VL53L1_MAX_STRING_LENGTH];
1270 char pre_text[VL53L1_MAX_STRING_LENGTH];
1271 char *ppre_text = &(pre_text[0]);
1272
1273 uint8_t i = 0;
1274 uint8_t x = 0;
1275 uint8_t y = 0;
1276
1277 VL53L1_signed_fixed_point_sprintf(
1278 (int32_t)pdata->cal_distance_mm,
1279 2,
1280 VL53L1_MAX_STRING_LENGTH,
1281 fp_text);
1282
1283 trace_print(
1284 VL53L1_TRACE_LEVEL_INFO,
1285 "%s%s = %s\n",
1286 pprefix,
1287 "cal_distance_mm",
1288 fp_text);
1289
1290 trace_print(
1291 VL53L1_TRACE_LEVEL_INFO,
1292 "%s%s = %u\n",
1293 pprefix,
1294 "max_samples",
1295 pdata->max_samples);
1296
1297 trace_print(
1298 VL53L1_TRACE_LEVEL_INFO,
1299 "%s%s = %u\n",
1300 pprefix,
1301 "width",
1302 pdata->width);
1303
1304 trace_print(
1305 VL53L1_TRACE_LEVEL_INFO,
1306 "%s%s = %u\n",
1307 pprefix,
1308 "height",
1309 pdata->height);
1310
1311 i = 0;
1312 for (y = 0 ; y < pdata->height ; y++) {
1313 for (x = 0 ; x < pdata->width ; x++) {
1314
1315 sprintf(ppre_text, "%speak_rate_mcps[%u]", pprefix, i);
1316
1317 VL53L1_signed_fixed_point_sprintf(
1318 (int32_t)pdata->peak_rate_mcps[i],
1319 7,
1320 VL53L1_MAX_STRING_LENGTH,
1321 fp_text);
1322
1323 trace_print(
1324 VL53L1_TRACE_LEVEL_INFO,
1325 "%s = %s\n",
1326 ppre_text,
1327 fp_text);
1328
1329 i++;
1330 }
1331 }
1332 }
1333
VL53L1_print_additional_data(VL53L1_additional_data_t * pdata,char * pprefix,uint32_t trace_flags)1334 void VL53L1_print_additional_data(
1335 VL53L1_additional_data_t *pdata,
1336 char *pprefix,
1337 uint32_t trace_flags)
1338 {
1339
1340 /*
1341 * Prints out the Additional data structure for debug
1342 */
1343
1344 char fp_text[VL53L1_MAX_STRING_LENGTH];
1345
1346 trace_print(
1347 VL53L1_TRACE_LEVEL_INFO,
1348 "%s%s = %u\n",
1349 pprefix,
1350 "preset_mode",
1351 pdata->preset_mode);
1352
1353 trace_print(
1354 VL53L1_TRACE_LEVEL_INFO,
1355 "%s%s = %u\n",
1356 pprefix,
1357 "measurement_mode",
1358 pdata->measurement_mode);
1359
1360 trace_print(
1361 VL53L1_TRACE_LEVEL_INFO,
1362 "%s%s = %u\n",
1363 pprefix,
1364 "phasecal_config_timeout_us",
1365 pdata->phasecal_config_timeout_us);
1366
1367 trace_print(
1368 VL53L1_TRACE_LEVEL_INFO,
1369 "%s%s = %u\n",
1370 pprefix,
1371 "mm_config_timeout_us",
1372 pdata->mm_config_timeout_us);
1373
1374 trace_print(
1375 VL53L1_TRACE_LEVEL_INFO,
1376 "%s%s = %u\n",
1377 pprefix,
1378 "range_config_timeout_us",
1379 pdata->range_config_timeout_us);
1380
1381 trace_print(
1382 VL53L1_TRACE_LEVEL_INFO,
1383 "%s%s = %u\n",
1384 pprefix,
1385 "inter_measurement_period_ms",
1386 pdata->inter_measurement_period_ms);
1387
1388
1389 VL53L1_signed_fixed_point_sprintf(
1390 (int32_t)pdata->dss_config__target_total_rate_mcps,
1391 7,
1392 VL53L1_MAX_STRING_LENGTH,
1393 fp_text);
1394
1395 trace_print(
1396 VL53L1_TRACE_LEVEL_INFO,
1397 "%s%s = %s\n",
1398 pprefix,
1399 "dss_config__target_total_rate_mcps",
1400 fp_text);
1401
1402 }
1403
1404
VL53L1_print_gain_calibration_data(VL53L1_gain_calibration_data_t * pdata,char * pprefix,uint32_t trace_flags)1405 void VL53L1_print_gain_calibration_data(
1406 VL53L1_gain_calibration_data_t *pdata,
1407 char *pprefix,
1408 uint32_t trace_flags)
1409 {
1410 /*
1411 * Prints out the LL Driver state data for debug
1412 */
1413
1414 char fp_text[VL53L1_MAX_STRING_LENGTH];
1415
1416 VL53L1_signed_fixed_point_sprintf(
1417 (int32_t)pdata->standard_ranging_gain_factor,
1418 11,
1419 VL53L1_MAX_STRING_LENGTH,
1420 fp_text);
1421
1422 trace_print(
1423 VL53L1_TRACE_LEVEL_INFO,
1424 "%s%s = %s\n",
1425 pprefix,
1426 "standard_ranging_gain_factor",
1427 fp_text);
1428
1429 }
1430
1431
VL53L1_print_xtalk_config(VL53L1_xtalk_config_t * pdata,char * pprefix,uint32_t trace_flags)1432 void VL53L1_print_xtalk_config(
1433 VL53L1_xtalk_config_t *pdata,
1434 char *pprefix,
1435 uint32_t trace_flags)
1436 {
1437 /*
1438 * Prints out the xtalk config data structure for debug
1439 */
1440
1441 char fp_text[VL53L1_MAX_STRING_LENGTH];
1442
1443 VL53L1_signed_fixed_point_sprintf(
1444 (int32_t)pdata->algo__crosstalk_compensation_plane_offset_kcps,
1445 9,
1446 VL53L1_MAX_STRING_LENGTH,
1447 fp_text);
1448
1449 trace_print(
1450 VL53L1_TRACE_LEVEL_INFO,
1451 "%s%s = %s\n",
1452 pprefix,
1453 "algo__crosstalk_compensation_plane_offset_kcps",
1454 fp_text);
1455
1456 VL53L1_signed_fixed_point_sprintf(
1457 (int32_t)pdata->algo__crosstalk_compensation_x_plane_gradient_kcps,
1458 11,
1459 VL53L1_MAX_STRING_LENGTH,
1460 fp_text);
1461
1462 trace_print(
1463 VL53L1_TRACE_LEVEL_INFO,
1464 "%s%s = %s\n",
1465 pprefix,
1466 "algo__crosstalk_compensation_x_plane_gradient_kcps",
1467 fp_text);
1468
1469 VL53L1_signed_fixed_point_sprintf(
1470 (int32_t)pdata->algo__crosstalk_compensation_y_plane_gradient_kcps,
1471 11,
1472 VL53L1_MAX_STRING_LENGTH,
1473 fp_text);
1474
1475 trace_print(
1476 VL53L1_TRACE_LEVEL_INFO,
1477 "%s%s = %s\n",
1478 pprefix,
1479 "algo__crosstalk_compensation_y_plane_gradient_kcps",
1480 fp_text);
1481
1482 trace_print(
1483 VL53L1_TRACE_LEVEL_INFO,
1484 "%s%s = %u\n",
1485 pprefix,
1486 "global_crosstalk_compensation_enable",
1487 pdata->global_crosstalk_compensation_enable);
1488
1489 VL53L1_signed_fixed_point_sprintf(
1490 (int32_t)pdata->lite_mode_crosstalk_margin_kcps,
1491 9,
1492 VL53L1_MAX_STRING_LENGTH,
1493 fp_text);
1494
1495 trace_print(
1496 VL53L1_TRACE_LEVEL_INFO,
1497 "%s%s = %s\n",
1498 pprefix,
1499 "lite_mode_crosstalk_margin_kcps",
1500 fp_text);
1501
1502 VL53L1_signed_fixed_point_sprintf(
1503 (int32_t)pdata->crosstalk_range_ignore_threshold_mult,
1504 5,
1505 VL53L1_MAX_STRING_LENGTH,
1506 fp_text);
1507
1508 trace_print(
1509 VL53L1_TRACE_LEVEL_INFO,
1510 "%s%s = %s\n",
1511 pprefix,
1512 "crosstalk_range_ignore_threshold_mult",
1513 fp_text);
1514
1515
1516 VL53L1_signed_fixed_point_sprintf(
1517 (int32_t)pdata->crosstalk_range_ignore_threshold_rate_mcps,
1518 13,
1519 VL53L1_MAX_STRING_LENGTH,
1520 fp_text);
1521
1522 trace_print(
1523 VL53L1_TRACE_LEVEL_INFO,
1524 "%s%s = %s\n",
1525 pprefix,
1526 "crosstalk_range_ignore_threshold_rate_mcps",
1527 fp_text);
1528
1529 }
1530
1531
1532
VL53L1_print_optical_centre(VL53L1_optical_centre_t * pdata,char * pprefix,uint32_t trace_flags)1533 void VL53L1_print_optical_centre(
1534 VL53L1_optical_centre_t *pdata,
1535 char *pprefix,
1536 uint32_t trace_flags)
1537 {
1538
1539 /* Prints out the optical centre data structure for debug
1540 */
1541
1542 char fp_text[VL53L1_MAX_STRING_LENGTH];
1543
1544 VL53L1_signed_fixed_point_sprintf(
1545 (int32_t)pdata->x_centre,
1546 4,
1547 VL53L1_MAX_STRING_LENGTH,
1548 fp_text);
1549
1550 trace_print(
1551 VL53L1_TRACE_LEVEL_INFO,
1552 "%s%s = %s\n",
1553 pprefix,
1554 "x_centre",
1555 fp_text);
1556
1557 VL53L1_signed_fixed_point_sprintf(
1558 (int32_t)pdata->y_centre,
1559 4,
1560 VL53L1_MAX_STRING_LENGTH,
1561 fp_text);
1562
1563 trace_print(
1564 VL53L1_TRACE_LEVEL_INFO,
1565 "%s%s = %s\n",
1566 pprefix,
1567 "y_centre",
1568 fp_text);
1569 }
1570
1571
VL53L1_print_user_zone(VL53L1_user_zone_t * pdata,char * pprefix,uint32_t trace_flags)1572 void VL53L1_print_user_zone(
1573 VL53L1_user_zone_t *pdata,
1574 char *pprefix,
1575 uint32_t trace_flags)
1576 {
1577
1578 /* Prints out the zone (ROI) data structure for debug
1579 */
1580
1581 trace_print(
1582 VL53L1_TRACE_LEVEL_INFO,
1583 "%s%s = %u\n",
1584 pprefix,
1585 "x_centre",
1586 pdata->x_centre);
1587
1588 trace_print(
1589 VL53L1_TRACE_LEVEL_INFO,
1590 "%s%s = %u\n",
1591 pprefix,
1592 "y_centre",
1593 pdata->y_centre);
1594
1595 trace_print(
1596 VL53L1_TRACE_LEVEL_INFO,
1597 "%s%s = %u\n",
1598 pprefix,
1599 "width",
1600 pdata->width);
1601
1602 trace_print(VL53L1_TRACE_LEVEL_INFO,
1603 "%s%s = %u\n",
1604 pprefix,
1605 "height",
1606 pdata->height);
1607 }
1608
1609
VL53L1_print_spad_rate_data(VL53L1_spad_rate_data_t * pspad_rates,char * pprefix,uint32_t trace_flags)1610 void VL53L1_print_spad_rate_data(
1611 VL53L1_spad_rate_data_t *pspad_rates,
1612 char *pprefix,
1613 uint32_t trace_flags)
1614 {
1615
1616 /**
1617 * Print per SPAD rates generated by SSC
1618 */
1619
1620 uint16_t spad_no = 0;
1621 uint8_t row = 0;
1622 uint8_t col = 0;
1623
1624 char fp_text[VL53L1_MAX_STRING_LENGTH];
1625
1626 trace_print(
1627 VL53L1_TRACE_LEVEL_INFO,
1628 "%s%8s,%4s,%4s, %s\n",
1629 pprefix,
1630 "spad_no",
1631 "row",
1632 "col",
1633 "peak_rate_mcps");
1634
1635 for (spad_no = 0 ; spad_no < pspad_rates->no_of_values ; spad_no++) {
1636
1637 /* generate row / col location from SPAD number */
1638 VL53L1_decode_row_col(
1639 (uint8_t)spad_no,
1640 &row,
1641 &col);
1642
1643 /* Convert fixed point rate value to string */
1644
1645 VL53L1_signed_fixed_point_sprintf(
1646 (int32_t)pspad_rates->rate_data[spad_no],
1647 pspad_rates->fractional_bits,
1648 VL53L1_MAX_STRING_LENGTH,
1649 fp_text);
1650
1651 /* Print data */
1652
1653 trace_print(
1654 VL53L1_TRACE_LEVEL_INFO,
1655 "%s%8u,%4u,%4u, %s\n",
1656 pprefix,
1657 spad_no,
1658 row,
1659 col,
1660 fp_text);
1661 }
1662 }
1663
1664
VL53L1_print_spad_rate_map(VL53L1_spad_rate_data_t * pspad_rates,char * pprefix,uint32_t trace_flags)1665 void VL53L1_print_spad_rate_map(
1666 VL53L1_spad_rate_data_t *pspad_rates,
1667 char *pprefix,
1668 uint32_t trace_flags)
1669 {
1670
1671 /**
1672 * Print per SPAD rates generated by SSC as a map
1673 */
1674
1675 uint8_t spad_no = 0;
1676 uint8_t row = 0;
1677 uint8_t col = 0;
1678
1679 char fp_text[VL53L1_MAX_STRING_LENGTH];
1680
1681 /* Print column headers */
1682 trace_print(
1683 VL53L1_TRACE_LEVEL_INFO,
1684 "%s%4s",
1685 pprefix,
1686 " ");
1687
1688 for (col = 0 ; col < VL53L1_SPAD_ARRAY_WIDTH ; col++)
1689 trace_print(
1690 VL53L1_TRACE_LEVEL_INFO,
1691 ",%8u",
1692 col);
1693
1694 trace_print(
1695 VL53L1_TRACE_LEVEL_INFO,
1696 "\n");
1697
1698 /* Print rate data */
1699
1700 for (row = 0 ; row < VL53L1_SPAD_ARRAY_HEIGHT ; row++) {
1701
1702 trace_print(
1703 VL53L1_TRACE_LEVEL_INFO,
1704 "%s%4u",
1705 pprefix,
1706 row);
1707
1708 for (col = 0 ; col < VL53L1_SPAD_ARRAY_HEIGHT ; col++) {
1709
1710 /* generate SPAD number from (row, col) location */
1711
1712 VL53L1_encode_row_col(
1713 row,
1714 col,
1715 &spad_no);
1716
1717 /* Convert fixed point rate value to string */
1718
1719 VL53L1_signed_fixed_point_sprintf(
1720 (int32_t)pspad_rates->rate_data[spad_no],
1721 pspad_rates->fractional_bits,
1722 VL53L1_MAX_STRING_LENGTH,
1723 fp_text);
1724
1725 /* Print data */
1726
1727 trace_print(
1728 VL53L1_TRACE_LEVEL_INFO,
1729 ",%8s",
1730 fp_text);
1731 }
1732
1733 trace_print(
1734 VL53L1_TRACE_LEVEL_INFO,
1735 "\n");
1736 }
1737 }
1738
1739
1740 #endif /* VL53L1_LOG_ENABLE */
1741
1742