Rename library
Dependencies: X_NUCLEO_COMMON ST_INTERFACES
Diff: vl53lx_def.h
- Revision:
- 3:316175f392f7
- Parent:
- 0:0be0bd219e72
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vl53lx_def.h Tue Nov 03 15:16:36 2020 +0000 @@ -0,0 +1,8590 @@ + +#ifndef __VL53LX_DEF_H +#define __VL53LX_DEF_H + +#include <stdint.h> +#include <stdint.h> +#include <stddef.h> +#include <string.h> +#include <stdio.h> +#include <stdlib.h> + +#include "vl53L3_I2c.h" + +#ifdef __cplusplus +extern "C" +{ +#endif + +//define from vl53lx_register_map.h + +#define VL53LX_SOFT_RESET 0x0000 + +#define VL53LX_I2C_SLAVE__DEVICE_ADDRESS 0x0001 + +#define VL53LX_ANA_CONFIG__VHV_REF_SEL_VDDPIX 0x0002 + +#define VL53LX_ANA_CONFIG__VHV_REF_SEL_VQUENCH 0x0003 + +#define VL53LX_ANA_CONFIG__REG_AVDD1V2_SEL 0x0004 + +#define VL53LX_ANA_CONFIG__FAST_OSC__TRIM 0x0005 + +#define VL53LX_OSC_MEASURED__FAST_OSC__FREQUENCY 0x0006 + +#define VL53LX_OSC_MEASURED__FAST_OSC__FREQUENCY_HI 0x0006 + +#define VL53LX_OSC_MEASURED__FAST_OSC__FREQUENCY_LO 0x0007 + +#define VL53LX_VHV_CONFIG__TIMEOUT_MACROP_LOOP_BOUND 0x0008 + +#define VL53LX_VHV_CONFIG__COUNT_THRESH 0x0009 + +#define VL53LX_VHV_CONFIG__OFFSET 0x000A + +#define VL53LX_VHV_CONFIG__INIT 0x000B + +#define VL53LX_GLOBAL_CONFIG__SPAD_ENABLES_REF_0 0x000D + +#define VL53LX_GLOBAL_CONFIG__SPAD_ENABLES_REF_1 0x000E + +#define VL53LX_GLOBAL_CONFIG__SPAD_ENABLES_REF_2 0x000F + +#define VL53LX_GLOBAL_CONFIG__SPAD_ENABLES_REF_3 0x0010 + +#define VL53LX_GLOBAL_CONFIG__SPAD_ENABLES_REF_4 0x0011 + +#define VL53LX_GLOBAL_CONFIG__SPAD_ENABLES_REF_5 0x0012 + +#define VL53LX_GLOBAL_CONFIG__REF_EN_START_SELECT 0x0013 + +#define VL53LX_REF_SPAD_MAN__NUM_REQUESTED_REF_SPADS 0x0014 + +#define VL53LX_REF_SPAD_MAN__REF_LOCATION 0x0015 + +#define VL53LX_ALGO__CROSSTALK_COMPENSATION_PLANE_OFFSET_KCPS 0x0016 + +#define VL53LX_ALGO__CROSSTALK_COMPENSATION_PLANE_OFFSET_KCPS_HI 0x0016 + +#define VL53LX_ALGO__CROSSTALK_COMPENSATION_PLANE_OFFSET_KCPS_LO 0x0017 + +#define VL53LX_ALGO__CROSSTALK_COMPENSATION_X_PLANE_GRADIENT_KCPS 0x0018 + +#define VL53LX_ALGO__CROSSTALK_COMPENSATION_X_PLANE_GRADIENT_KCPS_HI 0x0018 + +#define VL53LX_ALGO__CROSSTALK_COMPENSATION_X_PLANE_GRADIENT_KCPS_LO 0x0019 + +#define VL53LX_ALGO__CROSSTALK_COMPENSATION_Y_PLANE_GRADIENT_KCPS 0x001A + +#define VL53LX_ALGO__CROSSTALK_COMPENSATION_Y_PLANE_GRADIENT_KCPS_HI 0x001A + +#define VL53LX_ALGO__CROSSTALK_COMPENSATION_Y_PLANE_GRADIENT_KCPS_LO 0x001B + +#define VL53LX_REF_SPAD_CHAR__TOTAL_RATE_TARGET_MCPS 0x001C + +#define VL53LX_REF_SPAD_CHAR__TOTAL_RATE_TARGET_MCPS_HI 0x001C + +#define VL53LX_REF_SPAD_CHAR__TOTAL_RATE_TARGET_MCPS_LO 0x001D + +#define VL53LX_ALGO__PART_TO_PART_RANGE_OFFSET_MM 0x001E + +#define VL53LX_ALGO__PART_TO_PART_RANGE_OFFSET_MM_HI 0x001E + +#define VL53LX_ALGO__PART_TO_PART_RANGE_OFFSET_MM_LO 0x001F + +#define VL53LX_MM_CONFIG__INNER_OFFSET_MM 0x0020 + +#define VL53LX_MM_CONFIG__INNER_OFFSET_MM_HI 0x0020 + +#define VL53LX_MM_CONFIG__INNER_OFFSET_MM_LO 0x0021 + +#define VL53LX_MM_CONFIG__OUTER_OFFSET_MM 0x0022 + +#define VL53LX_MM_CONFIG__OUTER_OFFSET_MM_HI 0x0022 + +#define VL53LX_MM_CONFIG__OUTER_OFFSET_MM_LO 0x0023 + +#define VL53LX_DSS_CONFIG__TARGET_TOTAL_RATE_MCPS 0x0024 + +#define VL53LX_DSS_CONFIG__TARGET_TOTAL_RATE_MCPS_HI 0x0024 + +#define VL53LX_DSS_CONFIG__TARGET_TOTAL_RATE_MCPS_LO 0x0025 + +#define VL53LX_DEBUG__CTRL 0x0026 + +#define VL53LX_TEST_MODE__CTRL 0x0027 + +#define VL53LX_CLK_GATING__CTRL 0x0028 + +#define VL53LX_NVM_BIST__CTRL 0x0029 + +#define VL53LX_NVM_BIST__NUM_NVM_WORDS 0x002A + +#define VL53LX_NVM_BIST__START_ADDRESS 0x002B + +#define VL53LX_HOST_IF__STATUS 0x002C + +#define VL53LX_PAD_I2C_HV__CONFIG 0x002D + +#define VL53LX_PAD_I2C_HV__EXTSUP_CONFIG 0x002E + +#define VL53LX_GPIO_HV_PAD__CTRL 0x002F + +#define VL53LX_GPIO_HV_MUX__CTRL 0x0030 + +#define VL53LX_GPIO__TIO_HV_STATUS 0x0031 + +#define VL53LX_GPIO__FIO_HV_STATUS 0x0032 + +#define VL53LX_ANA_CONFIG__SPAD_SEL_PSWIDTH 0x0033 + +#define VL53LX_ANA_CONFIG__VCSEL_PULSE_WIDTH_OFFSET 0x0034 + +#define VL53LX_ANA_CONFIG__FAST_OSC__CONFIG_CTRL 0x0035 + +#define VL53LX_SIGMA_ESTIMATOR__EFFECTIVE_PULSE_WIDTH_NS 0x0036 + +#define VL53LX_SIGMA_ESTIMATOR__EFFECTIVE_AMBIENT_WIDTH_NS 0x0037 + +#define VL53LX_SIGMA_ESTIMATOR__SIGMA_REF_MM 0x0038 + +#define VL53LX_ALGO__CROSSTALK_COMPENSATION_VALID_HEIGHT_MM 0x0039 + +#define VL53LX_SPARE_HOST_CONFIG__STATIC_CONFIG_SPARE_0 0x003A + +#define VL53LX_SPARE_HOST_CONFIG__STATIC_CONFIG_SPARE_1 0x003B + +#define VL53LX_ALGO__RANGE_IGNORE_THRESHOLD_MCPS 0x003C + +#define VL53LX_ALGO__RANGE_IGNORE_THRESHOLD_MCPS_HI 0x003C + +#define VL53LX_ALGO__RANGE_IGNORE_THRESHOLD_MCPS_LO 0x003D + +#define VL53LX_ALGO__RANGE_IGNORE_VALID_HEIGHT_MM 0x003E + +#define VL53LX_ALGO__RANGE_MIN_CLIP 0x003F + +#define VL53LX_ALGO__CONSISTENCY_CHECK__TOLERANCE 0x0040 + +#define VL53LX_SPARE_HOST_CONFIG__STATIC_CONFIG_SPARE_2 0x0041 + +#define VL53LX_SD_CONFIG__RESET_STAGES_MSB 0x0042 + +#define VL53LX_SD_CONFIG__RESET_STAGES_LSB 0x0043 + +#define VL53LX_GPH_CONFIG__STREAM_COUNT_UPDATE_VALUE 0x0044 + +#define VL53LX_GLOBAL_CONFIG__STREAM_DIVIDER 0x0045 + +#define VL53LX_SYSTEM__INTERRUPT_CONFIG_GPIO 0x0046 + +#define VL53LX_CAL_CONFIG__VCSEL_START 0x0047 + +#define VL53LX_CAL_CONFIG__REPEAT_RATE 0x0048 + +#define VL53LX_CAL_CONFIG__REPEAT_RATE_HI 0x0048 + +#define VL53LX_CAL_CONFIG__REPEAT_RATE_LO 0x0049 + +#define VL53LX_GLOBAL_CONFIG__VCSEL_WIDTH 0x004A + +#define VL53LX_PHASECAL_CONFIG__TIMEOUT_MACROP 0x004B + +#define VL53LX_PHASECAL_CONFIG__TARGET 0x004C + +#define VL53LX_PHASECAL_CONFIG__OVERRIDE 0x004D + +#define VL53LX_DSS_CONFIG__ROI_MODE_CONTROL 0x004F + +#define VL53LX_SYSTEM__THRESH_RATE_HIGH 0x0050 + +#define VL53LX_SYSTEM__THRESH_RATE_HIGH_HI 0x0050 + +#define VL53LX_SYSTEM__THRESH_RATE_HIGH_LO 0x0051 + +#define VL53LX_SYSTEM__THRESH_RATE_LOW 0x0052 + +#define VL53LX_SYSTEM__THRESH_RATE_LOW_HI 0x0052 + +#define VL53LX_SYSTEM__THRESH_RATE_LOW_LO 0x0053 + +#define VL53LX_DSS_CONFIG__MANUAL_EFFECTIVE_SPADS_SELECT 0x0054 + +#define VL53LX_DSS_CONFIG__MANUAL_EFFECTIVE_SPADS_SELECT_HI 0x0054 + +#define VL53LX_DSS_CONFIG__MANUAL_EFFECTIVE_SPADS_SELECT_LO 0x0055 + +#define VL53LX_DSS_CONFIG__MANUAL_BLOCK_SELECT 0x0056 + +#define VL53LX_DSS_CONFIG__APERTURE_ATTENUATION 0x0057 + +#define VL53LX_DSS_CONFIG__MAX_SPADS_LIMIT 0x0058 + +#define VL53LX_DSS_CONFIG__MIN_SPADS_LIMIT 0x0059 + +#define VL53LX_MM_CONFIG__TIMEOUT_MACROP_A_HI 0x005A + +#define VL53LX_MM_CONFIG__TIMEOUT_MACROP_A_LO 0x005B + +#define VL53LX_MM_CONFIG__TIMEOUT_MACROP_B_HI 0x005C + +#define VL53LX_MM_CONFIG__TIMEOUT_MACROP_B_LO 0x005D + +#define VL53LX_RANGE_CONFIG__TIMEOUT_MACROP_A_HI 0x005E + +#define VL53LX_RANGE_CONFIG__TIMEOUT_MACROP_A_LO 0x005F + +#define VL53LX_RANGE_CONFIG__VCSEL_PERIOD_A 0x0060 + +#define VL53LX_RANGE_CONFIG__TIMEOUT_MACROP_B_HI 0x0061 + +#define VL53LX_RANGE_CONFIG__TIMEOUT_MACROP_B_LO 0x0062 + +#define VL53LX_RANGE_CONFIG__VCSEL_PERIOD_B 0x0063 + +#define VL53LX_RANGE_CONFIG__SIGMA_THRESH 0x0064 + +#define VL53LX_RANGE_CONFIG__SIGMA_THRESH_HI 0x0064 + +#define VL53LX_RANGE_CONFIG__SIGMA_THRESH_LO 0x0065 + +#define VL53LX_RANGE_CONFIG__MIN_COUNT_RATE_RTN_LIMIT_MCPS 0x0066 + +#define VL53LX_RANGE_CONFIG__MIN_COUNT_RATE_RTN_LIMIT_MCPS_HI 0x0066 + +#define VL53LX_RANGE_CONFIG__MIN_COUNT_RATE_RTN_LIMIT_MCPS_LO 0x0067 + +#define VL53LX_RANGE_CONFIG__VALID_PHASE_LOW 0x0068 + +#define VL53LX_RANGE_CONFIG__VALID_PHASE_HIGH 0x0069 + +#define VL53LX_SYSTEM__INTERMEASUREMENT_PERIOD 0x006C + +#define VL53LX_SYSTEM__INTERMEASUREMENT_PERIOD_3 0x006C + +#define VL53LX_SYSTEM__INTERMEASUREMENT_PERIOD_2 0x006D + +#define VL53LX_SYSTEM__INTERMEASUREMENT_PERIOD_1 0x006E + +#define VL53LX_SYSTEM__INTERMEASUREMENT_PERIOD_0 0x006F + +#define VL53LX_SYSTEM__FRACTIONAL_ENABLE 0x0070 + +#define VL53LX_SYSTEM__GROUPED_PARAMETER_HOLD_0 0x0071 + +#define VL53LX_SYSTEM__THRESH_HIGH 0x0072 + +#define VL53LX_SYSTEM__THRESH_HIGH_HI 0x0072 + +#define VL53LX_SYSTEM__THRESH_HIGH_LO 0x0073 + +#define VL53LX_SYSTEM__THRESH_LOW 0x0074 + +#define VL53LX_SYSTEM__THRESH_LOW_HI 0x0074 + +#define VL53LX_SYSTEM__THRESH_LOW_LO 0x0075 + +#define VL53LX_SYSTEM__ENABLE_XTALK_PER_QUADRANT 0x0076 + +#define VL53LX_SYSTEM__SEED_CONFIG 0x0077 + +#define VL53LX_SD_CONFIG__WOI_SD0 0x0078 + +#define VL53LX_SD_CONFIG__WOI_SD1 0x0079 + +#define VL53LX_SD_CONFIG__INITIAL_PHASE_SD0 0x007A + +#define VL53LX_SD_CONFIG__INITIAL_PHASE_SD1 0x007B + +#define VL53LX_SYSTEM__GROUPED_PARAMETER_HOLD_1 0x007C + +#define VL53LX_SD_CONFIG__FIRST_ORDER_SELECT 0x007D + +#define VL53LX_SD_CONFIG__QUANTIFIER 0x007E + +#define VL53LX_ROI_CONFIG__USER_ROI_CENTRE_SPAD 0x007F + +#define VL53LX_ROI_CONFIG__USER_ROI_REQUESTED_GLOBAL_XY_SIZE 0x0080 + +#define VL53LX_SYSTEM__SEQUENCE_CONFIG 0x0081 + +#define VL53LX_SYSTEM__GROUPED_PARAMETER_HOLD 0x0082 + +#define VL53LX_POWER_MANAGEMENT__GO1_POWER_FORCE 0x0083 + +#define VL53LX_SYSTEM__STREAM_COUNT_CTRL 0x0084 + +#define VL53LX_FIRMWARE__ENABLE 0x0085 + +#define VL53LX_SYSTEM__INTERRUPT_CLEAR 0x0086 + +#define VL53LX_SYSTEM__MODE_START 0x0087 + +#define VL53LX_RESULT__INTERRUPT_STATUS 0x0088 + +#define VL53LX_RESULT__RANGE_STATUS 0x0089 + +#define VL53LX_RESULT__REPORT_STATUS 0x008A + +#define VL53LX_RESULT__STREAM_COUNT 0x008B + +#define VL53LX_RESULT__DSS_ACTUAL_EFFECTIVE_SPADS_SD0 0x008C + +#define VL53LX_RESULT__DSS_ACTUAL_EFFECTIVE_SPADS_SD0_HI 0x008C + +#define VL53LX_RESULT__DSS_ACTUAL_EFFECTIVE_SPADS_SD0_LO 0x008D + +#define VL53LX_RESULT__PEAK_SIGNAL_COUNT_RATE_MCPS_SD0 0x008E + +#define VL53LX_RESULT__PEAK_SIGNAL_COUNT_RATE_MCPS_SD0_HI 0x008E + +#define VL53LX_RESULT__PEAK_SIGNAL_COUNT_RATE_MCPS_SD0_LO 0x008F + +#define VL53LX_RESULT__AMBIENT_COUNT_RATE_MCPS_SD0 0x0090 + +#define VL53LX_RESULT__AMBIENT_COUNT_RATE_MCPS_SD0_HI 0x0090 + +#define VL53LX_RESULT__AMBIENT_COUNT_RATE_MCPS_SD0_LO 0x0091 + +#define VL53LX_RESULT__SIGMA_SD0 0x0092 + +#define VL53LX_RESULT__SIGMA_SD0_HI 0x0092 + +#define VL53LX_RESULT__SIGMA_SD0_LO 0x0093 + +#define VL53LX_RESULT__PHASE_SD0 0x0094 + +#define VL53LX_RESULT__PHASE_SD0_HI 0x0094 + +#define VL53LX_RESULT__PHASE_SD0_LO 0x0095 + +#define VL53LX_RESULT__FINAL_CROSSTALK_CORRECTED_RANGE_MM_SD0 0x0096 + +#define VL53LX_RESULT__FINAL_CROSSTALK_CORRECTED_RANGE_MM_SD0_HI 0x0096 + +#define VL53LX_RESULT__FINAL_CROSSTALK_CORRECTED_RANGE_MM_SD0_LO 0x0097 + +#define VL53LX_PEAK_SIGNAL_COUNT_RATE_CROSSTALK_CORRECTED_MCPS_SD0 0x0098 + +#define VL53LX__PEAK_SIGNAL_COUNT_RATE_CROSSTALK_CORRECTED_MCPS_SD0_HI 0x0098 + +#define VL53LX___PEAK_SIGNAL_COUNT_RATE_CROSSTALK_CORRECTED_MCPS_SD0_LO 0x0099 + +#define VL53LX_RESULT__MM_INNER_ACTUAL_EFFECTIVE_SPADS_SD0 0x009A + +#define VL53LX_RESULT__MM_INNER_ACTUAL_EFFECTIVE_SPADS_SD0_HI 0x009A + +#define VL53LX_RESULT__MM_INNER_ACTUAL_EFFECTIVE_SPADS_SD0_LO 0x009B + +#define VL53LX_RESULT__MM_OUTER_ACTUAL_EFFECTIVE_SPADS_SD0 0x009C + +#define VL53LX_RESULT__MM_OUTER_ACTUAL_EFFECTIVE_SPADS_SD0_HI 0x009C + +#define VL53LX_RESULT__MM_OUTER_ACTUAL_EFFECTIVE_SPADS_SD0_LO 0x009D + +#define VL53LX_RESULT__AVG_SIGNAL_COUNT_RATE_MCPS_SD0 0x009E + +#define VL53LX_RESULT__AVG_SIGNAL_COUNT_RATE_MCPS_SD0_HI 0x009E + +#define VL53LX_RESULT__AVG_SIGNAL_COUNT_RATE_MCPS_SD0_LO 0x009F + +#define VL53LX_RESULT__DSS_ACTUAL_EFFECTIVE_SPADS_SD1 0x00A0 + +#define VL53LX_RESULT__DSS_ACTUAL_EFFECTIVE_SPADS_SD1_HI 0x00A0 + +#define VL53LX_RESULT__DSS_ACTUAL_EFFECTIVE_SPADS_SD1_LO 0x00A1 + +#define VL53LX_RESULT__PEAK_SIGNAL_COUNT_RATE_MCPS_SD1 0x00A2 + +#define VL53LX_RESULT__PEAK_SIGNAL_COUNT_RATE_MCPS_SD1_HI 0x00A2 + +#define VL53LX_RESULT__PEAK_SIGNAL_COUNT_RATE_MCPS_SD1_LO 0x00A3 + +#define VL53LX_RESULT__AMBIENT_COUNT_RATE_MCPS_SD1 0x00A4 + +#define VL53LX_RESULT__AMBIENT_COUNT_RATE_MCPS_SD1_HI 0x00A4 + +#define VL53LX_RESULT__AMBIENT_COUNT_RATE_MCPS_SD1_LO 0x00A5 + +#define VL53LX_RESULT__SIGMA_SD1 0x00A6 + +#define VL53LX_RESULT__SIGMA_SD1_HI 0x00A6 + +#define VL53LX_RESULT__SIGMA_SD1_LO 0x00A7 + +#define VL53LX_RESULT__PHASE_SD1 0x00A8 + +#define VL53LX_RESULT__PHASE_SD1_HI 0x00A8 + +#define VL53LX_RESULT__PHASE_SD1_LO 0x00A9 + +#define VL53LX_RESULT__FINAL_CROSSTALK_CORRECTED_RANGE_MM_SD1 0x00AA + +#define VL53LX_RESULT__FINAL_CROSSTALK_CORRECTED_RANGE_MM_SD1_HI 0x00AA + +#define VL53LX_RESULT__FINAL_CROSSTALK_CORRECTED_RANGE_MM_SD1_LO 0x00AB + +#define VL53LX_RESULT__SPARE_0_SD1 0x00AC + +#define VL53LX_RESULT__SPARE_0_SD1_HI 0x00AC + +#define VL53LX_RESULT__SPARE_0_SD1_LO 0x00AD + +#define VL53LX_RESULT__SPARE_1_SD1 0x00AE + +#define VL53LX_RESULT__SPARE_1_SD1_HI 0x00AE + +#define VL53LX_RESULT__SPARE_1_SD1_LO 0x00AF + +#define VL53LX_RESULT__SPARE_2_SD1 0x00B0 + +#define VL53LX_RESULT__SPARE_2_SD1_HI 0x00B0 + +#define VL53LX_RESULT__SPARE_2_SD1_LO 0x00B1 + +#define VL53LX_RESULT__SPARE_3_SD1 0x00B2 + +#define VL53LX_RESULT__THRESH_INFO 0x00B3 + +#define VL53LX_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD0 0x00B4 + +#define VL53LX_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD0_3 0x00B4 + +#define VL53LX_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD0_2 0x00B5 + +#define VL53LX_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD0_1 0x00B6 + +#define VL53LX_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD0_0 0x00B7 + +#define VL53LX_RESULT_CORE__RANGING_TOTAL_EVENTS_SD0 0x00B8 + +#define VL53LX_RESULT_CORE__RANGING_TOTAL_EVENTS_SD0_3 0x00B8 + +#define VL53LX_RESULT_CORE__RANGING_TOTAL_EVENTS_SD0_2 0x00B9 + +#define VL53LX_RESULT_CORE__RANGING_TOTAL_EVENTS_SD0_1 0x00BA + +#define VL53LX_RESULT_CORE__RANGING_TOTAL_EVENTS_SD0_0 0x00BB + +#define VL53LX_RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD0 0x00BC + +#define VL53LX_RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD0_3 0x00BC + +#define VL53LX_RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD0_2 0x00BD + +#define VL53LX_RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD0_1 0x00BE + +#define VL53LX_RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD0_0 0x00BF + +#define VL53LX_RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD0 0x00C0 + +#define VL53LX_RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD0_3 0x00C0 + +#define VL53LX_RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD0_2 0x00C1 + +#define VL53LX_RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD0_1 0x00C2 + +#define VL53LX_RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD0_0 0x00C3 + +#define VL53LX_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD1 0x00C4 + +#define VL53LX_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD1_3 0x00C4 + +#define VL53LX_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD1_2 0x00C5 + +#define VL53LX_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD1_1 0x00C6 + +#define VL53LX_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD1_0 0x00C7 + +#define VL53LX_RESULT_CORE__RANGING_TOTAL_EVENTS_SD1 0x00C8 + +#define VL53LX_RESULT_CORE__RANGING_TOTAL_EVENTS_SD1_3 0x00C8 + +#define VL53LX_RESULT_CORE__RANGING_TOTAL_EVENTS_SD1_2 0x00C9 + +#define VL53LX_RESULT_CORE__RANGING_TOTAL_EVENTS_SD1_1 0x00CA + +#define VL53LX_RESULT_CORE__RANGING_TOTAL_EVENTS_SD1_0 0x00CB + +#define VL53LX_RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD1 0x00CC + +#define VL53LX_RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD1_3 0x00CC + +#define VL53LX_RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD1_2 0x00CD + +#define VL53LX_RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD1_1 0x00CE + +#define VL53LX_RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD1_0 0x00CF + +#define VL53LX_RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD1 0x00D0 + +#define VL53LX_RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD1_3 0x00D0 + +#define VL53LX_RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD1_2 0x00D1 + +#define VL53LX_RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD1_1 0x00D2 + +#define VL53LX_RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD1_0 0x00D3 + +#define VL53LX_RESULT_CORE__SPARE_0 0x00D4 + +#define VL53LX_PHASECAL_RESULT__REFERENCE_PHASE 0x00D6 + +#define VL53LX_PHASECAL_RESULT__REFERENCE_PHASE_HI 0x00D6 + +#define VL53LX_PHASECAL_RESULT__REFERENCE_PHASE_LO 0x00D7 + +#define VL53LX_PHASECAL_RESULT__VCSEL_START 0x00D8 + +#define VL53LX_REF_SPAD_CHAR_RESULT__NUM_ACTUAL_REF_SPADS 0x00D9 + +#define VL53LX_REF_SPAD_CHAR_RESULT__REF_LOCATION 0x00DA + +#define VL53LX_VHV_RESULT__COLDBOOT_STATUS 0x00DB + +#define VL53LX_VHV_RESULT__SEARCH_RESULT 0x00DC + +#define VL53LX_VHV_RESULT__LATEST_SETTING 0x00DD + +#define VL53LX_RESULT__OSC_CALIBRATE_VAL 0x00DE + +#define VL53LX_RESULT__OSC_CALIBRATE_VAL_HI 0x00DE + +#define VL53LX_RESULT__OSC_CALIBRATE_VAL_LO 0x00DF + +#define VL53LX_ANA_CONFIG__POWERDOWN_GO1 0x00E0 + +#define VL53LX_ANA_CONFIG__REF_BG_CTRL 0x00E1 + +#define VL53LX_ANA_CONFIG__REGDVDD1V2_CTRL 0x00E2 + +#define VL53LX_ANA_CONFIG__OSC_SLOW_CTRL 0x00E3 + +#define VL53LX_TEST_MODE__STATUS 0x00E4 + +#define VL53LX_FIRMWARE__SYSTEM_STATUS 0x00E5 + +#define VL53LX_FIRMWARE__MODE_STATUS 0x00E6 + +#define VL53LX_FIRMWARE__SECONDARY_MODE_STATUS 0x00E7 + +#define VL53LX_FIRMWARE__CAL_REPEAT_RATE_COUNTER 0x00E8 + +#define VL53LX_FIRMWARE__CAL_REPEAT_RATE_COUNTER_HI 0x00E8 + +#define VL53LX_FIRMWARE__CAL_REPEAT_RATE_COUNTER_LO 0x00E9 + +#define VL53LX_FIRMWARE__HISTOGRAM_BIN 0x00EA + +#define VL53LX_GPH__SYSTEM__THRESH_HIGH 0x00EC + +#define VL53LX_GPH__SYSTEM__THRESH_HIGH_HI 0x00EC + +#define VL53LX_GPH__SYSTEM__THRESH_HIGH_LO 0x00ED + +#define VL53LX_GPH__SYSTEM__THRESH_LOW 0x00EE + +#define VL53LX_GPH__SYSTEM__THRESH_LOW_HI 0x00EE + +#define VL53LX_GPH__SYSTEM__THRESH_LOW_LO 0x00EF + +#define VL53LX_GPH__SYSTEM__ENABLE_XTALK_PER_QUADRANT 0x00F0 + +#define VL53LX_GPH__SPARE_0 0x00F1 + +#define VL53LX_GPH__SD_CONFIG__WOI_SD0 0x00F2 + +#define VL53LX_GPH__SD_CONFIG__WOI_SD1 0x00F3 + +#define VL53LX_GPH__SD_CONFIG__INITIAL_PHASE_SD0 0x00F4 + +#define VL53LX_GPH__SD_CONFIG__INITIAL_PHASE_SD1 0x00F5 + +#define VL53LX_GPH__SD_CONFIG__FIRST_ORDER_SELECT 0x00F6 + +#define VL53LX_GPH__SD_CONFIG__QUANTIFIER 0x00F7 + +#define VL53LX_GPH__ROI_CONFIG__USER_ROI_CENTRE_SPAD 0x00F8 + +#define VL53LX_GPH__ROI_CONFIG__USER_ROI_REQUESTED_GLOBAL_XY_SIZE 0x00F9 + +#define VL53LX_GPH__SYSTEM__SEQUENCE_CONFIG 0x00FA + +#define VL53LX_GPH__GPH_ID 0x00FB + +#define VL53LX_SYSTEM__INTERRUPT_SET 0x00FC + +#define VL53LX_INTERRUPT_MANAGER__ENABLES 0x00FD + +#define VL53LX_INTERRUPT_MANAGER__CLEAR 0x00FE + +#define VL53LX_INTERRUPT_MANAGER__STATUS 0x00FF + +#define VL53LX_MCU_TO_HOST_BANK__WR_ACCESS_EN 0x0100 + +#define VL53LX_POWER_MANAGEMENT__GO1_RESET_STATUS 0x0101 + +#define VL53LX_PAD_STARTUP_MODE__VALUE_RO 0x0102 + +#define VL53LX_PAD_STARTUP_MODE__VALUE_CTRL 0x0103 + +#define VL53LX_PLL_PERIOD_US 0x0104 + +#define VL53LX_PLL_PERIOD_US_3 0x0104 + +#define VL53LX_PLL_PERIOD_US_2 0x0105 + +#define VL53LX_PLL_PERIOD_US_1 0x0106 + +#define VL53LX_PLL_PERIOD_US_0 0x0107 + +#define VL53LX_INTERRUPT_SCHEDULER__DATA_OUT 0x0108 + +#define VL53LX_INTERRUPT_SCHEDULER__DATA_OUT_3 0x0108 + +#define VL53LX_INTERRUPT_SCHEDULER__DATA_OUT_2 0x0109 + +#define VL53LX_INTERRUPT_SCHEDULER__DATA_OUT_1 0x010A + +#define VL53LX_INTERRUPT_SCHEDULER__DATA_OUT_0 0x010B + +#define VL53LX_NVM_BIST__COMPLETE 0x010C + +#define VL53LX_NVM_BIST__STATUS 0x010D + +#define VL53LX_IDENTIFICATION__MODEL_ID 0x010F + +#define VL53LX_IDENTIFICATION__MODULE_TYPE 0x0110 + +#define VL53LX_IDENTIFICATION__REVISION_ID 0x0111 + +#define VL53LX_IDENTIFICATION__MODULE_ID 0x0112 + +#define VL53LX_IDENTIFICATION__MODULE_ID_HI 0x0112 + +#define VL53LX_IDENTIFICATION__MODULE_ID_LO 0x0113 + +#define VL53LX_ANA_CONFIG__FAST_OSC__TRIM_MAX 0x0114 + +#define VL53LX_ANA_CONFIG__FAST_OSC__FREQ_SET 0x0115 + +#define VL53LX_ANA_CONFIG__VCSEL_TRIM 0x0116 + +#define VL53LX_ANA_CONFIG__VCSEL_SELION 0x0117 + +#define VL53LX_ANA_CONFIG__VCSEL_SELION_MAX 0x0118 + +#define VL53LX_PROTECTED_LASER_SAFETY__LOCK_BIT 0x0119 + +#define VL53LX_LASER_SAFETY__KEY 0x011A + +#define VL53LX_LASER_SAFETY__KEY_RO 0x011B + +#define VL53LX_LASER_SAFETY__CLIP 0x011C + +#define VL53LX_LASER_SAFETY__MULT 0x011D + +#define VL53LX_GLOBAL_CONFIG__SPAD_ENABLES_RTN_0 0x011E + +#define VL53LX_GLOBAL_CONFIG__SPAD_ENABLES_RTN_1 0x011F + +#define VL53LX_GLOBAL_CONFIG__SPAD_ENABLES_RTN_2 0x0120 + +#define VL53LX_GLOBAL_CONFIG__SPAD_ENABLES_RTN_3 0x0121 + +#define VL53LX_GLOBAL_CONFIG__SPAD_ENABLES_RTN_4 0x0122 + +#define VL53LX_GLOBAL_CONFIG__SPAD_ENABLES_RTN_5 0x0123 + +#define VL53LX_GLOBAL_CONFIG__SPAD_ENABLES_RTN_6 0x0124 + +#define VL53LX_GLOBAL_CONFIG__SPAD_ENABLES_RTN_7 0x0125 + +#define VL53LX_GLOBAL_CONFIG__SPAD_ENABLES_RTN_8 0x0126 + +#define VL53LX_GLOBAL_CONFIG__SPAD_ENABLES_RTN_9 0x0127 + +#define VL53LX_GLOBAL_CONFIG__SPAD_ENABLES_RTN_10 0x0128 + +#define VL53LX_GLOBAL_CONFIG__SPAD_ENABLES_RTN_11 0x0129 + +#define VL53LX_GLOBAL_CONFIG__SPAD_ENABLES_RTN_12 0x012A + +#define VL53LX_GLOBAL_CONFIG__SPAD_ENABLES_RTN_13 0x012B + +#define VL53LX_GLOBAL_CONFIG__SPAD_ENABLES_RTN_14 0x012C + +#define VL53LX_GLOBAL_CONFIG__SPAD_ENABLES_RTN_15 0x012D + +#define VL53LX_GLOBAL_CONFIG__SPAD_ENABLES_RTN_16 0x012E + +#define VL53LX_GLOBAL_CONFIG__SPAD_ENABLES_RTN_17 0x012F + +#define VL53LX_GLOBAL_CONFIG__SPAD_ENABLES_RTN_18 0x0130 + +#define VL53LX_GLOBAL_CONFIG__SPAD_ENABLES_RTN_19 0x0131 + +#define VL53LX_GLOBAL_CONFIG__SPAD_ENABLES_RTN_20 0x0132 + +#define VL53LX_GLOBAL_CONFIG__SPAD_ENABLES_RTN_21 0x0133 + +#define VL53LX_GLOBAL_CONFIG__SPAD_ENABLES_RTN_22 0x0134 + +#define VL53LX_GLOBAL_CONFIG__SPAD_ENABLES_RTN_23 0x0135 + +#define VL53LX_GLOBAL_CONFIG__SPAD_ENABLES_RTN_24 0x0136 + +#define VL53LX_GLOBAL_CONFIG__SPAD_ENABLES_RTN_25 0x0137 + +#define VL53LX_GLOBAL_CONFIG__SPAD_ENABLES_RTN_26 0x0138 + +#define VL53LX_GLOBAL_CONFIG__SPAD_ENABLES_RTN_27 0x0139 + +#define VL53LX_GLOBAL_CONFIG__SPAD_ENABLES_RTN_28 0x013A + +#define VL53LX_GLOBAL_CONFIG__SPAD_ENABLES_RTN_29 0x013B + +#define VL53LX_GLOBAL_CONFIG__SPAD_ENABLES_RTN_30 0x013C + +#define VL53LX_GLOBAL_CONFIG__SPAD_ENABLES_RTN_31 0x013D + +#define VL53LX_ROI_CONFIG__MODE_ROI_CENTRE_SPAD 0x013E + +#define VL53LX_ROI_CONFIG__MODE_ROI_XY_SIZE 0x013F + +#define VL53LX_GO2_HOST_BANK_ACCESS__OVERRIDE 0x0300 + +#define VL53LX_MCU_UTIL_MULTIPLIER__MULTIPLICAND 0x0400 + +#define VL53LX_MCU_UTIL_MULTIPLIER__MULTIPLICAND_3 0x0400 + +#define VL53LX_MCU_UTIL_MULTIPLIER__MULTIPLICAND_2 0x0401 + +#define VL53LX_MCU_UTIL_MULTIPLIER__MULTIPLICAND_1 0x0402 + +#define VL53LX_MCU_UTIL_MULTIPLIER__MULTIPLICAND_0 0x0403 + +#define VL53LX_MCU_UTIL_MULTIPLIER__MULTIPLIER 0x0404 + +#define VL53LX_MCU_UTIL_MULTIPLIER__MULTIPLIER_3 0x0404 + +#define VL53LX_MCU_UTIL_MULTIPLIER__MULTIPLIER_2 0x0405 + +#define VL53LX_MCU_UTIL_MULTIPLIER__MULTIPLIER_1 0x0406 + +#define VL53LX_MCU_UTIL_MULTIPLIER__MULTIPLIER_0 0x0407 + +#define VL53LX_MCU_UTIL_MULTIPLIER__PRODUCT_HI 0x0408 + +#define VL53LX_MCU_UTIL_MULTIPLIER__PRODUCT_HI_3 0x0408 + +#define VL53LX_MCU_UTIL_MULTIPLIER__PRODUCT_HI_2 0x0409 + +#define VL53LX_MCU_UTIL_MULTIPLIER__PRODUCT_HI_1 0x040A + +#define VL53LX_MCU_UTIL_MULTIPLIER__PRODUCT_HI_0 0x040B + +#define VL53LX_MCU_UTIL_MULTIPLIER__PRODUCT_LO 0x040C + +#define VL53LX_MCU_UTIL_MULTIPLIER__PRODUCT_LO_3 0x040C + +#define VL53LX_MCU_UTIL_MULTIPLIER__PRODUCT_LO_2 0x040D + +#define VL53LX_MCU_UTIL_MULTIPLIER__PRODUCT_LO_1 0x040E + +#define VL53LX_MCU_UTIL_MULTIPLIER__PRODUCT_LO_0 0x040F + +#define VL53LX_MCU_UTIL_MULTIPLIER__START 0x0410 + +#define VL53LX_MCU_UTIL_MULTIPLIER__STATUS 0x0411 + +#define VL53LX_MCU_UTIL_DIVIDER__START 0x0412 + +#define VL53LX_MCU_UTIL_DIVIDER__STATUS 0x0413 + +#define VL53LX_MCU_UTIL_DIVIDER__DIVIDEND 0x0414 + +#define VL53LX_MCU_UTIL_DIVIDER__DIVIDEND_3 0x0414 + +#define VL53LX_MCU_UTIL_DIVIDER__DIVIDEND_2 0x0415 + +#define VL53LX_MCU_UTIL_DIVIDER__DIVIDEND_1 0x0416 + +#define VL53LX_MCU_UTIL_DIVIDER__DIVIDEND_0 0x0417 + +#define VL53LX_MCU_UTIL_DIVIDER__DIVISOR 0x0418 + +#define VL53LX_MCU_UTIL_DIVIDER__DIVISOR_3 0x0418 + +#define VL53LX_MCU_UTIL_DIVIDER__DIVISOR_2 0x0419 + +#define VL53LX_MCU_UTIL_DIVIDER__DIVISOR_1 0x041A + +#define VL53LX_MCU_UTIL_DIVIDER__DIVISOR_0 0x041B + +#define VL53LX_MCU_UTIL_DIVIDER__QUOTIENT 0x041C + +#define VL53LX_MCU_UTIL_DIVIDER__QUOTIENT_3 0x041C + +#define VL53LX_MCU_UTIL_DIVIDER__QUOTIENT_2 0x041D + +#define VL53LX_MCU_UTIL_DIVIDER__QUOTIENT_1 0x041E + +#define VL53LX_MCU_UTIL_DIVIDER__QUOTIENT_0 0x041F + +#define VL53LX_TIMER0__VALUE_IN 0x0420 + +#define VL53LX_TIMER0__VALUE_IN_3 0x0420 + +#define VL53LX_TIMER0__VALUE_IN_2 0x0421 + +#define VL53LX_TIMER0__VALUE_IN_1 0x0422 + +#define VL53LX_TIMER0__VALUE_IN_0 0x0423 + +#define VL53LX_TIMER1__VALUE_IN 0x0424 + +#define VL53LX_TIMER1__VALUE_IN_3 0x0424 + +#define VL53LX_TIMER1__VALUE_IN_2 0x0425 + +#define VL53LX_TIMER1__VALUE_IN_1 0x0426 + +#define VL53LX_TIMER1__VALUE_IN_0 0x0427 + +#define VL53LX_TIMER0__CTRL 0x0428 + +#define VL53LX_TIMER1__CTRL 0x0429 + +#define VL53LX_MCU_GENERAL_PURPOSE__GP_0 0x042C + +#define VL53LX_MCU_GENERAL_PURPOSE__GP_1 0x042D + +#define VL53LX_MCU_GENERAL_PURPOSE__GP_2 0x042E + +#define VL53LX_MCU_GENERAL_PURPOSE__GP_3 0x042F + +#define VL53LX_MCU_RANGE_CALC__CONFIG 0x0430 + +#define VL53LX_MCU_RANGE_CALC__OFFSET_CORRECTED_RANGE 0x0432 + +#define VL53LX_MCU_RANGE_CALC__OFFSET_CORRECTED_RANGE_HI 0x0432 + +#define VL53LX_MCU_RANGE_CALC__OFFSET_CORRECTED_RANGE_LO 0x0433 + +#define VL53LX_MCU_RANGE_CALC__SPARE_4 0x0434 + +#define VL53LX_MCU_RANGE_CALC__SPARE_4_3 0x0434 + +#define VL53LX_MCU_RANGE_CALC__SPARE_4_2 0x0435 + +#define VL53LX_MCU_RANGE_CALC__SPARE_4_1 0x0436 + +#define VL53LX_MCU_RANGE_CALC__SPARE_4_0 0x0437 + +#define VL53LX_MCU_RANGE_CALC__AMBIENT_DURATION_PRE_CALC 0x0438 + +#define VL53LX_MCU_RANGE_CALC__AMBIENT_DURATION_PRE_CALC_HI 0x0438 + +#define VL53LX_MCU_RANGE_CALC__AMBIENT_DURATION_PRE_CALC_LO 0x0439 + +#define VL53LX_MCU_RANGE_CALC__ALGO_VCSEL_PERIOD 0x043C + +#define VL53LX_MCU_RANGE_CALC__SPARE_5 0x043D + +#define VL53LX_MCU_RANGE_CALC__ALGO_TOTAL_PERIODS 0x043E + +#define VL53LX_MCU_RANGE_CALC__ALGO_TOTAL_PERIODS_HI 0x043E + +#define VL53LX_MCU_RANGE_CALC__ALGO_TOTAL_PERIODS_LO 0x043F + +#define VL53LX_MCU_RANGE_CALC__ALGO_ACCUM_PHASE 0x0440 + +#define VL53LX_MCU_RANGE_CALC__ALGO_ACCUM_PHASE_3 0x0440 + +#define VL53LX_MCU_RANGE_CALC__ALGO_ACCUM_PHASE_2 0x0441 + +#define VL53LX_MCU_RANGE_CALC__ALGO_ACCUM_PHASE_1 0x0442 + +#define VL53LX_MCU_RANGE_CALC__ALGO_ACCUM_PHASE_0 0x0443 + +#define VL53LX_MCU_RANGE_CALC__ALGO_SIGNAL_EVENTS 0x0444 + +#define VL53LX_MCU_RANGE_CALC__ALGO_SIGNAL_EVENTS_3 0x0444 + +#define VL53LX_MCU_RANGE_CALC__ALGO_SIGNAL_EVENTS_2 0x0445 + +#define VL53LX_MCU_RANGE_CALC__ALGO_SIGNAL_EVENTS_1 0x0446 + +#define VL53LX_MCU_RANGE_CALC__ALGO_SIGNAL_EVENTS_0 0x0447 + +#define VL53LX_MCU_RANGE_CALC__ALGO_AMBIENT_EVENTS 0x0448 + +#define VL53LX_MCU_RANGE_CALC__ALGO_AMBIENT_EVENTS_3 0x0448 + +#define VL53LX_MCU_RANGE_CALC__ALGO_AMBIENT_EVENTS_2 0x0449 + +#define VL53LX_MCU_RANGE_CALC__ALGO_AMBIENT_EVENTS_1 0x044A + +#define VL53LX_MCU_RANGE_CALC__ALGO_AMBIENT_EVENTS_0 0x044B + +#define VL53LX_MCU_RANGE_CALC__SPARE_6 0x044C + +#define VL53LX_MCU_RANGE_CALC__SPARE_6_HI 0x044C + +#define VL53LX_MCU_RANGE_CALC__SPARE_6_LO 0x044D + +#define VL53LX_MCU_RANGE_CALC__ALGO_ADJUST_VCSEL_PERIOD 0x044E + +#define VL53LX_MCU_RANGE_CALC__ALGO_ADJUST_VCSEL_PERIOD_HI 0x044E + +#define VL53LX_MCU_RANGE_CALC__ALGO_ADJUST_VCSEL_PERIOD_LO 0x044F + +#define VL53LX_MCU_RANGE_CALC__NUM_SPADS 0x0450 + +#define VL53LX_MCU_RANGE_CALC__NUM_SPADS_HI 0x0450 + +#define VL53LX_MCU_RANGE_CALC__NUM_SPADS_LO 0x0451 + +#define VL53LX_MCU_RANGE_CALC__PHASE_OUTPUT 0x0452 + +#define VL53LX_MCU_RANGE_CALC__PHASE_OUTPUT_HI 0x0452 + +#define VL53LX_MCU_RANGE_CALC__PHASE_OUTPUT_LO 0x0453 + +#define VL53LX_MCU_RANGE_CALC__RATE_PER_SPAD_MCPS 0x0454 + +#define VL53LX_MCU_RANGE_CALC__RATE_PER_SPAD_MCPS_3 0x0454 + +#define VL53LX_MCU_RANGE_CALC__RATE_PER_SPAD_MCPS_2 0x0455 + +#define VL53LX_MCU_RANGE_CALC__RATE_PER_SPAD_MCPS_1 0x0456 + +#define VL53LX_MCU_RANGE_CALC__RATE_PER_SPAD_MCPS_0 0x0457 + +#define VL53LX_MCU_RANGE_CALC__SPARE_7 0x0458 + +#define VL53LX_MCU_RANGE_CALC__SPARE_8 0x0459 + +#define VL53LX_MCU_RANGE_CALC__PEAK_SIGNAL_RATE_MCPS 0x045A + +#define VL53LX_MCU_RANGE_CALC__PEAK_SIGNAL_RATE_MCPS_HI 0x045A + +#define VL53LX_MCU_RANGE_CALC__PEAK_SIGNAL_RATE_MCPS_LO 0x045B + +#define VL53LX_MCU_RANGE_CALC__AVG_SIGNAL_RATE_MCPS 0x045C + +#define VL53LX_MCU_RANGE_CALC__AVG_SIGNAL_RATE_MCPS_HI 0x045C + +#define VL53LX_MCU_RANGE_CALC__AVG_SIGNAL_RATE_MCPS_LO 0x045D + +#define VL53LX_MCU_RANGE_CALC__AMBIENT_RATE_MCPS 0x045E + +#define VL53LX_MCU_RANGE_CALC__AMBIENT_RATE_MCPS_HI 0x045E + +#define VL53LX_MCU_RANGE_CALC__AMBIENT_RATE_MCPS_LO 0x045F + +#define VL53LX_MCU_RANGE_CALC__XTALK 0x0460 + +#define VL53LX_MCU_RANGE_CALC__XTALK_HI 0x0460 + +#define VL53LX_MCU_RANGE_CALC__XTALK_LO 0x0461 + +#define VL53LX_MCU_RANGE_CALC__CALC_STATUS 0x0462 + +#define VL53LX_MCU_RANGE_CALC__DEBUG 0x0463 + +#define VL53LX_MCU_RANGE_CALC__PEAK_SIGNAL_RATE_XTALK_CORR_MCPS 0x0464 + +#define VL53LX_MCU_RANGE_CALC__PEAK_SIGNAL_RATE_XTALK_CORR_MCPS_HI 0x0464 + +#define VL53LX_MCU_RANGE_CALC__PEAK_SIGNAL_RATE_XTALK_CORR_MCPS_LO 0x0465 + +#define VL53LX_MCU_RANGE_CALC__SPARE_0 0x0468 + +#define VL53LX_MCU_RANGE_CALC__SPARE_1 0x0469 + +#define VL53LX_MCU_RANGE_CALC__SPARE_2 0x046A + +#define VL53LX_MCU_RANGE_CALC__SPARE_3 0x046B + +#define VL53LX_PATCH__CTRL 0x0470 + +#define VL53LX_PATCH__JMP_ENABLES 0x0472 + +#define VL53LX_PATCH__JMP_ENABLES_HI 0x0472 + +#define VL53LX_PATCH__JMP_ENABLES_LO 0x0473 + +#define VL53LX_PATCH__DATA_ENABLES 0x0474 + +#define VL53LX_PATCH__DATA_ENABLES_HI 0x0474 + +#define VL53LX_PATCH__DATA_ENABLES_LO 0x0475 + +#define VL53LX_PATCH__OFFSET_0 0x0476 + +#define VL53LX_PATCH__OFFSET_0_HI 0x0476 + +#define VL53LX_PATCH__OFFSET_0_LO 0x0477 + +#define VL53LX_PATCH__OFFSET_1 0x0478 + +#define VL53LX_PATCH__OFFSET_1_HI 0x0478 + +#define VL53LX_PATCH__OFFSET_1_LO 0x0479 + +#define VL53LX_PATCH__OFFSET_2 0x047A + +#define VL53LX_PATCH__OFFSET_2_HI 0x047A + +#define VL53LX_PATCH__OFFSET_2_LO 0x047B + +#define VL53LX_PATCH__OFFSET_3 0x047C + +#define VL53LX_PATCH__OFFSET_3_HI 0x047C + +#define VL53LX_PATCH__OFFSET_3_LO 0x047D + +#define VL53LX_PATCH__OFFSET_4 0x047E + +#define VL53LX_PATCH__OFFSET_4_HI 0x047E + +#define VL53LX_PATCH__OFFSET_4_LO 0x047F + +#define VL53LX_PATCH__OFFSET_5 0x0480 + +#define VL53LX_PATCH__OFFSET_5_HI 0x0480 + +#define VL53LX_PATCH__OFFSET_5_LO 0x0481 + +#define VL53LX_PATCH__OFFSET_6 0x0482 + +#define VL53LX_PATCH__OFFSET_6_HI 0x0482 + +#define VL53LX_PATCH__OFFSET_6_LO 0x0483 + +#define VL53LX_PATCH__OFFSET_7 0x0484 + +#define VL53LX_PATCH__OFFSET_7_HI 0x0484 + +#define VL53LX_PATCH__OFFSET_7_LO 0x0485 + +#define VL53LX_PATCH__OFFSET_8 0x0486 + +#define VL53LX_PATCH__OFFSET_8_HI 0x0486 + +#define VL53LX_PATCH__OFFSET_8_LO 0x0487 + +#define VL53LX_PATCH__OFFSET_9 0x0488 + +#define VL53LX_PATCH__OFFSET_9_HI 0x0488 + +#define VL53LX_PATCH__OFFSET_9_LO 0x0489 + +#define VL53LX_PATCH__OFFSET_10 0x048A + +#define VL53LX_PATCH__OFFSET_10_HI 0x048A + +#define VL53LX_PATCH__OFFSET_10_LO 0x048B + +#define VL53LX_PATCH__OFFSET_11 0x048C + +#define VL53LX_PATCH__OFFSET_11_HI 0x048C + +#define VL53LX_PATCH__OFFSET_11_LO 0x048D + +#define VL53LX_PATCH__OFFSET_12 0x048E + +#define VL53LX_PATCH__OFFSET_12_HI 0x048E + +#define VL53LX_PATCH__OFFSET_12_LO 0x048F + +#define VL53LX_PATCH__OFFSET_13 0x0490 + +#define VL53LX_PATCH__OFFSET_13_HI 0x0490 + +#define VL53LX_PATCH__OFFSET_13_LO 0x0491 + +#define VL53LX_PATCH__OFFSET_14 0x0492 + +#define VL53LX_PATCH__OFFSET_14_HI 0x0492 + +#define VL53LX_PATCH__OFFSET_14_LO 0x0493 + +#define VL53LX_PATCH__OFFSET_15 0x0494 + +#define VL53LX_PATCH__OFFSET_15_HI 0x0494 + +#define VL53LX_PATCH__OFFSET_15_LO 0x0495 + +#define VL53LX_PATCH__ADDRESS_0 0x0496 + +#define VL53LX_PATCH__ADDRESS_0_HI 0x0496 + +#define VL53LX_PATCH__ADDRESS_0_LO 0x0497 + +#define VL53LX_PATCH__ADDRESS_1 0x0498 + +#define VL53LX_PATCH__ADDRESS_1_HI 0x0498 + +#define VL53LX_PATCH__ADDRESS_1_LO 0x0499 + +#define VL53LX_PATCH__ADDRESS_2 0x049A + +#define VL53LX_PATCH__ADDRESS_2_HI 0x049A + +#define VL53LX_PATCH__ADDRESS_2_LO 0x049B + +#define VL53LX_PATCH__ADDRESS_3 0x049C + +#define VL53LX_PATCH__ADDRESS_3_HI 0x049C + +#define VL53LX_PATCH__ADDRESS_3_LO 0x049D + +#define VL53LX_PATCH__ADDRESS_4 0x049E + +#define VL53LX_PATCH__ADDRESS_4_HI 0x049E + +#define VL53LX_PATCH__ADDRESS_4_LO 0x049F + +#define VL53LX_PATCH__ADDRESS_5 0x04A0 + +#define VL53LX_PATCH__ADDRESS_5_HI 0x04A0 + +#define VL53LX_PATCH__ADDRESS_5_LO 0x04A1 + +#define VL53LX_PATCH__ADDRESS_6 0x04A2 + +#define VL53LX_PATCH__ADDRESS_6_HI 0x04A2 + +#define VL53LX_PATCH__ADDRESS_6_LO 0x04A3 + +#define VL53LX_PATCH__ADDRESS_7 0x04A4 + +#define VL53LX_PATCH__ADDRESS_7_HI 0x04A4 + +#define VL53LX_PATCH__ADDRESS_7_LO 0x04A5 + +#define VL53LX_PATCH__ADDRESS_8 0x04A6 + +#define VL53LX_PATCH__ADDRESS_8_HI 0x04A6 + +#define VL53LX_PATCH__ADDRESS_8_LO 0x04A7 + +#define VL53LX_PATCH__ADDRESS_9 0x04A8 + +#define VL53LX_PATCH__ADDRESS_9_HI 0x04A8 + +#define VL53LX_PATCH__ADDRESS_9_LO 0x04A9 + +#define VL53LX_PATCH__ADDRESS_10 0x04AA + +#define VL53LX_PATCH__ADDRESS_10_HI 0x04AA + +#define VL53LX_PATCH__ADDRESS_10_LO 0x04AB + +#define VL53LX_PATCH__ADDRESS_11 0x04AC + +#define VL53LX_PATCH__ADDRESS_11_HI 0x04AC + +#define VL53LX_PATCH__ADDRESS_11_LO 0x04AD + +#define VL53LX_PATCH__ADDRESS_12 0x04AE + +#define VL53LX_PATCH__ADDRESS_12_HI 0x04AE + +#define VL53LX_PATCH__ADDRESS_12_LO 0x04AF + +#define VL53LX_PATCH__ADDRESS_13 0x04B0 + +#define VL53LX_PATCH__ADDRESS_13_HI 0x04B0 + +#define VL53LX_PATCH__ADDRESS_13_LO 0x04B1 + +#define VL53LX_PATCH__ADDRESS_14 0x04B2 + +#define VL53LX_PATCH__ADDRESS_14_HI 0x04B2 + +#define VL53LX_PATCH__ADDRESS_14_LO 0x04B3 + +#define VL53LX_PATCH__ADDRESS_15 0x04B4 + +#define VL53LX_PATCH__ADDRESS_15_HI 0x04B4 + +#define VL53LX_PATCH__ADDRESS_15_LO 0x04B5 + +#define VL53LX_SPI_ASYNC_MUX__CTRL 0x04C0 + +#define VL53LX_CLK__CONFIG 0x04C4 + +#define VL53LX_GPIO_LV_MUX__CTRL 0x04CC + +#define VL53LX_GPIO_LV_PAD__CTRL 0x04CD + +#define VL53LX_PAD_I2C_LV__CONFIG 0x04D0 + +#define VL53LX_PAD_STARTUP_MODE__VALUE_RO_GO1 0x04D4 + +#define VL53LX_HOST_IF__STATUS_GO1 0x04D5 + +#define VL53LX_MCU_CLK_GATING__CTRL 0x04D8 + +#define VL53LX_TEST__BIST_ROM_CTRL 0x04E0 + +#define VL53LX_TEST__BIST_ROM_RESULT 0x04E1 + +#define VL53LX_TEST__BIST_ROM_MCU_SIG 0x04E2 + +#define VL53LX_TEST__BIST_ROM_MCU_SIG_HI 0x04E2 + +#define VL53LX_TEST__BIST_ROM_MCU_SIG_LO 0x04E3 + +#define VL53LX_TEST__BIST_RAM_CTRL 0x04E4 + +#define VL53LX_TEST__BIST_RAM_RESULT 0x04E5 + +#define VL53LX_TEST__TMC 0x04E8 + +#define VL53LX_TEST__PLL_BIST_MIN_THRESHOLD 0x04F0 + +#define VL53LX_TEST__PLL_BIST_MIN_THRESHOLD_HI 0x04F0 + +#define VL53LX_TEST__PLL_BIST_MIN_THRESHOLD_LO 0x04F1 + +#define VL53LX_TEST__PLL_BIST_MAX_THRESHOLD 0x04F2 + +#define VL53LX_TEST__PLL_BIST_MAX_THRESHOLD_HI 0x04F2 + +#define VL53LX_TEST__PLL_BIST_MAX_THRESHOLD_LO 0x04F3 + +#define VL53LX_TEST__PLL_BIST_COUNT_OUT 0x04F4 + +#define VL53LX_TEST__PLL_BIST_COUNT_OUT_HI 0x04F4 + +#define VL53LX_TEST__PLL_BIST_COUNT_OUT_LO 0x04F5 + +#define VL53LX_TEST__PLL_BIST_GONOGO 0x04F6 + +#define VL53LX_TEST__PLL_BIST_CTRL 0x04F7 + +#define VL53LX_RANGING_CORE__DEVICE_ID 0x0680 + +#define VL53LX_RANGING_CORE__REVISION_ID 0x0681 + +#define VL53LX_RANGING_CORE__CLK_CTRL1 0x0683 + +#define VL53LX_RANGING_CORE__CLK_CTRL2 0x0684 + +#define VL53LX_RANGING_CORE__WOI_1 0x0685 + +#define VL53LX_RANGING_CORE__WOI_REF_1 0x0686 + +#define VL53LX_RANGING_CORE__START_RANGING 0x0687 + +#define VL53LX_RANGING_CORE__LOW_LIMIT_1 0x0690 + +#define VL53LX_RANGING_CORE__HIGH_LIMIT_1 0x0691 + +#define VL53LX_RANGING_CORE__LOW_LIMIT_REF_1 0x0692 + +#define VL53LX_RANGING_CORE__HIGH_LIMIT_REF_1 0x0693 + +#define VL53LX_RANGING_CORE__QUANTIFIER_1_MSB 0x0694 + +#define VL53LX_RANGING_CORE__QUANTIFIER_1_LSB 0x0695 + +#define VL53LX_RANGING_CORE__QUANTIFIER_REF_1_MSB 0x0696 + +#define VL53LX_RANGING_CORE__QUANTIFIER_REF_1_LSB 0x0697 + +#define VL53LX_RANGING_CORE__AMBIENT_OFFSET_1_MSB 0x0698 + +#define VL53LX_RANGING_CORE__AMBIENT_OFFSET_1_LSB 0x0699 + +#define VL53LX_RANGING_CORE__AMBIENT_OFFSET_REF_1_MSB 0x069A + +#define VL53LX_RANGING_CORE__AMBIENT_OFFSET_REF_1_LSB 0x069B + +#define VL53LX_RANGING_CORE__FILTER_STRENGTH_1 0x069C + +#define VL53LX_RANGING_CORE__FILTER_STRENGTH_REF_1 0x069D + +#define VL53LX_RANGING_CORE__SIGNAL_EVENT_LIMIT_1_MSB 0x069E + +#define VL53LX_RANGING_CORE__SIGNAL_EVENT_LIMIT_1_LSB 0x069F + +#define VL53LX_RANGING_CORE__SIGNAL_EVENT_LIMIT_REF_1_MSB 0x06A0 + +#define VL53LX_RANGING_CORE__SIGNAL_EVENT_LIMIT_REF_1_LSB 0x06A1 + +#define VL53LX_RANGING_CORE__TIMEOUT_OVERALL_PERIODS_MSB 0x06A4 + +#define VL53LX_RANGING_CORE__TIMEOUT_OVERALL_PERIODS_LSB 0x06A5 + +#define VL53LX_RANGING_CORE__INVERT_HW 0x06A6 + +#define VL53LX_RANGING_CORE__FORCE_HW 0x06A7 + +#define VL53LX_RANGING_CORE__STATIC_HW_VALUE 0x06A8 + +#define VL53LX_RANGING_CORE__FORCE_CONTINUOUS_AMBIENT 0x06A9 + +#define VL53LX_RANGING_CORE__TEST_PHASE_SELECT_TO_FILTER 0x06AA + +#define VL53LX_RANGING_CORE__TEST_PHASE_SELECT_TO_TIMING_GEN 0x06AB + +#define VL53LX_RANGING_CORE__INITIAL_PHASE_VALUE_1 0x06AC + +#define VL53LX_RANGING_CORE__INITIAL_PHASE_VALUE_REF_1 0x06AD + +#define VL53LX_RANGING_CORE__FORCE_UP_IN 0x06AE + +#define VL53LX_RANGING_CORE__FORCE_DN_IN 0x06AF + +#define VL53LX_RANGING_CORE__STATIC_UP_VALUE_1 0x06B0 + +#define VL53LX_RANGING_CORE__STATIC_UP_VALUE_REF_1 0x06B1 + +#define VL53LX_RANGING_CORE__STATIC_DN_VALUE_1 0x06B2 + +#define VL53LX_RANGING_CORE__STATIC_DN_VALUE_REF_1 0x06B3 + +#define VL53LX_RANGING_CORE__MONITOR_UP_DN 0x06B4 + +#define VL53LX_RANGING_CORE__INVERT_UP_DN 0x06B5 + +#define VL53LX_RANGING_CORE__CPUMP_1 0x06B6 + +#define VL53LX_RANGING_CORE__CPUMP_2 0x06B7 + +#define VL53LX_RANGING_CORE__CPUMP_3 0x06B8 + +#define VL53LX_RANGING_CORE__OSC_1 0x06B9 + +#define VL53LX_RANGING_CORE__PLL_1 0x06BB + +#define VL53LX_RANGING_CORE__PLL_2 0x06BC + +#define VL53LX_RANGING_CORE__REFERENCE_1 0x06BD + +#define VL53LX_RANGING_CORE__REFERENCE_3 0x06BF + +#define VL53LX_RANGING_CORE__REFERENCE_4 0x06C0 + +#define VL53LX_RANGING_CORE__REFERENCE_5 0x06C1 + +#define VL53LX_RANGING_CORE__REGAVDD1V2 0x06C3 + +#define VL53LX_RANGING_CORE__CALIB_1 0x06C4 + +#define VL53LX_RANGING_CORE__CALIB_2 0x06C5 + +#define VL53LX_RANGING_CORE__CALIB_3 0x06C6 + +#define VL53LX_RANGING_CORE__TST_MUX_SEL1 0x06C9 + +#define VL53LX_RANGING_CORE__TST_MUX_SEL2 0x06CA + +#define VL53LX_RANGING_CORE__TST_MUX 0x06CB + +#define VL53LX_RANGING_CORE__GPIO_OUT_TESTMUX 0x06CC + +#define VL53LX_RANGING_CORE__CUSTOM_FE 0x06CD + +#define VL53LX_RANGING_CORE__CUSTOM_FE_2 0x06CE + +#define VL53LX_RANGING_CORE__SPAD_READOUT 0x06CF + +#define VL53LX_RANGING_CORE__SPAD_READOUT_1 0x06D0 + +#define VL53LX_RANGING_CORE__SPAD_READOUT_2 0x06D1 + +#define VL53LX_RANGING_CORE__SPAD_PS 0x06D2 + +#define VL53LX_RANGING_CORE__LASER_SAFETY_2 0x06D4 + +#define VL53LX_RANGING_CORE__NVM_CTRL__MODE 0x0780 + +#define VL53LX_RANGING_CORE__NVM_CTRL__PDN 0x0781 + +#define VL53LX_RANGING_CORE__NVM_CTRL__PROGN 0x0782 + +#define VL53LX_RANGING_CORE__NVM_CTRL__READN 0x0783 + +#define VL53LX_RANGING_CORE__NVM_CTRL__PULSE_WIDTH_MSB 0x0784 + +#define VL53LX_RANGING_CORE__NVM_CTRL__PULSE_WIDTH_LSB 0x0785 + +#define VL53LX_RANGING_CORE__NVM_CTRL__HV_RISE_MSB 0x0786 + +#define VL53LX_RANGING_CORE__NVM_CTRL__HV_RISE_LSB 0x0787 + +#define VL53LX_RANGING_CORE__NVM_CTRL__HV_FALL_MSB 0x0788 + +#define VL53LX_RANGING_CORE__NVM_CTRL__HV_FALL_LSB 0x0789 + +#define VL53LX_RANGING_CORE__NVM_CTRL__TST 0x078A + +#define VL53LX_RANGING_CORE__NVM_CTRL__TESTREAD 0x078B + +#define VL53LX_RANGING_CORE__NVM_CTRL__DATAIN_MMM 0x078C + +#define VL53LX_RANGING_CORE__NVM_CTRL__DATAIN_LMM 0x078D + +#define VL53LX_RANGING_CORE__NVM_CTRL__DATAIN_LLM 0x078E + +#define VL53LX_RANGING_CORE__NVM_CTRL__DATAIN_LLL 0x078F + +#define VL53LX_RANGING_CORE__NVM_CTRL__DATAOUT_MMM 0x0790 + +#define VL53LX_RANGING_CORE__NVM_CTRL__DATAOUT_LMM 0x0791 + +#define VL53LX_RANGING_CORE__NVM_CTRL__DATAOUT_LLM 0x0792 + +#define VL53LX_RANGING_CORE__NVM_CTRL__DATAOUT_LLL 0x0793 + +#define VL53LX_RANGING_CORE__NVM_CTRL__ADDR 0x0794 + +#define VL53LX_RANGING_CORE__NVM_CTRL__DATAOUT_ECC 0x0795 + +#define VL53LX_RANGING_CORE__RET_SPAD_EN_0 0x0796 + +#define VL53LX_RANGING_CORE__RET_SPAD_EN_1 0x0797 + +#define VL53LX_RANGING_CORE__RET_SPAD_EN_2 0x0798 + +#define VL53LX_RANGING_CORE__RET_SPAD_EN_3 0x0799 + +#define VL53LX_RANGING_CORE__RET_SPAD_EN_4 0x079A + +#define VL53LX_RANGING_CORE__RET_SPAD_EN_5 0x079B + +#define VL53LX_RANGING_CORE__RET_SPAD_EN_6 0x079C + +#define VL53LX_RANGING_CORE__RET_SPAD_EN_7 0x079D + +#define VL53LX_RANGING_CORE__RET_SPAD_EN_8 0x079E + +#define VL53LX_RANGING_CORE__RET_SPAD_EN_9 0x079F + +#define VL53LX_RANGING_CORE__RET_SPAD_EN_10 0x07A0 + +#define VL53LX_RANGING_CORE__RET_SPAD_EN_11 0x07A1 + +#define VL53LX_RANGING_CORE__RET_SPAD_EN_12 0x07A2 + +#define VL53LX_RANGING_CORE__RET_SPAD_EN_13 0x07A3 + +#define VL53LX_RANGING_CORE__RET_SPAD_EN_14 0x07A4 + +#define VL53LX_RANGING_CORE__RET_SPAD_EN_15 0x07A5 + +#define VL53LX_RANGING_CORE__RET_SPAD_EN_16 0x07A6 + +#define VL53LX_RANGING_CORE__RET_SPAD_EN_17 0x07A7 + +#define VL53LX_RANGING_CORE__SPAD_SHIFT_EN 0x07BA + +#define VL53LX_RANGING_CORE__SPAD_DISABLE_CTRL 0x07BB + +#define VL53LX_RANGING_CORE__SPAD_EN_SHIFT_OUT_DEBUG 0x07BC + +#define VL53LX_RANGING_CORE__SPI_MODE 0x07BD + +#define VL53LX_RANGING_CORE__GPIO_DIR 0x07BE + +#define VL53LX_RANGING_CORE__VCSEL_PERIOD 0x0880 + +#define VL53LX_RANGING_CORE__VCSEL_START 0x0881 + +#define VL53LX_RANGING_CORE__VCSEL_STOP 0x0882 + +#define VL53LX_RANGING_CORE__VCSEL_1 0x0885 + +#define VL53LX_RANGING_CORE__VCSEL_STATUS 0x088D + +#define VL53LX_RANGING_CORE__STATUS 0x0980 + +#define VL53LX_RANGING_CORE__LASER_CONTINUITY_STATE 0x0981 + +#define VL53LX_RANGING_CORE__RANGE_1_MMM 0x0982 + +#define VL53LX_RANGING_CORE__RANGE_1_LMM 0x0983 + +#define VL53LX_RANGING_CORE__RANGE_1_LLM 0x0984 + +#define VL53LX_RANGING_CORE__RANGE_1_LLL 0x0985 + +#define VL53LX_RANGING_CORE__RANGE_REF_1_MMM 0x0986 + +#define VL53LX_RANGING_CORE__RANGE_REF_1_LMM 0x0987 + +#define VL53LX_RANGING_CORE__RANGE_REF_1_LLM 0x0988 + +#define VL53LX_RANGING_CORE__RANGE_REF_1_LLL 0x0989 + +#define VL53LX_RANGING_CORE__AMBIENT_WINDOW_EVENTS_1_MMM 0x098A + +#define VL53LX_RANGING_CORE__AMBIENT_WINDOW_EVENTS_1_LMM 0x098B + +#define VL53LX_RANGING_CORE__AMBIENT_WINDOW_EVENTS_1_LLM 0x098C + +#define VL53LX_RANGING_CORE__AMBIENT_WINDOW_EVENTS_1_LLL 0x098D + +#define VL53LX_RANGING_CORE__RANGING_TOTAL_EVENTS_1_MMM 0x098E + +#define VL53LX_RANGING_CORE__RANGING_TOTAL_EVENTS_1_LMM 0x098F + +#define VL53LX_RANGING_CORE__RANGING_TOTAL_EVENTS_1_LLM 0x0990 + +#define VL53LX_RANGING_CORE__RANGING_TOTAL_EVENTS_1_LLL 0x0991 + +#define VL53LX_RANGING_CORE__SIGNAL_TOTAL_EVENTS_1_MMM 0x0992 + +#define VL53LX_RANGING_CORE__SIGNAL_TOTAL_EVENTS_1_LMM 0x0993 + +#define VL53LX_RANGING_CORE__SIGNAL_TOTAL_EVENTS_1_LLM 0x0994 + +#define VL53LX_RANGING_CORE__SIGNAL_TOTAL_EVENTS_1_LLL 0x0995 + +#define VL53LX_RANGING_CORE__TOTAL_PERIODS_ELAPSED_1_MM 0x0996 + +#define VL53LX_RANGING_CORE__TOTAL_PERIODS_ELAPSED_1_LM 0x0997 + +#define VL53LX_RANGING_CORE__TOTAL_PERIODS_ELAPSED_1_LL 0x0998 + +#define VL53LX_RANGING_CORE__AMBIENT_MISMATCH_MM 0x0999 + +#define VL53LX_RANGING_CORE__AMBIENT_MISMATCH_LM 0x099A + +#define VL53LX_RANGING_CORE__AMBIENT_MISMATCH_LL 0x099B + +#define VL53LX_RANGING_CORE__AMBIENT_WINDOW_EVENTS_REF_1_MMM 0x099C + +#define VL53LX_RANGING_CORE__AMBIENT_WINDOW_EVENTS_REF_1_LMM 0x099D + +#define VL53LX_RANGING_CORE__AMBIENT_WINDOW_EVENTS_REF_1_LLM 0x099E + +#define VL53LX_RANGING_CORE__AMBIENT_WINDOW_EVENTS_REF_1_LLL 0x099F + +#define VL53LX_RANGING_CORE__RANGING_TOTAL_EVENTS_REF_1_MMM 0x09A0 + +#define VL53LX_RANGING_CORE__RANGING_TOTAL_EVENTS_REF_1_LMM 0x09A1 + +#define VL53LX_RANGING_CORE__RANGING_TOTAL_EVENTS_REF_1_LLM 0x09A2 + +#define VL53LX_RANGING_CORE__RANGING_TOTAL_EVENTS_REF_1_LLL 0x09A3 + +#define VL53LX_RANGING_CORE__SIGNAL_TOTAL_EVENTS_REF_1_MMM 0x09A4 + +#define VL53LX_RANGING_CORE__SIGNAL_TOTAL_EVENTS_REF_1_LMM 0x09A5 + +#define VL53LX_RANGING_CORE__SIGNAL_TOTAL_EVENTS_REF_1_LLM 0x09A6 + +#define VL53LX_RANGING_CORE__SIGNAL_TOTAL_EVENTS_REF_1_LLL 0x09A7 + +#define VL53LX_RANGING_CORE__TOTAL_PERIODS_ELAPSED_REF_1_MM 0x09A8 + +#define VL53LX_RANGING_CORE__TOTAL_PERIODS_ELAPSED_REF_1_LM 0x09A9 + +#define VL53LX_RANGING_CORE__TOTAL_PERIODS_ELAPSED_REF_1_LL 0x09AA + +#define VL53LX_RANGING_CORE__AMBIENT_MISMATCH_REF_MM 0x09AB + +#define VL53LX_RANGING_CORE__AMBIENT_MISMATCH_REF_LM 0x09AC + +#define VL53LX_RANGING_CORE__AMBIENT_MISMATCH_REF_LL 0x09AD + +#define VL53LX_RANGING_CORE__GPIO_CONFIG__A0 0x0A00 + +#define VL53LX_RANGING_CORE__RESET_CONTROL__A0 0x0A01 + +#define VL53LX_RANGING_CORE__INTR_MANAGER__A0 0x0A02 + +#define VL53LX_RANGING_CORE__POWER_FSM_TIME_OSC__A0 0x0A06 + +#define VL53LX_RANGING_CORE__VCSEL_ATEST__A0 0x0A07 + +#define VL53LX_RANGING_CORE__VCSEL_PERIOD_CLIPPED__A0 0x0A08 + +#define VL53LX_RANGING_CORE__VCSEL_STOP_CLIPPED__A0 0x0A09 + +#define VL53LX_RANGING_CORE__CALIB_2__A0 0x0A0A + +#define VL53LX_RANGING_CORE__STOP_CONDITION__A0 0x0A0B + +#define VL53LX_RANGING_CORE__STATUS_RESET__A0 0x0A0C + +#define VL53LX_RANGING_CORE__READOUT_CFG__A0 0x0A0D + +#define VL53LX_RANGING_CORE__WINDOW_SETTING__A0 0x0A0E + +#define VL53LX_RANGING_CORE__VCSEL_DELAY__A0 0x0A1A + +#define VL53LX_RANGING_CORE__REFERENCE_2__A0 0x0A1B + +#define VL53LX_RANGING_CORE__REGAVDD1V2__A0 0x0A1D + +#define VL53LX_RANGING_CORE__TST_MUX__A0 0x0A1F + +#define VL53LX_RANGING_CORE__CUSTOM_FE_2__A0 0x0A20 + +#define VL53LX_RANGING_CORE__SPAD_READOUT__A0 0x0A21 + +#define VL53LX_RANGING_CORE__CPUMP_1__A0 0x0A22 + +#define VL53LX_RANGING_CORE__SPARE_REGISTER__A0 0x0A23 + +#define VL53LX_RANGING_CORE__VCSEL_CONT_STAGE5_BYPASS__A0 0x0A24 + +#define VL53LX_RANGING_CORE__RET_SPAD_EN_18 0x0A25 + +#define VL53LX_RANGING_CORE__RET_SPAD_EN_19 0x0A26 + +#define VL53LX_RANGING_CORE__RET_SPAD_EN_20 0x0A27 + +#define VL53LX_RANGING_CORE__RET_SPAD_EN_21 0x0A28 + +#define VL53LX_RANGING_CORE__RET_SPAD_EN_22 0x0A29 + +#define VL53LX_RANGING_CORE__RET_SPAD_EN_23 0x0A2A + +#define VL53LX_RANGING_CORE__RET_SPAD_EN_24 0x0A2B + +#define VL53LX_RANGING_CORE__RET_SPAD_EN_25 0x0A2C + +#define VL53LX_RANGING_CORE__RET_SPAD_EN_26 0x0A2D + +#define VL53LX_RANGING_CORE__RET_SPAD_EN_27 0x0A2E + +#define VL53LX_RANGING_CORE__RET_SPAD_EN_28 0x0A2F + +#define VL53LX_RANGING_CORE__RET_SPAD_EN_29 0x0A30 + +#define VL53LX_RANGING_CORE__RET_SPAD_EN_30 0x0A31 + +#define VL53LX_RANGING_CORE__RET_SPAD_EN_31 0x0A32 + +#define VL53LX_RANGING_CORE__REF_SPAD_EN_0__EWOK 0x0A33 + +#define VL53LX_RANGING_CORE__REF_SPAD_EN_1__EWOK 0x0A34 + +#define VL53LX_RANGING_CORE__REF_SPAD_EN_2__EWOK 0x0A35 + +#define VL53LX_RANGING_CORE__REF_SPAD_EN_3__EWOK 0x0A36 + +#define VL53LX_RANGING_CORE__REF_SPAD_EN_4__EWOK 0x0A37 + +#define VL53LX_RANGING_CORE__REF_SPAD_EN_5__EWOK 0x0A38 + +#define VL53LX_RANGING_CORE__REF_EN_START_SELECT 0x0A39 + +#define VL53LX_RANGING_CORE__REGDVDD1V2_ATEST__EWOK 0x0A41 + +#define VL53LX_SOFT_RESET_GO1 0x0B00 + +#define VL53LX_PRIVATE__PATCH_BASE_ADDR_RSLV 0x0E00 + +#define VL53LX_PREV_SHADOW_RESULT__INTERRUPT_STATUS 0x0ED0 + +#define VL53LX_PREV_SHADOW_RESULT__RANGE_STATUS 0x0ED1 + +#define VL53LX_PREV_SHADOW_RESULT__REPORT_STATUS 0x0ED2 + +#define VL53LX_PREV_SHADOW_RESULT__STREAM_COUNT 0x0ED3 + +#define VL53LX_PREV_SHADOW_RESULT__DSS_ACTUAL_EFFECTIVE_SPADS_SD0 0x0ED4 + +#define VL53LX_PREV_SHADOW_RESULT__DSS_ACTUAL_EFFECTIVE_SPADS_SD0_HI 0x0ED4 + +#define VL53LX_PREV_SHADOW_RESULT__DSS_ACTUAL_EFFECTIVE_SPADS_SD0_LO 0x0ED5 + +#define VL53LX_PREV_SHADOW_RESULT__PEAK_SIGNAL_COUNT_RATE_MCPS_SD0 0x0ED6 + +#define VL53LX_PREV_SHADOW_RESULT__PEAK_SIGNAL_COUNT_RATE_MCPS_SD0_HI 0x0ED6 + +#define VL53LX_PREV_SHADOW_RESULT__PEAK_SIGNAL_COUNT_RATE_MCPS_SD0_LO 0x0ED7 + +#define VL53LX_PREV_SHADOW_RESULT__AMBIENT_COUNT_RATE_MCPS_SD0 0x0ED8 + +#define VL53LX_PREV_SHADOW_RESULT__AMBIENT_COUNT_RATE_MCPS_SD0_HI 0x0ED8 + +#define VL53LX_PREV_SHADOW_RESULT__AMBIENT_COUNT_RATE_MCPS_SD0_LO 0x0ED9 + +#define VL53LX_PREV_SHADOW_RESULT__SIGMA_SD0 0x0EDA + +#define VL53LX_PREV_SHADOW_RESULT__SIGMA_SD0_HI 0x0EDA + +#define VL53LX_PREV_SHADOW_RESULT__SIGMA_SD0_LO 0x0EDB + +#define VL53LX_PREV_SHADOW_RESULT__PHASE_SD0 0x0EDC + +#define VL53LX_PREV_SHADOW_RESULT__PHASE_SD0_HI 0x0EDC + +#define VL53LX_PREV_SHADOW_RESULT__PHASE_SD0_LO 0x0EDD + +#define VL53LX_PREV_SHADOW_RESULT__FINAL_CROSSTALK_CORRECTED_RANGE_MM_SD0 0x0EDE + +#define VL53LX_PREV__FINAL_CROSSTALK_CORRECTED_RANGE_MM_SD0_HI 0x0EDE + +#define VL53LX_PREV__FINAL_CROSSTALK_CORRECTED_RANGE_MM_SD0_LO 0x0EDF + +#define VL53LX_PREV__PEAK_SIGNAL_COUNT_RATE_CROSSTALK_CORRECTED_MCPS_SD0 0x0EE0 + +#define VL53LX_PPEAK_SIGNAL_COUNT_RATE_CROSSTALK_CORRECTED_MCPS_SD0_HI 0x0EE0 + +#define VL53LX_PPEAK_SIGNAL_COUNT_RATE_CROSSTALK_CORRECTED_MCPS_SD0_LO 0x0EE1 + +#define VL53LX_PREV_SHADOW_RESULT__MM_INNER_ACTUAL_EFFECTIVE_SPADS_SD0 0x0EE2 + +#define VL53LX_PREV_SHADOW_RESULT__MM_INNER_ACTUAL_EFFECTIVE_SPADS_SD0_HI 0x0EE2 + +#define VL53LX_PREV_SHADOW_RESULT__MM_INNER_ACTUAL_EFFECTIVE_SPADS_SD0_LO 0x0EE3 + +#define VL53LX_PREV_SHADOW_RESULT__MM_OUTER_ACTUAL_EFFECTIVE_SPADS_SD0 0x0EE4 + +#define VL53LX_PREV_SHADOW_RESULT__MM_OUTER_ACTUAL_EFFECTIVE_SPADS_SD0_HI 0x0EE4 + +#define VL53LX_PREV_SHADOW_RESULT__MM_OUTER_ACTUAL_EFFECTIVE_SPADS_SD0_LO 0x0EE5 + +#define VL53LX_PREV_SHADOW_RESULT__AVG_SIGNAL_COUNT_RATE_MCPS_SD0 0x0EE6 + +#define VL53LX_PREV_SHADOW_RESULT__AVG_SIGNAL_COUNT_RATE_MCPS_SD0_HI 0x0EE6 + +#define VL53LX_PREV_SHADOW_RESULT__AVG_SIGNAL_COUNT_RATE_MCPS_SD0_LO 0x0EE7 + +#define VL53LX_PREV_SHADOW_RESULT__DSS_ACTUAL_EFFECTIVE_SPADS_SD1 0x0EE8 + +#define VL53LX_PREV_SHADOW_RESULT__DSS_ACTUAL_EFFECTIVE_SPADS_SD1_HI 0x0EE8 + +#define VL53LX_PREV_SHADOW_RESULT__DSS_ACTUAL_EFFECTIVE_SPADS_SD1_LO 0x0EE9 + +#define VL53LX_PREV_SHADOW_RESULT__PEAK_SIGNAL_COUNT_RATE_MCPS_SD1 0x0EEA + +#define VL53LX_PREV_SHADOW_RESULT__PEAK_SIGNAL_COUNT_RATE_MCPS_SD1_HI 0x0EEA + +#define VL53LX_PREV_SHADOW_RESULT__PEAK_SIGNAL_COUNT_RATE_MCPS_SD1_LO 0x0EEB + +#define VL53LX_PREV_SHADOW_RESULT__AMBIENT_COUNT_RATE_MCPS_SD1 0x0EEC + +#define VL53LX_PREV_SHADOW_RESULT__AMBIENT_COUNT_RATE_MCPS_SD1_HI 0x0EEC + +#define VL53LX_PREV_SHADOW_RESULT__AMBIENT_COUNT_RATE_MCPS_SD1_LO 0x0EED + +#define VL53LX_PREV_SHADOW_RESULT__SIGMA_SD1 0x0EEE + +#define VL53LX_PREV_SHADOW_RESULT__SIGMA_SD1_HI 0x0EEE + +#define VL53LX_PREV_SHADOW_RESULT__SIGMA_SD1_LO 0x0EEF + +#define VL53LX_PREV_SHADOW_RESULT__PHASE_SD1 0x0EF0 + +#define VL53LX_PREV_SHADOW_RESULT__PHASE_SD1_HI 0x0EF0 + +#define VL53LX_PREV_SHADOW_RESULT__PHASE_SD1_LO 0x0EF1 + +#define VL53LX_PREV_SHADOW_RESULT__FINAL_CROSSTALK_CORRECTED_RANGE_MM_SD1 0x0EF2 + +#define VL53LX_PFINAL_CROSSTALK_CORRECTED_RANGE_MM_SD1_HI 0x0EF2 + +#define VL53LX_PFINAL_CROSSTALK_CORRECTED_RANGE_MM_SD1_LO 0x0EF3 + +#define VL53LX_PREV_SHADOW_RESULT__SPARE_0_SD1 0x0EF4 + +#define VL53LX_PREV_SHADOW_RESULT__SPARE_0_SD1_HI 0x0EF4 + +#define VL53LX_PREV_SHADOW_RESULT__SPARE_0_SD1_LO 0x0EF5 + +#define VL53LX_PREV_SHADOW_RESULT__SPARE_1_SD1 0x0EF6 + +#define VL53LX_PREV_SHADOW_RESULT__SPARE_1_SD1_HI 0x0EF6 + +#define VL53LX_PREV_SHADOW_RESULT__SPARE_1_SD1_LO 0x0EF7 + +#define VL53LX_PREV_SHADOW_RESULT__SPARE_2_SD1 0x0EF8 + +#define VL53LX_PREV_SHADOW_RESULT__SPARE_2_SD1_HI 0x0EF8 + +#define VL53LX_PREV_SHADOW_RESULT__SPARE_2_SD1_LO 0x0EF9 + +#define VL53LX_PREV_SHADOW_RESULT__SPARE_3_SD1 0x0EFA + +#define VL53LX_PREV_SHADOW_RESULT__SPARE_3_SD1_HI 0x0EFA + +#define VL53LX_PREV_SHADOW_RESULT__SPARE_3_SD1_LO 0x0EFB + +#define VL53LX_PREV_SHADOW_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD0 0x0EFC + +#define VL53LX_PREV_SHADOW_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD0_3 0x0EFC + +#define VL53LX_PREV_SHADOW_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD0_2 0x0EFD + +#define VL53LX_PREV_SHADOW_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD0_1 0x0EFE + +#define VL53LX_PREV_SHADOW_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD0_0 0x0EFF + +#define VL53LX_PREV_SHADOW_RESULT_CORE__RANGING_TOTAL_EVENTS_SD0 0x0F00 + +#define VL53LX_PREV_SHADOW_RESULT_CORE__RANGING_TOTAL_EVENTS_SD0_3 0x0F00 + +#define VL53LX_PREV_SHADOW_RESULT_CORE__RANGING_TOTAL_EVENTS_SD0_2 0x0F01 + +#define VL53LX_PREV_SHADOW_RESULT_CORE__RANGING_TOTAL_EVENTS_SD0_1 0x0F02 + +#define VL53LX_PREV_SHADOW_RESULT_CORE__RANGING_TOTAL_EVENTS_SD0_0 0x0F03 + +#define VL53LX_PREV_SHADOW_RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD0 0x0F04 + +#define VL53LX_PREV_SHADOW_RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD0_3 0x0F04 + +#define VL53LX_PREV_SHADOW_RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD0_2 0x0F05 + +#define VL53LX_PREV_SHADOW_RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD0_1 0x0F06 + +#define VL53LX_PREV_SHADOW_RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD0_0 0x0F07 + +#define VL53LX_PREV_SHADOW_RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD0 0x0F08 + +#define VL53LX_PREV_SHADOW_RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD0_3 0x0F08 + +#define VL53LX_PREV_SHADOW_RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD0_2 0x0F09 + +#define VL53LX_PREV_SHADOW_RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD0_1 0x0F0A + +#define VL53LX_PREV_SHADOW_RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD0_0 0x0F0B + +#define VL53LX_PREV_SHADOW_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD1 0x0F0C + +#define VL53LX_PREV_SHADOW_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD1_3 0x0F0C + +#define VL53LX_PREV_SHADOW_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD1_2 0x0F0D + +#define VL53LX_PREV_SHADOW_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD1_1 0x0F0E + +#define VL53LX_PREV_SHADOW_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD1_0 0x0F0F + +#define VL53LX_PREV_SHADOW_RESULT_CORE__RANGING_TOTAL_EVENTS_SD1 0x0F10 + +#define VL53LX_PREV_SHADOW_RESULT_CORE__RANGING_TOTAL_EVENTS_SD1_3 0x0F10 + +#define VL53LX_PREV_SHADOW_RESULT_CORE__RANGING_TOTAL_EVENTS_SD1_2 0x0F11 + +#define VL53LX_PREV_SHADOW_RESULT_CORE__RANGING_TOTAL_EVENTS_SD1_1 0x0F12 + +#define VL53LX_PREV_SHADOW_RESULT_CORE__RANGING_TOTAL_EVENTS_SD1_0 0x0F13 + +#define VL53LX_PREV_SHADOW_RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD1 0x0F14 + +#define VL53LX_PREV_SHADOW_RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD1_3 0x0F14 + +#define VL53LX_PREV_SHADOW_RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD1_2 0x0F15 + +#define VL53LX_PREV_SHADOW_RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD1_1 0x0F16 + +#define VL53LX_PREV_SHADOW_RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD1_0 0x0F17 + +#define VL53LX_PREV_SHADOW_RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD1 0x0F18 + +#define VL53LX_PREV_SHADOW_RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD1_3 0x0F18 + +#define VL53LX_PREV_SHADOW_RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD1_2 0x0F19 + +#define VL53LX_PREV_SHADOW_RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD1_1 0x0F1A + +#define VL53LX_PREV_SHADOW_RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD1_0 0x0F1B + +#define VL53LX_PREV_SHADOW_RESULT_CORE__SPARE_0 0x0F1C + +#define VL53LX_RESULT__DEBUG_STATUS 0x0F20 + +#define VL53LX_RESULT__DEBUG_STAGE 0x0F21 + +#define VL53LX_GPH__SYSTEM__THRESH_RATE_HIGH 0x0F24 + +#define VL53LX_GPH__SYSTEM__THRESH_RATE_HIGH_HI 0x0F24 + +#define VL53LX_GPH__SYSTEM__THRESH_RATE_HIGH_LO 0x0F25 + +#define VL53LX_GPH__SYSTEM__THRESH_RATE_LOW 0x0F26 + +#define VL53LX_GPH__SYSTEM__THRESH_RATE_LOW_HI 0x0F26 + +#define VL53LX_GPH__SYSTEM__THRESH_RATE_LOW_LO 0x0F27 + +#define VL53LX_GPH__SYSTEM__INTERRUPT_CONFIG_GPIO 0x0F28 + +#define VL53LX_GPH__DSS_CONFIG__ROI_MODE_CONTROL 0x0F2F + +#define VL53LX_GPH__DSS_CONFIG__MANUAL_EFFECTIVE_SPADS_SELECT 0x0F30 + +#define VL53LX_GPH__DSS_CONFIG__MANUAL_EFFECTIVE_SPADS_SELECT_HI 0x0F30 + +#define VL53LX_GPH__DSS_CONFIG__MANUAL_EFFECTIVE_SPADS_SELECT_LO 0x0F31 + +#define VL53LX_GPH__DSS_CONFIG__MANUAL_BLOCK_SELECT 0x0F32 + +#define VL53LX_GPH__DSS_CONFIG__MAX_SPADS_LIMIT 0x0F33 + +#define VL53LX_GPH__DSS_CONFIG__MIN_SPADS_LIMIT 0x0F34 + +#define VL53LX_GPH__MM_CONFIG__TIMEOUT_MACROP_A_HI 0x0F36 + +#define VL53LX_GPH__MM_CONFIG__TIMEOUT_MACROP_A_LO 0x0F37 + +#define VL53LX_GPH__MM_CONFIG__TIMEOUT_MACROP_B_HI 0x0F38 + +#define VL53LX_GPH__MM_CONFIG__TIMEOUT_MACROP_B_LO 0x0F39 + +#define VL53LX_GPH__RANGE_CONFIG__TIMEOUT_MACROP_A_HI 0x0F3A + +#define VL53LX_GPH__RANGE_CONFIG__TIMEOUT_MACROP_A_LO 0x0F3B + +#define VL53LX_GPH__RANGE_CONFIG__VCSEL_PERIOD_A 0x0F3C + +#define VL53LX_GPH__RANGE_CONFIG__VCSEL_PERIOD_B 0x0F3D + +#define VL53LX_GPH__RANGE_CONFIG__TIMEOUT_MACROP_B_HI 0x0F3E + +#define VL53LX_GPH__RANGE_CONFIG__TIMEOUT_MACROP_B_LO 0x0F3F + +#define VL53LX_GPH__RANGE_CONFIG__SIGMA_THRESH 0x0F40 + +#define VL53LX_GPH__RANGE_CONFIG__SIGMA_THRESH_HI 0x0F40 + +#define VL53LX_GPH__RANGE_CONFIG__SIGMA_THRESH_LO 0x0F41 + +#define VL53LX_GPH__RANGE_CONFIG__MIN_COUNT_RATE_RTN_LIMIT_MCPS 0x0F42 + +#define VL53LX_GPH__RANGE_CONFIG__MIN_COUNT_RATE_RTN_LIMIT_MCPS_HI 0x0F42 + +#define VL53LX_GPH__RANGE_CONFIG__MIN_COUNT_RATE_RTN_LIMIT_MCPS_LO 0x0F43 + +#define VL53LX_GPH__RANGE_CONFIG__VALID_PHASE_LOW 0x0F44 + +#define VL53LX_GPH__RANGE_CONFIG__VALID_PHASE_HIGH 0x0F45 + +#define VL53LX_FIRMWARE__INTERNAL_STREAM_COUNT_DIV 0x0F46 + +#define VL53LX_FIRMWARE__INTERNAL_STREAM_COUNTER_VAL 0x0F47 + +#define VL53LX_DSS_CALC__ROI_CTRL 0x0F54 + +#define VL53LX_DSS_CALC__SPARE_1 0x0F55 + +#define VL53LX_DSS_CALC__SPARE_2 0x0F56 + +#define VL53LX_DSS_CALC__SPARE_3 0x0F57 + +#define VL53LX_DSS_CALC__SPARE_4 0x0F58 + +#define VL53LX_DSS_CALC__SPARE_5 0x0F59 + +#define VL53LX_DSS_CALC__SPARE_6 0x0F5A + +#define VL53LX_DSS_CALC__SPARE_7 0x0F5B + +#define VL53LX_DSS_CALC__USER_ROI_SPAD_EN_0 0x0F5C + +#define VL53LX_DSS_CALC__USER_ROI_SPAD_EN_1 0x0F5D + +#define VL53LX_DSS_CALC__USER_ROI_SPAD_EN_2 0x0F5E + +#define VL53LX_DSS_CALC__USER_ROI_SPAD_EN_3 0x0F5F + +#define VL53LX_DSS_CALC__USER_ROI_SPAD_EN_4 0x0F60 + +#define VL53LX_DSS_CALC__USER_ROI_SPAD_EN_5 0x0F61 + +#define VL53LX_DSS_CALC__USER_ROI_SPAD_EN_6 0x0F62 + +#define VL53LX_DSS_CALC__USER_ROI_SPAD_EN_7 0x0F63 + +#define VL53LX_DSS_CALC__USER_ROI_SPAD_EN_8 0x0F64 + +#define VL53LX_DSS_CALC__USER_ROI_SPAD_EN_9 0x0F65 + +#define VL53LX_DSS_CALC__USER_ROI_SPAD_EN_10 0x0F66 + +#define VL53LX_DSS_CALC__USER_ROI_SPAD_EN_11 0x0F67 + +#define VL53LX_DSS_CALC__USER_ROI_SPAD_EN_12 0x0F68 + +#define VL53LX_DSS_CALC__USER_ROI_SPAD_EN_13 0x0F69 + +#define VL53LX_DSS_CALC__USER_ROI_SPAD_EN_14 0x0F6A + +#define VL53LX_DSS_CALC__USER_ROI_SPAD_EN_15 0x0F6B + +#define VL53LX_DSS_CALC__USER_ROI_SPAD_EN_16 0x0F6C + +#define VL53LX_DSS_CALC__USER_ROI_SPAD_EN_17 0x0F6D + +#define VL53LX_DSS_CALC__USER_ROI_SPAD_EN_18 0x0F6E + +#define VL53LX_DSS_CALC__USER_ROI_SPAD_EN_19 0x0F6F + +#define VL53LX_DSS_CALC__USER_ROI_SPAD_EN_20 0x0F70 + +#define VL53LX_DSS_CALC__USER_ROI_SPAD_EN_21 0x0F71 + +#define VL53LX_DSS_CALC__USER_ROI_SPAD_EN_22 0x0F72 + +#define VL53LX_DSS_CALC__USER_ROI_SPAD_EN_23 0x0F73 + +#define VL53LX_DSS_CALC__USER_ROI_SPAD_EN_24 0x0F74 + +#define VL53LX_DSS_CALC__USER_ROI_SPAD_EN_25 0x0F75 + +#define VL53LX_DSS_CALC__USER_ROI_SPAD_EN_26 0x0F76 + +#define VL53LX_DSS_CALC__USER_ROI_SPAD_EN_27 0x0F77 + +#define VL53LX_DSS_CALC__USER_ROI_SPAD_EN_28 0x0F78 + +#define VL53LX_DSS_CALC__USER_ROI_SPAD_EN_29 0x0F79 + +#define VL53LX_DSS_CALC__USER_ROI_SPAD_EN_30 0x0F7A + +#define VL53LX_DSS_CALC__USER_ROI_SPAD_EN_31 0x0F7B + +#define VL53LX_DSS_CALC__USER_ROI_0 0x0F7C + +#define VL53LX_DSS_CALC__USER_ROI_1 0x0F7D + +#define VL53LX_DSS_CALC__MODE_ROI_0 0x0F7E + +#define VL53LX_DSS_CALC__MODE_ROI_1 0x0F7F + +#define VL53LX_SIGMA_ESTIMATOR_CALC__SPARE_0 0x0F80 + +#define VL53LX_VHV_RESULT__PEAK_SIGNAL_RATE_MCPS 0x0F82 + +#define VL53LX_VHV_RESULT__PEAK_SIGNAL_RATE_MCPS_HI 0x0F82 + +#define VL53LX_VHV_RESULT__PEAK_SIGNAL_RATE_MCPS_LO 0x0F83 + +#define VL53LX_VHV_RESULT__SIGNAL_TOTAL_EVENTS_REF 0x0F84 + +#define VL53LX_VHV_RESULT__SIGNAL_TOTAL_EVENTS_REF_3 0x0F84 + +#define VL53LX_VHV_RESULT__SIGNAL_TOTAL_EVENTS_REF_2 0x0F85 + +#define VL53LX_VHV_RESULT__SIGNAL_TOTAL_EVENTS_REF_1 0x0F86 + +#define VL53LX_VHV_RESULT__SIGNAL_TOTAL_EVENTS_REF_0 0x0F87 + +#define VL53LX_PHASECAL_RESULT__PHASE_OUTPUT_REF 0x0F88 + +#define VL53LX_PHASECAL_RESULT__PHASE_OUTPUT_REF_HI 0x0F88 + +#define VL53LX_PHASECAL_RESULT__PHASE_OUTPUT_REF_LO 0x0F89 + +#define VL53LX_DSS_RESULT__TOTAL_RATE_PER_SPAD 0x0F8A + +#define VL53LX_DSS_RESULT__TOTAL_RATE_PER_SPAD_HI 0x0F8A + +#define VL53LX_DSS_RESULT__TOTAL_RATE_PER_SPAD_LO 0x0F8B + +#define VL53LX_DSS_RESULT__ENABLED_BLOCKS 0x0F8C + +#define VL53LX_DSS_RESULT__NUM_REQUESTED_SPADS 0x0F8E + +#define VL53LX_DSS_RESULT__NUM_REQUESTED_SPADS_HI 0x0F8E + +#define VL53LX_DSS_RESULT__NUM_REQUESTED_SPADS_LO 0x0F8F + +#define VL53LX_MM_RESULT__INNER_INTERSECTION_RATE 0x0F92 + +#define VL53LX_MM_RESULT__INNER_INTERSECTION_RATE_HI 0x0F92 + +#define VL53LX_MM_RESULT__INNER_INTERSECTION_RATE_LO 0x0F93 + +#define VL53LX_MM_RESULT__OUTER_COMPLEMENT_RATE 0x0F94 + +#define VL53LX_MM_RESULT__OUTER_COMPLEMENT_RATE_HI 0x0F94 + +#define VL53LX_MM_RESULT__OUTER_COMPLEMENT_RATE_LO 0x0F95 + +#define VL53LX_MM_RESULT__TOTAL_OFFSET 0x0F96 + +#define VL53LX_MM_RESULT__TOTAL_OFFSET_HI 0x0F96 + +#define VL53LX_MM_RESULT__TOTAL_OFFSET_LO 0x0F97 + +#define VL53LX_XTALK_CALC__XTALK_FOR_ENABLED_SPADS 0x0F98 + +#define VL53LX_XTALK_CALC__XTALK_FOR_ENABLED_SPADS_3 0x0F98 + +#define VL53LX_XTALK_CALC__XTALK_FOR_ENABLED_SPADS_2 0x0F99 + +#define VL53LX_XTALK_CALC__XTALK_FOR_ENABLED_SPADS_1 0x0F9A + +#define VL53LX_XTALK_CALC__XTALK_FOR_ENABLED_SPADS_0 0x0F9B + +#define VL53LX_XTALK_RESULT__AVG_XTALK_USER_ROI_KCPS 0x0F9C + +#define VL53LX_XTALK_RESULT__AVG_XTALK_USER_ROI_KCPS_3 0x0F9C + +#define VL53LX_XTALK_RESULT__AVG_XTALK_USER_ROI_KCPS_2 0x0F9D + +#define VL53LX_XTALK_RESULT__AVG_XTALK_USER_ROI_KCPS_1 0x0F9E + +#define VL53LX_XTALK_RESULT__AVG_XTALK_USER_ROI_KCPS_0 0x0F9F + +#define VL53LX_XTALK_RESULT__AVG_XTALK_MM_INNER_ROI_KCPS 0x0FA0 + +#define VL53LX_XTALK_RESULT__AVG_XTALK_MM_INNER_ROI_KCPS_3 0x0FA0 + +#define VL53LX_XTALK_RESULT__AVG_XTALK_MM_INNER_ROI_KCPS_2 0x0FA1 + +#define VL53LX_XTALK_RESULT__AVG_XTALK_MM_INNER_ROI_KCPS_1 0x0FA2 + +#define VL53LX_XTALK_RESULT__AVG_XTALK_MM_INNER_ROI_KCPS_0 0x0FA3 + +#define VL53LX_XTALK_RESULT__AVG_XTALK_MM_OUTER_ROI_KCPS 0x0FA4 + +#define VL53LX_XTALK_RESULT__AVG_XTALK_MM_OUTER_ROI_KCPS_3 0x0FA4 + +#define VL53LX_XTALK_RESULT__AVG_XTALK_MM_OUTER_ROI_KCPS_2 0x0FA5 + +#define VL53LX_XTALK_RESULT__AVG_XTALK_MM_OUTER_ROI_KCPS_1 0x0FA6 + +#define VL53LX_XTALK_RESULT__AVG_XTALK_MM_OUTER_ROI_KCPS_0 0x0FA7 + +#define VL53LX_RANGE_RESULT__ACCUM_PHASE 0x0FA8 + +#define VL53LX_RANGE_RESULT__ACCUM_PHASE_3 0x0FA8 + +#define VL53LX_RANGE_RESULT__ACCUM_PHASE_2 0x0FA9 + +#define VL53LX_RANGE_RESULT__ACCUM_PHASE_1 0x0FAA + +#define VL53LX_RANGE_RESULT__ACCUM_PHASE_0 0x0FAB + +#define VL53LX_RANGE_RESULT__OFFSET_CORRECTED_RANGE 0x0FAC + +#define VL53LX_RANGE_RESULT__OFFSET_CORRECTED_RANGE_HI 0x0FAC + +#define VL53LX_RANGE_RESULT__OFFSET_CORRECTED_RANGE_LO 0x0FAD + +#define VL53LX_SHADOW_PHASECAL_RESULT__VCSEL_START 0x0FAE + +#define VL53LX_SHADOW_RESULT__INTERRUPT_STATUS 0x0FB0 + +#define VL53LX_SHADOW_RESULT__RANGE_STATUS 0x0FB1 + +#define VL53LX_SHADOW_RESULT__REPORT_STATUS 0x0FB2 + +#define VL53LX_SHADOW_RESULT__STREAM_COUNT 0x0FB3 + +#define VL53LX_SHADOW_RESULT__DSS_ACTUAL_EFFECTIVE_SPADS_SD0 0x0FB4 + +#define VL53LX_SHADOW_RESULT__DSS_ACTUAL_EFFECTIVE_SPADS_SD0_HI 0x0FB4 + +#define VL53LX_SHADOW_RESULT__DSS_ACTUAL_EFFECTIVE_SPADS_SD0_LO 0x0FB5 + +#define VL53LX_SHADOW_RESULT__PEAK_SIGNAL_COUNT_RATE_MCPS_SD0 0x0FB6 + +#define VL53LX_SHADOW_RESULT__PEAK_SIGNAL_COUNT_RATE_MCPS_SD0_HI 0x0FB6 + +#define VL53LX_SHADOW_RESULT__PEAK_SIGNAL_COUNT_RATE_MCPS_SD0_LO 0x0FB7 + +#define VL53LX_SHADOW_RESULT__AMBIENT_COUNT_RATE_MCPS_SD0 0x0FB8 + +#define VL53LX_SHADOW_RESULT__AMBIENT_COUNT_RATE_MCPS_SD0_HI 0x0FB8 + +#define VL53LX_SHADOW_RESULT__AMBIENT_COUNT_RATE_MCPS_SD0_LO 0x0FB9 + +#define VL53LX_SHADOW_RESULT__SIGMA_SD0 0x0FBA + +#define VL53LX_SHADOW_RESULT__SIGMA_SD0_HI 0x0FBA + +#define VL53LX_SHADOW_RESULT__SIGMA_SD0_LO 0x0FBB + +#define VL53LX_SHADOW_RESULT__PHASE_SD0 0x0FBC + +#define VL53LX_SHADOW_RESULT__PHASE_SD0_HI 0x0FBC + +#define VL53LX_SHADOW_RESULT__PHASE_SD0_LO 0x0FBD + +#define VL53LX_SHADOW_RESULT__FINAL_CROSSTALK_CORRECTED_RANGE_MM_SD0 0x0FBE + +#define VL53LX_SHADOW_RESULT__FINAL_CROSSTALK_CORRECTED_RANGE_MM_SD0_HI 0x0FBE + +#define VL53LX_SHADOW_RESULT__FINAL_CROSSTALK_CORRECTED_RANGE_MM_SD0_LO 0x0FBF + +#define VL53LX_SHPEAK_SIGNAL_COUNT_RATE_CROSSTALK_CORRECTED_MCPS_SD0 0x0FC0 + +#define VL53LX_SHPEAK_SIGNAL_COUNT_RATE_CROSSTALK_CORRECTED_MCPS_SD0_HI 0x0FC0 + +#define VL53LX_SHPEAK_SIGNAL_COUNT_RATE_CROSSTALK_CORRECTED_MCPS_SD0_LO 0x0FC1 + +#define VL53LX_SHADOW_RESULT__MM_INNER_ACTUAL_EFFECTIVE_SPADS_SD0 0x0FC2 + +#define VL53LX_SHADOW_RESULT__MM_INNER_ACTUAL_EFFECTIVE_SPADS_SD0_HI 0x0FC2 + +#define VL53LX_SHADOW_RESULT__MM_INNER_ACTUAL_EFFECTIVE_SPADS_SD0_LO 0x0FC3 + +#define VL53LX_SHADOW_RESULT__MM_OUTER_ACTUAL_EFFECTIVE_SPADS_SD0 0x0FC4 + +#define VL53LX_SHADOW_RESULT__MM_OUTER_ACTUAL_EFFECTIVE_SPADS_SD0_HI 0x0FC4 + +#define VL53LX_SHADOW_RESULT__MM_OUTER_ACTUAL_EFFECTIVE_SPADS_SD0_LO 0x0FC5 + +#define VL53LX_SHADOW_RESULT__AVG_SIGNAL_COUNT_RATE_MCPS_SD0 0x0FC6 + +#define VL53LX_SHADOW_RESULT__AVG_SIGNAL_COUNT_RATE_MCPS_SD0_HI 0x0FC6 + +#define VL53LX_SHADOW_RESULT__AVG_SIGNAL_COUNT_RATE_MCPS_SD0_LO 0x0FC7 + +#define VL53LX_SHADOW_RESULT__DSS_ACTUAL_EFFECTIVE_SPADS_SD1 0x0FC8 + +#define VL53LX_SHADOW_RESULT__DSS_ACTUAL_EFFECTIVE_SPADS_SD1_HI 0x0FC8 + +#define VL53LX_SHADOW_RESULT__DSS_ACTUAL_EFFECTIVE_SPADS_SD1_LO 0x0FC9 + +#define VL53LX_SHADOW_RESULT__PEAK_SIGNAL_COUNT_RATE_MCPS_SD1 0x0FCA + +#define VL53LX_SHADOW_RESULT__PEAK_SIGNAL_COUNT_RATE_MCPS_SD1_HI 0x0FCA + +#define VL53LX_SHADOW_RESULT__PEAK_SIGNAL_COUNT_RATE_MCPS_SD1_LO 0x0FCB + +#define VL53LX_SHADOW_RESULT__AMBIENT_COUNT_RATE_MCPS_SD1 0x0FCC + +#define VL53LX_SHADOW_RESULT__AMBIENT_COUNT_RATE_MCPS_SD1_HI 0x0FCC + +#define VL53LX_SHADOW_RESULT__AMBIENT_COUNT_RATE_MCPS_SD1_LO 0x0FCD + +#define VL53LX_SHADOW_RESULT__SIGMA_SD1 0x0FCE + +#define VL53LX_SHADOW_RESULT__SIGMA_SD1_HI 0x0FCE + +#define VL53LX_SHADOW_RESULT__SIGMA_SD1_LO 0x0FCF + +#define VL53LX_SHADOW_RESULT__PHASE_SD1 0x0FD0 + +#define VL53LX_SHADOW_RESULT__PHASE_SD1_HI 0x0FD0 + +#define VL53LX_SHADOW_RESULT__PHASE_SD1_LO 0x0FD1 + +#define VL53LX_SHADOW_RESULT__FINAL_CROSSTALK_CORRECTED_RANGE_MM_SD1 0x0FD2 + +#define VL53LX_SHADOW_RESULT__FINAL_CROSSTALK_CORRECTED_RANGE_MM_SD1_HI 0x0FD2 + +#define VL53LX_SHADOW_RESULT__FINAL_CROSSTALK_CORRECTED_RANGE_MM_SD1_LO 0x0FD3 + +#define VL53LX_SHADOW_RESULT__SPARE_0_SD1 0x0FD4 + +#define VL53LX_SHADOW_RESULT__SPARE_0_SD1_HI 0x0FD4 + +#define VL53LX_SHADOW_RESULT__SPARE_0_SD1_LO 0x0FD5 + +#define VL53LX_SHADOW_RESULT__SPARE_1_SD1 0x0FD6 + +#define VL53LX_SHADOW_RESULT__SPARE_1_SD1_HI 0x0FD6 + +#define VL53LX_SHADOW_RESULT__SPARE_1_SD1_LO 0x0FD7 + +#define VL53LX_SHADOW_RESULT__SPARE_2_SD1 0x0FD8 + +#define VL53LX_SHADOW_RESULT__SPARE_2_SD1_HI 0x0FD8 + +#define VL53LX_SHADOW_RESULT__SPARE_2_SD1_LO 0x0FD9 + +#define VL53LX_SHADOW_RESULT__SPARE_3_SD1 0x0FDA + +#define VL53LX_SHADOW_RESULT__THRESH_INFO 0x0FDB + +#define VL53LX_SHADOW_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD0 0x0FDC + +#define VL53LX_SHADOW_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD0_3 0x0FDC + +#define VL53LX_SHADOW_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD0_2 0x0FDD + +#define VL53LX_SHADOW_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD0_1 0x0FDE + +#define VL53LX_SHADOW_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD0_0 0x0FDF + +#define VL53LX_SHADOW_RESULT_CORE__RANGING_TOTAL_EVENTS_SD0 0x0FE0 + +#define VL53LX_SHADOW_RESULT_CORE__RANGING_TOTAL_EVENTS_SD0_3 0x0FE0 + +#define VL53LX_SHADOW_RESULT_CORE__RANGING_TOTAL_EVENTS_SD0_2 0x0FE1 + +#define VL53LX_SHADOW_RESULT_CORE__RANGING_TOTAL_EVENTS_SD0_1 0x0FE2 + +#define VL53LX_SHADOW_RESULT_CORE__RANGING_TOTAL_EVENTS_SD0_0 0x0FE3 + +#define VL53LX_SHADOW_RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD0 0x0FE4 + +#define VL53LX_SHADOW_RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD0_3 0x0FE4 + +#define VL53LX_SHADOW_RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD0_2 0x0FE5 + +#define VL53LX_SHADOW_RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD0_1 0x0FE6 + +#define VL53LX_SHADOW_RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD0_0 0x0FE7 + +#define VL53LX_SHADOW_RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD0 0x0FE8 + +#define VL53LX_SHADOW_RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD0_3 0x0FE8 + +#define VL53LX_SHADOW_RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD0_2 0x0FE9 + +#define VL53LX_SHADOW_RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD0_1 0x0FEA + +#define VL53LX_SHADOW_RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD0_0 0x0FEB + +#define VL53LX_SHADOW_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD1 0x0FEC + +#define VL53LX_SHADOW_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD1_3 0x0FEC + +#define VL53LX_SHADOW_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD1_2 0x0FED + +#define VL53LX_SHADOW_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD1_1 0x0FEE + +#define VL53LX_SHADOW_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD1_0 0x0FEF + +#define VL53LX_SHADOW_RESULT_CORE__RANGING_TOTAL_EVENTS_SD1 0x0FF0 + +#define VL53LX_SHADOW_RESULT_CORE__RANGING_TOTAL_EVENTS_SD1_3 0x0FF0 + +#define VL53LX_SHADOW_RESULT_CORE__RANGING_TOTAL_EVENTS_SD1_2 0x0FF1 + +#define VL53LX_SHADOW_RESULT_CORE__RANGING_TOTAL_EVENTS_SD1_1 0x0FF2 + +#define VL53LX_SHADOW_RESULT_CORE__RANGING_TOTAL_EVENTS_SD1_0 0x0FF3 + +#define VL53LX_SHADOW_RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD1 0x0FF4 + +#define VL53LX_SHADOW_RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD1_3 0x0FF4 + +#define VL53LX_SHADOW_RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD1_2 0x0FF5 + +#define VL53LX_SHADOW_RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD1_1 0x0FF6 + +#define VL53LX_SHADOW_RESULT_CORE__SIGNAL_TOTAL_EVENTS_SD1_0 0x0FF7 + +#define VL53LX_SHADOW_RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD1 0x0FF8 + +#define VL53LX_SHADOW_RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD1_3 0x0FF8 + +#define VL53LX_SHADOW_RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD1_2 0x0FF9 + +#define VL53LX_SHADOW_RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD1_1 0x0FFA + +#define VL53LX_SHADOW_RESULT_CORE__TOTAL_PERIODS_ELAPSED_SD1_0 0x0FFB + +#define VL53LX_SHADOW_RESULT_CORE__SPARE_0 0x0FFC + +#define VL53LX_SHADOW_PHASECAL_RESULT__REFERENCE_PHASE_HI 0x0FFE + +#define VL53LX_SHADOW_PHASECAL_RESULT__REFERENCE_PHASE_LO 0x0FFF + + + + + +// define from vl53lx_error_exceptions.h + +#ifndef _VL53LX_ERROR_EXCEPTIONS_H_ +#define _VL53LX_ERROR_EXCEPTIONS_H_ + +#define IGNORE_DIVISION_BY_ZERO 0 + +#define IGNORE_XTALK_EXTRACTION_NO_SAMPLE_FAIL 0 +#define IGNORE_XTALK_EXTRACTION_SIGMA_LIMIT_FAIL 0 +#define IGNORE_XTALK_EXTRACTION_NO_SAMPLE_FOR_GRADIENT_WARN 0 +#define IGNORE_XTALK_EXTRACTION_SIGMA_LIMIT_FOR_GRADIENT_WARN 0 +#define IGNORE_XTALK_EXTRACTION_MISSING_SAMPLES_WARN 0 + +#define IGNORE_REF_SPAD_CHAR_NOT_ENOUGH_SPADS 0 +#define IGNORE_REF_SPAD_CHAR_RATE_TOO_HIGH 0 +#define IGNORE_REF_SPAD_CHAR_RATE_TOO_LOW 0 + +#define IGNORE_OFFSET_CAL_MISSING_SAMPLES 0 +#define IGNORE_OFFSET_CAL_SIGMA_TOO_HIGH 0 +#define IGNORE_OFFSET_CAL_RATE_TOO_HIGH 0 +#define IGNORE_OFFSET_CAL_SPAD_COUNT_TOO_LOW 0 + +#define IGNORE_ZONE_CAL_MISSING_SAMPLES 0 +#define IGNORE_ZONE_CAL_SIGMA_TOO_HIGH 0 +#define IGNORE_ZONE_CAL_RATE_TOO_HIGH 0 + +#endif + +// define from vl53lx_platform_user_defines.h + +#define do_division_u(dividend, divisor) (dividend / divisor) + +#define do_division_s(dividend, divisor) (dividend / divisor) + + + +#ifdef _MSC_VER +#define DISABLE_WARNINGS() { \ + __pragma(warning(push)); \ + __pragma(warning(disable:4127)); \ + } +#define ENABLE_WARNINGS() { \ + __pragma(warning( pop )); \ + } +#else + + +#define DISABLE_WARNINGS() +#define ENABLE_WARNINGS() +#endif + + + + +/*vl53lx_register_settings.h*/ + + +#define VL53LX_DEVICESCHEDULERMODE_PSEUDO_SOLO 0x00 +#define VL53LX_DEVICESCHEDULERMODE_STREAMING 0x01 +#define VL53LX_DEVICESCHEDULERMODE_HISTOGRAM 0x02 + + + + + +#define VL53LX_DEVICEREADOUTMODE_SINGLE_SD (0x00 << 2) +#define VL53LX_DEVICEREADOUTMODE_DUAL_SD (0x01 << 2) +#define VL53LX_DEVICEREADOUTMODE_SPLIT_READOUT (0x02 << 2) +#define VL53LX_DEVICEREADOUTMODE_SPLIT_MANUAL (0x03 << 2) + + + + + + +#define VL53LX_DEVICEMEASUREMENTMODE_MODE_MASK 0xF0 +#define VL53LX_DEVICEMEASUREMENTMODE_STOP_MASK 0x0F + +#define VL53LX_GROUPEDPARAMETERHOLD_ID_MASK 0x02 + + + +#define VL53LX_EWOK_I2C_DEV_ADDR_DEFAULT 0x29 + +#define VL53LX_OSC_FREQUENCY 0x00 +#define VL53LX_OSC_TRIM_DEFAULT 0x00 +#define VL53LX_OSC_FREQ_SET_DEFAULT 0x00 + +#define VL53LX_RANGE_HISTOGRAM_REF 0x08 +#define VL53LX_RANGE_HISTOGRAM_RET 0x10 +#define VL53LX_RANGE_HISTOGRAM_BOTH 0x18 +#define VL53LX_RANGE_HISTOGRAM_INIT 0x20 +#define VL53LX_RANGE_VHV_INIT 0x40 + + +#define VL53LX_RESULT_RANGE_STATUS 0x1F + + +#define VL53LX_SYSTEM__SEED_CONFIG__MANUAL 0x00 +#define VL53LX_SYSTEM__SEED_CONFIG__STANDARD 0x01 +#define VL53LX_SYSTEM__SEED_CONFIG__EVEN_UPDATE_ONLY 0x02 + + +#define VL53LX_INTERRUPT_CONFIG_LEVEL_LOW 0x00 +#define VL53LX_INTERRUPT_CONFIG_LEVEL_HIGH 0x01 +#define VL53LX_INTERRUPT_CONFIG_OUT_OF_WINDOW 0x02 +#define VL53LX_INTERRUPT_CONFIG_IN_WINDOW 0x03 +#define VL53LX_INTERRUPT_CONFIG_NEW_SAMPLE_READY 0x20 + + +#define VL53LX_CLEAR_RANGE_INT 0x01 +#define VL53LX_CLEAR_ERROR_INT 0x02 + + +#define VL53LX_SEQUENCE_VHV_EN 0x01 +#define VL53LX_SEQUENCE_PHASECAL_EN 0x02 +#define VL53LX_SEQUENCE_REFERENCE_PHASE_EN 0x04 +#define VL53LX_SEQUENCE_DSS1_EN 0x08 +#define VL53LX_SEQUENCE_DSS2_EN 0x10 +#define VL53LX_SEQUENCE_MM1_EN 0x20 +#define VL53LX_SEQUENCE_MM2_EN 0x40 +#define VL53LX_SEQUENCE_RANGE_EN 0x80 + + +#define VL53LX_DSS_CONTROL__ROI_SUBTRACT 0x20 +#define VL53LX_DSS_CONTROL__ROI_INTERSECT 0x10 + +#define VL53LX_DSS_CONTROL__MODE_DISABLED 0x00 +#define VL53LX_DSS_CONTROL__MODE_TARGET_RATE 0x01 +#define VL53LX_DSS_CONTROL__MODE_EFFSPADS 0x02 +#define VL53LX_DSS_CONTROL__MODE_BLOCKSELECT 0x03 + + + +#define VL53LX_RANGING_CORE__SPAD_READOUT__STANDARD 0x45 +#define VL53LX_RANGING_CORE__SPAD_READOUT__RETURN_ARRAY_ONLY 0x05 +#define VL53LX_RANGING_CORE__SPAD_READOUT__REFERENCE_ARRAY_ONLY 0x55 +#define VL53LX_RANGING_CORE__SPAD_READOUT__RETURN_SPLIT_ARRAY 0x25 +#define VL53LX_RANGING_CORE__SPAD_READOUT__CALIB_PULSES 0xF5 + + +#define VL53LX_LASER_SAFETY__KEY_VALUE 0x6C + + + +#define VL53LX_RANGE_STATUS__RANGE_STATUS_MASK 0x1F +#define VL53LX_RANGE_STATUS__MAX_THRESHOLD_HIT_MASK 0x20 +#define VL53LX_RANGE_STATUS__MIN_THRESHOLD_HIT_MASK 0x40 +#define VL53LX_RANGE_STATUS__GPH_ID_RANGE_STATUS_MASK 0x80 + + + +#define VL53LX_INTERRUPT_STATUS__INT_STATUS_MASK 0x07 +#define VL53LX_INTERRUPT_STATUS__INT_ERROR_STATUS_MASK 0x18 +#define VL53LX_INTERRUPT_STATUS__GPH_ID_INT_STATUS_MASK 0x20 + + +/* vl53lx_nvm_map.h */ + + + + +#define VL53LX_NVM__IDENTIFICATION__MODEL_ID 0x0008 + +#define VL53LX_NVM__IDENTIFICATION__MODULE_TYPE 0x000C + +#define VL53LX_NVM__IDENTIFICATION__REVISION_ID 0x000D + +#define VL53LX_NVM__IDENTIFICATION__MODULE_ID 0x000E + +#define VL53LX_NVM__I2C_VALID 0x0010 + +#define VL53LX_NVM__I2C_SLAVE__DEVICE_ADDRESS 0x0011 + +#define VL53LX_NVM__EWS__OSC_MEASURED__FAST_OSC_FREQUENCY 0x0014 + +#define VL53LX_NVM__EWS__FAST_OSC_TRIM_MAX 0x0016 + +#define VL53LX_NVM__EWS__FAST_OSC_FREQ_SET 0x0017 + +#define VL53LX_NVM__EWS__SLOW_OSC_CALIBRATION 0x0018 + +#define VL53LX_NVM__FMT__OSC_MEASURED__FAST_OSC_FREQUENCY 0x001C + +#define VL53LX_NVM__FMT__FAST_OSC_TRIM_MAX 0x001E + +#define VL53LX_NVM__FMT__FAST_OSC_FREQ_SET 0x001F + +#define VL53LX_NVM__FMT__SLOW_OSC_CALIBRATION 0x0020 + +#define VL53LX_NVM__VHV_CONFIG_UNLOCK 0x0028 + +#define VL53LX_NVM__REF_SELVDDPIX 0x0029 + +#define VL53LX_NVM__REF_SELVQUENCH 0x002A + +#define VL53LX_NVM__REGAVDD1V2_SEL_REGDVDD1V2_SEL 0x002B + +#define VL53LX_NVM__VHV_CONFIG__TIMEOUT_MACROP_LOOP_BOUND 0x002C + +#define VL53LX_NVM__VHV_CONFIG__COUNT_THRESH 0x002D + +#define VL53LX_NVM__VHV_CONFIG__OFFSET 0x002E + +#define VL53LX_NVM__VHV_CONFIG__INIT 0x002F + +#define VL53LX_NVM__LASER_SAFETY__VCSEL_TRIM_LL 0x0030 + +#define VL53LX_NVM__LASER_SAFETY__VCSEL_SELION_LL 0x0031 + +#define VL53LX_NVM__LASER_SAFETY__VCSEL_SELION_MAX_LL 0x0032 + +#define VL53LX_NVM__LASER_SAFETY__MULT_LL 0x0034 + +#define VL53LX_NVM__LASER_SAFETY__CLIP_LL 0x0035 + +#define VL53LX_NVM__LASER_SAFETY__VCSEL_TRIM_LD 0x0038 + +#define VL53LX_NVM__LASER_SAFETY__VCSEL_SELION_LD 0x0039 + +#define VL53LX_NVM__LASER_SAFETY__VCSEL_SELION_MAX_LD 0x003A + +#define VL53LX_NVM__LASER_SAFETY__MULT_LD 0x003C + +#define VL53LX_NVM__LASER_SAFETY__CLIP_LD 0x003D + +#define VL53LX_NVM__LASER_SAFETY_LOCK_BYTE 0x0040 + +#define VL53LX_NVM__LASER_SAFETY_UNLOCK_BYTE 0x0044 + +#define VL53LX_NVM__EWS__SPAD_ENABLES_RTN_0_ 0x0048 + +#define VL53LX_NVM__EWS__SPAD_ENABLES_RTN_1_ 0x0049 + +#define VL53LX_NVM__EWS__SPAD_ENABLES_RTN_2_ 0x004A + +#define VL53LX_NVM__EWS__SPAD_ENABLES_RTN_3_ 0x004B + +#define VL53LX_NVM__EWS__SPAD_ENABLES_RTN_4_ 0x004C + +#define VL53LX_NVM__EWS__SPAD_ENABLES_RTN_5_ 0x004D + +#define VL53LX_NVM__EWS__SPAD_ENABLES_RTN_6_ 0x004E + +#define VL53LX_NVM__EWS__SPAD_ENABLES_RTN_7_ 0x004F + +#define VL53LX_NVM__EWS__SPAD_ENABLES_RTN_8_ 0x0050 + +#define VL53LX_NVM__EWS__SPAD_ENABLES_RTN_9_ 0x0051 + +#define VL53LX_NVM__EWS__SPAD_ENABLES_RTN_10_ 0x0052 + +#define VL53LX_NVM__EWS__SPAD_ENABLES_RTN_11_ 0x0053 + +#define VL53LX_NVM__EWS__SPAD_ENABLES_RTN_12_ 0x0054 + +#define VL53LX_NVM__EWS__SPAD_ENABLES_RTN_13_ 0x0055 + +#define VL53LX_NVM__EWS__SPAD_ENABLES_RTN_14_ 0x0056 + +#define VL53LX_NVM__EWS__SPAD_ENABLES_RTN_15_ 0x0057 + +#define VL53LX_NVM__EWS__SPAD_ENABLES_RTN_16_ 0x0058 + +#define VL53LX_NVM__EWS__SPAD_ENABLES_RTN_17_ 0x0059 + +#define VL53LX_NVM__EWS__SPAD_ENABLES_RTN_18_ 0x005A + +#define VL53LX_NVM__EWS__SPAD_ENABLES_RTN_19_ 0x005B + +#define VL53LX_NVM__EWS__SPAD_ENABLES_RTN_20_ 0x005C + +#define VL53LX_NVM__EWS__SPAD_ENABLES_RTN_21_ 0x005D + +#define VL53LX_NVM__EWS__SPAD_ENABLES_RTN_22_ 0x005E + +#define VL53LX_NVM__EWS__SPAD_ENABLES_RTN_23_ 0x005F + +#define VL53LX_NVM__EWS__SPAD_ENABLES_RTN_24_ 0x0060 + +#define VL53LX_NVM__EWS__SPAD_ENABLES_RTN_25_ 0x0061 + +#define VL53LX_NVM__EWS__SPAD_ENABLES_RTN_26_ 0x0062 + +#define VL53LX_NVM__EWS__SPAD_ENABLES_RTN_27_ 0x0063 + +#define VL53LX_NVM__EWS__SPAD_ENABLES_RTN_28_ 0x0064 + +#define VL53LX_NVM__EWS__SPAD_ENABLES_RTN_29_ 0x0065 + +#define VL53LX_NVM__EWS__SPAD_ENABLES_RTN_30_ 0x0066 + +#define VL53LX_NVM__EWS__SPAD_ENABLES_RTN_31_ 0x0067 + +#define VL53LX_NVM__EWS__SPAD_ENABLES_REF__LOC1_0_ 0x0068 + +#define VL53LX_NVM__EWS__SPAD_ENABLES_REF__LOC1_1_ 0x0069 + +#define VL53LX_NVM__EWS__SPAD_ENABLES_REF__LOC1_2_ 0x006A + +#define VL53LX_NVM__EWS__SPAD_ENABLES_REF__LOC1_3_ 0x006B + +#define VL53LX_NVM__EWS__SPAD_ENABLES_REF__LOC1_4_ 0x006C + +#define VL53LX_NVM__EWS__SPAD_ENABLES_REF__LOC1_5_ 0x006D + +#define VL53LX_NVM__EWS__SPAD_ENABLES_REF__LOC2_0_ 0x0070 + +#define VL53LX_NVM__EWS__SPAD_ENABLES_REF__LOC2_1_ 0x0071 + +#define VL53LX_NVM__EWS__SPAD_ENABLES_REF__LOC2_2_ 0x0072 + +#define VL53LX_NVM__EWS__SPAD_ENABLES_REF__LOC2_3_ 0x0073 + +#define VL53LX_NVM__EWS__SPAD_ENABLES_REF__LOC2_4_ 0x0074 + +#define VL53LX_NVM__EWS__SPAD_ENABLES_REF__LOC2_5_ 0x0075 + +#define VL53LX_NVM__EWS__SPAD_ENABLES_REF__LOC3_0_ 0x0078 + +#define VL53LX_NVM__EWS__SPAD_ENABLES_REF__LOC3_1_ 0x0079 + +#define VL53LX_NVM__EWS__SPAD_ENABLES_REF__LOC3_2_ 0x007A + +#define VL53LX_NVM__EWS__SPAD_ENABLES_REF__LOC3_3_ 0x007B + +#define VL53LX_NVM__EWS__SPAD_ENABLES_REF__LOC3_4_ 0x007C + +#define VL53LX_NVM__EWS__SPAD_ENABLES_REF__LOC3_5_ 0x007D + +#define VL53LX_NVM__FMT__SPAD_ENABLES_RTN_0_ 0x0080 + +#define VL53LX_NVM__FMT__SPAD_ENABLES_RTN_1_ 0x0081 + +#define VL53LX_NVM__FMT__SPAD_ENABLES_RTN_2_ 0x0082 + +#define VL53LX_NVM__FMT__SPAD_ENABLES_RTN_3_ 0x0083 + +#define VL53LX_NVM__FMT__SPAD_ENABLES_RTN_4_ 0x0084 + +#define VL53LX_NVM__FMT__SPAD_ENABLES_RTN_5_ 0x0085 + +#define VL53LX_NVM__FMT__SPAD_ENABLES_RTN_6_ 0x0086 + +#define VL53LX_NVM__FMT__SPAD_ENABLES_RTN_7_ 0x0087 + +#define VL53LX_NVM__FMT__SPAD_ENABLES_RTN_8_ 0x0088 + +#define VL53LX_NVM__FMT__SPAD_ENABLES_RTN_9_ 0x0089 + +#define VL53LX_NVM__FMT__SPAD_ENABLES_RTN_10_ 0x008A + +#define VL53LX_NVM__FMT__SPAD_ENABLES_RTN_11_ 0x008B + +#define VL53LX_NVM__FMT__SPAD_ENABLES_RTN_12_ 0x008C + +#define VL53LX_NVM__FMT__SPAD_ENABLES_RTN_13_ 0x008D + +#define VL53LX_NVM__FMT__SPAD_ENABLES_RTN_14_ 0x008E + +#define VL53LX_NVM__FMT__SPAD_ENABLES_RTN_15_ 0x008F + +#define VL53LX_NVM__FMT__SPAD_ENABLES_RTN_16_ 0x0090 + +#define VL53LX_NVM__FMT__SPAD_ENABLES_RTN_17_ 0x0091 + +#define VL53LX_NVM__FMT__SPAD_ENABLES_RTN_18_ 0x0092 + +#define VL53LX_NVM__FMT__SPAD_ENABLES_RTN_19_ 0x0093 + +#define VL53LX_NVM__FMT__SPAD_ENABLES_RTN_20_ 0x0094 + +#define VL53LX_NVM__FMT__SPAD_ENABLES_RTN_21_ 0x0095 + +#define VL53LX_NVM__FMT__SPAD_ENABLES_RTN_22_ 0x0096 + +#define VL53LX_NVM__FMT__SPAD_ENABLES_RTN_23_ 0x0097 + +#define VL53LX_NVM__FMT__SPAD_ENABLES_RTN_24_ 0x0098 + +#define VL53LX_NVM__FMT__SPAD_ENABLES_RTN_25_ 0x0099 + +#define VL53LX_NVM__FMT__SPAD_ENABLES_RTN_26_ 0x009A + +#define VL53LX_NVM__FMT__SPAD_ENABLES_RTN_27_ 0x009B + +#define VL53LX_NVM__FMT__SPAD_ENABLES_RTN_28_ 0x009C + +#define VL53LX_NVM__FMT__SPAD_ENABLES_RTN_29_ 0x009D + +#define VL53LX_NVM__FMT__SPAD_ENABLES_RTN_30_ 0x009E + +#define VL53LX_NVM__FMT__SPAD_ENABLES_RTN_31_ 0x009F + +#define VL53LX_NVM__FMT__SPAD_ENABLES_REF__LOC1_0_ 0x00A0 + +#define VL53LX_NVM__FMT__SPAD_ENABLES_REF__LOC1_1_ 0x00A1 + +#define VL53LX_NVM__FMT__SPAD_ENABLES_REF__LOC1_2_ 0x00A2 + +#define VL53LX_NVM__FMT__SPAD_ENABLES_REF__LOC1_3_ 0x00A3 + +#define VL53LX_NVM__FMT__SPAD_ENABLES_REF__LOC1_4_ 0x00A4 + +#define VL53LX_NVM__FMT__SPAD_ENABLES_REF__LOC1_5_ 0x00A5 + +#define VL53LX_NVM__FMT__SPAD_ENABLES_REF__LOC2_0_ 0x00A8 + +#define VL53LX_NVM__FMT__SPAD_ENABLES_REF__LOC2_1_ 0x00A9 + +#define VL53LX_NVM__FMT__SPAD_ENABLES_REF__LOC2_2_ 0x00AA + +#define VL53LX_NVM__FMT__SPAD_ENABLES_REF__LOC2_3_ 0x00AB + +#define VL53LX_NVM__FMT__SPAD_ENABLES_REF__LOC2_4_ 0x00AC + +#define VL53LX_NVM__FMT__SPAD_ENABLES_REF__LOC2_5_ 0x00AD + +#define VL53LX_NVM__FMT__SPAD_ENABLES_REF__LOC3_0_ 0x00B0 + +#define VL53LX_NVM__FMT__SPAD_ENABLES_REF__LOC3_1_ 0x00B1 + +#define VL53LX_NVM__FMT__SPAD_ENABLES_REF__LOC3_2_ 0x00B2 + +#define VL53LX_NVM__FMT__SPAD_ENABLES_REF__LOC3_3_ 0x00B3 + +#define VL53LX_NVM__FMT__SPAD_ENABLES_REF__LOC3_4_ 0x00B4 + +#define VL53LX_NVM__FMT__SPAD_ENABLES_REF__LOC3_5_ 0x00B5 + +#define VL53LX_NVM__FMT__ROI_CONFIG__MODE_ROI_CENTRE_SPAD 0x00B8 + +#define VL53LX_NVM__FMT__ROI_CONFIG__MODE_ROI_XY_SIZE 0x00B9 + +#define VL53LX_NVM__FMT__REF_SPAD_APPLY__NUM_REQUESTED_REF_SPAD 0x00BC + +#define VL53LX_NVM__FMT__REF_SPAD_MAN__REF_LOCATION 0x00BD + +#define VL53LX_NVM__FMT__MM_CONFIG__INNER_OFFSET_MM 0x00C0 + +#define VL53LX_NVM__FMT__MM_CONFIG__OUTER_OFFSET_MM 0x00C2 + +#define VL53LX_NVM__FMT__ALGO__PART_TO_PART_RANGE_OFFSET_MM 0x00C4 + +#define VL53LX_NVM__FMT__ALGO__CROSSTALK_COMPENSATION_PLANE_OFFSET_KCPS 0x00C8 + +#define VL53LX_NVM__FMT__ALGO__CROSSTALK_COMPENSATION_X_PLANE_GRADIENT_KCPS \ + 0x00CA + +#define VL53LX_NVM__FMT__ALGO__CROSSTALK_COMPENSATION_Y_PLANE_GRADIENT_KCPS \ + 0x00CC + +#define VL53LX_NVM__FMT__SPARE_HOST_CONFIG__NVM_CONFIG_SPARE_0 0x00CE + +#define VL53LX_NVM__FMT__SPARE_HOST_CONFIG__NVM_CONFIG_SPARE_1 0x00CF + +#define VL53LX_NVM__CUSTOMER_NVM_SPACE_PROGRAMMED 0x00E0 + +#define VL53LX_NVM__CUST__I2C_SLAVE__DEVICE_ADDRESS 0x00E4 + +#define VL53LX_NVM__CUST__REF_SPAD_APPLY__NUM_REQUESTED_REF_SPAD 0x00E8 + +#define VL53LX_NVM__CUST__REF_SPAD_MAN__REF_LOCATION 0x00E9 + +#define VL53LX_NVM__CUST__MM_CONFIG__INNER_OFFSET_MM 0x00EC + +#define VL53LX_NVM__CUST__MM_CONFIG__OUTER_OFFSET_MM 0x00EE + +#define VL53LX_NVM__CUST__ALGO__PART_TO_PART_RANGE_OFFSET_MM 0x00F0 + +#define VL53LX_NVM__CUST__ALGO__CROSSTALK_COMPENSATION_PLANE_OFFSET_KCPS 0x00F4 + +#define VL53LX_NVM__CUST__ALGO__CROSSTALK_COMPENSATION_X_PLANE_GRADIENT_KCPS \ + 0x00F6 + +#define VL53LX_NVM__CUST__ALGO__CROSSTALK_COMPENSATION_Y_PLANE_GRADIENT_KCPS \ + 0x00F8 + +#define VL53LX_NVM__CUST__SPARE_HOST_CONFIG__NVM_CONFIG_SPARE_0 0x00FA + +#define VL53LX_NVM__CUST__SPARE_HOST_CONFIG__NVM_CONFIG_SPARE_1 0x00FB + +#define VL53LX_NVM__FMT__FGC__BYTE_0 0x01DC + +#define VL53LX_NVM__FMT__FGC__BYTE_1 0x01DD + +#define VL53LX_NVM__FMT__FGC__BYTE_2 0x01DE + +#define VL53LX_NVM__FMT__FGC__BYTE_3 0x01DF + +#define VL53LX_NVM__FMT__FGC__BYTE_4 0x01E0 + +#define VL53LX_NVM__FMT__FGC__BYTE_5 0x01E1 + +#define VL53LX_NVM__FMT__FGC__BYTE_6 0x01E2 + +#define VL53LX_NVM__FMT__FGC__BYTE_7 0x01E3 + +#define VL53LX_NVM__FMT__FGC__BYTE_8 0x01E4 + +#define VL53LX_NVM__FMT__FGC__BYTE_9 0x01E5 + +#define VL53LX_NVM__FMT__FGC__BYTE_10 0x01E6 + +#define VL53LX_NVM__FMT__FGC__BYTE_11 0x01E7 + +#define VL53LX_NVM__FMT__FGC__BYTE_12 0x01E8 + +#define VL53LX_NVM__FMT__FGC__BYTE_13 0x01E9 + +#define VL53LX_NVM__FMT__FGC__BYTE_14 0x01EA + +#define VL53LX_NVM__FMT__FGC__BYTE_15 0x01EB + +#define VL53LX_NVM__FMT__TEST_PROGRAM_MAJOR_MINOR 0x01EC + +#define VL53LX_NVM__FMT__MAP_MAJOR_MINOR 0x01ED + +#define VL53LX_NVM__FMT__YEAR_MONTH 0x01EE + +#define VL53LX_NVM__FMT__DAY_MODULE_DATE_PHASE 0x01EF + +#define VL53LX_NVM__FMT__TIME 0x01F0 + +#define VL53LX_NVM__FMT__TESTER_ID 0x01F2 + +#define VL53LX_NVM__FMT__SITE_ID 0x01F3 + +#define VL53LX_NVM__EWS__TEST_PROGRAM_MAJOR_MINOR 0x01F4 + +#define VL53LX_NVM__EWS__PROBE_CARD_MAJOR_MINOR 0x01F5 + +#define VL53LX_NVM__EWS__TESTER_ID 0x01F6 + +#define VL53LX_NVM__EWS__LOT__BYTE_0 0x01F8 + +#define VL53LX_NVM__EWS__LOT__BYTE_1 0x01F9 + +#define VL53LX_NVM__EWS__LOT__BYTE_2 0x01FA + +#define VL53LX_NVM__EWS__LOT__BYTE_3 0x01FB + +#define VL53LX_NVM__EWS__LOT__BYTE_4 0x01FC + +#define VL53LX_NVM__EWS__LOT__BYTE_5 0x01FD + +#define VL53LX_NVM__EWS__WAFER 0x01FD + +#define VL53LX_NVM__EWS__XCOORD 0x01FE + +#define VL53LX_NVM__EWS__YCOORD 0x01FF + + +#define VL53LX_NVM__FMT__OPTICAL_CENTRE_DATA_INDEX 0x00B8 +#define VL53LX_NVM__FMT__OPTICAL_CENTRE_DATA_SIZE 4 + +#define VL53LX_NVM__FMT__CAL_PEAK_RATE_MAP_DATA_INDEX 0x015C +#define VL53LX_NVM__FMT__CAL_PEAK_RATE_MAP_DATA_SIZE 56 + +#define VL53LX_NVM__FMT__ADDITIONAL_OFFSET_CAL_DATA_INDEX 0x0194 +#define VL53LX_NVM__FMT__ADDITIONAL_OFFSET_CAL_DATA_SIZE 8 + +#define VL53LX_NVM__FMT__RANGE_RESULTS__140MM_MM_PRE_RANGE 0x019C +#define VL53LX_NVM__FMT__RANGE_RESULTS__140MM_DARK 0x01AC +#define VL53LX_NVM__FMT__RANGE_RESULTS__400MM_DARK 0x01BC +#define VL53LX_NVM__FMT__RANGE_RESULTS__400MM_AMBIENT 0x01CC +#define VL53LX_NVM__FMT__RANGE_RESULTS__SIZE_BYTES 16 + + + + + + +/* vl53lx_tuning_parm_defaults.h */ + + + +#define VL53LX_TUNINGPARM_VERSION_DEFAULT \ +((uint16_t) 29) +#define VL53LX_TUNINGPARM_KEY_TABLE_VERSION_DEFAULT \ +((uint16_t) 14) +#define VL53LX_TUNINGPARM_LLD_VERSION_DEFAULT \ +((uint16_t) 12180) +#define VL53LX_TUNINGPARM_HIST_ALGO_SELECT_DEFAULT \ +((uint8_t) 4) +#define VL53LX_TUNINGPARM_HIST_TARGET_ORDER_DEFAULT \ +((uint8_t) 1) +#define VL53LX_TUNINGPARM_HIST_FILTER_WOI_0_DEFAULT \ +((uint8_t) 1) +#define VL53LX_TUNINGPARM_HIST_FILTER_WOI_1_DEFAULT \ +((uint8_t) 2) +#define VL53LX_TUNINGPARM_HIST_AMB_EST_METHOD_DEFAULT \ +((uint8_t) 1) +#define VL53LX_TUNINGPARM_HIST_AMB_THRESH_SIGMA_0_DEFAULT \ +((uint8_t) 80) +#define VL53LX_TUNINGPARM_HIST_AMB_THRESH_SIGMA_1_DEFAULT \ +((uint8_t) 100) +#define VL53LX_TUNINGPARM_HIST_MIN_AMB_THRESH_EVENTS_DEFAULT \ +((int32_t) 16) +#define VL53LX_TUNINGPARM_HIST_AMB_EVENTS_SCALER_DEFAULT \ +((uint16_t) 4157) +#define VL53LX_TUNINGPARM_HIST_NOISE_THRESHOLD_DEFAULT \ +((uint16_t) 50) +#define VL53LX_TUNINGPARM_HIST_SIGNAL_TOTAL_EVENTS_LIMIT_DEFAULT \ +((int32_t) 100) +#define VL53LX_TUNINGPARM_HIST_SIGMA_EST_REF_MM_DEFAULT \ +((uint8_t) 1) +#define VL53LX_TUNINGPARM_HIST_SIGMA_THRESH_MM_DEFAULT \ +((uint16_t) 180) +#define VL53LX_TUNINGPARM_HIST_GAIN_FACTOR_DEFAULT \ +((uint16_t) 1987) +#define VL53LX_TUNINGPARM_CONSISTENCY_HIST_PHASE_TOLERANCE_DEFAULT \ +((uint8_t) 8) +#define VL53LX_TUNINGPARM_CONSISTENCY_HIST_MIN_MAX_TOLERANCE_MM_DEFAULT \ +((uint16_t) 0) +#define VL53LX_TUNINGPARM_CONSISTENCY_HIST_EVENT_SIGMA_DEFAULT \ +((uint8_t) 0) +#define VL53LX_TUNINGPARM_CONSISTENCY_HIST_EVENT_SIGMA_MIN_SPAD_LIMIT_DEFAULT \ +((uint16_t) 2048) +#define VL53LX_TUNINGPARM_INITIAL_PHASE_RTN_HISTO_LONG_RANGE_DEFAULT \ +((uint8_t) 9) +#define VL53LX_TUNINGPARM_INITIAL_PHASE_RTN_HISTO_MED_RANGE_DEFAULT \ +((uint8_t) 5) +#define VL53LX_TUNINGPARM_INITIAL_PHASE_RTN_HISTO_SHORT_RANGE_DEFAULT \ +((uint8_t) 3) +#define VL53LX_TUNINGPARM_INITIAL_PHASE_REF_HISTO_LONG_RANGE_DEFAULT \ +((uint8_t) 6) +#define VL53LX_TUNINGPARM_INITIAL_PHASE_REF_HISTO_MED_RANGE_DEFAULT \ +((uint8_t) 6) +#define VL53LX_TUNINGPARM_INITIAL_PHASE_REF_HISTO_SHORT_RANGE_DEFAULT \ +((uint8_t) 6) +#define VL53LX_TUNINGPARM_XTALK_DETECT_MIN_VALID_RANGE_MM_DEFAULT \ +((int16_t) -50) +#define VL53LX_TUNINGPARM_XTALK_DETECT_MAX_VALID_RANGE_MM_DEFAULT \ +((int16_t) 50) +#define VL53LX_TUNINGPARM_XTALK_DETECT_MAX_SIGMA_MM_DEFAULT \ +((uint16_t) 140) +#define VL53LX_TUNINGPARM_XTALK_DETECT_MIN_MAX_TOLERANCE_DEFAULT \ +((uint16_t) 50) +#define VL53LX_TUNINGPARM_XTALK_DETECT_MAX_VALID_RATE_KCPS_DEFAULT \ +((uint16_t) 400) +#define VL53LX_TUNINGPARM_XTALK_DETECT_EVENT_SIGMA_DEFAULT \ +((uint8_t) 80) +#define VL53LX_TUNINGPARM_HIST_XTALK_MARGIN_KCPS_DEFAULT \ +((int16_t) 0) +#define VL53LX_TUNINGPARM_CONSISTENCY_LITE_PHASE_TOLERANCE_DEFAULT \ +((uint8_t) 2) +#define VL53LX_TUNINGPARM_PHASECAL_TARGET_DEFAULT \ +((uint8_t) 33) +#define VL53LX_TUNINGPARM_LITE_CAL_REPEAT_RATE_DEFAULT \ +((uint16_t) 0) +#define VL53LX_TUNINGPARM_LITE_RANGING_GAIN_FACTOR_DEFAULT \ +((uint16_t) 2011) +#define VL53LX_TUNINGPARM_LITE_MIN_CLIP_MM_DEFAULT \ +((uint8_t) 0) +#define VL53LX_TUNINGPARM_LITE_LONG_SIGMA_THRESH_MM_DEFAULT \ +((uint16_t) 60) +#define VL53LX_TUNINGPARM_LITE_MED_SIGMA_THRESH_MM_DEFAULT \ +((uint16_t) 60) +#define VL53LX_TUNINGPARM_LITE_SHORT_SIGMA_THRESH_MM_DEFAULT \ +((uint16_t) 60) +#define VL53LX_TUNINGPARM_LITE_LONG_MIN_COUNT_RATE_RTN_MCPS_DEFAULT \ +((uint16_t) 128) +#define VL53LX_TUNINGPARM_LITE_MED_MIN_COUNT_RATE_RTN_MCPS_DEFAULT \ +((uint16_t) 128) +#define VL53LX_TUNINGPARM_LITE_SHORT_MIN_COUNT_RATE_RTN_MCPS_DEFAULT \ +((uint16_t) 128) +#define VL53LX_TUNINGPARM_LITE_SIGMA_EST_PULSE_WIDTH_DEFAULT \ +((uint8_t) 8) +#define VL53LX_TUNINGPARM_LITE_SIGMA_EST_AMB_WIDTH_NS_DEFAULT \ +((uint8_t) 16) +#define VL53LX_TUNINGPARM_LITE_SIGMA_REF_MM_DEFAULT \ +((uint8_t) 1) +#define VL53LX_TUNINGPARM_LITE_RIT_MULT_DEFAULT \ +((uint8_t) 64) +#define VL53LX_TUNINGPARM_LITE_SEED_CONFIG_DEFAULT \ +((uint8_t) 2) +#define VL53LX_TUNINGPARM_LITE_QUANTIFIER_DEFAULT \ +((uint8_t) 2) +#define VL53LX_TUNINGPARM_LITE_FIRST_ORDER_SELECT_DEFAULT \ +((uint8_t) 0) +#define VL53LX_TUNINGPARM_LITE_XTALK_MARGIN_KCPS_DEFAULT \ +((int16_t) 0) +#define VL53LX_TUNINGPARM_INITIAL_PHASE_RTN_LITE_LONG_RANGE_DEFAULT \ +((uint8_t) 14) +#define VL53LX_TUNINGPARM_INITIAL_PHASE_RTN_LITE_MED_RANGE_DEFAULT \ +((uint8_t) 10) +#define VL53LX_TUNINGPARM_INITIAL_PHASE_RTN_LITE_SHORT_RANGE_DEFAULT \ +((uint8_t) 6) +#define VL53LX_TUNINGPARM_INITIAL_PHASE_REF_LITE_LONG_RANGE_DEFAULT \ +((uint8_t) 14) +#define VL53LX_TUNINGPARM_INITIAL_PHASE_REF_LITE_MED_RANGE_DEFAULT \ +((uint8_t) 10) +#define VL53LX_TUNINGPARM_INITIAL_PHASE_REF_LITE_SHORT_RANGE_DEFAULT \ +((uint8_t) 6) +#define VL53LX_TUNINGPARM_TIMED_SEED_CONFIG_DEFAULT \ +((uint8_t) 1) +#define VL53LX_TUNINGPARM_DMAX_CFG_SIGNAL_THRESH_SIGMA_DEFAULT \ +((uint8_t) 32) +#define VL53LX_TUNINGPARM_DMAX_CFG_REFLECTANCE_ARRAY_0_DEFAULT \ +((uint16_t) 15) +#define VL53LX_TUNINGPARM_DMAX_CFG_REFLECTANCE_ARRAY_1_DEFAULT \ +((uint16_t) 52) +#define VL53LX_TUNINGPARM_DMAX_CFG_REFLECTANCE_ARRAY_2_DEFAULT \ +((uint16_t) 200) +#define VL53LX_TUNINGPARM_DMAX_CFG_REFLECTANCE_ARRAY_3_DEFAULT \ +((uint16_t) 364) +#define VL53LX_TUNINGPARM_DMAX_CFG_REFLECTANCE_ARRAY_4_DEFAULT \ +((uint16_t) 400) +#define VL53LX_TUNINGPARM_VHV_LOOPBOUND_DEFAULT \ +((uint8_t) 129) +#define VL53LX_TUNINGPARM_REFSPADCHAR_DEVICE_TEST_MODE_DEFAULT \ +((uint8_t) 8) +#define VL53LX_TUNINGPARM_REFSPADCHAR_VCSEL_PERIOD_DEFAULT \ +((uint8_t) 11) +#define VL53LX_TUNINGPARM_REFSPADCHAR_PHASECAL_TIMEOUT_US_DEFAULT \ +((uint32_t) 1000) +#define VL53LX_TUNINGPARM_REFSPADCHAR_TARGET_COUNT_RATE_MCPS_DEFAULT \ +((uint16_t) 2560) +#define VL53LX_TUNINGPARM_REFSPADCHAR_MIN_COUNTRATE_LIMIT_MCPS_DEFAULT \ +((uint16_t) 1280) +#define VL53LX_TUNINGPARM_REFSPADCHAR_MAX_COUNTRATE_LIMIT_MCPS_DEFAULT \ +((uint16_t) 5120) +#define VL53LX_TUNINGPARM_XTALK_EXTRACT_NUM_OF_SAMPLES_DEFAULT \ +((uint8_t) 7) +#define VL53LX_TUNINGPARM_XTALK_EXTRACT_MIN_FILTER_THRESH_MM_DEFAULT \ +((int16_t) -70) +#define VL53LX_TUNINGPARM_XTALK_EXTRACT_MAX_FILTER_THRESH_MM_DEFAULT \ +((int16_t) 70) +#define VL53LX_TUNINGPARM_XTALK_EXTRACT_DSS_RATE_MCPS_DEFAULT \ +((uint16_t) 5120) +#define VL53LX_TUNINGPARM_XTALK_EXTRACT_PHASECAL_TIMEOUT_US_DEFAULT \ +((uint32_t) 15000) +#define VL53LX_TUNINGPARM_XTALK_EXTRACT_MAX_VALID_RATE_KCPS_DEFAULT \ +((uint16_t) 640) +#define VL53LX_TUNINGPARM_XTALK_EXTRACT_SIGMA_THRESHOLD_MM_DEFAULT \ +((uint16_t) 140) +#define VL53LX_TUNINGPARM_XTALK_EXTRACT_DSS_TIMEOUT_US_DEFAULT \ +((uint32_t) 2000) +#define VL53LX_TUNINGPARM_XTALK_EXTRACT_BIN_TIMEOUT_US_DEFAULT \ +((uint32_t) 10000) +#define VL53LX_TUNINGPARM_OFFSET_CAL_DSS_RATE_MCPS_DEFAULT \ +((uint16_t) 2560) +#define VL53LX_TUNINGPARM_OFFSET_CAL_PHASECAL_TIMEOUT_US_DEFAULT \ +((uint32_t) 15000) +#define VL53LX_TUNINGPARM_OFFSET_CAL_MM_TIMEOUT_US_DEFAULT \ +((uint32_t) 13000) +#define VL53LX_TUNINGPARM_OFFSET_CAL_RANGE_TIMEOUT_US_DEFAULT \ +((uint32_t) 13000) +#define VL53LX_TUNINGPARM_OFFSET_CAL_PRE_SAMPLES_DEFAULT \ +((uint8_t) 8) +#define VL53LX_TUNINGPARM_OFFSET_CAL_MM1_SAMPLES_DEFAULT \ +((uint8_t) 40) +#define VL53LX_TUNINGPARM_OFFSET_CAL_MM2_SAMPLES_DEFAULT \ +((uint8_t) 9) +#define VL53LX_TUNINGPARM_ZONE_CAL_DSS_RATE_MCPS_DEFAULT \ +((uint16_t) 5120) +#define VL53LX_TUNINGPARM_ZONE_CAL_PHASECAL_TIMEOUT_US_DEFAULT \ +((uint32_t) 15000) +#define VL53LX_TUNINGPARM_ZONE_CAL_DSS_TIMEOUT_US_DEFAULT \ +((uint32_t) 2000) +#define VL53LX_TUNINGPARM_ZONE_CAL_PHASECAL_NUM_SAMPLES_DEFAULT \ +((uint16_t) 16) +#define VL53LX_TUNINGPARM_ZONE_CAL_RANGE_TIMEOUT_US_DEFAULT \ +((uint32_t) 1000) +#define VL53LX_TUNINGPARM_ZONE_CAL_ZONE_NUM_SAMPLES_DEFAULT \ +((uint16_t) 8) +#define VL53LX_TUNINGPARM_SPADMAP_VCSEL_PERIOD_DEFAULT \ +((uint8_t) 18) +#define VL53LX_TUNINGPARM_SPADMAP_VCSEL_START_DEFAULT \ +((uint8_t) 15) +#define VL53LX_TUNINGPARM_SPADMAP_RATE_LIMIT_MCPS_DEFAULT \ +((uint16_t) 12) +#define VL53LX_TUNINGPARM_LITE_DSS_CONFIG_TARGET_TOTAL_RATE_MCPS_DEFAULT \ +((uint16_t) 2560) +#define VL53LX_TUNINGPARM_RANGING_DSS_CONFIG_TARGET_TOTAL_RATE_MCPS_DEFAULT \ +((uint16_t) 5120) +#define VL53LX_TUNINGPARM_MZ_DSS_CONFIG_TARGET_TOTAL_RATE_MCPS_DEFAULT \ +((uint16_t) 5120) +#define VL53LX_TUNINGPARM_TIMED_DSS_CONFIG_TARGET_TOTAL_RATE_MCPS_DEFAULT \ +((uint16_t) 2560) +#define VL53LX_TUNINGPARM_LITE_PHASECAL_CONFIG_TIMEOUT_US_DEFAULT \ +((uint32_t) 1000) +#define VL53LX_TUNINGPARM_RANGING_LONG_PHASECAL_CONFIG_TIMEOUT_US_DEFAULT \ +((uint32_t) 15000) +#define VL53LX_TUNINGPARM_RANGING_MED_PHASECAL_CONFIG_TIMEOUT_US_DEFAULT \ +((uint32_t) 9000) +#define VL53LX_TUNINGPARM_RANGING_SHORT_PHASECAL_CONFIG_TIMEOUT_US_DEFAULT \ +((uint32_t) 6000) +#define VL53LX_TUNINGPARM_MZ_LONG_PHASECAL_CONFIG_TIMEOUT_US_DEFAULT \ +((uint32_t) 15000) +#define VL53LX_TUNINGPARM_MZ_MED_PHASECAL_CONFIG_TIMEOUT_US_DEFAULT \ +((uint32_t) 9000) +#define VL53LX_TUNINGPARM_MZ_SHORT_PHASECAL_CONFIG_TIMEOUT_US_DEFAULT \ +((uint32_t) 6000) +#define VL53LX_TUNINGPARM_TIMED_PHASECAL_CONFIG_TIMEOUT_US_DEFAULT \ +((uint32_t) 1000) +#define VL53LX_TUNINGPARM_LITE_MM_CONFIG_TIMEOUT_US_DEFAULT \ +((uint32_t) 2000) +#define VL53LX_TUNINGPARM_RANGING_MM_CONFIG_TIMEOUT_US_DEFAULT \ +((uint32_t) 2000) +#define VL53LX_TUNINGPARM_MZ_MM_CONFIG_TIMEOUT_US_DEFAULT \ +((uint32_t) 2000) +#define VL53LX_TUNINGPARM_TIMED_MM_CONFIG_TIMEOUT_US_DEFAULT \ +((uint32_t) 2000) +#define VL53LX_TUNINGPARM_LITE_RANGE_CONFIG_TIMEOUT_US_DEFAULT \ +((uint32_t) 63000) +#define VL53LX_TUNINGPARM_RANGING_RANGE_CONFIG_TIMEOUT_US_DEFAULT \ +((uint32_t) 2500) +#define VL53LX_TUNINGPARM_MZ_RANGE_CONFIG_TIMEOUT_US_DEFAULT \ +((uint32_t) 2500) +#define VL53LX_TUNINGPARM_TIMED_RANGE_CONFIG_TIMEOUT_US_DEFAULT \ +((uint32_t) 13000) +#define VL53LX_TUNINGPARM_DYNXTALK_SMUDGE_MARGIN_DEFAULT \ +((uint16_t) 0) +#define VL53LX_TUNINGPARM_DYNXTALK_NOISE_MARGIN_DEFAULT \ +((uint32_t) 100) +#define VL53LX_TUNINGPARM_DYNXTALK_XTALK_OFFSET_LIMIT_DEFAULT \ +((uint32_t) 0) +#define VL53LX_TUNINGPARM_DYNXTALK_XTALK_OFFSET_LIMIT_HI_DEFAULT \ +((uint8_t) 0) +#define VL53LX_TUNINGPARM_DYNXTALK_SAMPLE_LIMIT_DEFAULT \ +((uint32_t) 200) +#define VL53LX_TUNINGPARM_DYNXTALK_SINGLE_XTALK_DELTA_DEFAULT \ +((uint32_t) 2048) +#define VL53LX_TUNINGPARM_DYNXTALK_AVERAGED_XTALK_DELTA_DEFAULT \ +((uint32_t) 308) +#define VL53LX_TUNINGPARM_DYNXTALK_CLIP_LIMIT_DEFAULT \ +((uint32_t) 10240) +#define VL53LX_TUNINGPARM_DYNXTALK_SCALER_CALC_METHOD_DEFAULT \ +((uint8_t) 0) +#define VL53LX_TUNINGPARM_DYNXTALK_XGRADIENT_SCALER_DEFAULT \ +((int16_t) 256) +#define VL53LX_TUNINGPARM_DYNXTALK_YGRADIENT_SCALER_DEFAULT \ +((int16_t) 256) +#define VL53LX_TUNINGPARM_DYNXTALK_USER_SCALER_SET_DEFAULT \ +((uint8_t) 0) +#define VL53LX_TUNINGPARM_DYNXTALK_SMUDGE_COR_SINGLE_APPLY_DEFAULT \ +((uint8_t) 0) +#define VL53LX_TUNINGPARM_DYNXTALK_XTALK_AMB_THRESHOLD_DEFAULT \ +((uint32_t) 128) +#define VL53LX_TUNINGPARM_DYNXTALK_NODETECT_AMB_THRESHOLD_KCPS_DEFAULT \ +((uint32_t) 57671680) +#define VL53LX_TUNINGPARM_DYNXTALK_NODETECT_SAMPLE_LIMIT_DEFAULT \ +((uint32_t) 40) +#define VL53LX_TUNINGPARM_DYNXTALK_NODETECT_XTALK_OFFSET_KCPS_DEFAULT \ +((uint32_t) 410) +#define VL53LX_TUNINGPARM_DYNXTALK_NODETECT_MIN_RANGE_MM_DEFAULT \ +((uint16_t) 900) +#define VL53LX_TUNINGPARM_LOWPOWERAUTO_VHV_LOOP_BOUND_DEFAULT \ +((uint8_t) 3) +#define VL53LX_TUNINGPARM_LOWPOWERAUTO_MM_CONFIG_TIMEOUT_US_DEFAULT \ +((uint32_t) 1) +#define VL53LX_TUNINGPARM_LOWPOWERAUTO_RANGE_CONFIG_TIMEOUT_US_DEFAULT \ +((uint32_t) 8000) +#define VL53LX_TUNINGPARM_VERY_SHORT_DSS_RATE_MCPS_DEFAULT \ +((uint16_t) 10240) +#define VL53LX_TUNINGPARM_PHASECAL_PATCH_POWER_DEFAULT \ +((uint32_t) 0) +#define VL53LX_TUNINGPARM_HIST_MERGE_DEFAULT \ +((uint32_t) 1) +#define VL53LX_TUNINGPARM_RESET_MERGE_THRESHOLD_DEFAULT \ +((uint32_t) 15000) +#define VL53LX_TUNINGPARM_HIST_MERGE_MAX_SIZE_DEFAULT \ +((uint32_t) 6) +#define VL53LX_TUNINGPARM_DYNXTALK_MAX_SMUDGE_FACTOR_DEFAULT \ +((uint32_t) 2000) + + + +/* vl53lx_preset_setup.h */ + + +/* indexes for the bare driver tuning setting API function */ + +enum VL53LX_Tuning_t { + VL53LX_TUNING_VERSION = 0, + VL53LX_TUNING_PROXY_MIN, + VL53LX_TUNING_SINGLE_TARGET_XTALK_TARGET_DISTANCE_MM, + VL53LX_TUNING_SINGLE_TARGET_XTALK_SAMPLE_NUMBER, + VL53LX_TUNING_MIN_AMBIENT_DMAX_VALID, + VL53LX_TUNING_MAX_SIMPLE_OFFSET_CALIBRATION_SAMPLE_NUMBER, + VL53LX_TUNING_XTALK_FULL_ROI_TARGET_DISTANCE_MM, + VL53LX_TUNING_SIMPLE_OFFSET_CALIBRATION_REPEAT, + VL53LX_TUNING_XTALK_FULL_ROI_BIN_SUM_MARGIN, + VL53LX_TUNING_XTALK_FULL_ROI_DEFAULT_OFFSET, + VL53LX_TUNING_ZERO_DISTANCE_OFFSET_NON_LINEAR_FACTOR, + VL53LX_TUNING_MAX_TUNABLE_KEY +}; + + +/* default values for the tuning settings parameters */ +#define TUNING_VERSION 0x0007 + +#define TUNING_PROXY_MIN -30 /* min distance in mm */ +#define TUNING_SINGLE_TARGET_XTALK_TARGET_DISTANCE_MM 600 +/* Target distance in mm for single target Xtalk */ +#define TUNING_SINGLE_TARGET_XTALK_SAMPLE_NUMBER 50 +/* Number of sample used for single target Xtalk */ +#define TUNING_MIN_AMBIENT_DMAX_VALID 8 +/* Minimum ambient level to state the Dmax returned by the device is valid */ +#ifdef SMALL_FOOTPRINT +#define TUNING_MAX_SIMPLE_OFFSET_CALIBRATION_SAMPLE_NUMBER 50 +#else +#define TUNING_MAX_SIMPLE_OFFSET_CALIBRATION_SAMPLE_NUMBER 10 +#endif +/* Maximum loops to perform simple offset calibration */ +#define TUNING_XTALK_FULL_ROI_TARGET_DISTANCE_MM 600 +/* Target distance in mm for target Xtalk from Bins method*/ +#ifdef SMALL_FOOTPRINT +#define TUNING_SIMPLE_OFFSET_CALIBRATION_REPEAT 1 +#else +#define TUNING_SIMPLE_OFFSET_CALIBRATION_REPEAT 3 +#endif +/* Number of loops done during the simple offset calibration*/ +#define TUNING_ZERO_DISTANCE_OFFSET_NON_LINEAR_FACTOR_DEFAULT 9 +/* zero distance offset calibration non linear compensation default value */ + +/* The following settings are related to the fix for ticket EwokP #558410 */ +#define TUNING_XTALK_FULL_ROI_BIN_SUM_MARGIN 24 +/* Acceptance margin for the xtalk_shape bin_data sum computation */ +#define TUNING_XTALK_FULL_ROI_DEFAULT_OFFSET 50 +/* Recovery value for Xtalk compensation plane offset in kcps */ +/* 50 stands for ~0.10 kcps cover glass in 7.9 format */ +/* End of settings related to the fix for ticket EwokP #558410 */ + + + + +// define from vl53lx_platform_user_config + +#define VL53LX_BYTES_PER_WORD 2 +#define VL53LX_BYTES_PER_DWORD 4 + +/* Define polling delays */ +#define VL53LX_BOOT_COMPLETION_POLLING_TIMEOUT_MS 500 +#define VL53LX_RANGE_COMPLETION_POLLING_TIMEOUT_MS 2000 +#define VL53LX_TEST_COMPLETION_POLLING_TIMEOUT_MS 10000 + +#define VL53LX_POLLING_DELAY_MS 1 + +/* Define LLD TuningParms Page Base Address +* - Part of Patch_AddedTuningParms_11761 +*/ +#define VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS 0x8000 +#define VL53LX_TUNINGPARM_PRIVATE_PAGE_BASE_ADDRESS 0xC000 + +#define VL53LX_OFFSET_CAL_MIN_MM1_EFFECTIVE_SPADS 0x0500 +/*!< Lower Limit for the MM1 effective SPAD count during offset + calibration Format 8.8 0x0500 -> 5.0 effective SPADs */ + +#define VL53LX_GAIN_FACTOR__STANDARD_DEFAULT 0x0800 +/*!< Default standard ranging gain correction factor + 1.11 format. 1.0 = 0x0800, 0.980 = 0x07D7 */ +#define VL53LX_GAIN_FACTOR__HISTOGRAM_DEFAULT 0x0800 +/*!< Default histogram ranging gain correction factor + 1.11 format. 1.0 = 0x0800, 0.975 = 0x07CC */ + + +#define VL53LX_OFFSET_CAL_MIN_EFFECTIVE_SPADS 0x0500 +/*!< Lower Limit for the MM1 effective SPAD count during offset + calibration Format 8.8 0x0500 -> 5.0 effective SPADs */ + +#define VL53LX_OFFSET_CAL_MAX_PRE_PEAK_RATE_MCPS 0x1900 +/*!< Max Limit for the pre range preak rate during offset + calibration Format 9.7 0x1900 -> 50.0 Mcps. + If larger then in pile up */ + +#define VL53LX_OFFSET_CAL_MAX_SIGMA_MM 0x0040 +/*!< Max sigma estimate limit during offset calibration + Check applies to pre-range, mm1 and mm2 ranges + Format 14.2 0x0040 -> 16.0mm. */ + +#define VL53LX_ZONE_CAL_MAX_PRE_PEAK_RATE_MCPS 0x1900 +/*!< Max Peak Rate Limit for the during zone calibration + Format 9.7 0x1900 -> 50.0 Mcps. + If larger then in pile up */ + +#define VL53LX_ZONE_CAL_MAX_SIGMA_MM 0x0040 +/*!< Max sigma estimate limit during zone calibration + Format 14.2 0x0040 -> 16.0mm. */ + + +#define VL53LX_XTALK_EXTRACT_MAX_SIGMA_MM 0x008C +/*!< Max Sigma value allowed for a successful xtalk extraction + Format 14.2 0x008C -> 35.0 mm.*/ + +#ifndef VL53LX_MAX_USER_ZONES +#define VL53LX_MAX_USER_ZONES 16 +/*!< Max number of user Zones - maximal limitation from + FW stream divide - value of 254 */ +#endif + +#define VL53LX_MAX_RANGE_RESULTS 4 +#define VL53LX_BUFFER_SIZE 5 + +/*!< Sets the maximum number of targets distances the histogram + post processing can generate */ + +#define VL53LX_MAX_STRING_LENGTH 512 +/*!< Sets the maximum string length */ + + +// typedef from vl53lx_types.h + + +#ifndef NULL +#error "Error NULL definition should be done. Please add required include " +#endif + + +#if !defined(STDINT_H) && !defined(_STDINT_H) && !defined(_GCC_STDINT_H) && !defined(__STDINT_DECLS) && !defined(_GCC_WRAP_STDINT_H) && !defined(_STDINT) + +#pragma message("Please review type definition of STDINT define for your platform and add to list above ") + +typedef unsigned long long uint64_t; +typedef unsigned int uint32_t; +typedef int int32_t; +typedef unsigned short uint16_t; +typedef short int16_t; +typedef unsigned char uint8_t; +typedef signed char int8_t; + +#endif + +typedef uint32_t FixPoint1616_t; + + + +// define from vl53lx_error_codes.h + + + +/* +**************************************** +* PRIVATE define do not edit +*************************************** +*/ + +/* +* @defgroup VL53LX_define_Error_group Error and Warning code returned by API +* The following DEFINE are used to identify the PAL ERROR +* @{ +*/ + +typedef int8_t VL53LX_Error; + +#define VL53LX_ERROR_NONE ((VL53LX_Error) 0) +#define VL53LX_ERROR_CALIBRATION_WARNING ((VL53LX_Error) - 1) +/*!< Warning invalid calibration data may be in used +* \a VL53LX_InitData() +* \a VL53LX_GetOffsetCalibrationData +* \a VL53LX_SetOffsetCalibrationData +*/ +#define VL53LX_ERROR_MIN_CLIPPED ((VL53LX_Error) - 2) +/*!< Warning parameter passed was clipped to min before to be applied */ + +#define VL53LX_ERROR_UNDEFINED ((VL53LX_Error) - 3) +/*!< Unqualified error */ +#define VL53LX_ERROR_INVALID_PARAMS ((VL53LX_Error) - 4) +/*!< Parameter passed is invalid or out of range */ +#define VL53LX_ERROR_NOT_SUPPORTED ((VL53LX_Error) - 5) +/*!< Function is not supported in current mode or configuration */ +#define VL53LX_ERROR_RANGE_ERROR ((VL53LX_Error) - 6) +/*!< Device report a ranging error interrupt status */ +#define VL53LX_ERROR_TIME_OUT ((VL53LX_Error) - 7) +/*!< Aborted due to time out */ +#define VL53LX_ERROR_MODE_NOT_SUPPORTED ((VL53LX_Error) - 8) +/*!< Asked mode is not supported by the device */ +#define VL53LX_ERROR_BUFFER_TOO_SMALL ((VL53LX_Error) - 9) +/*!< ... */ +#define VL53LX_ERROR_COMMS_BUFFER_TOO_SMALL ((VL53LX_Error) - 10) +/*!< Supplied buffer is larger than I2C supports */ +#define VL53LX_ERROR_GPIO_NOT_EXISTING ((VL53LX_Error) - 11) +/*!< User tried to setup a non-existing GPIO pin */ +#define VL53LX_ERROR_GPIO_FUNCTIONALITY_NOT_SUPPORTED ((VL53LX_Error) - 12) +/*!< unsupported GPIO functionality */ +#define VL53LX_ERROR_CONTROL_INTERFACE ((VL53LX_Error) - 13) +/*!< error reported from IO functions */ +#define VL53LX_ERROR_INVALID_COMMAND ((VL53LX_Error) - 14) +/*!< The command is not allowed in the current device state +* (power down) +*/ +#define VL53LX_ERROR_DIVISION_BY_ZERO ((VL53LX_Error) - 15) +/*!< In the function a division by zero occurs */ +#define VL53LX_ERROR_REF_SPAD_INIT ((VL53LX_Error) - 16) +/*!< Error during reference SPAD initialization */ +#define VL53LX_ERROR_GPH_SYNC_CHECK_FAIL ((VL53LX_Error) - 17) +/*!< GPH sync interrupt check fail - API out of sync with device*/ +#define VL53LX_ERROR_STREAM_COUNT_CHECK_FAIL ((VL53LX_Error) - 18) +/*!< Stream count check fail - API out of sync with device */ +#define VL53LX_ERROR_GPH_ID_CHECK_FAIL ((VL53LX_Error) - 19) +/*!< GPH ID check fail - API out of sync with device */ +#define VL53LX_ERROR_ZONE_STREAM_COUNT_CHECK_FAIL ((VL53LX_Error) - 20) +/*!< Zone dynamic config stream count check failed - API out of sync */ +#define VL53LX_ERROR_ZONE_GPH_ID_CHECK_FAIL ((VL53LX_Error) - 21) +/*!< Zone dynamic config GPH ID check failed - API out of sync */ + +#define VL53LX_ERROR_XTALK_EXTRACTION_NO_SAMPLE_FAIL ((VL53LX_Error) - 22) +/*!< Thrown when run_xtalk_extraction fn has 0 successful samples +* when using the full array to sample the xtalk. In this case there is +* not enough information to generate new Xtalk parm info. The function +* will exit and leave the current xtalk parameters unaltered +*/ +#define VL53LX_ERROR_XTALK_EXTRACTION_SIGMA_LIMIT_FAIL ((VL53LX_Error) - 23) +/*!< Thrown when run_xtalk_extraction fn has found that the +* avg sigma estimate of the full array xtalk sample is > than the +* maximal limit allowed. In this case the xtalk sample is too noisy for +* measurement. The function will exit and leave the current xtalk +* parameters unaltered. +*/ + + +#define VL53LX_ERROR_OFFSET_CAL_NO_SAMPLE_FAIL ((VL53LX_Error) - 24) +/*!< Thrown if there one of stages has no valid offset calibration +* samples. A fatal error calibration not valid +*/ +#define VL53LX_ERROR_OFFSET_CAL_NO_SPADS_ENABLED_FAIL ((VL53LX_Error) - 25) +/*!< Thrown if there one of stages has zero effective SPADS +* Traps the case when MM1 SPADs is zero. +* A fatal error calibration not valid +*/ +#define VL53LX_ERROR_ZONE_CAL_NO_SAMPLE_FAIL ((VL53LX_Error) - 26) +/*!< Thrown if then some of the zones have no valid samples +* A fatal error calibration not valid +*/ + +#define VL53LX_ERROR_TUNING_PARM_KEY_MISMATCH ((VL53LX_Error) - 27) +/*!< Thrown if the tuning file key table version does not match with +* expected value. The driver expects the key table version to match +* the compiled default version number in the define +* #VL53LX_TUNINGPARM_KEY_TABLE_VERSION_DEFAULT +*/ + +#define VL53LX_WARNING_REF_SPAD_CHAR_NOT_ENOUGH_SPADS ((VL53LX_Error) - 28) +/*!< Thrown if there are less than 5 good SPADs are available. */ +#define VL53LX_WARNING_REF_SPAD_CHAR_RATE_TOO_HIGH ((VL53LX_Error) - 29) +/*!< Thrown if the final reference rate is greater than +* the upper reference rate limit - default is 40 Mcps. +* Implies a minimum Q3 (x10) SPAD (5) selected +*/ +#define VL53LX_WARNING_REF_SPAD_CHAR_RATE_TOO_LOW ((VL53LX_Error) - 30) +/*!< Thrown if the final reference rate is less than +* the lower reference rate limit - default is 10 Mcps. +* Implies maximum Q1 (x1) SPADs selected +*/ + + +#define VL53LX_WARNING_OFFSET_CAL_MISSING_SAMPLES ((VL53LX_Error) - 31) +/*!< Thrown if there is less than the requested number of +* valid samples. +*/ +#define VL53LX_WARNING_OFFSET_CAL_SIGMA_TOO_HIGH ((VL53LX_Error) - 32) +/*!< Thrown if the offset calibration range sigma estimate is greater +* than 8.0 mm. This is the recommended min value to yield a stable +* offset measurement +*/ +#define VL53LX_WARNING_OFFSET_CAL_RATE_TOO_HIGH ((VL53LX_Error) - 33) +/*!< Thrown when VL53LX_run_offset_calibration() peak rate is greater +* than that 50.0Mcps. This is the recommended max rate to avoid +* pile-up influencing the offset measurement +*/ +#define VL53LX_WARNING_OFFSET_CAL_SPAD_COUNT_TOO_LOW ((VL53LX_Error) - 34) +/*!< Thrown when VL53LX_run_offset_calibration() when one of stages +* range has less that 5.0 effective SPADS. This is the recommended +* min value to yield a stable offset +*/ + + +#define VL53LX_WARNING_ZONE_CAL_MISSING_SAMPLES ((VL53LX_Error) - 35) +/*!< Thrown if one of more of the zones have less than +* the requested number of valid samples +*/ +#define VL53LX_WARNING_ZONE_CAL_SIGMA_TOO_HIGH ((VL53LX_Error) - 36) +/*!< Thrown if one or more zones have sigma estimate value greater +* than 8.0 mm. This is the recommended min value to yield a stable +* offset measurement +*/ +#define VL53LX_WARNING_ZONE_CAL_RATE_TOO_HIGH ((VL53LX_Error) - 37) +/*!< Thrown if one of more zones have peak rate higher than +* that 50.0Mcps. This is the recommended max rate to avoid +* pile-up influencing the offset measurement +*/ + + +#define VL53LX_WARNING_XTALK_MISSING_SAMPLES ((VL53LX_Error) - 38) +/*!< Thrown to notify that some of the xtalk samples did not yield +* valid ranging pulse data while attempting to measure +* the xtalk signal in vl53lx_run_xtalk_extract(). This can signify any +* of the zones are missing samples, for further debug information the +* xtalk_results struct should be referred to. This warning is for +* notification only, xtalk pulse and shape have still been generated +*/ +#define VL53LX_WARNING_XTALK_NO_SAMPLES_FOR_GRADIENT ((VL53LX_Error) - 39) +/*!< Thrown to notify that some of the xtalk samples used for gradient +* generation did not yield valid ranging pulse data while attempting to +* measure the xtalk signal in vl53lx_run_xtalk_extract(). This can +* signify that any one of the zones 0-3 yielded no successful samples. +* xtalk_results struct should be referred to for further debug info. +* This warning is for notification only, the xtalk pulse and shape +* have still been generated. +*/ +#define VL53LX_WARNING_XTALK_SIGMA_LIMIT_FOR_GRADIENT ((VL53LX_Error) - 40) +/*!< Thrown to notify that some of the xtalk samples used for gradient +* generation did not pass the sigma limit check while attempting to +* measure the xtalk signal in vl53lx_run_xtalk_extract(). This can +* signify that any one of the zones 0-3 yielded an avg sigma_mm +* value > the limit. The xtalk_results struct should be referred to for +* further debug info. +* This warning is for notification only, the xtalk pulse and shape +* have still been generated. +*/ + +#define VL53LX_ERROR_NOT_IMPLEMENTED ((VL53LX_Error) - 41) +/*!< Tells requested functionality has not been implemented yet or +* not compatible with the device +*/ +#define VL53LX_ERROR_PLATFORM_SPECIFIC_START ((VL53LX_Error) - 60) +/*!< Tells the starting code for platform */ +/** @} VL53LX_define_Error_group */ + + + +/* vl53lx_dmax_private_structs.h */ + + + + + + + + +typedef struct { + + uint32_t VL53LX_p_037; + + + + uint8_t VL53LX_p_063; + + + uint8_t VL53LX_p_064; + + + + uint16_t VL53LX_p_065; + + + uint16_t VL53LX_p_066; + + + uint16_t VL53LX_p_067; + + + uint16_t VL53LX_p_038; + + + + uint32_t VL53LX_p_009; + + + uint32_t VL53LX_p_033; + + + + uint16_t VL53LX_p_034; + + + + uint16_t VL53LX_p_004; + + + + uint32_t VL53LX_p_028; + + + uint32_t VL53LX_p_035; + + + + int16_t VL53LX_p_036; + + + int16_t VL53LX_p_022; + + + +} VL53LX_hist_gen3_dmax_private_data_t; + + + + +// def & typedef from vl53lx_ll_device.h + + +#define VL53LX_I2C 0x01 +#define VL53LX_SPI 0x00 + + + + + +typedef uint8_t VL53LX_WaitMethod; + +#define VL53LX_WAIT_METHOD_BLOCKING ((VL53LX_WaitMethod) 0) +#define VL53LX_WAIT_METHOD_NON_BLOCKING ((VL53LX_WaitMethod) 1) + + + + +typedef uint8_t VL53LX_DeviceState; + +#define VL53LX_DEVICESTATE_POWERDOWN ((VL53LX_DeviceState) 0) +#define VL53LX_DEVICESTATE_HW_STANDBY ((VL53LX_DeviceState) 1) +#define VL53LX_DEVICESTATE_FW_COLDBOOT ((VL53LX_DeviceState) 2) +#define VL53LX_DEVICESTATE_SW_STANDBY ((VL53LX_DeviceState) 3) +#define VL53LX_DEVICESTATE_RANGING_DSS_AUTO ((VL53LX_DeviceState) 4) +#define VL53LX_DEVICESTATE_RANGING_DSS_MANUAL ((VL53LX_DeviceState) 5) +#define VL53LX_DEVICESTATE_RANGING_WAIT_GPH_SYNC ((VL53LX_DeviceState) 6) +#define VL53LX_DEVICESTATE_RANGING_GATHER_DATA ((VL53LX_DeviceState) 7) +#define VL53LX_DEVICESTATE_RANGING_OUTPUT_DATA ((VL53LX_DeviceState) 8) + +#define VL53LX_DEVICESTATE_UNKNOWN ((VL53LX_DeviceState) 98) +#define VL53LX_DEVICESTATE_ERROR ((VL53LX_DeviceState) 99) + + + + + +typedef uint8_t VL53LX_DeviceZonePreset; + +#define VL53LX_DEVICEZONEPRESET_NONE \ + ((VL53LX_DeviceZonePreset) 0) + +#define VL53LX_DEVICEZONEPRESET_XTALK_PLANAR \ + ((VL53LX_DeviceZonePreset) 1) +#define VL53LX_DEVICEZONEPRESET_1X1_SIZE_16X16 \ + ((VL53LX_DeviceZonePreset) 2) +#define VL53LX_DEVICEZONEPRESET_1X2_SIZE_16X8 \ + ((VL53LX_DeviceZonePreset) 3) +#define VL53LX_DEVICEZONEPRESET_2X1_SIZE_8X16 \ + ((VL53LX_DeviceZonePreset) 4) +#define VL53LX_DEVICEZONEPRESET_2X2_SIZE_8X8 \ + ((VL53LX_DeviceZonePreset) 5) +#define VL53LX_DEVICEZONEPRESET_3X3_SIZE_5X5 \ + ((VL53LX_DeviceZonePreset) 6) +#define VL53LX_DEVICEZONEPRESET_4X4_SIZE_4X4 \ + ((VL53LX_DeviceZonePreset) 7) +#define VL53LX_DEVICEZONEPRESET_5X5_SIZE_4X4 \ + ((VL53LX_DeviceZonePreset) 8) +#define VL53LX_DEVICEZONEPRESET_11X11_SIZE_5X5 \ + ((VL53LX_DeviceZonePreset) 9) +#define VL53LX_DEVICEZONEPRESET_13X13_SIZE_4X4 \ + ((VL53LX_DeviceZonePreset) 10) + +#define VL53LX_DEVICEZONEPRESET_1X1_SIZE_4X4_POS_8X8 \ + ((VL53LX_DeviceZonePreset) 11) + +#define VL53LX_DEVICEZONEPRESET_CUSTOM \ + ((VL53LX_DeviceZonePreset) 255) + + + + + +typedef uint8_t VL53LX_DevicePresetModes; + +#define VL53LX_DEVICEPRESETMODE_NONE \ + ((VL53LX_DevicePresetModes) 0) +#define VL53LX_DEVICEPRESETMODE_STANDARD_RANGING \ + ((VL53LX_DevicePresetModes) 1) +#define VL53LX_DEVICEPRESETMODE_STANDARD_RANGING_SHORT_RANGE \ + ((VL53LX_DevicePresetModes) 2) +#define VL53LX_DEVICEPRESETMODE_STANDARD_RANGING_LONG_RANGE \ + ((VL53LX_DevicePresetModes) 3) +#define VL53LX_DEVICEPRESETMODE_STANDARD_RANGING_MM1_CAL \ + ((VL53LX_DevicePresetModes) 4) +#define VL53LX_DEVICEPRESETMODE_STANDARD_RANGING_MM2_CAL \ + ((VL53LX_DevicePresetModes) 5) +#define VL53LX_DEVICEPRESETMODE_TIMED_RANGING \ + ((VL53LX_DevicePresetModes) 6) +#define VL53LX_DEVICEPRESETMODE_TIMED_RANGING_SHORT_RANGE \ + ((VL53LX_DevicePresetModes) 7) +#define VL53LX_DEVICEPRESETMODE_TIMED_RANGING_LONG_RANGE \ + ((VL53LX_DevicePresetModes) 8) +#define VL53LX_DEVICEPRESETMODE_NEAR_FARRANGING \ + ((VL53LX_DevicePresetModes) 9) +#define VL53LX_DEVICEPRESETMODE_QUADRANT_RANGING \ + ((VL53LX_DevicePresetModes) 10) +#define VL53LX_DEVICEPRESETMODE_HISTOGRAM_RANGING \ + ((VL53LX_DevicePresetModes) 11) +#define VL53LX_DEVICEPRESETMODE_HISTOGRAM_RANGING_SHORT_TIMING \ + ((VL53LX_DevicePresetModes) 12) +#define VL53LX_DEVICEPRESETMODE_HISTOGRAM_CHARACTERISATION \ + ((VL53LX_DevicePresetModes) 13) +#define VL53LX_DEVICEPRESETMODE_HISTOGRAM_XTALK_PLANAR \ + ((VL53LX_DevicePresetModes) 14) +#define VL53LX_DEVICEPRESETMODE_HISTOGRAM_XTALK_MM1 \ + ((VL53LX_DevicePresetModes) 15) +#define VL53LX_DEVICEPRESETMODE_HISTOGRAM_XTALK_MM2 \ + ((VL53LX_DevicePresetModes) 16) +#define VL53LX_DEVICEPRESETMODE_OLT \ + ((VL53LX_DevicePresetModes) 17) +#define VL53LX_DEVICEPRESETMODE_SINGLESHOT_RANGING \ + ((VL53LX_DevicePresetModes) 18) +#define VL53LX_DEVICEPRESETMODE_HISTOGRAM_REF_ARRAY \ + ((VL53LX_DevicePresetModes) 19) +#define VL53LX_DEVICEPRESETMODE_HISTOGRAM_RANGING_WITH_MM1 \ + ((VL53LX_DevicePresetModes) 20) +#define VL53LX_DEVICEPRESETMODE_HISTOGRAM_RANGING_WITH_MM2 \ + ((VL53LX_DevicePresetModes) 21) +#define VL53LX_DEVICEPRESETMODE_HISTOGRAM_RANGING_MM1_CAL \ + ((VL53LX_DevicePresetModes) 22) +#define VL53LX_DEVICEPRESETMODE_HISTOGRAM_RANGING_MM2_CAL \ + ((VL53LX_DevicePresetModes) 23) +#define VL53LX_DEVICEPRESETMODE_HISTOGRAM_MULTIZONE \ + ((VL53LX_DevicePresetModes) 24) +#define VL53LX_DEVICEPRESETMODE_HISTOGRAM_MULTIZONE_SHORT_RANGE \ + ((VL53LX_DevicePresetModes) 25) +#define VL53LX_DEVICEPRESETMODE_HISTOGRAM_MULTIZONE_LONG_RANGE \ + ((VL53LX_DevicePresetModes) 26) +#define VL53LX_DEVICEPRESETMODE_HISTOGRAM_LONG_RANGE \ + ((VL53LX_DevicePresetModes) 27) +#define VL53LX_DEVICEPRESETMODE_HISTOGRAM_LONG_RANGE_MM1 \ + ((VL53LX_DevicePresetModes) 28) +#define VL53LX_DEVICEPRESETMODE_HISTOGRAM_LONG_RANGE_MM2 \ + ((VL53LX_DevicePresetModes) 29) +#define VL53LX_DEVICEPRESETMODE_HISTOGRAM_MEDIUM_RANGE \ + ((VL53LX_DevicePresetModes) 30) +#define VL53LX_DEVICEPRESETMODE_HISTOGRAM_MEDIUM_RANGE_MM1 \ + ((VL53LX_DevicePresetModes) 31) +#define VL53LX_DEVICEPRESETMODE_HISTOGRAM_MEDIUM_RANGE_MM2 \ + ((VL53LX_DevicePresetModes) 32) +#define VL53LX_DEVICEPRESETMODE_HISTOGRAM_SHORT_RANGE \ + ((VL53LX_DevicePresetModes) 33) +#define VL53LX_DEVICEPRESETMODE_HISTOGRAM_SHORT_RANGE_MM1 \ + ((VL53LX_DevicePresetModes) 34) +#define VL53LX_DEVICEPRESETMODE_HISTOGRAM_SHORT_RANGE_MM2 \ + ((VL53LX_DevicePresetModes) 35) +#define VL53LX_DEVICEPRESETMODE_LOWPOWERAUTO_SHORT_RANGE \ + ((VL53LX_DevicePresetModes) 36) +#define VL53LX_DEVICEPRESETMODE_LOWPOWERAUTO_MEDIUM_RANGE \ + ((VL53LX_DevicePresetModes) 37) +#define VL53LX_DEVICEPRESETMODE_LOWPOWERAUTO_LONG_RANGE \ + ((VL53LX_DevicePresetModes) 38) +#define VL53LX_DEVICEPRESETMODE_SPECIAL_HISTOGRAM_SHORT_RANGE \ + ((VL53LX_DevicePresetModes) 39) + + + + + +typedef uint8_t VL53LX_DeviceMeasurementModes; + +#define VL53LX_DEVICEMEASUREMENTMODE_STOP \ + ((VL53LX_DeviceMeasurementModes) 0x00) +#define VL53LX_DEVICEMEASUREMENTMODE_SINGLESHOT \ + ((VL53LX_DeviceMeasurementModes) 0x10) +#define VL53LX_DEVICEMEASUREMENTMODE_BACKTOBACK \ + ((VL53LX_DeviceMeasurementModes) 0x20) +#define VL53LX_DEVICEMEASUREMENTMODE_TIMED \ + ((VL53LX_DeviceMeasurementModes) 0x40) +#define VL53LX_DEVICEMEASUREMENTMODE_ABORT \ + ((VL53LX_DeviceMeasurementModes) 0x80) + + + + + +typedef uint8_t VL53LX_OffsetCalibrationMode; + +#define VL53LX_OFFSETCALIBRATIONMODE__NONE \ + ((VL53LX_OffsetCalibrationMode) 0) +#define VL53LX_OFFSETCALIBRATIONMODE__MM1_MM2__STANDARD \ + ((VL53LX_OffsetCalibrationMode) 1) +#define VL53LX_OFFSETCALIBRATIONMODE__MM1_MM2__HISTOGRAM \ + ((VL53LX_OffsetCalibrationMode) 2) +#define VL53LX_OFFSETCALIBRATIONMODE__MM1_MM2__STANDARD_PRE_RANGE_ONLY \ + ((VL53LX_OffsetCalibrationMode) 3) +#define VL53LX_OFFSETCALIBRATIONMODE__MM1_MM2__HISTOGRAM_PRE_RANGE_ONLY \ + ((VL53LX_OffsetCalibrationMode) 4) + + + + + +typedef uint8_t VL53LX_OffsetCorrectionMode; + +#define VL53LX_OFFSETCORRECTIONMODE__NONE \ + ((VL53LX_OffsetCorrectionMode) 0) +#define VL53LX_OFFSETCORRECTIONMODE__MM1_MM2_OFFSETS \ + ((VL53LX_OffsetCorrectionMode) 1) +#define VL53LX_OFFSETCORRECTIONMODE__PER_VCSEL_OFFSETS \ + ((VL53LX_OffsetCorrectionMode) 3) + + + + + +typedef uint8_t VL53LX_DeviceDmaxMode; + +#define VL53LX_DEVICEDMAXMODE__NONE \ + ((VL53LX_DeviceDmaxMode) 0) +#define VL53LX_DEVICEDMAXMODE__FMT_CAL_DATA \ + ((VL53LX_DeviceDmaxMode) 1) +#define VL53LX_DEVICEDMAXMODE__CUST_CAL_DATA \ + ((VL53LX_DeviceDmaxMode) 2) + + + + + +typedef uint8_t VL53LX_DeviceSequenceConfig; + +#define VL53LX_DEVICESEQUENCECONFIG_VHV \ + ((VL53LX_DeviceSequenceConfig) 0) +#define VL53LX_DEVICESEQUENCECONFIG_PHASECAL \ + ((VL53LX_DeviceSequenceConfig) 1) +#define VL53LX_DEVICESEQUENCECONFIG_REFERENCE_PHASE \ + ((VL53LX_DeviceSequenceConfig) 2) +#define VL53LX_DEVICESEQUENCECONFIG_DSS1 \ + ((VL53LX_DeviceSequenceConfig) 3) +#define VL53LX_DEVICESEQUENCECONFIG_DSS2 \ + ((VL53LX_DeviceSequenceConfig) 4) +#define VL53LX_DEVICESEQUENCECONFIG_MM1 \ + ((VL53LX_DeviceSequenceConfig) 5) +#define VL53LX_DEVICESEQUENCECONFIG_MM2 \ + ((VL53LX_DeviceSequenceConfig) 6) +#define VL53LX_DEVICESEQUENCECONFIG_RANGE \ + ((VL53LX_DeviceSequenceConfig) 7) + + + + + +typedef uint8_t VL53LX_DeviceInterruptPolarity; + +#define VL53LX_DEVICEINTERRUPTPOLARITY_ACTIVE_HIGH \ + ((VL53LX_DeviceInterruptPolarity) 0x00) +#define VL53LX_DEVICEINTERRUPTPOLARITY_ACTIVE_LOW \ + ((VL53LX_DeviceInterruptPolarity) 0x10) +#define VL53LX_DEVICEINTERRUPTPOLARITY_BIT_MASK \ + ((VL53LX_DeviceInterruptPolarity) 0x10) +#define VL53LX_DEVICEINTERRUPTPOLARITY_CLEAR_MASK \ + ((VL53LX_DeviceInterruptPolarity) 0xEF) + + + + + +typedef uint8_t VL53LX_DeviceGpioMode; + +#define VL53LX_DEVICEGPIOMODE_OUTPUT_CONSTANT_ZERO \ + ((VL53LX_DeviceGpioMode) 0x00) +#define VL53LX_DEVICEGPIOMODE_OUTPUT_RANGE_AND_ERROR_INTERRUPTS \ + ((VL53LX_DeviceGpioMode) 0x01) +#define VL53LX_DEVICEGPIOMODE_OUTPUT_TIMIER_INTERRUPTS \ + ((VL53LX_DeviceGpioMode) 0x02) +#define VL53LX_DEVICEGPIOMODE_OUTPUT_RANGE_MODE_INTERRUPT_STATUS \ + ((VL53LX_DeviceGpioMode) 0x03) +#define VL53LX_DEVICEGPIOMODE_OUTPUT_SLOW_OSCILLATOR_CLOCK \ + ((VL53LX_DeviceGpioMode) 0x04) +#define VL53LX_DEVICEGPIOMODE_BIT_MASK \ + ((VL53LX_DeviceGpioMode) 0x0F) +#define VL53LX_DEVICEGPIOMODE_CLEAR_MASK \ + ((VL53LX_DeviceGpioMode) 0xF0) + + + + + +typedef uint8_t VL53LX_DeviceError; + +#define VL53LX_DEVICEERROR_NOUPDATE \ + ((VL53LX_DeviceError) 0) + +#define VL53LX_DEVICEERROR_VCSELCONTINUITYTESTFAILURE \ + ((VL53LX_DeviceError) 1) +#define VL53LX_DEVICEERROR_VCSELWATCHDOGTESTFAILURE \ + ((VL53LX_DeviceError) 2) +#define VL53LX_DEVICEERROR_NOVHVVALUEFOUND \ + ((VL53LX_DeviceError) 3) +#define VL53LX_DEVICEERROR_MSRCNOTARGET \ + ((VL53LX_DeviceError) 4) +#define VL53LX_DEVICEERROR_RANGEPHASECHECK \ + ((VL53LX_DeviceError) 5) +#define VL53LX_DEVICEERROR_SIGMATHRESHOLDCHECK \ + ((VL53LX_DeviceError) 6) +#define VL53LX_DEVICEERROR_PHASECONSISTENCY \ + ((VL53LX_DeviceError) 7) +#define VL53LX_DEVICEERROR_MINCLIP \ + ((VL53LX_DeviceError) 8) +#define VL53LX_DEVICEERROR_RANGECOMPLETE \ + ((VL53LX_DeviceError) 9) +#define VL53LX_DEVICEERROR_ALGOUNDERFLOW \ + ((VL53LX_DeviceError) 10) +#define VL53LX_DEVICEERROR_ALGOOVERFLOW \ + ((VL53LX_DeviceError) 11) +#define VL53LX_DEVICEERROR_RANGEIGNORETHRESHOLD \ + ((VL53LX_DeviceError) 12) +#define VL53LX_DEVICEERROR_USERROICLIP \ + ((VL53LX_DeviceError) 13) +#define VL53LX_DEVICEERROR_REFSPADCHARNOTENOUGHDPADS \ + ((VL53LX_DeviceError) 14) +#define VL53LX_DEVICEERROR_REFSPADCHARMORETHANTARGET \ + ((VL53LX_DeviceError) 15) +#define VL53LX_DEVICEERROR_REFSPADCHARLESSTHANTARGET \ + ((VL53LX_DeviceError) 16) +#define VL53LX_DEVICEERROR_MULTCLIPFAIL \ + ((VL53LX_DeviceError) 17) +#define VL53LX_DEVICEERROR_GPHSTREAMCOUNT0READY \ + ((VL53LX_DeviceError) 18) +#define VL53LX_DEVICEERROR_RANGECOMPLETE_NO_WRAP_CHECK \ + ((VL53LX_DeviceError) 19) +#define VL53LX_DEVICEERROR_EVENTCONSISTENCY \ + ((VL53LX_DeviceError) 20) +#define VL53LX_DEVICEERROR_MINSIGNALEVENTCHECK \ + ((VL53LX_DeviceError) 21) +#define VL53LX_DEVICEERROR_RANGECOMPLETE_MERGED_PULSE \ + ((VL53LX_DeviceError) 22) + + +#define VL53LX_DEVICEERROR_PREV_RANGE_NO_TARGETS \ + ((VL53LX_DeviceError) 23) + + + + + +typedef uint8_t VL53LX_DeviceReportStatus; + +#define VL53LX_DEVICEREPORTSTATUS_NOUPDATE \ + ((VL53LX_DeviceReportStatus) 0) + +#define VL53LX_DEVICEREPORTSTATUS_ROI_SETUP \ + ((VL53LX_DeviceReportStatus) 1) +#define VL53LX_DEVICEREPORTSTATUS_VHV \ + ((VL53LX_DeviceReportStatus) 2) +#define VL53LX_DEVICEREPORTSTATUS_PHASECAL \ + ((VL53LX_DeviceReportStatus) 3) +#define VL53LX_DEVICEREPORTSTATUS_REFERENCE_PHASE \ + ((VL53LX_DeviceReportStatus) 4) +#define VL53LX_DEVICEREPORTSTATUS_DSS1 \ + ((VL53LX_DeviceReportStatus) 5) +#define VL53LX_DEVICEREPORTSTATUS_DSS2 \ + ((VL53LX_DeviceReportStatus) 6) +#define VL53LX_DEVICEREPORTSTATUS_MM1 \ + ((VL53LX_DeviceReportStatus) 7) +#define VL53LX_DEVICEREPORTSTATUS_MM2 \ + ((VL53LX_DeviceReportStatus) 8) +#define VL53LX_DEVICEREPORTSTATUS_RANGE \ + ((VL53LX_DeviceReportStatus) 9) +#define VL53LX_DEVICEREPORTSTATUS_HISTOGRAM \ + ((VL53LX_DeviceReportStatus) 10) + + + + + +typedef uint8_t VL53LX_DeviceDssMode; + +#define VL53LX_DEVICEDSSMODE__DISABLED \ + ((VL53LX_DeviceDssMode) 0) +#define VL53LX_DEVICEDSSMODE__TARGET_RATE \ + ((VL53LX_DeviceDssMode) 1) +#define VL53LX_DEVICEDSSMODE__REQUESTED_EFFFECTIVE_SPADS \ + ((VL53LX_DeviceDssMode) 2) +#define VL53LX_DEVICEDSSMODE__BLOCK_SELECT \ + ((VL53LX_DeviceDssMode) 3) + + + + + + +typedef uint8_t VL53LX_HistAlgoSelect; + +#define VL53LX_HIST_ALGO_SELECT__PW_HIST_GEN1 \ + ((VL53LX_HistAlgoSelect) 1) +#define VL53LX_HIST_ALGO_SELECT__PW_HIST_GEN2 \ + ((VL53LX_HistAlgoSelect) 2) +#define VL53LX_HIST_ALGO_SELECT__PW_HIST_GEN3 \ + ((VL53LX_HistAlgoSelect) 3) +#define VL53LX_HIST_ALGO_SELECT__PW_HIST_GEN4 \ + ((VL53LX_HistAlgoSelect) 4) + + + + + + +typedef uint8_t VL53LX_HistTargetOrder; + +#define VL53LX_HIST_TARGET_ORDER__INCREASING_DISTANCE \ + ((VL53LX_HistTargetOrder) 1) +#define VL53LX_HIST_TARGET_ORDER__STRONGEST_FIRST \ + ((VL53LX_HistTargetOrder) 2) + + + + + + +typedef uint8_t VL53LX_HistAmbEstMethod; + +#define VL53LX_HIST_AMB_EST_METHOD__AMBIENT_BINS \ + ((VL53LX_HistAmbEstMethod) 1) +#define VL53LX_HIST_AMB_EST_METHOD__THRESHOLDED_BINS \ + ((VL53LX_HistAmbEstMethod) 2) + + + + + + +typedef uint8_t VL53LX_HistXtalkCompEnable; + +#define VL53LX_HIST_XTALK_COMP__DIS \ + ((VL53LX_HistXtalkCompEnable) 0) +#define VL53LX_HIST_XTALK_COMP__EN \ + ((VL53LX_HistXtalkCompEnable) 1) + + + + +typedef uint8_t VL53LX_DeviceConfigLevel; + +#define VL53LX_DEVICECONFIGLEVEL_SYSTEM_CONTROL \ + ((VL53LX_DeviceConfigLevel) 0) + +#define VL53LX_DEVICECONFIGLEVEL_DYNAMIC_ONWARDS \ + ((VL53LX_DeviceConfigLevel) 1) + +#define VL53LX_DEVICECONFIGLEVEL_TIMING_ONWARDS \ + ((VL53LX_DeviceConfigLevel) 2) + +#define VL53LX_DEVICECONFIGLEVEL_GENERAL_ONWARDS \ + ((VL53LX_DeviceConfigLevel) 3) + +#define VL53LX_DEVICECONFIGLEVEL_STATIC_ONWARDS \ + ((VL53LX_DeviceConfigLevel) 4) + +#define VL53LX_DEVICECONFIGLEVEL_CUSTOMER_ONWARDS \ + ((VL53LX_DeviceConfigLevel) 5) + +#define VL53LX_DEVICECONFIGLEVEL_FULL \ + ((VL53LX_DeviceConfigLevel) 6) + + + + + + +typedef uint8_t VL53LX_DeviceResultsLevel; + +#define VL53LX_DEVICERESULTSLEVEL_SYSTEM_RESULTS \ + ((VL53LX_DeviceResultsLevel) 0) + +#define VL53LX_DEVICERESULTSLEVEL_UPTO_CORE \ + ((VL53LX_DeviceResultsLevel) 1) + +#define VL53LX_DEVICERESULTSLEVEL_FULL \ + ((VL53LX_DeviceResultsLevel) 2) + + + + + + + +typedef uint8_t VL53LX_DeviceTestMode; + +#define VL53LX_DEVICETESTMODE_NONE \ + ((VL53LX_DeviceTestMode) 0x00) + +#define VL53LX_DEVICETESTMODE_NVM_ZERO \ + ((VL53LX_DeviceTestMode) 0x01) + +#define VL53LX_DEVICETESTMODE_NVM_COPY \ + ((VL53LX_DeviceTestMode) 0x02) + +#define VL53LX_DEVICETESTMODE_PATCH \ + ((VL53LX_DeviceTestMode) 0x03) + +#define VL53LX_DEVICETESTMODE_DCR \ + ((VL53LX_DeviceTestMode) 0x04) + +#define VL53LX_DEVICETESTMODE_LCR_VCSEL_OFF \ + ((VL53LX_DeviceTestMode) 0x05) + +#define VL53LX_DEVICETESTMODE_LCR_VCSEL_ON \ + ((VL53LX_DeviceTestMode) 0x06) + +#define VL53LX_DEVICETESTMODE_SPOT_CENTRE_LOCATE \ + ((VL53LX_DeviceTestMode) 0x07) + +#define VL53LX_DEVICETESTMODE_REF_SPAD_CHAR_WITH_PRE_VHV \ + ((VL53LX_DeviceTestMode) 0x08) + +#define VL53LX_DEVICETESTMODE_REF_SPAD_CHAR_ONLY \ + ((VL53LX_DeviceTestMode) 0x09) + + + + + + + +typedef uint8_t VL53LX_DeviceSscArray; + +#define VL53LX_DEVICESSCARRAY_RTN ((VL53LX_DeviceSscArray) 0x00) + +#define VL53LX_DEVICETESTMODE_REF ((VL53LX_DeviceSscArray) 0x01) + + + + + + + +#define VL53LX_RETURN_ARRAY_ONLY 0x01 + +#define VL53LX_REFERENCE_ARRAY_ONLY 0x10 + +#define VL53LX_BOTH_RETURN_AND_REFERENCE_ARRAYS 0x11 + +#define VL53LX_NEITHER_RETURN_AND_REFERENCE_ARRAYS 0x00 + + + + + + +#define VL53LX_DEVICEINTERRUPTLEVEL_ACTIVE_HIGH 0x00 + +#define VL53LX_DEVICEINTERRUPTLEVEL_ACTIVE_LOW 0x10 + +#define VL53LX_DEVICEINTERRUPTLEVEL_ACTIVE_MASK 0x10 + + + + + + +#define VL53LX_POLLING_DELAY_US 1000 + +#define VL53LX_SOFTWARE_RESET_DURATION_US 100 + +#define VL53LX_FIRMWARE_BOOT_TIME_US 1200 + +#define VL53LX_ENABLE_POWERFORCE_SETTLING_TIME_US 250 + +#define VL53LX_SPAD_ARRAY_WIDTH 16 + +#define VL53LX_SPAD_ARRAY_HEIGHT 16 + +#define VL53LX_NVM_SIZE_IN_BYTES 512 + +#define VL53LX_NO_OF_SPAD_ENABLES 256 + +#define VL53LX_RTN_SPAD_BUFFER_SIZE 32 + +#define VL53LX_REF_SPAD_BUFFER_SIZE 6 + +#define VL53LX_AMBIENT_WINDOW_VCSEL_PERIODS 256 + +#define VL53LX_RANGING_WINDOW_VCSEL_PERIODS 2048 + +#define VL53LX_MACRO_PERIOD_VCSEL_PERIODS \ + (VL53LX_AMBIENT_WINDOW_VCSEL_PERIODS + \ + VL53LX_RANGING_WINDOW_VCSEL_PERIODS) + +#define VL53LX_MAX_ALLOWED_PHASE 0xFFFF + + +#define VL53LX_RTN_SPAD_UNITY_TRANSMISSION 0x0100 + +#define VL53LX_RTN_SPAD_APERTURE_TRANSMISSION 0x0038 + + +#define VL53LX_SPAD_TOTAL_COUNT_MAX ((0x01 << 29) - 1) + +#define VL53LX_SPAD_TOTAL_COUNT_RES_THRES (0x01 << 24) + +#define VL53LX_COUNT_RATE_INTERNAL_MAX ((0x01 << 24) - 1) + +#define VL53LX_SPEED_OF_LIGHT_IN_AIR 299704 + +#define VL53LX_SPEED_OF_LIGHT_IN_AIR_DIV_8 (299704 >> 3) + + + + + + + + +typedef uint8_t VL53LX_ZoneConfig_BinConfig_select; + +#define VL53LX_ZONECONFIG_BINCONFIG__LOWAMB \ + ((VL53LX_ZoneConfig_BinConfig_select) 1) +#define VL53LX_ZONECONFIG_BINCONFIG__MIDAMB \ + ((VL53LX_ZoneConfig_BinConfig_select) 2) +#define VL53LX_ZONECONFIG_BINCONFIG__HIGHAMB \ + ((VL53LX_ZoneConfig_BinConfig_select) 3) + + + + + +typedef uint8_t VL53LX_GPIO_Interrupt_Mode; + +#define VL53LX_GPIOINTMODE_LEVEL_LOW \ + ((VL53LX_GPIO_Interrupt_Mode) 0) + +#define VL53LX_GPIOINTMODE_LEVEL_HIGH \ + ((VL53LX_GPIO_Interrupt_Mode) 1) + +#define VL53LX_GPIOINTMODE_OUT_OF_WINDOW \ + ((VL53LX_GPIO_Interrupt_Mode) 2) + +#define VL53LX_GPIOINTMODE_IN_WINDOW \ + ((VL53LX_GPIO_Interrupt_Mode) 3) + + + + + + +typedef uint16_t VL53LX_TuningParms; + +#define VL53LX_TUNINGPARMS_LLD_PUBLIC_MIN_ADDRESS \ + ((VL53LX_TuningParms) VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS) +#define VL53LX_TUNINGPARMS_LLD_PUBLIC_MAX_ADDRESS \ + ((VL53LX_TuningParms) VL53LX_TUNINGPARM_DYNXTALK_MAX_SMUDGE_FACTOR) + +#define VL53LX_TUNINGPARMS_LLD_PRIVATE_MIN_ADDRESS \ + ((VL53LX_TuningParms) VL53LX_TUNINGPARM_PRIVATE_PAGE_BASE_ADDRESS) +#define VL53LX_TUNINGPARMS_LLD_PRIVATE_MAX_ADDRESS \ + ((VL53LX_TuningParms) VL53LX_TUNINGPARMS_LLD_PRIVATE_MIN_ADDRESS) + +#define VL53LX_TUNINGPARM_VERSION \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 0)) +#define VL53LX_TUNINGPARM_KEY_TABLE_VERSION \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 1)) +#define VL53LX_TUNINGPARM_LLD_VERSION \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 2)) +#define VL53LX_TUNINGPARM_HIST_ALGO_SELECT \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 3)) +#define VL53LX_TUNINGPARM_HIST_TARGET_ORDER \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 4)) +#define VL53LX_TUNINGPARM_HIST_FILTER_WOI_0 \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 5)) +#define VL53LX_TUNINGPARM_HIST_FILTER_WOI_1 \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 6)) +#define VL53LX_TUNINGPARM_HIST_AMB_EST_METHOD \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 7)) +#define VL53LX_TUNINGPARM_HIST_AMB_THRESH_SIGMA_0 \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 8)) +#define VL53LX_TUNINGPARM_HIST_AMB_THRESH_SIGMA_1 \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 9)) +#define VL53LX_TUNINGPARM_HIST_MIN_AMB_THRESH_EVENTS \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 10)) +#define VL53LX_TUNINGPARM_HIST_AMB_EVENTS_SCALER \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 11)) +#define VL53LX_TUNINGPARM_HIST_NOISE_THRESHOLD \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 12)) +#define VL53LX_TUNINGPARM_HIST_SIGNAL_TOTAL_EVENTS_LIMIT \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 13)) +#define VL53LX_TUNINGPARM_HIST_SIGMA_EST_REF_MM \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 14)) +#define VL53LX_TUNINGPARM_HIST_SIGMA_THRESH_MM \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 15)) +#define VL53LX_TUNINGPARM_HIST_GAIN_FACTOR \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 16)) +#define VL53LX_TUNINGPARM_CONSISTENCY_HIST_PHASE_TOLERANCE \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 17)) +#define VL53LX_TUNINGPARM_CONSISTENCY_HIST_MIN_MAX_TOLERANCE_MM \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 18)) +#define VL53LX_TUNINGPARM_CONSISTENCY_HIST_EVENT_SIGMA \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 19)) +#define VL53LX_TUNINGPARM_CONSISTENCY_HIST_EVENT_SIGMA_MIN_SPAD_LIMIT \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 20)) +#define VL53LX_TUNINGPARM_INITIAL_PHASE_RTN_HISTO_LONG_RANGE \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 21)) +#define VL53LX_TUNINGPARM_INITIAL_PHASE_RTN_HISTO_MED_RANGE \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 22)) +#define VL53LX_TUNINGPARM_INITIAL_PHASE_RTN_HISTO_SHORT_RANGE \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 23)) +#define VL53LX_TUNINGPARM_INITIAL_PHASE_REF_HISTO_LONG_RANGE \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 24)) +#define VL53LX_TUNINGPARM_INITIAL_PHASE_REF_HISTO_MED_RANGE \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 25)) +#define VL53LX_TUNINGPARM_INITIAL_PHASE_REF_HISTO_SHORT_RANGE \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 26)) +#define VL53LX_TUNINGPARM_XTALK_DETECT_MIN_VALID_RANGE_MM \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 27)) +#define VL53LX_TUNINGPARM_XTALK_DETECT_MAX_VALID_RANGE_MM \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 28)) +#define VL53LX_TUNINGPARM_XTALK_DETECT_MAX_SIGMA_MM \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 29)) +#define VL53LX_TUNINGPARM_XTALK_DETECT_MIN_MAX_TOLERANCE \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 30)) +#define VL53LX_TUNINGPARM_XTALK_DETECT_MAX_VALID_RATE_KCPS \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 31)) +#define VL53LX_TUNINGPARM_XTALK_DETECT_EVENT_SIGMA \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 32)) +#define VL53LX_TUNINGPARM_HIST_XTALK_MARGIN_KCPS \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 33)) +#define VL53LX_TUNINGPARM_CONSISTENCY_LITE_PHASE_TOLERANCE \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 34)) +#define VL53LX_TUNINGPARM_PHASECAL_TARGET \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 35)) +#define VL53LX_TUNINGPARM_LITE_CAL_REPEAT_RATE \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 36)) +#define VL53LX_TUNINGPARM_LITE_RANGING_GAIN_FACTOR \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 37)) +#define VL53LX_TUNINGPARM_LITE_MIN_CLIP_MM \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 38)) +#define VL53LX_TUNINGPARM_LITE_LONG_SIGMA_THRESH_MM \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 39)) +#define VL53LX_TUNINGPARM_LITE_MED_SIGMA_THRESH_MM \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 40)) +#define VL53LX_TUNINGPARM_LITE_SHORT_SIGMA_THRESH_MM \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 41)) +#define VL53LX_TUNINGPARM_LITE_LONG_MIN_COUNT_RATE_RTN_MCPS \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 42)) +#define VL53LX_TUNINGPARM_LITE_MED_MIN_COUNT_RATE_RTN_MCPS \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 43)) +#define VL53LX_TUNINGPARM_LITE_SHORT_MIN_COUNT_RATE_RTN_MCPS \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 44)) +#define VL53LX_TUNINGPARM_LITE_SIGMA_EST_PULSE_WIDTH \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 45)) +#define VL53LX_TUNINGPARM_LITE_SIGMA_EST_AMB_WIDTH_NS \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 46)) +#define VL53LX_TUNINGPARM_LITE_SIGMA_REF_MM \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 47)) +#define VL53LX_TUNINGPARM_LITE_RIT_MULT \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 48)) +#define VL53LX_TUNINGPARM_LITE_SEED_CONFIG \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 49)) +#define VL53LX_TUNINGPARM_LITE_QUANTIFIER \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 50)) +#define VL53LX_TUNINGPARM_LITE_FIRST_ORDER_SELECT \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 51)) +#define VL53LX_TUNINGPARM_LITE_XTALK_MARGIN_KCPS \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 52)) +#define VL53LX_TUNINGPARM_INITIAL_PHASE_RTN_LITE_LONG_RANGE \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 53)) +#define VL53LX_TUNINGPARM_INITIAL_PHASE_RTN_LITE_MED_RANGE \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 54)) +#define VL53LX_TUNINGPARM_INITIAL_PHASE_RTN_LITE_SHORT_RANGE \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 55)) +#define VL53LX_TUNINGPARM_INITIAL_PHASE_REF_LITE_LONG_RANGE \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 56)) +#define VL53LX_TUNINGPARM_INITIAL_PHASE_REF_LITE_MED_RANGE \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 57)) +#define VL53LX_TUNINGPARM_INITIAL_PHASE_REF_LITE_SHORT_RANGE \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 58)) +#define VL53LX_TUNINGPARM_TIMED_SEED_CONFIG \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 59)) +#define VL53LX_TUNINGPARM_DMAX_CFG_SIGNAL_THRESH_SIGMA \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 60)) +#define VL53LX_TUNINGPARM_DMAX_CFG_REFLECTANCE_ARRAY_0 \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 61)) +#define VL53LX_TUNINGPARM_DMAX_CFG_REFLECTANCE_ARRAY_1 \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 62)) +#define VL53LX_TUNINGPARM_DMAX_CFG_REFLECTANCE_ARRAY_2 \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 63)) +#define VL53LX_TUNINGPARM_DMAX_CFG_REFLECTANCE_ARRAY_3 \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 64)) +#define VL53LX_TUNINGPARM_DMAX_CFG_REFLECTANCE_ARRAY_4 \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 65)) +#define VL53LX_TUNINGPARM_VHV_LOOPBOUND \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 66)) +#define VL53LX_TUNINGPARM_REFSPADCHAR_DEVICE_TEST_MODE \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 67)) +#define VL53LX_TUNINGPARM_REFSPADCHAR_VCSEL_PERIOD \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 68)) +#define VL53LX_TUNINGPARM_REFSPADCHAR_PHASECAL_TIMEOUT_US \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 69)) +#define VL53LX_TUNINGPARM_REFSPADCHAR_TARGET_COUNT_RATE_MCPS \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 70)) +#define VL53LX_TUNINGPARM_REFSPADCHAR_MIN_COUNTRATE_LIMIT_MCPS \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 71)) +#define VL53LX_TUNINGPARM_REFSPADCHAR_MAX_COUNTRATE_LIMIT_MCPS \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 72)) +#define VL53LX_TUNINGPARM_XTALK_EXTRACT_NUM_OF_SAMPLES \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 73)) +#define VL53LX_TUNINGPARM_XTALK_EXTRACT_MIN_FILTER_THRESH_MM \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 74)) +#define VL53LX_TUNINGPARM_XTALK_EXTRACT_MAX_FILTER_THRESH_MM \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 75)) +#define VL53LX_TUNINGPARM_XTALK_EXTRACT_DSS_RATE_MCPS \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 76)) +#define VL53LX_TUNINGPARM_XTALK_EXTRACT_PHASECAL_TIMEOUT_US \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 77)) +#define VL53LX_TUNINGPARM_XTALK_EXTRACT_MAX_VALID_RATE_KCPS \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 78)) +#define VL53LX_TUNINGPARM_XTALK_EXTRACT_SIGMA_THRESHOLD_MM \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 79)) +#define VL53LX_TUNINGPARM_XTALK_EXTRACT_DSS_TIMEOUT_US \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 80)) +#define VL53LX_TUNINGPARM_XTALK_EXTRACT_BIN_TIMEOUT_US \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 81)) +#define VL53LX_TUNINGPARM_OFFSET_CAL_DSS_RATE_MCPS \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 82)) +#define VL53LX_TUNINGPARM_OFFSET_CAL_PHASECAL_TIMEOUT_US \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 83)) +#define VL53LX_TUNINGPARM_OFFSET_CAL_MM_TIMEOUT_US \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 84)) +#define VL53LX_TUNINGPARM_OFFSET_CAL_RANGE_TIMEOUT_US \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 85)) +#define VL53LX_TUNINGPARM_OFFSET_CAL_PRE_SAMPLES \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 86)) +#define VL53LX_TUNINGPARM_OFFSET_CAL_MM1_SAMPLES \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 87)) +#define VL53LX_TUNINGPARM_OFFSET_CAL_MM2_SAMPLES \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 88)) +#define VL53LX_TUNINGPARM_ZONE_CAL_DSS_RATE_MCPS \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 89)) +#define VL53LX_TUNINGPARM_ZONE_CAL_PHASECAL_TIMEOUT_US \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 90)) +#define VL53LX_TUNINGPARM_ZONE_CAL_DSS_TIMEOUT_US \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 91)) +#define VL53LX_TUNINGPARM_ZONE_CAL_PHASECAL_NUM_SAMPLES \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 92)) +#define VL53LX_TUNINGPARM_ZONE_CAL_RANGE_TIMEOUT_US \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 93)) +#define VL53LX_TUNINGPARM_ZONE_CAL_ZONE_NUM_SAMPLES \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 94)) +#define VL53LX_TUNINGPARM_SPADMAP_VCSEL_PERIOD \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 95)) +#define VL53LX_TUNINGPARM_SPADMAP_VCSEL_START \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 96)) +#define VL53LX_TUNINGPARM_SPADMAP_RATE_LIMIT_MCPS \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 97)) +#define VL53LX_TUNINGPARM_LITE_DSS_CONFIG_TARGET_TOTAL_RATE_MCPS \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 98)) +#define VL53LX_TUNINGPARM_RANGING_DSS_CONFIG_TARGET_TOTAL_RATE_MCPS \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 99)) +#define VL53LX_TUNINGPARM_MZ_DSS_CONFIG_TARGET_TOTAL_RATE_MCPS \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 100)) +#define VL53LX_TUNINGPARM_TIMED_DSS_CONFIG_TARGET_TOTAL_RATE_MCPS \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 101)) +#define VL53LX_TUNINGPARM_LITE_PHASECAL_CONFIG_TIMEOUT_US \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 102)) +#define VL53LX_TUNINGPARM_RANGING_LONG_PHASECAL_CONFIG_TIMEOUT_US \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 103)) +#define VL53LX_TUNINGPARM_RANGING_MED_PHASECAL_CONFIG_TIMEOUT_US \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 104)) +#define VL53LX_TUNINGPARM_RANGING_SHORT_PHASECAL_CONFIG_TIMEOUT_US \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 105)) +#define VL53LX_TUNINGPARM_MZ_LONG_PHASECAL_CONFIG_TIMEOUT_US \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 106)) +#define VL53LX_TUNINGPARM_MZ_MED_PHASECAL_CONFIG_TIMEOUT_US \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 107)) +#define VL53LX_TUNINGPARM_MZ_SHORT_PHASECAL_CONFIG_TIMEOUT_US \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 108)) +#define VL53LX_TUNINGPARM_TIMED_PHASECAL_CONFIG_TIMEOUT_US \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 109)) +#define VL53LX_TUNINGPARM_LITE_MM_CONFIG_TIMEOUT_US \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 110)) +#define VL53LX_TUNINGPARM_RANGING_MM_CONFIG_TIMEOUT_US \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 111)) +#define VL53LX_TUNINGPARM_MZ_MM_CONFIG_TIMEOUT_US \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 112)) +#define VL53LX_TUNINGPARM_TIMED_MM_CONFIG_TIMEOUT_US \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 113)) +#define VL53LX_TUNINGPARM_LITE_RANGE_CONFIG_TIMEOUT_US \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 114)) +#define VL53LX_TUNINGPARM_RANGING_RANGE_CONFIG_TIMEOUT_US \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 115)) +#define VL53LX_TUNINGPARM_MZ_RANGE_CONFIG_TIMEOUT_US \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 116)) +#define VL53LX_TUNINGPARM_TIMED_RANGE_CONFIG_TIMEOUT_US \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 117)) +#define VL53LX_TUNINGPARM_DYNXTALK_SMUDGE_MARGIN \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 118)) +#define VL53LX_TUNINGPARM_DYNXTALK_NOISE_MARGIN \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 119)) +#define VL53LX_TUNINGPARM_DYNXTALK_XTALK_OFFSET_LIMIT \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 120)) +#define VL53LX_TUNINGPARM_DYNXTALK_XTALK_OFFSET_LIMIT_HI \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 121)) +#define VL53LX_TUNINGPARM_DYNXTALK_SAMPLE_LIMIT \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 122)) +#define VL53LX_TUNINGPARM_DYNXTALK_SINGLE_XTALK_DELTA \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 123)) +#define VL53LX_TUNINGPARM_DYNXTALK_AVERAGED_XTALK_DELTA \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 124)) +#define VL53LX_TUNINGPARM_DYNXTALK_CLIP_LIMIT \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 125)) +#define VL53LX_TUNINGPARM_DYNXTALK_SCALER_CALC_METHOD \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 126)) +#define VL53LX_TUNINGPARM_DYNXTALK_XGRADIENT_SCALER \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 127)) +#define VL53LX_TUNINGPARM_DYNXTALK_YGRADIENT_SCALER \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 128)) +#define VL53LX_TUNINGPARM_DYNXTALK_USER_SCALER_SET \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 129)) +#define VL53LX_TUNINGPARM_DYNXTALK_SMUDGE_COR_SINGLE_APPLY \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 130)) +#define VL53LX_TUNINGPARM_DYNXTALK_XTALK_AMB_THRESHOLD \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 131)) +#define VL53LX_TUNINGPARM_DYNXTALK_NODETECT_AMB_THRESHOLD_KCPS \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 132)) +#define VL53LX_TUNINGPARM_DYNXTALK_NODETECT_SAMPLE_LIMIT \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 133)) +#define VL53LX_TUNINGPARM_DYNXTALK_NODETECT_XTALK_OFFSET_KCPS \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 134)) +#define VL53LX_TUNINGPARM_DYNXTALK_NODETECT_MIN_RANGE_MM \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 135)) +#define VL53LX_TUNINGPARM_LOWPOWERAUTO_VHV_LOOP_BOUND \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 136)) +#define VL53LX_TUNINGPARM_LOWPOWERAUTO_MM_CONFIG_TIMEOUT_US \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 137)) +#define VL53LX_TUNINGPARM_LOWPOWERAUTO_RANGE_CONFIG_TIMEOUT_US \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 138)) +#define VL53LX_TUNINGPARM_VERY_SHORT_DSS_RATE_MCPS \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 139)) +#define VL53LX_TUNINGPARM_PHASECAL_PATCH_POWER \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 140)) +#define VL53LX_TUNINGPARM_HIST_MERGE \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 141)) +#define VL53LX_TUNINGPARM_RESET_MERGE_THRESHOLD \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 142)) +#define VL53LX_TUNINGPARM_HIST_MERGE_MAX_SIZE \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 143)) +#define VL53LX_TUNINGPARM_DYNXTALK_MAX_SMUDGE_FACTOR \ + ((VL53LX_TuningParms) (VL53LX_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 144)) + +// define from vl53lx_platform_log.h + +#define VL53LX_TRACE_LEVEL_NONE 0x00000000 +#define VL53LX_TRACE_LEVEL_ERRORS 0x00000001 +#define VL53LX_TRACE_LEVEL_WARNING 0x00000002 +#define VL53LX_TRACE_LEVEL_INFO 0x00000004 +#define VL53LX_TRACE_LEVEL_DEBUG 0x00000008 +#define VL53LX_TRACE_LEVEL_ALL 0x00000010 +#define VL53LX_TRACE_LEVEL_IGNORE 0x00000020 + +#define VL53LX_TRACE_FUNCTION_NONE 0x00000000 +#define VL53LX_TRACE_FUNCTION_I2C 0x00000001 +#define VL53LX_TRACE_FUNCTION_ALL 0x7fffffff + +#define VL53LX_TRACE_MODULE_NONE 0x00000000 +#define VL53LX_TRACE_MODULE_API 0x00000001 +#define VL53LX_TRACE_MODULE_CORE 0x00000002 +#define VL53LX_TRACE_MODULE_PROTECTED 0x00000004 +#define VL53LX_TRACE_MODULE_HISTOGRAM 0x00000008 +#define VL53LX_TRACE_MODULE_REGISTERS 0x00000010 +#define VL53LX_TRACE_MODULE_PLATFORM 0x00000020 +#define VL53LX_TRACE_MODULE_NVM 0x00000040 +#define VL53LX_TRACE_MODULE_CALIBRATION_DATA 0x00000080 +#define VL53LX_TRACE_MODULE_NVM_DATA 0x00000100 +#define VL53LX_TRACE_MODULE_HISTOGRAM_DATA 0x00000200 +#define VL53LX_TRACE_MODULE_RANGE_RESULTS_DATA 0x00000400 +#define VL53LX_TRACE_MODULE_XTALK_DATA 0x00000800 +#define VL53LX_TRACE_MODULE_OFFSET_DATA 0x00001000 +#define VL53LX_TRACE_MODULE_DATA_INIT 0x00002000 +#define VL53LX_TRACE_MODULE_REF_SPAD_CHAR 0x00004000 +#define VL53LX_TRACE_MODULE_SPAD_RATE_MAP 0x00008000 + + + +// define & typedef from vl53lx_register_structs.h + + +#define VL53LX_STATIC_NVM_MANAGED_I2C_INDEX \ + VL53LX_I2C_SLAVE__DEVICE_ADDRESS +#define VL53LX_CUSTOMER_NVM_MANAGED_I2C_INDEX \ + VL53LX_GLOBAL_CONFIG__SPAD_ENABLES_REF_0 +#define VL53LX_STATIC_CONFIG_I2C_INDEX \ + VL53LX_DSS_CONFIG__TARGET_TOTAL_RATE_MCPS +#define VL53LX_GENERAL_CONFIG_I2C_INDEX \ + VL53LX_GPH_CONFIG__STREAM_COUNT_UPDATE_VALUE +#define VL53LX_TIMING_CONFIG_I2C_INDEX \ + VL53LX_MM_CONFIG__TIMEOUT_MACROP_A_HI +#define VL53LX_DYNAMIC_CONFIG_I2C_INDEX \ + VL53LX_SYSTEM__GROUPED_PARAMETER_HOLD_0 +#define VL53LX_SYSTEM_CONTROL_I2C_INDEX \ + VL53LX_POWER_MANAGEMENT__GO1_POWER_FORCE +#define VL53LX_SYSTEM_RESULTS_I2C_INDEX \ + VL53LX_RESULT__INTERRUPT_STATUS +#define VL53LX_CORE_RESULTS_I2C_INDEX \ + VL53LX_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD0 +#define VL53LX_DEBUG_RESULTS_I2C_INDEX \ + VL53LX_PHASECAL_RESULT__REFERENCE_PHASE +#define VL53LX_NVM_COPY_DATA_I2C_INDEX \ + VL53LX_IDENTIFICATION__MODEL_ID +#define VL53LX_PREV_SHADOW_SYSTEM_RESULTS_I2C_INDEX \ + VL53LX_PREV_SHADOW_RESULT__INTERRUPT_STATUS +#define VL53LX_PREV_SHADOW_CORE_RESULTS_I2C_INDEX \ + VL53LX_PREV_SHADOW_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD0 +#define VL53LX_PATCH_DEBUG_I2C_INDEX \ + VL53LX_RESULT__DEBUG_STATUS +#define VL53LX_GPH_GENERAL_CONFIG_I2C_INDEX \ + VL53LX_GPH__SYSTEM__THRESH_RATE_HIGH +#define VL53LX_GPH_STATIC_CONFIG_I2C_INDEX \ + VL53LX_GPH__DSS_CONFIG__ROI_MODE_CONTROL +#define VL53LX_GPH_TIMING_CONFIG_I2C_INDEX \ + VL53LX_GPH__MM_CONFIG__TIMEOUT_MACROP_A_HI +#define VL53LX_FW_INTERNAL_I2C_INDEX \ + VL53LX_FIRMWARE__INTERNAL_STREAM_COUNT_DIV +#define VL53LX_PATCH_RESULTS_I2C_INDEX \ + VL53LX_DSS_CALC__ROI_CTRL +#define VL53LX_SHADOW_SYSTEM_RESULTS_I2C_INDEX \ + VL53LX_SHADOW_PHASECAL_RESULT__VCSEL_START +#define VL53LX_SHADOW_CORE_RESULTS_I2C_INDEX \ + VL53LX_SHADOW_RESULT_CORE__AMBIENT_WINDOW_EVENTS_SD0 + +#define VL53LX_STATIC_NVM_MANAGED_I2C_SIZE_BYTES 11 +#define VL53LX_CUSTOMER_NVM_MANAGED_I2C_SIZE_BYTES 23 +#define VL53LX_STATIC_CONFIG_I2C_SIZE_BYTES 32 +#define VL53LX_GENERAL_CONFIG_I2C_SIZE_BYTES 22 +#define VL53LX_TIMING_CONFIG_I2C_SIZE_BYTES 23 +#define VL53LX_DYNAMIC_CONFIG_I2C_SIZE_BYTES 18 +#define VL53LX_SYSTEM_CONTROL_I2C_SIZE_BYTES 5 +#define VL53LX_SYSTEM_RESULTS_I2C_SIZE_BYTES 44 +#define VL53LX_CORE_RESULTS_I2C_SIZE_BYTES 33 +#define VL53LX_DEBUG_RESULTS_I2C_SIZE_BYTES 56 +#define VL53LX_NVM_COPY_DATA_I2C_SIZE_BYTES 49 +#define VL53LX_PREV_SHADOW_SYSTEM_RESULTS_I2C_SIZE_BYTES 44 +#define VL53LX_PREV_SHADOW_CORE_RESULTS_I2C_SIZE_BYTES 33 +#define VL53LX_PATCH_DEBUG_I2C_SIZE_BYTES 2 +#define VL53LX_GPH_GENERAL_CONFIG_I2C_SIZE_BYTES 5 +#define VL53LX_GPH_STATIC_CONFIG_I2C_SIZE_BYTES 6 +#define VL53LX_GPH_TIMING_CONFIG_I2C_SIZE_BYTES 16 +#define VL53LX_FW_INTERNAL_I2C_SIZE_BYTES 2 +#define VL53LX_PATCH_RESULTS_I2C_SIZE_BYTES 90 +#define VL53LX_SHADOW_SYSTEM_RESULTS_I2C_SIZE_BYTES 82 +#define VL53LX_SHADOW_CORE_RESULTS_I2C_SIZE_BYTES 33 + + + + +typedef struct { + uint8_t i2c_slave__device_address; + + uint8_t ana_config__vhv_ref_sel_vddpix; + + uint8_t ana_config__vhv_ref_sel_vquench; + + uint8_t ana_config__reg_avdd1v2_sel; + + uint8_t ana_config__fast_osc__trim; + + uint16_t osc_measured__fast_osc__frequency; + + uint8_t vhv_config__timeout_macrop_loop_bound; + + uint8_t vhv_config__count_thresh; + + uint8_t vhv_config__offset; + + uint8_t vhv_config__init; + +} VL53LX_static_nvm_managed_t; + + + + +typedef struct { + uint8_t global_config__spad_enables_ref_0; + + uint8_t global_config__spad_enables_ref_1; + + uint8_t global_config__spad_enables_ref_2; + + uint8_t global_config__spad_enables_ref_3; + + uint8_t global_config__spad_enables_ref_4; + + uint8_t global_config__spad_enables_ref_5; + + uint8_t global_config__ref_en_start_select; + + uint8_t ref_spad_man__num_requested_ref_spads; + + uint8_t ref_spad_man__ref_location; + + uint16_t algo__crosstalk_compensation_plane_offset_kcps; + + int16_t algo__crosstalk_compensation_x_plane_gradient_kcps; + + int16_t algo__crosstalk_compensation_y_plane_gradient_kcps; + + uint16_t ref_spad_char__total_rate_target_mcps; + + int16_t algo__part_to_part_range_offset_mm; + + int16_t mm_config__inner_offset_mm; + + int16_t mm_config__outer_offset_mm; + +} VL53LX_customer_nvm_managed_t; + + + + +typedef struct { + uint16_t dss_config__target_total_rate_mcps; + + uint8_t debug__ctrl; + + uint8_t test_mode__ctrl; + + uint8_t clk_gating__ctrl; + + uint8_t nvm_bist__ctrl; + + uint8_t nvm_bist__num_nvm_words; + + uint8_t nvm_bist__start_address; + + uint8_t host_if__status; + + uint8_t pad_i2c_hv__config; + + uint8_t pad_i2c_hv__extsup_config; + + uint8_t gpio_hv_pad__ctrl; + + uint8_t gpio_hv_mux__ctrl; + + uint8_t gpio__tio_hv_status; + + uint8_t gpio__fio_hv_status; + + uint8_t ana_config__spad_sel_pswidth; + + uint8_t ana_config__vcsel_pulse_width_offset; + + uint8_t ana_config__fast_osc__config_ctrl; + + uint8_t sigma_estimator__effective_pulse_width_ns; + + uint8_t sigma_estimator__effective_ambient_width_ns; + + uint8_t sigma_estimator__sigma_ref_mm; + + uint8_t algo__crosstalk_compensation_valid_height_mm; + + uint8_t spare_host_config__static_config_spare_0; + + uint8_t spare_host_config__static_config_spare_1; + + uint16_t algo__range_ignore_threshold_mcps; + + uint8_t algo__range_ignore_valid_height_mm; + + uint8_t algo__range_min_clip; + + uint8_t algo__consistency_check__tolerance; + + uint8_t spare_host_config__static_config_spare_2; + + uint8_t sd_config__reset_stages_msb; + + uint8_t sd_config__reset_stages_lsb; + +} VL53LX_static_config_t; + + + + +typedef struct { + uint8_t gph_config__stream_count_update_value; + + uint8_t global_config__stream_divider; + + uint8_t system__interrupt_config_gpio; + + uint8_t cal_config__vcsel_start; + + uint16_t cal_config__repeat_rate; + + uint8_t global_config__vcsel_width; + + uint8_t phasecal_config__timeout_macrop; + + uint8_t phasecal_config__target; + + uint8_t phasecal_config__override; + + uint8_t dss_config__roi_mode_control; + + uint16_t system__thresh_rate_high; + + uint16_t system__thresh_rate_low; + + uint16_t dss_config__manual_effective_spads_select; + + uint8_t dss_config__manual_block_select; + + uint8_t dss_config__aperture_attenuation; + + uint8_t dss_config__max_spads_limit; + + uint8_t dss_config__min_spads_limit; + +} VL53LX_general_config_t; + + + + +typedef struct { + uint8_t mm_config__timeout_macrop_a_hi; + + uint8_t mm_config__timeout_macrop_a_lo; + + uint8_t mm_config__timeout_macrop_b_hi; + + uint8_t mm_config__timeout_macrop_b_lo; + + uint8_t range_config__timeout_macrop_a_hi; + + uint8_t range_config__timeout_macrop_a_lo; + + uint8_t range_config__vcsel_period_a; + + uint8_t range_config__timeout_macrop_b_hi; + + uint8_t range_config__timeout_macrop_b_lo; + + uint8_t range_config__vcsel_period_b; + + uint16_t range_config__sigma_thresh; + + uint16_t range_config__min_count_rate_rtn_limit_mcps; + + uint8_t range_config__valid_phase_low; + + uint8_t range_config__valid_phase_high; + + uint32_t system__intermeasurement_period; + + uint8_t system__fractional_enable; + +} VL53LX_timing_config_t; + + + + +typedef struct { + uint8_t system__grouped_parameter_hold_0; + + uint16_t system__thresh_high; + + uint16_t system__thresh_low; + + uint8_t system__enable_xtalk_per_quadrant; + + uint8_t system__seed_config; + + uint8_t sd_config__woi_sd0; + + uint8_t sd_config__woi_sd1; + + uint8_t sd_config__initial_phase_sd0; + + uint8_t sd_config__initial_phase_sd1; + + uint8_t system__grouped_parameter_hold_1; + + uint8_t sd_config__first_order_select; + + uint8_t sd_config__quantifier; + + uint8_t roi_config__user_roi_centre_spad; + + uint8_t roi_config__user_roi_requested_global_xy_size; + + uint8_t system__sequence_config; + + uint8_t system__grouped_parameter_hold; + +} VL53LX_dynamic_config_t; + + + + +typedef struct { + uint8_t power_management__go1_power_force; + + uint8_t system__stream_count_ctrl; + + uint8_t firmware__enable; + + uint8_t system__interrupt_clear; + + uint8_t system__mode_start; + +} VL53LX_system_control_t; + + + + +typedef struct { + uint8_t result__interrupt_status; + + uint8_t result__range_status; + + uint8_t result__report_status; + + uint8_t result__stream_count; + + uint16_t result__dss_actual_effective_spads_sd0; + + uint16_t result__peak_signal_count_rate_mcps_sd0; + + uint16_t result__ambient_count_rate_mcps_sd0; + + uint16_t result__sigma_sd0; + + uint16_t result__phase_sd0; + + uint16_t result__final_crosstalk_corrected_range_mm_sd0; + + uint16_t result__peak_signal_count_rate_crosstalk_corrected_mcps_sd0; + + uint16_t result__mm_inner_actual_effective_spads_sd0; + + uint16_t result__mm_outer_actual_effective_spads_sd0; + + uint16_t result__avg_signal_count_rate_mcps_sd0; + + uint16_t result__dss_actual_effective_spads_sd1; + + uint16_t result__peak_signal_count_rate_mcps_sd1; + + uint16_t result__ambient_count_rate_mcps_sd1; + + uint16_t result__sigma_sd1; + + uint16_t result__phase_sd1; + + uint16_t result__final_crosstalk_corrected_range_mm_sd1; + + uint16_t result__spare_0_sd1; + + uint16_t result__spare_1_sd1; + + uint16_t result__spare_2_sd1; + + uint8_t result__spare_3_sd1; + + uint8_t result__thresh_info; + +} VL53LX_system_results_t; + + + + +typedef struct { + uint32_t result_core__ambient_window_events_sd0; + + uint32_t result_core__ranging_total_events_sd0; + + int32_t result_core__signal_total_events_sd0; + + uint32_t result_core__total_periods_elapsed_sd0; + + uint32_t result_core__ambient_window_events_sd1; + + uint32_t result_core__ranging_total_events_sd1; + + int32_t result_core__signal_total_events_sd1; + + uint32_t result_core__total_periods_elapsed_sd1; + + uint8_t result_core__spare_0; + +} VL53LX_core_results_t; + + + + +typedef struct { + uint16_t phasecal_result__reference_phase; + + uint8_t phasecal_result__vcsel_start; + + uint8_t ref_spad_char_result__num_actual_ref_spads; + + uint8_t ref_spad_char_result__ref_location; + + uint8_t vhv_result__coldboot_status; + + uint8_t vhv_result__search_result; + + uint8_t vhv_result__latest_setting; + + uint16_t result__osc_calibrate_val; + + uint8_t ana_config__powerdown_go1; + + uint8_t ana_config__ref_bg_ctrl; + + uint8_t ana_config__regdvdd1v2_ctrl; + + uint8_t ana_config__osc_slow_ctrl; + + uint8_t test_mode__status; + + uint8_t firmware__system_status; + + uint8_t firmware__mode_status; + + uint8_t firmware__secondary_mode_status; + + uint16_t firmware__cal_repeat_rate_counter; + + uint16_t gph__system__thresh_high; + + uint16_t gph__system__thresh_low; + + uint8_t gph__system__enable_xtalk_per_quadrant; + + uint8_t gph__spare_0; + + uint8_t gph__sd_config__woi_sd0; + + uint8_t gph__sd_config__woi_sd1; + + uint8_t gph__sd_config__initial_phase_sd0; + + uint8_t gph__sd_config__initial_phase_sd1; + + uint8_t gph__sd_config__first_order_select; + + uint8_t gph__sd_config__quantifier; + + uint8_t gph__roi_config__user_roi_centre_spad; + + uint8_t gph__roi_config__user_roi_requested_global_xy_size; + + uint8_t gph__system__sequence_config; + + uint8_t gph__gph_id; + + uint8_t system__interrupt_set; + + uint8_t interrupt_manager__enables; + + uint8_t interrupt_manager__clear; + + uint8_t interrupt_manager__status; + + uint8_t mcu_to_host_bank__wr_access_en; + + uint8_t power_management__go1_reset_status; + + uint8_t pad_startup_mode__value_ro; + + uint8_t pad_startup_mode__value_ctrl; + + uint32_t pll_period_us; + + uint32_t interrupt_scheduler__data_out; + + uint8_t nvm_bist__complete; + + uint8_t nvm_bist__status; + +} VL53LX_debug_results_t; + + + + +typedef struct { + uint8_t identification__model_id; + + uint8_t identification__module_type; + + uint8_t identification__revision_id; + + uint16_t identification__module_id; + + uint8_t ana_config__fast_osc__trim_max; + + uint8_t ana_config__fast_osc__freq_set; + + uint8_t ana_config__vcsel_trim; + + uint8_t ana_config__vcsel_selion; + + uint8_t ana_config__vcsel_selion_max; + + uint8_t protected_laser_safety__lock_bit; + + uint8_t laser_safety__key; + + uint8_t laser_safety__key_ro; + + uint8_t laser_safety__clip; + + uint8_t laser_safety__mult; + + uint8_t global_config__spad_enables_rtn_0; + + uint8_t global_config__spad_enables_rtn_1; + + uint8_t global_config__spad_enables_rtn_2; + + uint8_t global_config__spad_enables_rtn_3; + + uint8_t global_config__spad_enables_rtn_4; + + uint8_t global_config__spad_enables_rtn_5; + + uint8_t global_config__spad_enables_rtn_6; + + uint8_t global_config__spad_enables_rtn_7; + + uint8_t global_config__spad_enables_rtn_8; + + uint8_t global_config__spad_enables_rtn_9; + + uint8_t global_config__spad_enables_rtn_10; + + uint8_t global_config__spad_enables_rtn_11; + + uint8_t global_config__spad_enables_rtn_12; + + uint8_t global_config__spad_enables_rtn_13; + + uint8_t global_config__spad_enables_rtn_14; + + uint8_t global_config__spad_enables_rtn_15; + + uint8_t global_config__spad_enables_rtn_16; + + uint8_t global_config__spad_enables_rtn_17; + + uint8_t global_config__spad_enables_rtn_18; + + uint8_t global_config__spad_enables_rtn_19; + + uint8_t global_config__spad_enables_rtn_20; + + uint8_t global_config__spad_enables_rtn_21; + + uint8_t global_config__spad_enables_rtn_22; + + uint8_t global_config__spad_enables_rtn_23; + + uint8_t global_config__spad_enables_rtn_24; + + uint8_t global_config__spad_enables_rtn_25; + + uint8_t global_config__spad_enables_rtn_26; + + uint8_t global_config__spad_enables_rtn_27; + + uint8_t global_config__spad_enables_rtn_28; + + uint8_t global_config__spad_enables_rtn_29; + + uint8_t global_config__spad_enables_rtn_30; + + uint8_t global_config__spad_enables_rtn_31; + + uint8_t roi_config__mode_roi_centre_spad; + + uint8_t roi_config__mode_roi_xy_size; + +} VL53LX_nvm_copy_data_t; + + + + +typedef struct { + uint8_t prev_shadow_result__interrupt_status; + + uint8_t prev_shadow_result__range_status; + + uint8_t prev_shadow_result__report_status; + + uint8_t prev_shadow_result__stream_count; + + uint16_t prev_shadow_result__dss_actual_effective_spads_sd0; + + uint16_t prev_shadow_result__peak_signal_count_rate_mcps_sd0; + + uint16_t prev_shadow_result__ambient_count_rate_mcps_sd0; + + uint16_t prev_shadow_result__sigma_sd0; + + uint16_t prev_shadow_result__phase_sd0; + + uint16_t prev_shadow_result__final_crosstalk_corrected_range_mm_sd0; + + uint16_t + psr__peak_signal_count_rate_crosstalk_corrected_mcps_sd0; + + uint16_t prev_shadow_result__mm_inner_actual_effective_spads_sd0; + + uint16_t prev_shadow_result__mm_outer_actual_effective_spads_sd0; + + uint16_t prev_shadow_result__avg_signal_count_rate_mcps_sd0; + + uint16_t prev_shadow_result__dss_actual_effective_spads_sd1; + + uint16_t prev_shadow_result__peak_signal_count_rate_mcps_sd1; + + uint16_t prev_shadow_result__ambient_count_rate_mcps_sd1; + + uint16_t prev_shadow_result__sigma_sd1; + + uint16_t prev_shadow_result__phase_sd1; + + uint16_t prev_shadow_result__final_crosstalk_corrected_range_mm_sd1; + + uint16_t prev_shadow_result__spare_0_sd1; + + uint16_t prev_shadow_result__spare_1_sd1; + + uint16_t prev_shadow_result__spare_2_sd1; + + uint16_t prev_shadow_result__spare_3_sd1; + +} VL53LX_prev_shadow_system_results_t; + + + + +typedef struct { + uint32_t prev_shadow_result_core__ambient_window_events_sd0; + + uint32_t prev_shadow_result_core__ranging_total_events_sd0; + + int32_t prev_shadow_result_core__signal_total_events_sd0; + + uint32_t prev_shadow_result_core__total_periods_elapsed_sd0; + + uint32_t prev_shadow_result_core__ambient_window_events_sd1; + + uint32_t prev_shadow_result_core__ranging_total_events_sd1; + + int32_t prev_shadow_result_core__signal_total_events_sd1; + + uint32_t prev_shadow_result_core__total_periods_elapsed_sd1; + + uint8_t prev_shadow_result_core__spare_0; + +} VL53LX_prev_shadow_core_results_t; + + + + +typedef struct { + uint8_t result__debug_status; + + uint8_t result__debug_stage; + +} VL53LX_patch_debug_t; + + + + +typedef struct { + uint16_t gph__system__thresh_rate_high; + + uint16_t gph__system__thresh_rate_low; + + uint8_t gph__system__interrupt_config_gpio; + +} VL53LX_gph_general_config_t; + + + + +typedef struct { + uint8_t gph__dss_config__roi_mode_control; + + uint16_t gph__dss_config__manual_effective_spads_select; + + uint8_t gph__dss_config__manual_block_select; + + uint8_t gph__dss_config__max_spads_limit; + + uint8_t gph__dss_config__min_spads_limit; + +} VL53LX_gph_static_config_t; + + + + +typedef struct { + uint8_t gph__mm_config__timeout_macrop_a_hi; + + uint8_t gph__mm_config__timeout_macrop_a_lo; + + uint8_t gph__mm_config__timeout_macrop_b_hi; + + uint8_t gph__mm_config__timeout_macrop_b_lo; + + uint8_t gph__range_config__timeout_macrop_a_hi; + + uint8_t gph__range_config__timeout_macrop_a_lo; + + uint8_t gph__range_config__vcsel_period_a; + + uint8_t gph__range_config__vcsel_period_b; + + uint8_t gph__range_config__timeout_macrop_b_hi; + + uint8_t gph__range_config__timeout_macrop_b_lo; + + uint16_t gph__range_config__sigma_thresh; + + uint16_t gph__range_config__min_count_rate_rtn_limit_mcps; + + uint8_t gph__range_config__valid_phase_low; + + uint8_t gph__range_config__valid_phase_high; + +} VL53LX_gph_timing_config_t; + + + + +typedef struct { + uint8_t firmware__internal_stream_count_div; + + uint8_t firmware__internal_stream_counter_val; + +} VL53LX_fw_internal_t; + + + + +typedef struct { + uint8_t dss_calc__roi_ctrl; + + uint8_t dss_calc__spare_1; + + uint8_t dss_calc__spare_2; + + uint8_t dss_calc__spare_3; + + uint8_t dss_calc__spare_4; + + uint8_t dss_calc__spare_5; + + uint8_t dss_calc__spare_6; + + uint8_t dss_calc__spare_7; + + uint8_t dss_calc__user_roi_spad_en_0; + + uint8_t dss_calc__user_roi_spad_en_1; + + uint8_t dss_calc__user_roi_spad_en_2; + + uint8_t dss_calc__user_roi_spad_en_3; + + uint8_t dss_calc__user_roi_spad_en_4; + + uint8_t dss_calc__user_roi_spad_en_5; + + uint8_t dss_calc__user_roi_spad_en_6; + + uint8_t dss_calc__user_roi_spad_en_7; + + uint8_t dss_calc__user_roi_spad_en_8; + + uint8_t dss_calc__user_roi_spad_en_9; + + uint8_t dss_calc__user_roi_spad_en_10; + + uint8_t dss_calc__user_roi_spad_en_11; + + uint8_t dss_calc__user_roi_spad_en_12; + + uint8_t dss_calc__user_roi_spad_en_13; + + uint8_t dss_calc__user_roi_spad_en_14; + + uint8_t dss_calc__user_roi_spad_en_15; + + uint8_t dss_calc__user_roi_spad_en_16; + + uint8_t dss_calc__user_roi_spad_en_17; + + uint8_t dss_calc__user_roi_spad_en_18; + + uint8_t dss_calc__user_roi_spad_en_19; + + uint8_t dss_calc__user_roi_spad_en_20; + + uint8_t dss_calc__user_roi_spad_en_21; + + uint8_t dss_calc__user_roi_spad_en_22; + + uint8_t dss_calc__user_roi_spad_en_23; + + uint8_t dss_calc__user_roi_spad_en_24; + + uint8_t dss_calc__user_roi_spad_en_25; + + uint8_t dss_calc__user_roi_spad_en_26; + + uint8_t dss_calc__user_roi_spad_en_27; + + uint8_t dss_calc__user_roi_spad_en_28; + + uint8_t dss_calc__user_roi_spad_en_29; + + uint8_t dss_calc__user_roi_spad_en_30; + + uint8_t dss_calc__user_roi_spad_en_31; + + uint8_t dss_calc__user_roi_0; + + uint8_t dss_calc__user_roi_1; + + uint8_t dss_calc__mode_roi_0; + + uint8_t dss_calc__mode_roi_1; + + uint8_t sigma_estimator_calc__spare_0; + + uint16_t vhv_result__peak_signal_rate_mcps; + + uint32_t vhv_result__signal_total_events_ref; + + uint16_t phasecal_result__phase_output_ref; + + uint16_t dss_result__total_rate_per_spad; + + uint8_t dss_result__enabled_blocks; + + uint16_t dss_result__num_requested_spads; + + uint16_t mm_result__inner_intersection_rate; + + uint16_t mm_result__outer_complement_rate; + + uint16_t mm_result__total_offset; + + uint32_t xtalk_calc__xtalk_for_enabled_spads; + + uint32_t xtalk_result__avg_xtalk_user_roi_kcps; + + uint32_t xtalk_result__avg_xtalk_mm_inner_roi_kcps; + + uint32_t xtalk_result__avg_xtalk_mm_outer_roi_kcps; + + uint32_t range_result__accum_phase; + + uint16_t range_result__offset_corrected_range; + +} VL53LX_patch_results_t; + + + + +typedef struct { + uint8_t shadow_phasecal_result__vcsel_start; + + uint8_t shadow_result__interrupt_status; + + uint8_t shadow_result__range_status; + + uint8_t shadow_result__report_status; + + uint8_t shadow_result__stream_count; + + uint16_t shadow_result__dss_actual_effective_spads_sd0; + + uint16_t shadow_result__peak_signal_count_rate_mcps_sd0; + + uint16_t shadow_result__ambient_count_rate_mcps_sd0; + + uint16_t shadow_result__sigma_sd0; + + uint16_t shadow_result__phase_sd0; + + uint16_t shadow_result__final_crosstalk_corrected_range_mm_sd0; + + uint16_t + shr__peak_signal_count_rate_crosstalk_corrected_mcps_sd0; + + uint16_t shadow_result__mm_inner_actual_effective_spads_sd0; + + uint16_t shadow_result__mm_outer_actual_effective_spads_sd0; + + uint16_t shadow_result__avg_signal_count_rate_mcps_sd0; + + uint16_t shadow_result__dss_actual_effective_spads_sd1; + + uint16_t shadow_result__peak_signal_count_rate_mcps_sd1; + + uint16_t shadow_result__ambient_count_rate_mcps_sd1; + + uint16_t shadow_result__sigma_sd1; + + uint16_t shadow_result__phase_sd1; + + uint16_t shadow_result__final_crosstalk_corrected_range_mm_sd1; + + uint16_t shadow_result__spare_0_sd1; + + uint16_t shadow_result__spare_1_sd1; + + uint16_t shadow_result__spare_2_sd1; + + uint8_t shadow_result__spare_3_sd1; + + uint8_t shadow_result__thresh_info; + + uint8_t shadow_phasecal_result__reference_phase_hi; + + uint8_t shadow_phasecal_result__reference_phase_lo; + +} VL53LX_shadow_system_results_t; + + + + +typedef struct { + uint32_t shadow_result_core__ambient_window_events_sd0; + + uint32_t shadow_result_core__ranging_total_events_sd0; + + int32_t shadow_result_core__signal_total_events_sd0; + + uint32_t shadow_result_core__total_periods_elapsed_sd0; + + uint32_t shadow_result_core__ambient_window_events_sd1; + + uint32_t shadow_result_core__ranging_total_events_sd1; + + int32_t shadow_result_core__signal_total_events_sd1; + + uint32_t shadow_result_core__total_periods_elapsed_sd1; + + uint8_t shadow_result_core__spare_0; + +} VL53LX_shadow_core_results_t; + + +// typedef from vl53lx_dmax_structs.h + +#define VL53LX_MAX_AMBIENT_DMAX_VALUES 5 + +typedef struct { + uint16_t ref__actual_effective_spads; + uint16_t ref__peak_signal_count_rate_mcps; + uint16_t ref__distance_mm; + uint16_t ref_reflectance_pc; + uint16_t coverglass_transmission; + +} VL53LX_dmax_calibration_data_t; + + + + +typedef struct { + uint8_t signal_thresh_sigma; + uint8_t ambient_thresh_sigma; + int32_t min_ambient_thresh_events; + int32_t signal_total_events_limit; + uint16_t target_reflectance_for_dmax_calc[VL53LX_MAX_AMBIENT_DMAX_VALUES]; + uint16_t max_effective_spads; + uint16_t dss_config__target_total_rate_mcps; + uint8_t dss_config__aperture_attenuation; +} VL53LX_hist_gen3_dmax_config_t; + + + +// define & typedef from vl53lx_hist_structs.h + +#define VL53LX_MAX_BIN_SEQUENCE_LENGTH 6 +#define VL53LX_MAX_BIN_SEQUENCE_CODE 15 +#define VL53LX_HISTOGRAM_BUFFER_SIZE 24 +#define VL53LX_XTALK_HISTO_BINS 12 + + + +typedef struct { + + uint8_t histogram_config__spad_array_selection; + + uint8_t histogram_config__low_amb_even_bin_0_1; + uint8_t histogram_config__low_amb_even_bin_2_3; + uint8_t histogram_config__low_amb_even_bin_4_5; + + uint8_t histogram_config__low_amb_odd_bin_0_1; + uint8_t histogram_config__low_amb_odd_bin_2_3; + uint8_t histogram_config__low_amb_odd_bin_4_5; + + uint8_t histogram_config__mid_amb_even_bin_0_1; + uint8_t histogram_config__mid_amb_even_bin_2_3; + uint8_t histogram_config__mid_amb_even_bin_4_5; + + uint8_t histogram_config__mid_amb_odd_bin_0_1; + uint8_t histogram_config__mid_amb_odd_bin_2; + uint8_t histogram_config__mid_amb_odd_bin_3_4; + uint8_t histogram_config__mid_amb_odd_bin_5; + + uint8_t histogram_config__user_bin_offset; + + uint8_t histogram_config__high_amb_even_bin_0_1; + uint8_t histogram_config__high_amb_even_bin_2_3; + uint8_t histogram_config__high_amb_even_bin_4_5; + + uint8_t histogram_config__high_amb_odd_bin_0_1; + uint8_t histogram_config__high_amb_odd_bin_2_3; + uint8_t histogram_config__high_amb_odd_bin_4_5; + + uint16_t histogram_config__amb_thresh_low; + + uint16_t histogram_config__amb_thresh_high; + + +} VL53LX_histogram_config_t; + + + + +typedef struct { + + VL53LX_HistAlgoSelect hist_algo_select; + + + VL53LX_HistTargetOrder hist_target_order; + + + uint8_t filter_woi0; + + uint8_t filter_woi1; + + + VL53LX_HistAmbEstMethod hist_amb_est_method; + + uint8_t ambient_thresh_sigma0; + + uint8_t ambient_thresh_sigma1; + + + + uint16_t ambient_thresh_events_scaler; + + + + int32_t min_ambient_thresh_events; + + uint16_t noise_threshold; + + + int32_t signal_total_events_limit; + + uint8_t sigma_estimator__sigma_ref_mm; + + uint16_t sigma_thresh; + + int16_t range_offset_mm; + + uint16_t gain_factor; + + + uint8_t valid_phase_low; + + uint8_t valid_phase_high; + + uint8_t algo__consistency_check__phase_tolerance; + + uint8_t algo__consistency_check__event_sigma; + + + + uint16_t algo__consistency_check__event_min_spad_count; + + + + uint16_t algo__consistency_check__min_max_tolerance; + + + uint8_t algo__crosstalk_compensation_enable; + + uint32_t algo__crosstalk_compensation_plane_offset_kcps; + + int16_t algo__crosstalk_compensation_x_plane_gradient_kcps; + + int16_t algo__crosstalk_compensation_y_plane_gradient_kcps; + + + int16_t algo__crosstalk_detect_min_valid_range_mm; + + int16_t algo__crosstalk_detect_max_valid_range_mm; + + uint16_t algo__crosstalk_detect_max_valid_rate_kcps; + + uint16_t algo__crosstalk_detect_max_sigma_mm; + + + + uint8_t algo__crosstalk_detect_event_sigma; + + + + uint16_t algo__crosstalk_detect_min_max_tolerance; + + +} VL53LX_hist_post_process_config_t; + + + +typedef struct { + + + VL53LX_DeviceState cfg_device_state; + + VL53LX_DeviceState rd_device_state; + + + uint8_t zone_id; + + uint32_t time_stamp; + + + uint8_t VL53LX_p_019; + + uint8_t VL53LX_p_020; + + uint8_t VL53LX_p_021; + + uint8_t number_of_ambient_bins; + + uint8_t bin_seq[VL53LX_MAX_BIN_SEQUENCE_LENGTH]; + + uint8_t bin_rep[VL53LX_MAX_BIN_SEQUENCE_LENGTH]; + + int32_t bin_data[VL53LX_HISTOGRAM_BUFFER_SIZE]; + + + uint8_t result__interrupt_status; + + uint8_t result__range_status; + + uint8_t result__report_status; + + uint8_t result__stream_count; + + uint16_t result__dss_actual_effective_spads; + + + uint16_t phasecal_result__reference_phase; + + uint8_t phasecal_result__vcsel_start; + + uint8_t cal_config__vcsel_start; + + uint16_t vcsel_width; + + uint8_t VL53LX_p_005; + + uint16_t VL53LX_p_015; + + uint32_t total_periods_elapsed; + + + uint32_t peak_duration_us; + + uint32_t woi_duration_us; + + + int32_t min_bin_value; + + int32_t max_bin_value; + + + uint16_t zero_distance_phase; + + uint8_t number_of_ambient_samples; + + int32_t ambient_events_sum; + + int32_t VL53LX_p_028; + + + uint8_t roi_config__user_roi_centre_spad; + + uint8_t roi_config__user_roi_requested_global_xy_size; + + +} VL53LX_histogram_bin_data_t; + + + + +typedef struct { + + + uint8_t zone_id; + + uint32_t time_stamp; + + + uint8_t VL53LX_p_019; + + uint8_t VL53LX_p_020; + + uint8_t VL53LX_p_021; + + uint32_t bin_data[VL53LX_XTALK_HISTO_BINS]; + + + + uint16_t phasecal_result__reference_phase; + + uint8_t phasecal_result__vcsel_start; + + uint8_t cal_config__vcsel_start; + + uint16_t vcsel_width; + + uint16_t VL53LX_p_015; + + uint16_t zero_distance_phase; + + +} VL53LX_xtalk_histogram_shape_t; + + + + +typedef struct { + + + VL53LX_xtalk_histogram_shape_t xtalk_shape; + + VL53LX_histogram_bin_data_t xtalk_hist_removed; + +} VL53LX_xtalk_histogram_data_t; + + +/* vl53lx_hist_private_structs.h */ + +#define VL53LX_D_001 8 + + + + + +typedef struct { + + uint8_t VL53LX_p_019; + + + uint8_t VL53LX_p_020; + + + uint8_t VL53LX_p_021; + + + uint8_t VL53LX_p_029; + + + int32_t VL53LX_p_016; + + + + int32_t VL53LX_p_043[VL53LX_HISTOGRAM_BUFFER_SIZE]; + + int32_t VL53LX_p_068[VL53LX_HISTOGRAM_BUFFER_SIZE]; + + + uint8_t VL53LX_p_040[VL53LX_HISTOGRAM_BUFFER_SIZE]; + + + int32_t VL53LX_p_018[VL53LX_HISTOGRAM_BUFFER_SIZE]; + + uint16_t VL53LX_p_014[VL53LX_HISTOGRAM_BUFFER_SIZE]; + + uint16_t VL53LX_p_008[VL53LX_HISTOGRAM_BUFFER_SIZE]; + + +} VL53LX_hist_gen1_algo_private_data_t; + + + + + + + + + + +typedef struct { + + uint8_t VL53LX_p_019; + + + uint8_t VL53LX_p_020; + + + uint8_t VL53LX_p_021; + + + uint16_t VL53LX_p_015; + + + uint8_t VL53LX_p_005; + + + uint8_t VL53LX_p_029; + + + int32_t VL53LX_p_028; + + + int32_t VL53LX_p_016; + + + + int32_t VL53LX_p_007[VL53LX_HISTOGRAM_BUFFER_SIZE]; + + + int32_t VL53LX_p_032[VL53LX_HISTOGRAM_BUFFER_SIZE]; + + + int32_t VL53LX_p_001[VL53LX_HISTOGRAM_BUFFER_SIZE]; + + + + int32_t VL53LX_p_018[VL53LX_HISTOGRAM_BUFFER_SIZE]; + + + int32_t VL53LX_p_055[VL53LX_HISTOGRAM_BUFFER_SIZE]; + + + int32_t VL53LX_p_053[VL53LX_HISTOGRAM_BUFFER_SIZE]; + + + int32_t VL53LX_p_054[VL53LX_HISTOGRAM_BUFFER_SIZE]; + + + +} VL53LX_hist_gen2_algo_filtered_data_t; + + + + + + + + + + +typedef struct { + + uint8_t VL53LX_p_019; + + + uint8_t VL53LX_p_020; + + + uint8_t VL53LX_p_021; + + + int32_t VL53LX_p_031; + + + + uint8_t VL53LX_p_069[VL53LX_HISTOGRAM_BUFFER_SIZE]; + + + uint8_t VL53LX_p_070[VL53LX_HISTOGRAM_BUFFER_SIZE]; + + + + uint32_t VL53LX_p_014[VL53LX_HISTOGRAM_BUFFER_SIZE]; + + + uint16_t VL53LX_p_008[VL53LX_HISTOGRAM_BUFFER_SIZE]; + + + + uint8_t VL53LX_p_040[VL53LX_HISTOGRAM_BUFFER_SIZE]; + + + +} VL53LX_hist_gen2_algo_detection_data_t; + + + + + + + + + + +typedef struct { + + uint8_t VL53LX_p_012; + + + uint8_t VL53LX_p_019; + + + uint8_t VL53LX_p_023; + + + uint8_t VL53LX_p_024; + + + uint8_t VL53LX_p_013; + + + + uint8_t VL53LX_p_025; + + + uint8_t VL53LX_p_051; + + + + int32_t VL53LX_p_016; + + + int32_t VL53LX_p_017; + + + int32_t VL53LX_p_010; + + + + uint32_t VL53LX_p_026; + + + uint32_t VL53LX_p_011; + + + uint32_t VL53LX_p_027; + + + + uint16_t VL53LX_p_002; + + + +} VL53LX_hist_pulse_data_t; + + + + + + + + + + +typedef struct { + + uint8_t VL53LX_p_019; + + + uint8_t VL53LX_p_020; + + + uint8_t VL53LX_p_021; + + + uint8_t VL53LX_p_030; + + + uint8_t VL53LX_p_039; + + + int32_t VL53LX_p_028; + + + int32_t VL53LX_p_031; + + + + uint8_t VL53LX_p_040[VL53LX_HISTOGRAM_BUFFER_SIZE]; + + + uint8_t VL53LX_p_041[VL53LX_HISTOGRAM_BUFFER_SIZE]; + + + uint8_t VL53LX_p_042[VL53LX_HISTOGRAM_BUFFER_SIZE]; + + + + int32_t VL53LX_p_052[VL53LX_HISTOGRAM_BUFFER_SIZE]; + + + int32_t VL53LX_p_043[VL53LX_HISTOGRAM_BUFFER_SIZE]; + + + int32_t VL53LX_p_018[VL53LX_HISTOGRAM_BUFFER_SIZE]; + + + + uint8_t VL53LX_p_044; + + + uint8_t VL53LX_p_045; + + + uint8_t VL53LX_p_046; + + + + VL53LX_hist_pulse_data_t VL53LX_p_003[VL53LX_D_001]; + + + + + + + VL53LX_histogram_bin_data_t VL53LX_p_006; + + + VL53LX_histogram_bin_data_t VL53LX_p_047; + + + VL53LX_histogram_bin_data_t VL53LX_p_048; + + + VL53LX_histogram_bin_data_t VL53LX_p_049; + + + VL53LX_histogram_bin_data_t VL53LX_p_050; + + + + + + +} VL53LX_hist_gen3_algo_private_data_t; + + + + + + + + + + +typedef struct { + + uint8_t VL53LX_p_019; + + + uint8_t VL53LX_p_020; + + + uint8_t VL53LX_p_021; + + + + int32_t VL53LX_p_007[VL53LX_HISTOGRAM_BUFFER_SIZE]; + + + int32_t VL53LX_p_032[VL53LX_HISTOGRAM_BUFFER_SIZE]; + + + int32_t VL53LX_p_001[VL53LX_HISTOGRAM_BUFFER_SIZE]; + + + + int32_t VL53LX_p_053[VL53LX_HISTOGRAM_BUFFER_SIZE]; + + + int32_t VL53LX_p_054[VL53LX_HISTOGRAM_BUFFER_SIZE]; + + + + uint8_t VL53LX_p_040[VL53LX_HISTOGRAM_BUFFER_SIZE]; + + + +} VL53LX_hist_gen4_algo_filtered_data_t; + + + +// define & typedef from VL53Lx_ll_def.h + + + + +#define VL53LX_LL_API_IMPLEMENTATION_VER_MAJOR 1 + +#define VL53LX_LL_API_IMPLEMENTATION_VER_MINOR 1 + +#define VL53LX_LL_API_IMPLEMENTATION_VER_SUB 1 + +#define VL53LX_LL_API_IMPLEMENTATION_VER_REVISION 0 + +#define VL53LX_LL_API_IMPLEMENTATION_VER_STRING "1.1.1" + + +#define VL53LX_FIRMWARE_VER_MINIMUM 398 +#define VL53LX_FIRMWARE_VER_MAXIMUM 400 + + + + +#define VL53LX_LL_CALIBRATION_DATA_STRUCT_VERSION 0xECAB0102 + + + + +#define VL53LX_LL_ZONE_CALIBRATION_DATA_STRUCT_VERSION 0xECAE0101 + + + + + +#define VL53LX_BIN_REC_SIZE 6 + +#define VL53LX_TIMING_CONF_A_B_SIZE 2 + +#define VL53LX_FRAME_WAIT_EVENT 6 + + + + +#define VL53LX_MAX_XTALK_RANGE_RESULTS 5 + + +#define VL53LX_MAX_OFFSET_RANGE_RESULTS 3 + + +#define VL53LX_NVM_MAX_FMT_RANGE_DATA 4 + + +#define VL53LX_NVM_PEAK_RATE_MAP_SAMPLES 25 + +#define VL53LX_NVM_PEAK_RATE_MAP_WIDTH 5 + +#define VL53LX_NVM_PEAK_RATE_MAP_HEIGHT 5 + + + + +#define VL53LX_ERROR_DEVICE_FIRMWARE_TOO_OLD ((VL53LX_Error) - 80) + +#define VL53LX_ERROR_DEVICE_FIRMWARE_TOO_NEW ((VL53LX_Error) - 85) + +#define VL53LX_ERROR_UNIT_TEST_FAIL ((VL53LX_Error) - 90) + +#define VL53LX_ERROR_FILE_READ_FAIL ((VL53LX_Error) - 95) + +#define VL53LX_ERROR_FILE_WRITE_FAIL ((VL53LX_Error) - 96) + + + + + + +typedef struct { + uint32_t ll_revision; + uint8_t ll_major; + uint8_t ll_minor; + uint8_t ll_build; +} VL53LX_ll_version_t; + + + + +typedef struct { + + uint8_t device_test_mode; + uint8_t VL53LX_p_005; + uint32_t timeout_us; + uint16_t target_count_rate_mcps; + + uint16_t min_count_rate_limit_mcps; + + uint16_t max_count_rate_limit_mcps; + + +} VL53LX_refspadchar_config_t; + + + + +typedef struct { + + uint16_t dss_config__target_total_rate_mcps; + + uint32_t phasecal_config_timeout_us; + + uint32_t mm_config_timeout_us; + + uint32_t range_config_timeout_us; + + uint8_t num_of_samples; + + int16_t algo__crosstalk_extract_min_valid_range_mm; + + int16_t algo__crosstalk_extract_max_valid_range_mm; + + uint16_t algo__crosstalk_extract_max_valid_rate_kcps; + + uint16_t algo__crosstalk_extract_max_sigma_mm; + + +} VL53LX_xtalkextract_config_t; + + + + +typedef struct { + + uint16_t dss_config__target_total_rate_mcps; + + uint32_t phasecal_config_timeout_us; + + uint32_t range_config_timeout_us; + + uint32_t mm_config_timeout_us; + + uint8_t pre_num_of_samples; + + uint8_t mm1_num_of_samples; + + uint8_t mm2_num_of_samples; + + +} VL53LX_offsetcal_config_t; + + + + +typedef struct { + + uint16_t dss_config__target_total_rate_mcps; + + uint32_t phasecal_config_timeout_us; + + uint32_t mm_config_timeout_us; + + uint32_t range_config_timeout_us; + + uint16_t phasecal_num_of_samples; + + uint16_t zone_num_of_samples; + + +} VL53LX_zonecal_config_t; + + + + + +typedef struct { + + VL53LX_DeviceSscArray array_select; + + uint8_t VL53LX_p_005; + + uint8_t vcsel_start; + + uint8_t vcsel_width; + + uint32_t timeout_us; + + uint16_t rate_limit_mcps; + + +} VL53LX_ssc_config_t; + + + + +typedef struct { + + + uint32_t algo__crosstalk_compensation_plane_offset_kcps; + + int16_t algo__crosstalk_compensation_x_plane_gradient_kcps; + + int16_t algo__crosstalk_compensation_y_plane_gradient_kcps; + + uint32_t nvm_default__crosstalk_compensation_plane_offset_kcps; + + int16_t nvm_default__crosstalk_compensation_x_plane_gradient_kcps; + + int16_t nvm_default__crosstalk_compensation_y_plane_gradient_kcps; + + uint8_t global_crosstalk_compensation_enable; + + int16_t histogram_mode_crosstalk_margin_kcps; + + int16_t lite_mode_crosstalk_margin_kcps; + + uint8_t crosstalk_range_ignore_threshold_mult; + + uint16_t crosstalk_range_ignore_threshold_rate_mcps; + + int16_t algo__crosstalk_detect_min_valid_range_mm; + + int16_t algo__crosstalk_detect_max_valid_range_mm; + + uint16_t algo__crosstalk_detect_max_valid_rate_kcps; + + uint16_t algo__crosstalk_detect_max_sigma_mm; + + + +} VL53LX_xtalk_config_t; + + + + +typedef struct { + + + uint16_t tp_tuning_parm_version; + + uint16_t tp_tuning_parm_key_table_version; + + uint16_t tp_tuning_parm_lld_version; + + uint8_t tp_init_phase_rtn_lite_long; + + uint8_t tp_init_phase_rtn_lite_med; + + uint8_t tp_init_phase_rtn_lite_short; + + uint8_t tp_init_phase_ref_lite_long; + + uint8_t tp_init_phase_ref_lite_med; + + uint8_t tp_init_phase_ref_lite_short; + + + uint8_t tp_init_phase_rtn_hist_long; + + uint8_t tp_init_phase_rtn_hist_med; + + uint8_t tp_init_phase_rtn_hist_short; + + uint8_t tp_init_phase_ref_hist_long; + + uint8_t tp_init_phase_ref_hist_med; + + uint8_t tp_init_phase_ref_hist_short; + + + uint8_t tp_consistency_lite_phase_tolerance; + + uint8_t tp_phasecal_target; + + uint16_t tp_cal_repeat_rate; + + uint8_t tp_lite_min_clip; + + + uint16_t tp_lite_long_sigma_thresh_mm; + + uint16_t tp_lite_med_sigma_thresh_mm; + + uint16_t tp_lite_short_sigma_thresh_mm; + + + uint16_t tp_lite_long_min_count_rate_rtn_mcps; + + uint16_t tp_lite_med_min_count_rate_rtn_mcps; + + uint16_t tp_lite_short_min_count_rate_rtn_mcps; + + + uint8_t tp_lite_sigma_est_pulse_width_ns; + + uint8_t tp_lite_sigma_est_amb_width_ns; + + uint8_t tp_lite_sigma_ref_mm; + + uint8_t tp_lite_seed_cfg; + + uint8_t tp_timed_seed_cfg; + + + uint8_t tp_lite_quantifier; + + uint8_t tp_lite_first_order_select; + + + uint16_t tp_dss_target_lite_mcps; + + uint16_t tp_dss_target_histo_mcps; + + uint16_t tp_dss_target_histo_mz_mcps; + + uint16_t tp_dss_target_timed_mcps; + + uint16_t tp_dss_target_very_short_mcps; + + + uint32_t tp_phasecal_timeout_lite_us; + + uint32_t tp_phasecal_timeout_hist_long_us; + + uint32_t tp_phasecal_timeout_hist_med_us; + + uint32_t tp_phasecal_timeout_hist_short_us; + + + uint32_t tp_phasecal_timeout_mz_long_us; + + uint32_t tp_phasecal_timeout_mz_med_us; + + uint32_t tp_phasecal_timeout_mz_short_us; + + uint32_t tp_phasecal_timeout_timed_us; + + + uint32_t tp_mm_timeout_lite_us; + + uint32_t tp_mm_timeout_histo_us; + + uint32_t tp_mm_timeout_mz_us; + + uint32_t tp_mm_timeout_timed_us; + + uint32_t tp_mm_timeout_lpa_us; + + + uint32_t tp_range_timeout_lite_us; + + uint32_t tp_range_timeout_histo_us; + + uint32_t tp_range_timeout_mz_us; + + uint32_t tp_range_timeout_timed_us; + + uint32_t tp_range_timeout_lpa_us; + + uint32_t tp_phasecal_patch_power; + + uint32_t tp_hist_merge; + + uint32_t tp_reset_merge_threshold; + + uint32_t tp_hist_merge_max_size; + + +} VL53LX_tuning_parm_storage_t; + + + + + +typedef struct { + + uint8_t x_centre; + uint8_t y_centre; + +} VL53LX_optical_centre_t; + + + + +typedef struct { + + uint8_t x_centre; + uint8_t y_centre; + uint8_t width; + uint8_t height; + +} VL53LX_user_zone_t; + + + + +typedef struct { + + uint8_t max_zones; + uint8_t active_zones; + + + + VL53LX_histogram_config_t multizone_hist_cfg; + + VL53LX_user_zone_t user_zones[VL53LX_MAX_USER_ZONES]; + + + uint8_t bin_config[VL53LX_MAX_USER_ZONES]; + + +} VL53LX_zone_config_t; + + + +typedef struct { + + + VL53LX_GPIO_Interrupt_Mode intr_mode_distance; + + + VL53LX_GPIO_Interrupt_Mode intr_mode_rate; + + + uint8_t intr_new_measure_ready; + + + uint8_t intr_no_target; + + + uint8_t intr_combined_mode; + + + + + + uint16_t threshold_distance_high; + + + uint16_t threshold_distance_low; + + + uint16_t threshold_rate_high; + + + uint16_t threshold_rate_low; + +} VL53LX_GPIO_interrupt_config_t; + + + + +typedef struct { + + + uint8_t vhv_loop_bound; + + + uint8_t is_low_power_auto_mode; + + + uint8_t low_power_auto_range_count; + + + uint8_t saved_interrupt_config; + + + uint8_t saved_vhv_init; + + + uint8_t saved_vhv_timeout; + + + uint8_t first_run_phasecal_result; + + + uint32_t dss__total_rate_per_spad_mcps; + + + uint16_t dss__required_spads; + +} VL53LX_low_power_auto_data_t; + + + + + + + +typedef struct { + + + uint8_t smudge_corr_enabled; + + + uint8_t smudge_corr_apply_enabled; + + + uint8_t smudge_corr_single_apply; + + + + + uint16_t smudge_margin; + + + uint32_t noise_margin; + + + uint32_t user_xtalk_offset_limit; + + + uint8_t user_xtalk_offset_limit_hi; + + + uint32_t sample_limit; + + + uint32_t single_xtalk_delta; + + + uint32_t averaged_xtalk_delta; + + + uint32_t smudge_corr_clip_limit; + + + uint32_t smudge_corr_ambient_threshold; + + + uint8_t scaler_calc_method; + + + int16_t x_gradient_scaler; + + + int16_t y_gradient_scaler; + + + uint8_t user_scaler_set; + + + uint32_t nodetect_ambient_threshold; + + + uint32_t nodetect_sample_limit; + + + uint32_t nodetect_xtalk_offset; + + + uint16_t nodetect_min_range_mm; + + + uint32_t max_smudge_factor; + +} VL53LX_smudge_corrector_config_t; + + + +typedef struct { + + + uint32_t current_samples; + + + uint32_t required_samples; + + + uint64_t accumulator; + + + uint32_t nodetect_counter; + +} VL53LX_smudge_corrector_internals_t; + + + +typedef struct { + + + uint8_t smudge_corr_valid; + + + uint8_t smudge_corr_clipped; + + + uint8_t single_xtalk_delta_flag; + + + uint8_t averaged_xtalk_delta_flag; + + + uint8_t sample_limit_exceeded_flag; + + + uint8_t gradient_zero_flag; + + + uint8_t new_xtalk_applied_flag; + + + uint32_t algo__crosstalk_compensation_plane_offset_kcps; + + + int16_t algo__crosstalk_compensation_x_plane_gradient_kcps; + + + int16_t algo__crosstalk_compensation_y_plane_gradient_kcps; + + +} VL53LX_smudge_corrector_data_t; + + + + + +typedef struct { + + + + uint8_t range_id; + + uint32_t time_stamp; + + uint8_t VL53LX_p_012; + + uint8_t VL53LX_p_019; + + uint8_t VL53LX_p_023; + + uint8_t VL53LX_p_024; + + uint8_t VL53LX_p_013; + + uint8_t VL53LX_p_025; + + + uint16_t width; + + uint8_t VL53LX_p_029; + + + uint16_t fast_osc_frequency; + + uint16_t zero_distance_phase; + + uint16_t VL53LX_p_004; + + + uint32_t total_periods_elapsed; + + + uint32_t peak_duration_us; + + + uint32_t woi_duration_us; + + + + + + uint32_t VL53LX_p_016; + + uint32_t VL53LX_p_017; + + int32_t VL53LX_p_010; + + + + + uint16_t peak_signal_count_rate_mcps; + + uint16_t avg_signal_count_rate_mcps; + + uint16_t ambient_count_rate_mcps; + + uint16_t total_rate_per_spad_mcps; + + uint32_t VL53LX_p_009; + + + + + uint16_t VL53LX_p_002; + + + + + uint16_t VL53LX_p_026; + + uint16_t VL53LX_p_011; + + uint16_t VL53LX_p_027; + + + + + int16_t min_range_mm; + + int16_t median_range_mm; + + int16_t max_range_mm; + + + + + uint8_t range_status; + +} VL53LX_range_data_t; + + + + +typedef struct { + + VL53LX_DeviceState cfg_device_state; + + VL53LX_DeviceState rd_device_state; + + uint8_t zone_id; + + uint8_t stream_count; + + + int16_t VL53LX_p_022[VL53LX_MAX_AMBIENT_DMAX_VALUES]; + + int16_t wrap_dmax_mm; + + + uint8_t device_status; + + + uint8_t max_results; + + uint8_t active_results; + + VL53LX_range_data_t VL53LX_p_003[VL53LX_MAX_RANGE_RESULTS]; + + VL53LX_range_data_t xmonitor; + + VL53LX_smudge_corrector_data_t smudge_corrector_data; + + + +} VL53LX_range_results_t; + + + + +typedef struct { + + uint8_t no_of_samples; + + uint32_t rate_per_spad_kcps_sum; + + uint32_t rate_per_spad_kcps_avg; + + int32_t signal_total_events_sum; + + int32_t signal_total_events_avg; + + uint32_t sigma_mm_sum; + + uint32_t sigma_mm_avg; + + uint32_t median_phase_sum; + + uint32_t median_phase_avg; + + +} VL53LX_xtalk_range_data_t; + + + + +typedef struct { + + VL53LX_Error cal_status; + + uint8_t num_of_samples_status; + + uint8_t zero_samples_status; + + uint8_t max_sigma_status; + + uint8_t max_results; + + uint8_t active_results; + + + VL53LX_xtalk_range_data_t + VL53LX_p_003[VL53LX_MAX_XTALK_RANGE_RESULTS]; + + VL53LX_histogram_bin_data_t central_histogram_sum; + + VL53LX_histogram_bin_data_t central_histogram_avg; + + uint8_t central_histogram__window_start; + + uint8_t central_histogram__window_end; + + VL53LX_histogram_bin_data_t + histogram_avg_1[VL53LX_MAX_XTALK_RANGE_RESULTS]; + + VL53LX_histogram_bin_data_t + histogram_avg_2[VL53LX_MAX_XTALK_RANGE_RESULTS]; + + VL53LX_histogram_bin_data_t + xtalk_avg[VL53LX_MAX_XTALK_RANGE_RESULTS]; + + +} VL53LX_xtalk_range_results_t; + + + + +typedef struct { + + uint8_t preset_mode; + + uint8_t dss_config__roi_mode_control; + + uint16_t dss_config__manual_effective_spads_select; + + uint8_t no_of_samples; + + uint32_t effective_spads; + + uint32_t peak_rate_mcps; + + uint32_t VL53LX_p_002; + + int32_t median_range_mm; + + int32_t range_mm_offset; + + +} VL53LX_offset_range_data_t; + + + + +typedef struct { + + int16_t cal_distance_mm; + + uint16_t cal_reflectance_pc; + + VL53LX_Error cal_status; + + uint8_t cal_report; + + uint8_t max_results; + + uint8_t active_results; + + VL53LX_offset_range_data_t + VL53LX_p_003[VL53LX_MAX_OFFSET_RANGE_RESULTS]; + + +} VL53LX_offset_range_results_t; + + + + +typedef struct { + + uint16_t result__mm_inner_actual_effective_spads; + + uint16_t result__mm_outer_actual_effective_spads; + + uint16_t result__mm_inner_peak_signal_count_rtn_mcps; + + uint16_t result__mm_outer_peak_signal_count_rtn_mcps; + + +} VL53LX_additional_offset_cal_data_t; + + + +typedef struct { + int16_t short_a_offset_mm; + int16_t short_b_offset_mm; + int16_t medium_a_offset_mm; + int16_t medium_b_offset_mm; + int16_t long_a_offset_mm; + int16_t long_b_offset_mm; +} VL53LX_per_vcsel_period_offset_cal_data_t; + + + + + +typedef struct { + + uint32_t VL53LX_p_016; + + uint32_t VL53LX_p_017; + + uint16_t VL53LX_p_011; + + uint8_t range_status; + + +} VL53LX_object_data_t; + + + + +typedef struct { + + VL53LX_DeviceState cfg_device_state; + + VL53LX_DeviceState rd_device_state; + + uint8_t zone_id; + + uint8_t stream_count; + + uint8_t max_objects; + + uint8_t active_objects; + + VL53LX_object_data_t VL53LX_p_003[VL53LX_MAX_RANGE_RESULTS]; + + + VL53LX_object_data_t xmonitor; + + +} VL53LX_zone_objects_t; + + + + + + +typedef struct { + + uint8_t max_zones; + + uint8_t active_zones; + + VL53LX_zone_objects_t VL53LX_p_003[VL53LX_MAX_USER_ZONES]; + + +} VL53LX_zone_results_t; + + + + +typedef struct { + + VL53LX_DeviceState rd_device_state; + + + uint8_t number_of_ambient_bins; + + + uint16_t result__dss_actual_effective_spads; + + uint8_t VL53LX_p_005; + + uint32_t total_periods_elapsed; + + + int32_t ambient_events_sum; + + +} VL53LX_zone_hist_info_t; + + + + +typedef struct { + + uint8_t max_zones; + + uint8_t active_zones; + + VL53LX_zone_hist_info_t VL53LX_p_003[VL53LX_MAX_USER_ZONES]; + + +} VL53LX_zone_histograms_t; + + + + +typedef struct { + + uint32_t no_of_samples; + + uint32_t effective_spads; + + uint32_t peak_rate_mcps; + + uint32_t VL53LX_p_011; + + uint32_t VL53LX_p_002; + + int32_t median_range_mm; + + int32_t range_mm_offset; + + +} VL53LX_zone_calibration_data_t; + + + + + + +typedef struct { + + uint32_t struct_version; + + VL53LX_DevicePresetModes preset_mode; + + VL53LX_DeviceZonePreset zone_preset; + + int16_t cal_distance_mm; + + uint16_t cal_reflectance_pc; + + uint16_t phasecal_result__reference_phase; + + uint16_t zero_distance_phase; + + VL53LX_Error cal_status; + + uint8_t max_zones; + + uint8_t active_zones; + + VL53LX_zone_calibration_data_t VL53LX_p_003[VL53LX_MAX_USER_ZONES]; + + +} VL53LX_zone_calibration_results_t; + + + + + +typedef struct { + + int16_t cal_distance_mm; + + uint16_t cal_reflectance_pc; + + uint16_t max_samples; + + uint16_t width; + + uint16_t height; + + uint16_t peak_rate_mcps[VL53LX_NVM_PEAK_RATE_MAP_SAMPLES]; + + +} VL53LX_cal_peak_rate_map_t; + + + + +typedef struct { + + uint8_t expected_stream_count; + + uint8_t expected_gph_id; + + uint8_t dss_mode; + + uint16_t dss_requested_effective_spad_count; + + uint8_t seed_cfg; + + uint8_t initial_phase_seed; + + + uint8_t roi_config__user_roi_centre_spad; + + uint8_t roi_config__user_roi_requested_global_xy_size; + + +} VL53LX_zone_private_dyn_cfg_t; + + + + +typedef struct { + + uint8_t max_zones; + + uint8_t active_zones; + + VL53LX_zone_private_dyn_cfg_t VL53LX_p_003[VL53LX_MAX_USER_ZONES]; + + +} VL53LX_zone_private_dyn_cfgs_t; + + + +typedef struct { + + uint32_t algo__crosstalk_compensation_plane_offset_kcps; + + int16_t algo__crosstalk_compensation_x_plane_gradient_kcps; + + int16_t algo__crosstalk_compensation_y_plane_gradient_kcps; + + uint32_t algo__xtalk_cpo_HistoMerge_kcps[VL53LX_BIN_REC_SIZE]; + + +} VL53LX_xtalk_calibration_results_t; + + + + +typedef struct { + + + uint32_t sample_count; + + + uint32_t pll_period_mm; + + + uint32_t peak_duration_us_sum; + + + uint32_t effective_spad_count_sum; + + + uint32_t zero_distance_phase_sum; + + + uint32_t zero_distance_phase_avg; + + + int32_t event_scaler_sum; + + + int32_t event_scaler_avg; + + + int32_t signal_events_sum; + + + uint32_t xtalk_rate_kcps_per_spad; + + + int32_t xtalk_start_phase; + + + int32_t xtalk_end_phase; + + + int32_t xtalk_width_phase; + + + int32_t target_start_phase; + + + int32_t target_end_phase; + + + int32_t target_width_phase; + + + int32_t effective_width; + + + int32_t event_scaler; + + + uint8_t VL53LX_p_012; + + + uint8_t VL53LX_p_013; + + + uint8_t target_start; + + + int32_t max_shape_value; + + + int32_t bin_data_sums[VL53LX_XTALK_HISTO_BINS]; + +} VL53LX_hist_xtalk_extract_data_t; + + + + +typedef struct { + + uint16_t standard_ranging_gain_factor; + + uint16_t histogram_ranging_gain_factor; + + +} VL53LX_gain_calibration_data_t; + + + + +typedef struct { + + VL53LX_DeviceState cfg_device_state; + + uint8_t cfg_stream_count; + + uint8_t cfg_internal_stream_count; + + uint8_t cfg_internal_stream_count_val; + + uint8_t cfg_gph_id; + + uint8_t cfg_timing_status; + + uint8_t cfg_zone_id; + + + VL53LX_DeviceState rd_device_state; + + uint8_t rd_stream_count; + + uint8_t rd_internal_stream_count; + + uint8_t rd_internal_stream_count_val; + + uint8_t rd_gph_id; + + uint8_t rd_timing_status; + + uint8_t rd_zone_id; + + +} VL53LX_ll_driver_state_t; + + + + +typedef struct { + + uint8_t wait_method; + + VL53LX_DevicePresetModes preset_mode; + + VL53LX_DeviceZonePreset zone_preset; + + VL53LX_DeviceMeasurementModes measurement_mode; + + VL53LX_OffsetCalibrationMode offset_calibration_mode; + + VL53LX_OffsetCorrectionMode offset_correction_mode; + + VL53LX_DeviceDmaxMode dmax_mode; + + uint32_t phasecal_config_timeout_us; + + uint32_t mm_config_timeout_us; + + uint32_t range_config_timeout_us; + + uint32_t inter_measurement_period_ms; + + uint16_t dss_config__target_total_rate_mcps; + + uint32_t fw_ready_poll_duration_ms; + + uint8_t fw_ready; + + uint8_t debug_mode; + + + + VL53LX_ll_version_t version; + + + VL53LX_ll_driver_state_t ll_state; + + + VL53LX_GPIO_interrupt_config_t gpio_interrupt_config; + + + VL53LX_customer_nvm_managed_t customer; + VL53LX_cal_peak_rate_map_t cal_peak_rate_map; + VL53LX_additional_offset_cal_data_t add_off_cal_data; + VL53LX_dmax_calibration_data_t fmt_dmax_cal; + VL53LX_dmax_calibration_data_t cust_dmax_cal; + VL53LX_gain_calibration_data_t gain_cal; + VL53LX_user_zone_t mm_roi; + VL53LX_optical_centre_t optical_centre; + VL53LX_zone_config_t zone_cfg; + + + VL53LX_tuning_parm_storage_t tuning_parms; + + + uint8_t rtn_good_spads[VL53LX_RTN_SPAD_BUFFER_SIZE]; + + + VL53LX_refspadchar_config_t refspadchar; + VL53LX_ssc_config_t ssc_cfg; + VL53LX_hist_post_process_config_t histpostprocess; + VL53LX_hist_gen3_dmax_config_t dmax_cfg; + VL53LX_xtalkextract_config_t xtalk_extract_cfg; + VL53LX_xtalk_config_t xtalk_cfg; + VL53LX_offsetcal_config_t offsetcal_cfg; + VL53LX_zonecal_config_t zonecal_cfg; + + + VL53LX_static_nvm_managed_t stat_nvm; + VL53LX_histogram_config_t hist_cfg; + VL53LX_static_config_t stat_cfg; + VL53LX_general_config_t gen_cfg; + VL53LX_timing_config_t tim_cfg; + VL53LX_dynamic_config_t dyn_cfg; + VL53LX_system_control_t sys_ctrl; + VL53LX_system_results_t sys_results; + VL53LX_nvm_copy_data_t nvm_copy_data; + + + VL53LX_histogram_bin_data_t hist_data; + VL53LX_histogram_bin_data_t hist_xtalk; + + + VL53LX_xtalk_histogram_data_t xtalk_shapes; + VL53LX_xtalk_range_results_t xtalk_results; + VL53LX_xtalk_calibration_results_t xtalk_cal; + VL53LX_hist_xtalk_extract_data_t xtalk_extract; + + + VL53LX_offset_range_results_t offset_results; + + + VL53LX_core_results_t core_results; + VL53LX_debug_results_t dbg_results; + + VL53LX_smudge_corrector_config_t smudge_correct_config; + + VL53LX_smudge_corrector_internals_t smudge_corrector_internals; + + + + + VL53LX_low_power_auto_data_t low_power_auto_data; + + uint8_t wArea1[1536]; + uint8_t wArea2[512]; + VL53LX_per_vcsel_period_offset_cal_data_t per_vcsel_cal_data; + + uint8_t bin_rec_pos; + + uint8_t pos_before_next_recom; + + int32_t multi_bins_rec[VL53LX_BIN_REC_SIZE] + [VL53LX_TIMING_CONF_A_B_SIZE][VL53LX_HISTOGRAM_BUFFER_SIZE]; + +} VL53LX_LLDriverData_t; + + + + +typedef struct { + + + VL53LX_range_results_t range_results; + + + VL53LX_zone_private_dyn_cfgs_t zone_dyn_cfgs; + + + VL53LX_zone_results_t zone_results; + VL53LX_zone_histograms_t zone_hists; + VL53LX_zone_calibration_results_t zone_cal; + +} VL53LX_LLDriverResults_t; + + + + +typedef struct { + + uint32_t struct_version; + VL53LX_customer_nvm_managed_t customer; + VL53LX_dmax_calibration_data_t fmt_dmax_cal; + VL53LX_dmax_calibration_data_t cust_dmax_cal; + VL53LX_additional_offset_cal_data_t add_off_cal_data; + VL53LX_optical_centre_t optical_centre; + VL53LX_xtalk_histogram_data_t xtalkhisto; + VL53LX_gain_calibration_data_t gain_cal; + VL53LX_cal_peak_rate_map_t cal_peak_rate_map; + VL53LX_per_vcsel_period_offset_cal_data_t per_vcsel_cal_data; + +} VL53LX_calibration_data_t; + + + + +typedef struct { + + VL53LX_customer_nvm_managed_t customer; + VL53LX_xtalkextract_config_t xtalk_extract_cfg; + VL53LX_xtalk_config_t xtalk_cfg; + VL53LX_histogram_bin_data_t hist_data; + VL53LX_xtalk_histogram_data_t xtalk_shapes; + VL53LX_xtalk_range_results_t xtalk_results; + +} VL53LX_xtalk_debug_data_t; + + + + +typedef struct { + + VL53LX_customer_nvm_managed_t customer; + VL53LX_dmax_calibration_data_t fmt_dmax_cal; + VL53LX_dmax_calibration_data_t cust_dmax_cal; + VL53LX_additional_offset_cal_data_t add_off_cal_data; + VL53LX_offset_range_results_t offset_results; + +} VL53LX_offset_debug_data_t; + + + + +typedef struct { + uint16_t vl53lx_tuningparm_version; + uint16_t vl53lx_tuningparm_key_table_version; + uint16_t vl53lx_tuningparm_lld_version; + uint8_t vl53lx_tuningparm_hist_algo_select; + uint8_t vl53lx_tuningparm_hist_target_order; + uint8_t vl53lx_tuningparm_hist_filter_woi_0; + uint8_t vl53lx_tuningparm_hist_filter_woi_1; + uint8_t vl53lx_tuningparm_hist_amb_est_method; + uint8_t vl53lx_tuningparm_hist_amb_thresh_sigma_0; + uint8_t vl53lx_tuningparm_hist_amb_thresh_sigma_1; + int32_t vl53lx_tuningparm_hist_min_amb_thresh_events; + uint16_t vl53lx_tuningparm_hist_amb_events_scaler; + uint16_t vl53lx_tuningparm_hist_noise_threshold; + int32_t vl53lx_tuningparm_hist_signal_total_events_limit; + uint8_t vl53lx_tuningparm_hist_sigma_est_ref_mm; + uint16_t vl53lx_tuningparm_hist_sigma_thresh_mm; + uint16_t vl53lx_tuningparm_hist_gain_factor; + uint8_t vl53lx_tuningparm_consistency_hist_phase_tolerance; + uint16_t vl53lx_tuningparm_consistency_hist_min_max_tolerance_mm; + uint8_t vl53lx_tuningparm_consistency_hist_event_sigma; + uint16_t vl53lx_tuningparm_consistency_hist_event_sigma_min_spad_limit; + uint8_t vl53lx_tuningparm_initial_phase_rtn_histo_long_range; + uint8_t vl53lx_tuningparm_initial_phase_rtn_histo_med_range; + uint8_t vl53lx_tuningparm_initial_phase_rtn_histo_short_range; + uint8_t vl53lx_tuningparm_initial_phase_ref_histo_long_range; + uint8_t vl53lx_tuningparm_initial_phase_ref_histo_med_range; + uint8_t vl53lx_tuningparm_initial_phase_ref_histo_short_range; + int16_t vl53lx_tuningparm_xtalk_detect_min_valid_range_mm; + int16_t vl53lx_tuningparm_xtalk_detect_max_valid_range_mm; + uint16_t vl53lx_tuningparm_xtalk_detect_max_sigma_mm; + uint16_t vl53lx_tuningparm_xtalk_detect_min_max_tolerance; + uint16_t vl53lx_tuningparm_xtalk_detect_max_valid_rate_kcps; + uint8_t vl53lx_tuningparm_xtalk_detect_event_sigma; + int16_t vl53lx_tuningparm_hist_xtalk_margin_kcps; + uint8_t vl53lx_tuningparm_consistency_lite_phase_tolerance; + uint8_t vl53lx_tuningparm_phasecal_target; + uint16_t vl53lx_tuningparm_lite_cal_repeat_rate; + uint16_t vl53lx_tuningparm_lite_ranging_gain_factor; + uint8_t vl53lx_tuningparm_lite_min_clip_mm; + uint16_t vl53lx_tuningparm_lite_long_sigma_thresh_mm; + uint16_t vl53lx_tuningparm_lite_med_sigma_thresh_mm; + uint16_t vl53lx_tuningparm_lite_short_sigma_thresh_mm; + uint16_t vl53lx_tuningparm_lite_long_min_count_rate_rtn_mcps; + uint16_t vl53lx_tuningparm_lite_med_min_count_rate_rtn_mcps; + uint16_t vl53lx_tuningparm_lite_short_min_count_rate_rtn_mcps; + uint8_t vl53lx_tuningparm_lite_sigma_est_pulse_width; + uint8_t vl53lx_tuningparm_lite_sigma_est_amb_width_ns; + uint8_t vl53lx_tuningparm_lite_sigma_ref_mm; + uint8_t vl53lx_tuningparm_lite_rit_mult; + uint8_t vl53lx_tuningparm_lite_seed_config; + uint8_t vl53lx_tuningparm_lite_quantifier; + uint8_t vl53lx_tuningparm_lite_first_order_select; + int16_t vl53lx_tuningparm_lite_xtalk_margin_kcps; + uint8_t vl53lx_tuningparm_initial_phase_rtn_lite_long_range; + uint8_t vl53lx_tuningparm_initial_phase_rtn_lite_med_range; + uint8_t vl53lx_tuningparm_initial_phase_rtn_lite_short_range; + uint8_t vl53lx_tuningparm_initial_phase_ref_lite_long_range; + uint8_t vl53lx_tuningparm_initial_phase_ref_lite_med_range; + uint8_t vl53lx_tuningparm_initial_phase_ref_lite_short_range; + uint8_t vl53lx_tuningparm_timed_seed_config; + uint8_t vl53lx_tuningparm_dmax_cfg_signal_thresh_sigma; + uint16_t vl53lx_tuningparm_dmax_cfg_reflectance_array_0; + uint16_t vl53lx_tuningparm_dmax_cfg_reflectance_array_1; + uint16_t vl53lx_tuningparm_dmax_cfg_reflectance_array_2; + uint16_t vl53lx_tuningparm_dmax_cfg_reflectance_array_3; + uint16_t vl53lx_tuningparm_dmax_cfg_reflectance_array_4; + uint8_t vl53lx_tuningparm_vhv_loopbound; + uint8_t vl53lx_tuningparm_refspadchar_device_test_mode; + uint8_t vl53lx_tuningparm_refspadchar_vcsel_period; + uint32_t vl53lx_tuningparm_refspadchar_phasecal_timeout_us; + uint16_t vl53lx_tuningparm_refspadchar_target_count_rate_mcps; + uint16_t vl53lx_tuningparm_refspadchar_min_countrate_limit_mcps; + uint16_t vl53lx_tuningparm_refspadchar_max_countrate_limit_mcps; + uint8_t vl53lx_tuningparm_xtalk_extract_num_of_samples; + int16_t vl53lx_tuningparm_xtalk_extract_min_filter_thresh_mm; + int16_t vl53lx_tuningparm_xtalk_extract_max_filter_thresh_mm; + uint16_t vl53lx_tuningparm_xtalk_extract_dss_rate_mcps; + uint32_t vl53lx_tuningparm_xtalk_extract_phasecal_timeout_us; + uint16_t vl53lx_tuningparm_xtalk_extract_max_valid_rate_kcps; + uint16_t vl53lx_tuningparm_xtalk_extract_sigma_threshold_mm; + uint32_t vl53lx_tuningparm_xtalk_extract_dss_timeout_us; + uint32_t vl53lx_tuningparm_xtalk_extract_bin_timeout_us; + uint16_t vl53lx_tuningparm_offset_cal_dss_rate_mcps; + uint32_t vl53lx_tuningparm_offset_cal_phasecal_timeout_us; + uint32_t vl53lx_tuningparm_offset_cal_mm_timeout_us; + uint32_t vl53lx_tuningparm_offset_cal_range_timeout_us; + uint8_t vl53lx_tuningparm_offset_cal_pre_samples; + uint8_t vl53lx_tuningparm_offset_cal_mm1_samples; + uint8_t vl53lx_tuningparm_offset_cal_mm2_samples; + uint16_t vl53lx_tuningparm_zone_cal_dss_rate_mcps; + uint32_t vl53lx_tuningparm_zone_cal_phasecal_timeout_us; + uint32_t vl53lx_tuningparm_zone_cal_dss_timeout_us; + uint16_t vl53lx_tuningparm_zone_cal_phasecal_num_samples; + uint32_t vl53lx_tuningparm_zone_cal_range_timeout_us; + uint16_t vl53lx_tuningparm_zone_cal_zone_num_samples; + uint8_t vl53lx_tuningparm_spadmap_vcsel_period; + uint8_t vl53lx_tuningparm_spadmap_vcsel_start; + uint16_t vl53lx_tuningparm_spadmap_rate_limit_mcps; + uint16_t vl53lx_tuningparm_lite_dss_config_target_total_rate_mcps; + uint16_t vl53lx_tuningparm_ranging_dss_config_target_total_rate_mcps; + uint16_t vl53lx_tuningparm_mz_dss_config_target_total_rate_mcps; + uint16_t vl53lx_tuningparm_timed_dss_config_target_total_rate_mcps; + uint32_t vl53lx_tuningparm_lite_phasecal_config_timeout_us; + uint32_t vl53lx_tuningparm_ranging_long_phasecal_config_timeout_us; + uint32_t vl53lx_tuningparm_ranging_med_phasecal_config_timeout_us; + uint32_t vl53lx_tuningparm_ranging_short_phasecal_config_timeout_us; + uint32_t vl53lx_tuningparm_mz_long_phasecal_config_timeout_us; + uint32_t vl53lx_tuningparm_mz_med_phasecal_config_timeout_us; + uint32_t vl53lx_tuningparm_mz_short_phasecal_config_timeout_us; + uint32_t vl53lx_tuningparm_timed_phasecal_config_timeout_us; + uint32_t vl53lx_tuningparm_lite_mm_config_timeout_us; + uint32_t vl53lx_tuningparm_ranging_mm_config_timeout_us; + uint32_t vl53lx_tuningparm_mz_mm_config_timeout_us; + uint32_t vl53lx_tuningparm_timed_mm_config_timeout_us; + uint32_t vl53lx_tuningparm_lite_range_config_timeout_us; + uint32_t vl53lx_tuningparm_ranging_range_config_timeout_us; + uint32_t vl53lx_tuningparm_mz_range_config_timeout_us; + uint32_t vl53lx_tuningparm_timed_range_config_timeout_us; + uint16_t vl53lx_tuningparm_dynxtalk_smudge_margin; + uint32_t vl53lx_tuningparm_dynxtalk_noise_margin; + uint32_t vl53lx_tuningparm_dynxtalk_xtalk_offset_limit; + uint8_t vl53lx_tuningparm_dynxtalk_xtalk_offset_limit_hi; + uint32_t vl53lx_tuningparm_dynxtalk_sample_limit; + uint32_t vl53lx_tuningparm_dynxtalk_single_xtalk_delta; + uint32_t vl53lx_tuningparm_dynxtalk_averaged_xtalk_delta; + uint32_t vl53lx_tuningparm_dynxtalk_clip_limit; + uint8_t vl53lx_tuningparm_dynxtalk_scaler_calc_method; + int16_t vl53lx_tuningparm_dynxtalk_xgradient_scaler; + int16_t vl53lx_tuningparm_dynxtalk_ygradient_scaler; + uint8_t vl53lx_tuningparm_dynxtalk_user_scaler_set; + uint8_t vl53lx_tuningparm_dynxtalk_smudge_cor_single_apply; + uint32_t vl53lx_tuningparm_dynxtalk_xtalk_amb_threshold; + uint32_t vl53lx_tuningparm_dynxtalk_nodetect_amb_threshold_kcps; + uint32_t vl53lx_tuningparm_dynxtalk_nodetect_sample_limit; + uint32_t vl53lx_tuningparm_dynxtalk_nodetect_xtalk_offset_kcps; + uint16_t vl53lx_tuningparm_dynxtalk_nodetect_min_range_mm; + uint8_t vl53lx_tuningparm_lowpowerauto_vhv_loop_bound; + uint32_t vl53lx_tuningparm_lowpowerauto_mm_config_timeout_us; + uint32_t vl53lx_tuningparm_lowpowerauto_range_config_timeout_us; + uint16_t vl53lx_tuningparm_very_short_dss_rate_mcps; + uint32_t vl53lx_tuningparm_phasecal_patch_power; +} VL53LX_tuning_parameters_t; + + + + + +typedef struct { + + uint16_t target_reflectance_for_dmax[VL53LX_MAX_AMBIENT_DMAX_VALUES]; + +} VL53LX_dmax_reflectance_array_t; + + + + +typedef struct { + + uint8_t spad_type; + + uint16_t VL53LX_p_020; + + uint16_t rate_data[VL53LX_NO_OF_SPAD_ENABLES]; + + uint16_t no_of_values; + + uint8_t fractional_bits; + + uint8_t error_status; + + +} VL53LX_spad_rate_data_t; + + + + + + +typedef struct { + + VL53LX_DevicePresetModes preset_mode; + + VL53LX_DeviceZonePreset zone_preset; + + VL53LX_DeviceMeasurementModes measurement_mode; + + VL53LX_OffsetCalibrationMode offset_calibration_mode; + + VL53LX_OffsetCorrectionMode offset_correction_mode; + + VL53LX_DeviceDmaxMode dmax_mode; + + + uint32_t phasecal_config_timeout_us; + + uint32_t mm_config_timeout_us; + + uint32_t range_config_timeout_us; + + uint32_t inter_measurement_period_ms; + + uint16_t dss_config__target_total_rate_mcps; + + + VL53LX_histogram_bin_data_t VL53LX_p_006; + + +} VL53LX_additional_data_t; + + + +/* vl53lx_def.h */ + + +/** @defgroup VL53LX_globaldefine_group VL53LX Defines + * @brief VL53LX Defines + * @{ + */ + + +/** VL53LX IMPLEMENTATION major version */ +#define VL53LX_IMPLEMENTATION_VER_MAJOR 1 +/** VL53LX IMPLEMENTATION minor version */ +#define VL53LX_IMPLEMENTATION_VER_MINOR 1 +/** VL53LX IMPLEMENTATION sub version */ +#define VL53LX_IMPLEMENTATION_VER_SUB 4 +/** VL53LX IMPLEMENTATION sub version */ +#define VL53LX_IMPLEMENTATION_VER_REVISION 2352 + +/**************************************** + * PRIVATE define do not edit + ****************************************/ + +/** @brief Defines the parameters of the Get Version Functions + */ +typedef struct { + uint32_t revision; /*!< revision number */ + uint8_t major; /*!< major number */ + uint8_t minor; /*!< minor number */ + uint8_t build; /*!< build number */ +} VL53LX_Version_t; + + +/** @brief Defines the parameters of the Get Device Info Functions + */ +typedef struct { + uint8_t ProductType; + /*!< Product Type, VL53LX = 0xAA + * Stands as module_type in the datasheet + */ + uint8_t ProductRevisionMajor; + /*!< Product revision major */ + uint8_t ProductRevisionMinor; + /*!< Product revision minor */ +} VL53LX_DeviceInfo_t; + +/** @defgroup VL53LX_define_DistanceModes_group Defines Distance modes + * Defines all possible Distance modes for the device + * @{ + */ +typedef uint8_t VL53LX_DistanceModes; + +#define VL53LX_DISTANCEMODE_SHORT ((VL53LX_DistanceModes) 1) +#define VL53LX_DISTANCEMODE_MEDIUM ((VL53LX_DistanceModes) 2) +#define VL53LX_DISTANCEMODE_LONG ((VL53LX_DistanceModes) 3) +/** @} VL53LX_define_DistanceModes_group */ + +/** @defgroup VL53LX_define_OffsetCorrectionModes_group Defines Offset Correction modes + * Device Offset Correction Mode + * + * @brief Defines all possible offset correction modes for the device + * @{ + */ +typedef uint8_t VL53LX_OffsetCorrectionModes; + +#define VL53LX_OFFSETCORRECTIONMODE_STANDARD ((VL53LX_OffsetCorrectionModes) 1) +#define VL53LX_OFFSETCORRECTIONMODE_PERVCSEL ((VL53LX_OffsetCorrectionModes) 3) + +/** @} VL53LX_define_OffsetCorrectionModes_group */ + +/** @brief Defines all parameters for the device + */ +typedef struct { + VL53LX_DistanceModes DistanceMode; + /*!< Defines the operating mode to be used for the next measure */ + uint32_t MeasurementTimingBudgetMicroSeconds; + /*!< Defines the allowed total time for a single measurement */ +} VL53LX_DeviceParameters_t; + + +/** @defgroup VL53LX_define_Smudge_Mode_group Defines smudge correction modes + * Defines the smudge correction modes + * @{ + */ + +typedef uint8_t VL53LX_SmudgeCorrectionModes; + +#define VL53LX_SMUDGE_CORRECTION_NONE ((VL53LX_SmudgeCorrectionModes) 0) +/*!< Smudge correction is applied continuously across the rangings */ +#define VL53LX_SMUDGE_CORRECTION_CONTINUOUS ((VL53LX_SmudgeCorrectionModes) 1) +/*!< Smudge correction is applied continuously across the rangings */ +#define VL53LX_SMUDGE_CORRECTION_SINGLE ((VL53LX_SmudgeCorrectionModes) 2) +/*!< Smudge correction is applied only once across the rangings */ +#define VL53LX_SMUDGE_CORRECTION_DEBUG ((VL53LX_SmudgeCorrectionModes) 3) +/*!< Smudge detection is applied continuously but Xtalk values are not + * updated automatically within the driver + */ + +/** @} VL53LX_define_Smudge_Correction_Mode_group */ + +/** + * @struct VL53LX_TargetRangeData_t + * @brief One Range measurement data for each target. + */ +typedef struct { + int16_t RangeMaxMilliMeter; + /*!< Tells what is the maximum detection distance of the object + * in current setup and environment conditions (Filled when + * applicable) + */ + + int16_t RangeMinMilliMeter; + /*!< Tells what is the minimum detection distance of the object + * in current setup and environment conditions (Filled when + * applicable) + */ + + FixPoint1616_t SignalRateRtnMegaCps; + /*!< Return signal rate (MCPS)\n these is a 16.16 fix point + * value, which is effectively a measure of target + * reflectance. + */ + + FixPoint1616_t AmbientRateRtnMegaCps; + /*!< Return ambient rate (MCPS)\n these is a 16.16 fix point + * value, which is effectively a measure of the ambien + * t light. + */ + + FixPoint1616_t SigmaMilliMeter; + /*!< Return the Sigma value in millimeter */ + + int16_t RangeMilliMeter; + /*!< range distance in millimeter. This should be between + * RangeMinMilliMeter and RangeMaxMilliMeter + */ + + uint8_t RangeStatus; + /*!< Range Status for the current measurement. This is device + * dependent. Value = 0 means value is valid. + */ +} VL53LX_TargetRangeData_t; +/** + * @struct VL53LX_MultiRangingData_t + * @brief Structure for storing the set of range results + * + */ +typedef struct { + uint32_t TimeStamp; + /*!< 32-bit time stamp. + * @warning Not yet implemented + */ + + uint8_t StreamCount; + /*!< 8-bit Stream Count. */ + + uint8_t NumberOfObjectsFound; + /*!< Indicate the number of objects found. + * This is used to know how many ranging data should be get. + * NumberOfObjectsFound is in the range 0 to + * VL53LX_MAX_RANGE_RESULTS. + */ + VL53LX_TargetRangeData_t RangeData[VL53LX_MAX_RANGE_RESULTS]; + /*!< Range data each target distance */ + uint8_t HasXtalkValueChanged; + /*!< set to 1 if a new Xtalk value has been computed whilst + * smudge correction mode enable by with + * VL53LX_SmudgeCorrectionEnable() function is either + * VL53LX_SMUDGE_CORRECTION_CONTINUOUS or + * VL53LX_SMUDGE_CORRECTION_SINGLE. + */ + uint16_t EffectiveSpadRtnCount; + /*!< Return the effective SPAD count for the return signal. + * To obtain Real value it should be divided by 256 + */ +} VL53LX_MultiRangingData_t; + + + +/** + * @struct VL53LX_CustomerNvmManaged_t + * + */ + +typedef struct { + uint8_t global_config__spad_enables_ref_0; + uint8_t global_config__spad_enables_ref_1; + uint8_t global_config__spad_enables_ref_2; + uint8_t global_config__spad_enables_ref_3; + uint8_t global_config__spad_enables_ref_4; + uint8_t global_config__spad_enables_ref_5; + uint8_t global_config__ref_en_start_select; + uint8_t ref_spad_man__num_requested_ref_spads; + uint8_t ref_spad_man__ref_location; + uint32_t algo__crosstalk_compensation_plane_offset_kcps; + int16_t algo__crosstalk_compensation_x_plane_gradient_kcps; + int16_t algo__crosstalk_compensation_y_plane_gradient_kcps; + uint16_t ref_spad_char__total_rate_target_mcps; + int16_t algo__part_to_part_range_offset_mm; + int16_t mm_config__inner_offset_mm; + int16_t mm_config__outer_offset_mm; +} VL53LX_CustomerNvmManaged_t; + +/** + * @struct VL53LX_CalibrationData_t + * @brief Structure for storing the Calibration Data + * + */ + +typedef struct { + + uint32_t struct_version; + VL53LX_CustomerNvmManaged_t customer; + VL53LX_additional_offset_cal_data_t add_off_cal_data; + VL53LX_optical_centre_t optical_centre; + VL53LX_xtalk_histogram_data_t xtalkhisto; + VL53LX_gain_calibration_data_t gain_cal; + VL53LX_cal_peak_rate_map_t cal_peak_rate_map; + VL53LX_per_vcsel_period_offset_cal_data_t per_vcsel_cal_data; + uint32_t algo__xtalk_cpo_HistoMerge_kcps[VL53LX_BIN_REC_SIZE]; +} VL53LX_CalibrationData_t; + +#define VL53LX_ADDITIONAL_CALIBRATION_DATA_STRUCT_VERSION 0x20 +/** VL53LX additional Calibration Data struct version final struct version + * is given by adding it to VL53LX_LL_CALIBRATION_DATA_STRUCT_VERSION + */ + +#define VL53LX_CALIBRATION_DATA_STRUCT_VERSION \ + (VL53LX_LL_CALIBRATION_DATA_STRUCT_VERSION + \ + VL53LX_ADDITIONAL_CALIBRATION_DATA_STRUCT_VERSION) +/* VL53LX Calibration Data struct version */ + +/** + * @struct VL53LX_AdditionalData_t + * @brief Structure for storing the Additional Data + * + */ +typedef VL53LX_additional_data_t VL53LX_AdditionalData_t; + + +/** @defgroup VL53LX_define_RangeStatus_group Defines the Range Status + * @{ + */ +#define VL53LX_RANGESTATUS_RANGE_VALID 0 +/*!<The Range is valid. */ +#define VL53LX_RANGESTATUS_SIGMA_FAIL 1 +/*!<Sigma Fail. */ +#define VL53LX_RANGESTATUS_SIGNAL_FAIL 2 +/*!<Signal fail. */ +#define VL53LX_RANGESTATUS_RANGE_VALID_MIN_RANGE_CLIPPED 3 +/*!<Target is below minimum detection threshold. */ +#define VL53LX_RANGESTATUS_OUTOFBOUNDS_FAIL 4 +/*!<Phase out of valid limits - different to a wrap exit. */ +#define VL53LX_RANGESTATUS_HARDWARE_FAIL 5 +/*!<Hardware fail. */ +#define VL53LX_RANGESTATUS_RANGE_VALID_NO_WRAP_CHECK_FAIL 6 +/*!<The Range is valid but the wraparound check has not been done. */ +#define VL53LX_RANGESTATUS_WRAP_TARGET_FAIL 7 +/*!<Wrapped target - no matching phase in other VCSEL period timing. */ +#define VL53LX_RANGESTATUS_PROCESSING_FAIL 8 +/*!<Internal algo underflow or overflow in lite ranging. */ +#define VL53LX_RANGESTATUS_XTALK_SIGNAL_FAIL 9 +/*!<Specific to lite ranging. */ +#define VL53LX_RANGESTATUS_SYNCRONISATION_INT 10 +/*!<1st interrupt when starting ranging in back to back mode. Ignore data. */ +#define VL53LX_RANGESTATUS_RANGE_VALID_MERGED_PULSE 11 +/*!<All Range ok but object is result of multiple pulses merging together. + * Used by RQL for merged pulse detection + */ +#define VL53LX_RANGESTATUS_TARGET_PRESENT_LACK_OF_SIGNAL 12 +/*!<Used by RQL as different to phase fail. */ +#define VL53LX_RANGESTATUS_MIN_RANGE_FAIL 13 +/*!<Unexpected error in SPAD Array.*/ +#define VL53LX_RANGESTATUS_RANGE_INVALID 14 +/*!<lld returned valid range but negative value ! */ +#define VL53LX_RANGESTATUS_NONE 255 +/*!<No Update. */ + +/** @} VL53LX_define_RangeStatus_group */ + + +/** @brief Contains the Internal data of the Bare Driver + */ + +typedef struct { + VL53LX_LLDriverData_t LLData; + /*!< Low Level Driver data structure */ + + VL53LX_LLDriverResults_t llresults; + /*!< Low Level Driver data structure */ + + VL53LX_DeviceParameters_t CurrentParameters; + /*!< Current Device Parameter */ + +} VL53LX_DevData_t; + + +/* MACRO Definitions */ +/** @defgroup VL53LX_define_GeneralMacro_group General Macro Defines + * General Macro Defines + * @{ + */ + +/* Defines */ +#define VL53LX_SETPARAMETERFIELD(Dev, field, value) \ + (VL53LXDevDataSet(Dev, CurrentParameters.field, value)) + +#define VL53LX_GETPARAMETERFIELD(Dev, field, variable) \ + (variable = VL53LXDevDataGet(Dev, CurrentParameters).field) + +#define VL53LX_SETARRAYPARAMETERFIELD(Dev, field, index, value) \ + (VL53LXDevDataSet(Dev, CurrentParameters.field[index], value)) + +#define VL53LX_GETARRAYPARAMETERFIELD(Dev, field, index, variable) \ + (variable = VL53LXDevDataGet(Dev, CurrentParameters).field[index]) + +#define VL53LX_SETDEVICESPECIFICPARAMETER(Dev, field, value) \ + (VL53LXDevDataSet(Dev, DeviceSpecificParameters.field, value)) + +#define VL53LX_GETDEVICESPECIFICPARAMETER(Dev, field) \ + (VL53LXDevDataGet(Dev, DeviceSpecificParameters).field) + + +#define VL53LX_FIXPOINT1616TOFIXPOINT44(Value) \ + (uint16_t)((Value>>12)&0xFFFF) +#define VL53LX_FIXPOINT44TOFIXPOINT1616(Value) \ + (FixPoint1616_t)((uint32_t)Value<<12) + +#define VL53LX_FIXPOINT1616TOFIXPOINT72(Value) \ + (uint16_t)((Value>>14)&0xFFFF) +#define VL53LX_FIXPOINT72TOFIXPOINT1616(Value) \ + (FixPoint1616_t)((uint32_t)Value<<14) + +#define VL53LX_FIXPOINT1616TOFIXPOINT97(Value) \ + (uint16_t)((Value>>9)&0xFFFF) +#define VL53LX_FIXPOINT97TOFIXPOINT1616(Value) \ + (FixPoint1616_t)((uint32_t)Value<<9) + +#define VL53LX_FIXPOINT1616TOFIXPOINT88(Value) \ + (uint16_t)((Value>>8)&0xFFFF) +#define VL53LX_FIXPOINT88TOFIXPOINT1616(Value) \ + (FixPoint1616_t)((uint32_t)Value<<8) + +#define VL53LX_FIXPOINT1616TOFIXPOINT412(Value) \ + (uint16_t)((Value>>4)&0xFFFF) +#define VL53LX_FIXPOINT412TOFIXPOINT1616(Value) \ + (FixPoint1616_t)((uint32_t)Value<<4) + +#define VL53LX_FIXPOINT1616TOFIXPOINT313(Value) \ + (uint16_t)((Value>>3)&0xFFFF) +#define VL53LX_FIXPOINT313TOFIXPOINT1616(Value) \ + (FixPoint1616_t)((uint32_t)Value<<3) + +#define VL53LX_FIXPOINT1616TOFIXPOINT08(Value) \ + (uint8_t)((Value>>8)&0x00FF) +#define VL53LX_FIXPOINT08TOFIXPOINT1616(Value) \ + (FixPoint1616_t)((uint32_t)Value<<8) + +#define VL53LX_FIXPOINT1616TOFIXPOINT53(Value) \ + (uint8_t)((Value>>13)&0x00FF) +#define VL53LX_FIXPOINT53TOFIXPOINT1616(Value) \ + (FixPoint1616_t)((uint32_t)Value<<13) + +#define VL53LX_FIXPOINT1616TOFIXPOINT102(Value) \ + (uint16_t)((Value>>14)&0x0FFF) +#define VL53LX_FIXPOINT102TOFIXPOINT1616(Value) \ + (FixPoint1616_t)((uint32_t)Value<<14) + +#define VL53LX_FIXPOINT1616TOFIXPOINT142(Value) \ + (uint16_t)((Value>>14)&0xFFFF) +#define VL53LX_FIXPOINT142TOFIXPOINT1616(Value) \ + (FixPoint1616_t)((uint32_t)Value<<14) + +#define VL53LX_FIXPOINT1616TOFIXPOINT160(Value) \ + (uint16_t)((Value>>16)&0xFFFF) +#define VL53LX_FIXPOINT160TOFIXPOINT1616(Value) \ + (FixPoint1616_t)((uint32_t)Value<<16) + +#define VL53LX_MAKEUINT16(lsb, msb) (uint16_t)((((uint16_t)msb)<<8) + \ + (uint16_t)lsb) + +#ifndef SUPPRESS_UNUSED_WARNING +#define SUPPRESS_UNUSED_WARNING(x) ((void) (x)) +#endif + +/** @} VL53LX_define_GeneralMacro_group */ + +/** @} VL53LX_globaldefine_group */ + + + + +/* vl53lx_xtalk_private_structs.h */ + + +#define VL53LX_D_012 4 + + + + + + + + + +typedef struct { + + + + + + uint32_t VL53LX_p_061[VL53LX_D_012]; + + + + int16_t VL53LX_p_059; + + + int16_t VL53LX_p_060; + + + + VL53LX_histogram_bin_data_t VL53LX_p_056; + + + VL53LX_histogram_bin_data_t VL53LX_p_057; + + + + + uint32_t VL53LX_p_058; + + + + uint32_t VL53LX_p_062[VL53LX_XTALK_HISTO_BINS]; + + + +} VL53LX_xtalk_algo_data_t; + + +/*vl53lx_platform_user_data*/ + +#include <stdlib.h> +//#include "Wire.h" +/* + +typedef struct { + VL53LX_DevData_t Data; + //!< Low Level Driver data structure + uint8_t i2c_slave_address; + uint8_t comms_type; + uint16_t comms_speed_khz; + vl53L1X_DevI2C *I2cHandle; + uint8_t I2cDevAddr; + int Present; + int Enabled; + int LoopState; + int FirstStreamCountZero; + int Idle; + int Ready; + uint8_t RangeStatus; + FixPoint1616_t SignalRateRtnMegaCps; + VL53LX_DeviceState device_state; //!< Device State +} VL53LX_Dev_t; + +typedef VL53LX_Dev_t *VL53LX_DEV; +*/ +/** + * @def VL53LXDevDataGet + * @brief Get ST private structure @a VL53LX_DevData_t data access + * + * @param Dev Device Handle + * @param field ST structure field name + * It maybe used and as real data "ref" not just as "get" for sub-structure item + * like VL53L1DevDataGet(FilterData.field)[i] or + * VL53L1DevDataGet(FilterData.MeasurementIndex)++ + */ +#define VL53LXDevDataGet(Dev, field) (Dev->Data.field) + +/** + * @def VL53LXDevDataSet(Dev, field, data) + * @brief Set ST private structure @a VL53LX_DevData_t data field + * @param Dev Device Handle + * @param field ST structure field name + * @param data Data to be set + */ +#define VL53LXDevDataSet(Dev, field, data) ((Dev->Data.field) = (data)) + +#define PALDevDataGet(Dev, field) (Dev->Data.field) + +#define PALDevDataSet(Dev, field, VL53LX_PRM_00005) (Dev->Data.field)=(VL53LX_PRM_00005) + +#define VL53LXDevStructGetLLDriverHandle(Dev) (&Dev -> Data.LLData) + +#define VL53LXDevStructGetLLResultsHandle(Dev) (&Dev -> Data.llresults) + + +/* vl53lx_hist_map.h */ + + +#define VL53LX_HISTOGRAM_CONFIG__OPCODE_SEQUENCE_0 \ + VL53LX_SIGMA_ESTIMATOR__EFFECTIVE_PULSE_WIDTH_NS + +#define VL53LX_HISTOGRAM_CONFIG__OPCODE_SEQUENCE_1 \ + VL53LX_SIGMA_ESTIMATOR__EFFECTIVE_AMBIENT_WIDTH_NS + +#define VL53LX_HISTOGRAM_CONFIG__OPCODE_SEQUENCE_2 \ + VL53LX_SIGMA_ESTIMATOR__SIGMA_REF_MM + +#define VL53LX_HISTOGRAM_CONFIG__AMB_THRESH_HIGH \ + VL53LX_ALGO__RANGE_IGNORE_THRESHOLD_MCPS + + + + +#define VL53LX_RESULT__HISTOGRAM_BIN_0_2 0x008E +#define VL53LX_RESULT__HISTOGRAM_BIN_0_1 0x008F +#define VL53LX_RESULT__HISTOGRAM_BIN_0_0 0x0090 + +#define VL53LX_RESULT__HISTOGRAM_BIN_23_2 0x00D3 +#define VL53LX_RESULT__HISTOGRAM_BIN_23_1 0x00D4 +#define VL53LX_RESULT__HISTOGRAM_BIN_23_0 0x00D5 + +#define VL53LX_RESULT__HISTOGRAM_BIN_23_0_MSB 0x00D9 +#define VL53LX_RESULT__HISTOGRAM_BIN_23_0_LSB 0x00DA + + + +#define VL53LX_HISTOGRAM_BIN_DATA_I2C_INDEX \ + VL53LX_RESULT__INTERRUPT_STATUS +#define VL53LX_HISTOGRAM_BIN_DATA_I2C_SIZE_BYTES \ + (VL53LX_RESULT__HISTOGRAM_BIN_23_0_LSB - \ + VL53LX_RESULT__INTERRUPT_STATUS + 1) + + +/* vl53lx_nvm_structs.h */ + +typedef struct { + + uint16_t result__actual_effective_rtn_spads; + uint8_t ref_spad_array__num_requested_ref_spads; + uint8_t ref_spad_array__ref_location; + uint16_t result__peak_signal_count_rate_rtn_mcps; + uint16_t result__ambient_count_rate_rtn_mcps; + uint16_t result__peak_signal_count_rate_ref_mcps; + uint16_t result__ambient_count_rate_ref_mcps; + uint16_t measured_distance_mm; + uint16_t measured_distance_stdev_mm; +} VL53LX_decoded_nvm_fmt_range_data_t; + + +typedef struct { + + char nvm__fmt__fgc[19]; + uint8_t nvm__fmt__test_program_major; + uint8_t nvm__fmt__test_program_minor; + uint8_t nvm__fmt__map_major; + uint8_t nvm__fmt__map_minor; + uint8_t nvm__fmt__year; + uint8_t nvm__fmt__month; + uint8_t nvm__fmt__day; + uint8_t nvm__fmt__module_date_phase; + uint16_t nvm__fmt__time; + uint8_t nvm__fmt__tester_id; + uint8_t nvm__fmt__site_id; + uint8_t nvm__ews__test_program_major; + uint8_t nvm__ews__test_program_minor; + uint8_t nvm__ews__probe_card_major; + uint8_t nvm__ews__probe_card_minor; + uint8_t nvm__ews__tester_id; + char nvm__ews__lot[8]; + uint8_t nvm__ews__wafer; + uint8_t nvm__ews__xcoord; + uint8_t nvm__ews__ycoord; +} VL53LX_decoded_nvm_fmt_info_t; + + +typedef struct { + + uint8_t nvm__ews__test_program_major; + uint8_t nvm__ews__test_program_minor; + uint8_t nvm__ews__probe_card_major; + uint8_t nvm__ews__probe_card_minor; + uint8_t nvm__ews__tester_id; + char nvm__ews__lot[8]; + uint8_t nvm__ews__wafer; + uint8_t nvm__ews__xcoord; + uint8_t nvm__ews__ycoord; +} VL53LX_decoded_nvm_ews_info_t; + + +typedef struct { + uint8_t nvm__identification_model_id; + uint8_t nvm__identification_module_type; + uint8_t nvm__identification_revision_id; + uint16_t nvm__identification_module_id; + uint8_t nvm__i2c_valid; + uint8_t nvm__i2c_device_address_ews; + uint16_t nvm__ews__fast_osc_frequency; + uint8_t nvm__ews__fast_osc_trim_max; + uint8_t nvm__ews__fast_osc_freq_set; + uint16_t nvm__ews__slow_osc_calibration; + uint16_t nvm__fmt__fast_osc_frequency; + uint8_t nvm__fmt__fast_osc_trim_max; + uint8_t nvm__fmt__fast_osc_freq_set; + uint16_t nvm__fmt__slow_osc_calibration; + uint8_t nvm__vhv_config_unlock; + uint8_t nvm__ref_selvddpix; + uint8_t nvm__ref_selvquench; + uint8_t nvm__regavdd1v2_sel; + uint8_t nvm__regdvdd1v2_sel; + uint8_t nvm__vhv_timeout__macrop; + uint8_t nvm__vhv_loop_bound; + uint8_t nvm__vhv_count_threshold; + uint8_t nvm__vhv_offset; + uint8_t nvm__vhv_init_enable; + uint8_t nvm__vhv_init_value; + uint8_t nvm__laser_safety_vcsel_trim_ll; + uint8_t nvm__laser_safety_vcsel_selion_ll; + uint8_t nvm__laser_safety_vcsel_selion_max_ll; + uint8_t nvm__laser_safety_mult_ll; + uint8_t nvm__laser_safety_clip_ll; + uint8_t nvm__laser_safety_vcsel_trim_ld; + uint8_t nvm__laser_safety_vcsel_selion_ld; + uint8_t nvm__laser_safety_vcsel_selion_max_ld; + uint8_t nvm__laser_safety_mult_ld; + uint8_t nvm__laser_safety_clip_ld; + uint8_t nvm__laser_safety_lock_byte; + uint8_t nvm__laser_safety_unlock_byte; + uint8_t nvm__ews__spad_enables_rtn[VL53LX_RTN_SPAD_BUFFER_SIZE]; + uint8_t nvm__ews__spad_enables_ref__loc1[VL53LX_REF_SPAD_BUFFER_SIZE]; + uint8_t nvm__ews__spad_enables_ref__loc2[VL53LX_REF_SPAD_BUFFER_SIZE]; + uint8_t nvm__ews__spad_enables_ref__loc3[VL53LX_REF_SPAD_BUFFER_SIZE]; + uint8_t nvm__fmt__spad_enables_rtn[VL53LX_RTN_SPAD_BUFFER_SIZE]; + uint8_t nvm__fmt__spad_enables_ref__loc1[VL53LX_REF_SPAD_BUFFER_SIZE]; + uint8_t nvm__fmt__spad_enables_ref__loc2[VL53LX_REF_SPAD_BUFFER_SIZE]; + uint8_t nvm__fmt__spad_enables_ref__loc3[VL53LX_REF_SPAD_BUFFER_SIZE]; + uint8_t nvm__fmt__roi_config__mode_roi_centre_spad; + uint8_t nvm__fmt__roi_config__mode_roi_x_size; + uint8_t nvm__fmt__roi_config__mode_roi_y_size; + uint8_t nvm__fmt__ref_spad_apply__num_requested_ref_spad; + uint8_t nvm__fmt__ref_spad_man__ref_location; + uint16_t nvm__fmt__mm_config__inner_offset_mm; + uint16_t nvm__fmt__mm_config__outer_offset_mm; + uint16_t nvm__fmt__algo_part_to_part_range_offset_mm; + uint16_t nvm__fmt__algo__crosstalk_compensation_plane_offset_kcps; + uint16_t nvm__fmt__algo__crosstalk_compensation_x_plane_gradient_kcps; + uint16_t nvm__fmt__algo__crosstalk_compensation_y_plane_gradient_kcps; + uint8_t nvm__fmt__spare__host_config__nvm_config_spare_0; + uint8_t nvm__fmt__spare__host_config__nvm_config_spare_1; + uint8_t nvm__customer_space_programmed; + uint8_t nvm__cust__i2c_device_address; + uint8_t nvm__cust__ref_spad_apply__num_requested_ref_spad; + uint8_t nvm__cust__ref_spad_man__ref_location; + uint16_t nvm__cust__mm_config__inner_offset_mm; + uint16_t nvm__cust__mm_config__outer_offset_mm; + uint16_t nvm__cust__algo_part_to_part_range_offset_mm; + uint16_t nvm__cust__algo__crosstalk_compensation_plane_offset_kcps; + uint16_t nvm__cust__algo__crosstalk_compensation_x_plane_gradient_kcps; + uint16_t nvm__cust__algo__crosstalk_compensation_y_plane_gradient_kcps; + uint8_t nvm__cust__spare__host_config__nvm_config_spare_0; + uint8_t nvm__cust__spare__host_config__nvm_config_spare_1; + VL53LX_optical_centre_t fmt_optical_centre; + VL53LX_cal_peak_rate_map_t fmt_peak_rate_map; + VL53LX_additional_offset_cal_data_t fmt_add_offset_data; + + VL53LX_decoded_nvm_fmt_range_data_t + fmt_range_data[VL53LX_NVM_MAX_FMT_RANGE_DATA]; + + VL53LX_decoded_nvm_fmt_info_t fmt_info; + VL53LX_decoded_nvm_ews_info_t ews_info; + +} VL53LX_decoded_nvm_data_t; + + + +#ifdef __cplusplus +} +#endif + +#endif /* _VL53LX_DEF_H_ */ \ No newline at end of file