Rename library

Dependencies:   X_NUCLEO_COMMON ST_INTERFACES

Dependents:   VL53L3CX_NoShield_1Sensor_poll_Mb06x VL53L3_NoShield_1Sensor_polling_Mb63 X_NUCLEO_53L3A2 53L3A2_Ranging

Committer:
charlesmn
Date:
Wed Jul 21 14:07:59 2021 +0000
Revision:
7:7f1bbf370283
Parent:
5:89031b2f5316
Moved vl53l3cx_class.cpp and .h to 53l3a2_RangingClass

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Charles MacNeill 5:89031b2f5316 1
Charles MacNeill 5:89031b2f5316 2 /* SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause */
Charles MacNeill 5:89031b2f5316 3 /******************************************************************************
Charles MacNeill 5:89031b2f5316 4 * Copyright (c) 2020, STMicroelectronics - All Rights Reserved
Charles MacNeill 5:89031b2f5316 5
Charles MacNeill 5:89031b2f5316 6 This file is part of VL53LX and is dual licensed,
Charles MacNeill 5:89031b2f5316 7 either GPL-2.0+
Charles MacNeill 5:89031b2f5316 8 or 'BSD 3-clause "New" or "Revised" License' , at your option.
Charles MacNeill 5:89031b2f5316 9 ******************************************************************************
Charles MacNeill 5:89031b2f5316 10 */
Charles MacNeill 5:89031b2f5316 11
Charles MacNeill 5:89031b2f5316 12
Charles MacNeill 5:89031b2f5316 13
Charles MacNeill 5:89031b2f5316 14
Charles MacNeill 5:89031b2f5316 15
Charles MacNeill 5:89031b2f5316 16 #ifndef _VL53LX_LL_DEF_H_
Charles MacNeill 5:89031b2f5316 17 #define _VL53LX_LL_DEF_H_
Charles MacNeill 5:89031b2f5316 18
Charles MacNeill 5:89031b2f5316 19 #include "vl53lx_platform_user_config.h"
Charles MacNeill 5:89031b2f5316 20 #include "vl53lx_platform_user_defines.h"
Charles MacNeill 5:89031b2f5316 21 #include "vl53lx_error_codes.h"
Charles MacNeill 5:89031b2f5316 22 #include "vl53lx_register_structs.h"
Charles MacNeill 5:89031b2f5316 23 #include "vl53lx_hist_structs.h"
Charles MacNeill 5:89031b2f5316 24 #include "vl53lx_dmax_structs.h"
Charles MacNeill 5:89031b2f5316 25 #include "vl53lx_error_exceptions.h"
Charles MacNeill 5:89031b2f5316 26
Charles MacNeill 5:89031b2f5316 27 #ifdef __cplusplus
Charles MacNeill 5:89031b2f5316 28 extern "C" {
Charles MacNeill 5:89031b2f5316 29 #endif
Charles MacNeill 5:89031b2f5316 30
Charles MacNeill 5:89031b2f5316 31
Charles MacNeill 5:89031b2f5316 32
Charles MacNeill 5:89031b2f5316 33
Charles MacNeill 5:89031b2f5316 34 #define VL53LX_LL_API_IMPLEMENTATION_VER_MAJOR 1
Charles MacNeill 5:89031b2f5316 35
Charles MacNeill 5:89031b2f5316 36 #define VL53LX_LL_API_IMPLEMENTATION_VER_MINOR 1
Charles MacNeill 5:89031b2f5316 37
Charles MacNeill 5:89031b2f5316 38 #define VL53LX_LL_API_IMPLEMENTATION_VER_SUB 1
Charles MacNeill 5:89031b2f5316 39
Charles MacNeill 5:89031b2f5316 40 #define VL53LX_LL_API_IMPLEMENTATION_VER_REVISION 0
Charles MacNeill 5:89031b2f5316 41
Charles MacNeill 5:89031b2f5316 42 #define VL53LX_LL_API_IMPLEMENTATION_VER_STRING "1.1.1"
Charles MacNeill 5:89031b2f5316 43
Charles MacNeill 5:89031b2f5316 44
Charles MacNeill 5:89031b2f5316 45 #define VL53LX_FIRMWARE_VER_MINIMUM 398
Charles MacNeill 5:89031b2f5316 46 #define VL53LX_FIRMWARE_VER_MAXIMUM 400
Charles MacNeill 5:89031b2f5316 47
Charles MacNeill 5:89031b2f5316 48
Charles MacNeill 5:89031b2f5316 49
Charles MacNeill 5:89031b2f5316 50
Charles MacNeill 5:89031b2f5316 51 #define VL53LX_LL_CALIBRATION_DATA_STRUCT_VERSION 0xECAB0102
Charles MacNeill 5:89031b2f5316 52
Charles MacNeill 5:89031b2f5316 53
Charles MacNeill 5:89031b2f5316 54
Charles MacNeill 5:89031b2f5316 55
Charles MacNeill 5:89031b2f5316 56 #define VL53LX_LL_ZONE_CALIBRATION_DATA_STRUCT_VERSION 0xECAE0101
Charles MacNeill 5:89031b2f5316 57
Charles MacNeill 5:89031b2f5316 58
Charles MacNeill 5:89031b2f5316 59
Charles MacNeill 5:89031b2f5316 60
Charles MacNeill 5:89031b2f5316 61
Charles MacNeill 5:89031b2f5316 62 #define VL53LX_BIN_REC_SIZE 6
Charles MacNeill 5:89031b2f5316 63
Charles MacNeill 5:89031b2f5316 64 #define VL53LX_TIMING_CONF_A_B_SIZE 2
Charles MacNeill 5:89031b2f5316 65
Charles MacNeill 5:89031b2f5316 66 #define VL53LX_FRAME_WAIT_EVENT 6
Charles MacNeill 5:89031b2f5316 67
Charles MacNeill 5:89031b2f5316 68
Charles MacNeill 5:89031b2f5316 69
Charles MacNeill 5:89031b2f5316 70
Charles MacNeill 5:89031b2f5316 71 #define VL53LX_MAX_XTALK_RANGE_RESULTS 5
Charles MacNeill 5:89031b2f5316 72
Charles MacNeill 5:89031b2f5316 73
Charles MacNeill 5:89031b2f5316 74 #define VL53LX_MAX_OFFSET_RANGE_RESULTS 3
Charles MacNeill 5:89031b2f5316 75
Charles MacNeill 5:89031b2f5316 76
Charles MacNeill 5:89031b2f5316 77 #define VL53LX_NVM_MAX_FMT_RANGE_DATA 4
Charles MacNeill 5:89031b2f5316 78
Charles MacNeill 5:89031b2f5316 79
Charles MacNeill 5:89031b2f5316 80 #define VL53LX_NVM_PEAK_RATE_MAP_SAMPLES 25
Charles MacNeill 5:89031b2f5316 81
Charles MacNeill 5:89031b2f5316 82 #define VL53LX_NVM_PEAK_RATE_MAP_WIDTH 5
Charles MacNeill 5:89031b2f5316 83
Charles MacNeill 5:89031b2f5316 84 #define VL53LX_NVM_PEAK_RATE_MAP_HEIGHT 5
Charles MacNeill 5:89031b2f5316 85
Charles MacNeill 5:89031b2f5316 86
Charles MacNeill 5:89031b2f5316 87
Charles MacNeill 5:89031b2f5316 88
Charles MacNeill 5:89031b2f5316 89 #define VL53LX_ERROR_DEVICE_FIRMWARE_TOO_OLD ((VL53LX_Error) - 80)
Charles MacNeill 5:89031b2f5316 90
Charles MacNeill 5:89031b2f5316 91 #define VL53LX_ERROR_DEVICE_FIRMWARE_TOO_NEW ((VL53LX_Error) - 85)
Charles MacNeill 5:89031b2f5316 92
Charles MacNeill 5:89031b2f5316 93 #define VL53LX_ERROR_UNIT_TEST_FAIL ((VL53LX_Error) - 90)
Charles MacNeill 5:89031b2f5316 94
Charles MacNeill 5:89031b2f5316 95 #define VL53LX_ERROR_FILE_READ_FAIL ((VL53LX_Error) - 95)
Charles MacNeill 5:89031b2f5316 96
Charles MacNeill 5:89031b2f5316 97 #define VL53LX_ERROR_FILE_WRITE_FAIL ((VL53LX_Error) - 96)
Charles MacNeill 5:89031b2f5316 98
Charles MacNeill 5:89031b2f5316 99
Charles MacNeill 5:89031b2f5316 100
Charles MacNeill 5:89031b2f5316 101
Charles MacNeill 5:89031b2f5316 102
Charles MacNeill 5:89031b2f5316 103
Charles MacNeill 5:89031b2f5316 104 typedef struct {
Charles MacNeill 5:89031b2f5316 105 uint32_t ll_revision;
Charles MacNeill 5:89031b2f5316 106 uint8_t ll_major;
Charles MacNeill 5:89031b2f5316 107 uint8_t ll_minor;
Charles MacNeill 5:89031b2f5316 108 uint8_t ll_build;
Charles MacNeill 5:89031b2f5316 109 } VL53LX_ll_version_t;
Charles MacNeill 5:89031b2f5316 110
Charles MacNeill 5:89031b2f5316 111
Charles MacNeill 5:89031b2f5316 112
Charles MacNeill 5:89031b2f5316 113
Charles MacNeill 5:89031b2f5316 114 typedef struct {
Charles MacNeill 5:89031b2f5316 115
Charles MacNeill 5:89031b2f5316 116 uint8_t device_test_mode;
Charles MacNeill 5:89031b2f5316 117 uint8_t VL53LX_p_005;
Charles MacNeill 5:89031b2f5316 118 uint32_t timeout_us;
Charles MacNeill 5:89031b2f5316 119 uint16_t target_count_rate_mcps;
Charles MacNeill 5:89031b2f5316 120
Charles MacNeill 5:89031b2f5316 121 uint16_t min_count_rate_limit_mcps;
Charles MacNeill 5:89031b2f5316 122
Charles MacNeill 5:89031b2f5316 123 uint16_t max_count_rate_limit_mcps;
Charles MacNeill 5:89031b2f5316 124
Charles MacNeill 5:89031b2f5316 125
Charles MacNeill 5:89031b2f5316 126 } VL53LX_refspadchar_config_t;
Charles MacNeill 5:89031b2f5316 127
Charles MacNeill 5:89031b2f5316 128
Charles MacNeill 5:89031b2f5316 129
Charles MacNeill 5:89031b2f5316 130
Charles MacNeill 5:89031b2f5316 131 typedef struct {
Charles MacNeill 5:89031b2f5316 132
Charles MacNeill 5:89031b2f5316 133 uint16_t dss_config__target_total_rate_mcps;
Charles MacNeill 5:89031b2f5316 134
Charles MacNeill 5:89031b2f5316 135 uint32_t phasecal_config_timeout_us;
Charles MacNeill 5:89031b2f5316 136
Charles MacNeill 5:89031b2f5316 137 uint32_t mm_config_timeout_us;
Charles MacNeill 5:89031b2f5316 138
Charles MacNeill 5:89031b2f5316 139 uint32_t range_config_timeout_us;
Charles MacNeill 5:89031b2f5316 140
Charles MacNeill 5:89031b2f5316 141 uint8_t num_of_samples;
Charles MacNeill 5:89031b2f5316 142
Charles MacNeill 5:89031b2f5316 143 int16_t algo__crosstalk_extract_min_valid_range_mm;
Charles MacNeill 5:89031b2f5316 144
Charles MacNeill 5:89031b2f5316 145 int16_t algo__crosstalk_extract_max_valid_range_mm;
Charles MacNeill 5:89031b2f5316 146
Charles MacNeill 5:89031b2f5316 147 uint16_t algo__crosstalk_extract_max_valid_rate_kcps;
Charles MacNeill 5:89031b2f5316 148
Charles MacNeill 5:89031b2f5316 149 uint16_t algo__crosstalk_extract_max_sigma_mm;
Charles MacNeill 5:89031b2f5316 150
Charles MacNeill 5:89031b2f5316 151
Charles MacNeill 5:89031b2f5316 152 } VL53LX_xtalkextract_config_t;
Charles MacNeill 5:89031b2f5316 153
Charles MacNeill 5:89031b2f5316 154
Charles MacNeill 5:89031b2f5316 155
Charles MacNeill 5:89031b2f5316 156
Charles MacNeill 5:89031b2f5316 157 typedef struct {
Charles MacNeill 5:89031b2f5316 158
Charles MacNeill 5:89031b2f5316 159 uint16_t dss_config__target_total_rate_mcps;
Charles MacNeill 5:89031b2f5316 160
Charles MacNeill 5:89031b2f5316 161 uint32_t phasecal_config_timeout_us;
Charles MacNeill 5:89031b2f5316 162
Charles MacNeill 5:89031b2f5316 163 uint32_t range_config_timeout_us;
Charles MacNeill 5:89031b2f5316 164
Charles MacNeill 5:89031b2f5316 165 uint32_t mm_config_timeout_us;
Charles MacNeill 5:89031b2f5316 166
Charles MacNeill 5:89031b2f5316 167 uint8_t pre_num_of_samples;
Charles MacNeill 5:89031b2f5316 168
Charles MacNeill 5:89031b2f5316 169 uint8_t mm1_num_of_samples;
Charles MacNeill 5:89031b2f5316 170
Charles MacNeill 5:89031b2f5316 171 uint8_t mm2_num_of_samples;
Charles MacNeill 5:89031b2f5316 172
Charles MacNeill 5:89031b2f5316 173
Charles MacNeill 5:89031b2f5316 174 } VL53LX_offsetcal_config_t;
Charles MacNeill 5:89031b2f5316 175
Charles MacNeill 5:89031b2f5316 176
Charles MacNeill 5:89031b2f5316 177
Charles MacNeill 5:89031b2f5316 178
Charles MacNeill 5:89031b2f5316 179 typedef struct {
Charles MacNeill 5:89031b2f5316 180
Charles MacNeill 5:89031b2f5316 181 uint16_t dss_config__target_total_rate_mcps;
Charles MacNeill 5:89031b2f5316 182
Charles MacNeill 5:89031b2f5316 183 uint32_t phasecal_config_timeout_us;
Charles MacNeill 5:89031b2f5316 184
Charles MacNeill 5:89031b2f5316 185 uint32_t mm_config_timeout_us;
Charles MacNeill 5:89031b2f5316 186
Charles MacNeill 5:89031b2f5316 187 uint32_t range_config_timeout_us;
Charles MacNeill 5:89031b2f5316 188
Charles MacNeill 5:89031b2f5316 189 uint16_t phasecal_num_of_samples;
Charles MacNeill 5:89031b2f5316 190
Charles MacNeill 5:89031b2f5316 191 uint16_t zone_num_of_samples;
Charles MacNeill 5:89031b2f5316 192
Charles MacNeill 5:89031b2f5316 193
Charles MacNeill 5:89031b2f5316 194 } VL53LX_zonecal_config_t;
Charles MacNeill 5:89031b2f5316 195
Charles MacNeill 5:89031b2f5316 196
Charles MacNeill 5:89031b2f5316 197
Charles MacNeill 5:89031b2f5316 198
Charles MacNeill 5:89031b2f5316 199
Charles MacNeill 5:89031b2f5316 200 typedef struct {
Charles MacNeill 5:89031b2f5316 201
Charles MacNeill 5:89031b2f5316 202 VL53LX_DeviceSscArray array_select;
Charles MacNeill 5:89031b2f5316 203
Charles MacNeill 5:89031b2f5316 204 uint8_t VL53LX_p_005;
Charles MacNeill 5:89031b2f5316 205
Charles MacNeill 5:89031b2f5316 206 uint8_t vcsel_start;
Charles MacNeill 5:89031b2f5316 207
Charles MacNeill 5:89031b2f5316 208 uint8_t vcsel_width;
Charles MacNeill 5:89031b2f5316 209
Charles MacNeill 5:89031b2f5316 210 uint32_t timeout_us;
Charles MacNeill 5:89031b2f5316 211
Charles MacNeill 5:89031b2f5316 212 uint16_t rate_limit_mcps;
Charles MacNeill 5:89031b2f5316 213
Charles MacNeill 5:89031b2f5316 214
Charles MacNeill 5:89031b2f5316 215 } VL53LX_ssc_config_t;
Charles MacNeill 5:89031b2f5316 216
Charles MacNeill 5:89031b2f5316 217
Charles MacNeill 5:89031b2f5316 218
Charles MacNeill 5:89031b2f5316 219
Charles MacNeill 5:89031b2f5316 220 typedef struct {
Charles MacNeill 5:89031b2f5316 221
Charles MacNeill 5:89031b2f5316 222
Charles MacNeill 5:89031b2f5316 223 uint32_t algo__crosstalk_compensation_plane_offset_kcps;
Charles MacNeill 5:89031b2f5316 224
Charles MacNeill 5:89031b2f5316 225 int16_t algo__crosstalk_compensation_x_plane_gradient_kcps;
Charles MacNeill 5:89031b2f5316 226
Charles MacNeill 5:89031b2f5316 227 int16_t algo__crosstalk_compensation_y_plane_gradient_kcps;
Charles MacNeill 5:89031b2f5316 228
Charles MacNeill 5:89031b2f5316 229 uint32_t nvm_default__crosstalk_compensation_plane_offset_kcps;
Charles MacNeill 5:89031b2f5316 230
Charles MacNeill 5:89031b2f5316 231 int16_t nvm_default__crosstalk_compensation_x_plane_gradient_kcps;
Charles MacNeill 5:89031b2f5316 232
Charles MacNeill 5:89031b2f5316 233 int16_t nvm_default__crosstalk_compensation_y_plane_gradient_kcps;
Charles MacNeill 5:89031b2f5316 234
Charles MacNeill 5:89031b2f5316 235 uint8_t global_crosstalk_compensation_enable;
Charles MacNeill 5:89031b2f5316 236
Charles MacNeill 5:89031b2f5316 237 int16_t histogram_mode_crosstalk_margin_kcps;
Charles MacNeill 5:89031b2f5316 238
Charles MacNeill 5:89031b2f5316 239 int16_t lite_mode_crosstalk_margin_kcps;
Charles MacNeill 5:89031b2f5316 240
Charles MacNeill 5:89031b2f5316 241 uint8_t crosstalk_range_ignore_threshold_mult;
Charles MacNeill 5:89031b2f5316 242
Charles MacNeill 5:89031b2f5316 243 uint16_t crosstalk_range_ignore_threshold_rate_mcps;
Charles MacNeill 5:89031b2f5316 244
Charles MacNeill 5:89031b2f5316 245 int16_t algo__crosstalk_detect_min_valid_range_mm;
Charles MacNeill 5:89031b2f5316 246
Charles MacNeill 5:89031b2f5316 247 int16_t algo__crosstalk_detect_max_valid_range_mm;
Charles MacNeill 5:89031b2f5316 248
Charles MacNeill 5:89031b2f5316 249 uint16_t algo__crosstalk_detect_max_valid_rate_kcps;
Charles MacNeill 5:89031b2f5316 250
Charles MacNeill 5:89031b2f5316 251 uint16_t algo__crosstalk_detect_max_sigma_mm;
Charles MacNeill 5:89031b2f5316 252
Charles MacNeill 5:89031b2f5316 253
Charles MacNeill 5:89031b2f5316 254
Charles MacNeill 5:89031b2f5316 255 } VL53LX_xtalk_config_t;
Charles MacNeill 5:89031b2f5316 256
Charles MacNeill 5:89031b2f5316 257
Charles MacNeill 5:89031b2f5316 258
Charles MacNeill 5:89031b2f5316 259
Charles MacNeill 5:89031b2f5316 260 typedef struct {
Charles MacNeill 5:89031b2f5316 261
Charles MacNeill 5:89031b2f5316 262
Charles MacNeill 5:89031b2f5316 263 uint16_t tp_tuning_parm_version;
Charles MacNeill 5:89031b2f5316 264
Charles MacNeill 5:89031b2f5316 265 uint16_t tp_tuning_parm_key_table_version;
Charles MacNeill 5:89031b2f5316 266
Charles MacNeill 5:89031b2f5316 267 uint16_t tp_tuning_parm_lld_version;
Charles MacNeill 5:89031b2f5316 268
Charles MacNeill 5:89031b2f5316 269 uint8_t tp_init_phase_rtn_lite_long;
Charles MacNeill 5:89031b2f5316 270
Charles MacNeill 5:89031b2f5316 271 uint8_t tp_init_phase_rtn_lite_med;
Charles MacNeill 5:89031b2f5316 272
Charles MacNeill 5:89031b2f5316 273 uint8_t tp_init_phase_rtn_lite_short;
Charles MacNeill 5:89031b2f5316 274
Charles MacNeill 5:89031b2f5316 275 uint8_t tp_init_phase_ref_lite_long;
Charles MacNeill 5:89031b2f5316 276
Charles MacNeill 5:89031b2f5316 277 uint8_t tp_init_phase_ref_lite_med;
Charles MacNeill 5:89031b2f5316 278
Charles MacNeill 5:89031b2f5316 279 uint8_t tp_init_phase_ref_lite_short;
Charles MacNeill 5:89031b2f5316 280
Charles MacNeill 5:89031b2f5316 281
Charles MacNeill 5:89031b2f5316 282 uint8_t tp_init_phase_rtn_hist_long;
Charles MacNeill 5:89031b2f5316 283
Charles MacNeill 5:89031b2f5316 284 uint8_t tp_init_phase_rtn_hist_med;
Charles MacNeill 5:89031b2f5316 285
Charles MacNeill 5:89031b2f5316 286 uint8_t tp_init_phase_rtn_hist_short;
Charles MacNeill 5:89031b2f5316 287
Charles MacNeill 5:89031b2f5316 288 uint8_t tp_init_phase_ref_hist_long;
Charles MacNeill 5:89031b2f5316 289
Charles MacNeill 5:89031b2f5316 290 uint8_t tp_init_phase_ref_hist_med;
Charles MacNeill 5:89031b2f5316 291
Charles MacNeill 5:89031b2f5316 292 uint8_t tp_init_phase_ref_hist_short;
Charles MacNeill 5:89031b2f5316 293
Charles MacNeill 5:89031b2f5316 294
Charles MacNeill 5:89031b2f5316 295 uint8_t tp_consistency_lite_phase_tolerance;
Charles MacNeill 5:89031b2f5316 296
Charles MacNeill 5:89031b2f5316 297 uint8_t tp_phasecal_target;
Charles MacNeill 5:89031b2f5316 298
Charles MacNeill 5:89031b2f5316 299 uint16_t tp_cal_repeat_rate;
Charles MacNeill 5:89031b2f5316 300
Charles MacNeill 5:89031b2f5316 301 uint8_t tp_lite_min_clip;
Charles MacNeill 5:89031b2f5316 302
Charles MacNeill 5:89031b2f5316 303
Charles MacNeill 5:89031b2f5316 304 uint16_t tp_lite_long_sigma_thresh_mm;
Charles MacNeill 5:89031b2f5316 305
Charles MacNeill 5:89031b2f5316 306 uint16_t tp_lite_med_sigma_thresh_mm;
Charles MacNeill 5:89031b2f5316 307
Charles MacNeill 5:89031b2f5316 308 uint16_t tp_lite_short_sigma_thresh_mm;
Charles MacNeill 5:89031b2f5316 309
Charles MacNeill 5:89031b2f5316 310
Charles MacNeill 5:89031b2f5316 311 uint16_t tp_lite_long_min_count_rate_rtn_mcps;
Charles MacNeill 5:89031b2f5316 312
Charles MacNeill 5:89031b2f5316 313 uint16_t tp_lite_med_min_count_rate_rtn_mcps;
Charles MacNeill 5:89031b2f5316 314
Charles MacNeill 5:89031b2f5316 315 uint16_t tp_lite_short_min_count_rate_rtn_mcps;
Charles MacNeill 5:89031b2f5316 316
Charles MacNeill 5:89031b2f5316 317
Charles MacNeill 5:89031b2f5316 318 uint8_t tp_lite_sigma_est_pulse_width_ns;
Charles MacNeill 5:89031b2f5316 319
Charles MacNeill 5:89031b2f5316 320 uint8_t tp_lite_sigma_est_amb_width_ns;
Charles MacNeill 5:89031b2f5316 321
Charles MacNeill 5:89031b2f5316 322 uint8_t tp_lite_sigma_ref_mm;
Charles MacNeill 5:89031b2f5316 323
Charles MacNeill 5:89031b2f5316 324 uint8_t tp_lite_seed_cfg;
Charles MacNeill 5:89031b2f5316 325
Charles MacNeill 5:89031b2f5316 326 uint8_t tp_timed_seed_cfg;
Charles MacNeill 5:89031b2f5316 327
Charles MacNeill 5:89031b2f5316 328
Charles MacNeill 5:89031b2f5316 329 uint8_t tp_lite_quantifier;
Charles MacNeill 5:89031b2f5316 330
Charles MacNeill 5:89031b2f5316 331 uint8_t tp_lite_first_order_select;
Charles MacNeill 5:89031b2f5316 332
Charles MacNeill 5:89031b2f5316 333
Charles MacNeill 5:89031b2f5316 334 uint16_t tp_dss_target_lite_mcps;
Charles MacNeill 5:89031b2f5316 335
Charles MacNeill 5:89031b2f5316 336 uint16_t tp_dss_target_histo_mcps;
Charles MacNeill 5:89031b2f5316 337
Charles MacNeill 5:89031b2f5316 338 uint16_t tp_dss_target_histo_mz_mcps;
Charles MacNeill 5:89031b2f5316 339
Charles MacNeill 5:89031b2f5316 340 uint16_t tp_dss_target_timed_mcps;
Charles MacNeill 5:89031b2f5316 341
Charles MacNeill 5:89031b2f5316 342 uint16_t tp_dss_target_very_short_mcps;
Charles MacNeill 5:89031b2f5316 343
Charles MacNeill 5:89031b2f5316 344
Charles MacNeill 5:89031b2f5316 345 uint32_t tp_phasecal_timeout_lite_us;
Charles MacNeill 5:89031b2f5316 346
Charles MacNeill 5:89031b2f5316 347 uint32_t tp_phasecal_timeout_hist_long_us;
Charles MacNeill 5:89031b2f5316 348
Charles MacNeill 5:89031b2f5316 349 uint32_t tp_phasecal_timeout_hist_med_us;
Charles MacNeill 5:89031b2f5316 350
Charles MacNeill 5:89031b2f5316 351 uint32_t tp_phasecal_timeout_hist_short_us;
Charles MacNeill 5:89031b2f5316 352
Charles MacNeill 5:89031b2f5316 353
Charles MacNeill 5:89031b2f5316 354 uint32_t tp_phasecal_timeout_mz_long_us;
Charles MacNeill 5:89031b2f5316 355
Charles MacNeill 5:89031b2f5316 356 uint32_t tp_phasecal_timeout_mz_med_us;
Charles MacNeill 5:89031b2f5316 357
Charles MacNeill 5:89031b2f5316 358 uint32_t tp_phasecal_timeout_mz_short_us;
Charles MacNeill 5:89031b2f5316 359
Charles MacNeill 5:89031b2f5316 360 uint32_t tp_phasecal_timeout_timed_us;
Charles MacNeill 5:89031b2f5316 361
Charles MacNeill 5:89031b2f5316 362
Charles MacNeill 5:89031b2f5316 363 uint32_t tp_mm_timeout_lite_us;
Charles MacNeill 5:89031b2f5316 364
Charles MacNeill 5:89031b2f5316 365 uint32_t tp_mm_timeout_histo_us;
Charles MacNeill 5:89031b2f5316 366
Charles MacNeill 5:89031b2f5316 367 uint32_t tp_mm_timeout_mz_us;
Charles MacNeill 5:89031b2f5316 368
Charles MacNeill 5:89031b2f5316 369 uint32_t tp_mm_timeout_timed_us;
Charles MacNeill 5:89031b2f5316 370
Charles MacNeill 5:89031b2f5316 371 uint32_t tp_mm_timeout_lpa_us;
Charles MacNeill 5:89031b2f5316 372
Charles MacNeill 5:89031b2f5316 373
Charles MacNeill 5:89031b2f5316 374 uint32_t tp_range_timeout_lite_us;
Charles MacNeill 5:89031b2f5316 375
Charles MacNeill 5:89031b2f5316 376 uint32_t tp_range_timeout_histo_us;
Charles MacNeill 5:89031b2f5316 377
Charles MacNeill 5:89031b2f5316 378 uint32_t tp_range_timeout_mz_us;
Charles MacNeill 5:89031b2f5316 379
Charles MacNeill 5:89031b2f5316 380 uint32_t tp_range_timeout_timed_us;
Charles MacNeill 5:89031b2f5316 381
Charles MacNeill 5:89031b2f5316 382 uint32_t tp_range_timeout_lpa_us;
Charles MacNeill 5:89031b2f5316 383
Charles MacNeill 5:89031b2f5316 384 uint32_t tp_phasecal_patch_power;
Charles MacNeill 5:89031b2f5316 385
Charles MacNeill 5:89031b2f5316 386 uint8_t tp_hist_merge;
Charles MacNeill 5:89031b2f5316 387
Charles MacNeill 5:89031b2f5316 388 uint32_t tp_reset_merge_threshold;
Charles MacNeill 5:89031b2f5316 389
Charles MacNeill 5:89031b2f5316 390 uint8_t tp_hist_merge_max_size;
Charles MacNeill 5:89031b2f5316 391
Charles MacNeill 5:89031b2f5316 392
Charles MacNeill 5:89031b2f5316 393 uint8_t tp_uwr_enable;
Charles MacNeill 5:89031b2f5316 394 int16_t tp_uwr_med_z_1_min;
Charles MacNeill 5:89031b2f5316 395 int16_t tp_uwr_med_z_1_max;
Charles MacNeill 5:89031b2f5316 396 int16_t tp_uwr_med_z_2_min;
Charles MacNeill 5:89031b2f5316 397 int16_t tp_uwr_med_z_2_max;
Charles MacNeill 5:89031b2f5316 398 int16_t tp_uwr_med_z_3_min;
Charles MacNeill 5:89031b2f5316 399 int16_t tp_uwr_med_z_3_max;
Charles MacNeill 5:89031b2f5316 400 int16_t tp_uwr_med_z_4_min;
Charles MacNeill 5:89031b2f5316 401 int16_t tp_uwr_med_z_4_max;
Charles MacNeill 5:89031b2f5316 402 int16_t tp_uwr_med_z_5_min;
Charles MacNeill 5:89031b2f5316 403 int16_t tp_uwr_med_z_5_max;
Charles MacNeill 5:89031b2f5316 404 int16_t tp_uwr_med_corr_z_1_rangea;
Charles MacNeill 5:89031b2f5316 405 int16_t tp_uwr_med_corr_z_1_rangeb;
Charles MacNeill 5:89031b2f5316 406 int16_t tp_uwr_med_corr_z_2_rangea;
Charles MacNeill 5:89031b2f5316 407 int16_t tp_uwr_med_corr_z_2_rangeb;
Charles MacNeill 5:89031b2f5316 408 int16_t tp_uwr_med_corr_z_3_rangea;
Charles MacNeill 5:89031b2f5316 409 int16_t tp_uwr_med_corr_z_3_rangeb;
Charles MacNeill 5:89031b2f5316 410 int16_t tp_uwr_med_corr_z_4_rangea;
Charles MacNeill 5:89031b2f5316 411 int16_t tp_uwr_med_corr_z_4_rangeb;
Charles MacNeill 5:89031b2f5316 412 int16_t tp_uwr_med_corr_z_5_rangea;
Charles MacNeill 5:89031b2f5316 413 int16_t tp_uwr_med_corr_z_5_rangeb;
Charles MacNeill 5:89031b2f5316 414 int16_t tp_uwr_lng_z_1_min;
Charles MacNeill 5:89031b2f5316 415 int16_t tp_uwr_lng_z_1_max;
Charles MacNeill 5:89031b2f5316 416 int16_t tp_uwr_lng_z_2_min;
Charles MacNeill 5:89031b2f5316 417 int16_t tp_uwr_lng_z_2_max;
Charles MacNeill 5:89031b2f5316 418 int16_t tp_uwr_lng_z_3_min;
Charles MacNeill 5:89031b2f5316 419 int16_t tp_uwr_lng_z_3_max;
Charles MacNeill 5:89031b2f5316 420 int16_t tp_uwr_lng_z_4_min;
Charles MacNeill 5:89031b2f5316 421 int16_t tp_uwr_lng_z_4_max;
Charles MacNeill 5:89031b2f5316 422 int16_t tp_uwr_lng_z_5_min;
Charles MacNeill 5:89031b2f5316 423 int16_t tp_uwr_lng_z_5_max;
Charles MacNeill 5:89031b2f5316 424 int16_t tp_uwr_lng_corr_z_1_rangea;
Charles MacNeill 5:89031b2f5316 425 int16_t tp_uwr_lng_corr_z_1_rangeb;
Charles MacNeill 5:89031b2f5316 426 int16_t tp_uwr_lng_corr_z_2_rangea;
Charles MacNeill 5:89031b2f5316 427 int16_t tp_uwr_lng_corr_z_2_rangeb;
Charles MacNeill 5:89031b2f5316 428 int16_t tp_uwr_lng_corr_z_3_rangea;
Charles MacNeill 5:89031b2f5316 429 int16_t tp_uwr_lng_corr_z_3_rangeb;
Charles MacNeill 5:89031b2f5316 430 int16_t tp_uwr_lng_corr_z_4_rangea;
Charles MacNeill 5:89031b2f5316 431 int16_t tp_uwr_lng_corr_z_4_rangeb;
Charles MacNeill 5:89031b2f5316 432 int16_t tp_uwr_lng_corr_z_5_rangea;
Charles MacNeill 5:89031b2f5316 433 int16_t tp_uwr_lng_corr_z_5_rangeb;
Charles MacNeill 5:89031b2f5316 434
Charles MacNeill 5:89031b2f5316 435 } VL53LX_tuning_parm_storage_t;
Charles MacNeill 5:89031b2f5316 436
Charles MacNeill 5:89031b2f5316 437
Charles MacNeill 5:89031b2f5316 438
Charles MacNeill 5:89031b2f5316 439
Charles MacNeill 5:89031b2f5316 440
Charles MacNeill 5:89031b2f5316 441 typedef struct {
Charles MacNeill 5:89031b2f5316 442
Charles MacNeill 5:89031b2f5316 443 uint8_t x_centre;
Charles MacNeill 5:89031b2f5316 444 uint8_t y_centre;
Charles MacNeill 5:89031b2f5316 445
Charles MacNeill 5:89031b2f5316 446 } VL53LX_optical_centre_t;
Charles MacNeill 5:89031b2f5316 447
Charles MacNeill 5:89031b2f5316 448
Charles MacNeill 5:89031b2f5316 449
Charles MacNeill 5:89031b2f5316 450
Charles MacNeill 5:89031b2f5316 451 typedef struct {
Charles MacNeill 5:89031b2f5316 452
Charles MacNeill 5:89031b2f5316 453 uint8_t x_centre;
Charles MacNeill 5:89031b2f5316 454 uint8_t y_centre;
Charles MacNeill 5:89031b2f5316 455 uint8_t width;
Charles MacNeill 5:89031b2f5316 456 uint8_t height;
Charles MacNeill 5:89031b2f5316 457
Charles MacNeill 5:89031b2f5316 458 } VL53LX_user_zone_t;
Charles MacNeill 5:89031b2f5316 459
Charles MacNeill 5:89031b2f5316 460
Charles MacNeill 5:89031b2f5316 461
Charles MacNeill 5:89031b2f5316 462
Charles MacNeill 5:89031b2f5316 463 typedef struct {
Charles MacNeill 5:89031b2f5316 464
Charles MacNeill 5:89031b2f5316 465 uint8_t max_zones;
Charles MacNeill 5:89031b2f5316 466 uint8_t active_zones;
Charles MacNeill 5:89031b2f5316 467
Charles MacNeill 5:89031b2f5316 468
Charles MacNeill 5:89031b2f5316 469
Charles MacNeill 5:89031b2f5316 470 VL53LX_histogram_config_t multizone_hist_cfg;
Charles MacNeill 5:89031b2f5316 471
Charles MacNeill 5:89031b2f5316 472 VL53LX_user_zone_t user_zones[VL53LX_MAX_USER_ZONES];
Charles MacNeill 5:89031b2f5316 473
Charles MacNeill 5:89031b2f5316 474
Charles MacNeill 5:89031b2f5316 475 uint8_t bin_config[VL53LX_MAX_USER_ZONES];
Charles MacNeill 5:89031b2f5316 476
Charles MacNeill 5:89031b2f5316 477
Charles MacNeill 5:89031b2f5316 478 } VL53LX_zone_config_t;
Charles MacNeill 5:89031b2f5316 479
Charles MacNeill 5:89031b2f5316 480
Charles MacNeill 5:89031b2f5316 481
Charles MacNeill 5:89031b2f5316 482 typedef struct {
Charles MacNeill 5:89031b2f5316 483
Charles MacNeill 5:89031b2f5316 484
Charles MacNeill 5:89031b2f5316 485 VL53LX_GPIO_Interrupt_Mode intr_mode_distance;
Charles MacNeill 5:89031b2f5316 486
Charles MacNeill 5:89031b2f5316 487
Charles MacNeill 5:89031b2f5316 488 VL53LX_GPIO_Interrupt_Mode intr_mode_rate;
Charles MacNeill 5:89031b2f5316 489
Charles MacNeill 5:89031b2f5316 490
Charles MacNeill 5:89031b2f5316 491 uint8_t intr_new_measure_ready;
Charles MacNeill 5:89031b2f5316 492
Charles MacNeill 5:89031b2f5316 493
Charles MacNeill 5:89031b2f5316 494 uint8_t intr_no_target;
Charles MacNeill 5:89031b2f5316 495
Charles MacNeill 5:89031b2f5316 496
Charles MacNeill 5:89031b2f5316 497 uint8_t intr_combined_mode;
Charles MacNeill 5:89031b2f5316 498
Charles MacNeill 5:89031b2f5316 499
Charles MacNeill 5:89031b2f5316 500
Charles MacNeill 5:89031b2f5316 501
Charles MacNeill 5:89031b2f5316 502
Charles MacNeill 5:89031b2f5316 503 uint16_t threshold_distance_high;
Charles MacNeill 5:89031b2f5316 504
Charles MacNeill 5:89031b2f5316 505
Charles MacNeill 5:89031b2f5316 506 uint16_t threshold_distance_low;
Charles MacNeill 5:89031b2f5316 507
Charles MacNeill 5:89031b2f5316 508
Charles MacNeill 5:89031b2f5316 509 uint16_t threshold_rate_high;
Charles MacNeill 5:89031b2f5316 510
Charles MacNeill 5:89031b2f5316 511
Charles MacNeill 5:89031b2f5316 512 uint16_t threshold_rate_low;
Charles MacNeill 5:89031b2f5316 513
Charles MacNeill 5:89031b2f5316 514 } VL53LX_GPIO_interrupt_config_t;
Charles MacNeill 5:89031b2f5316 515
Charles MacNeill 5:89031b2f5316 516
Charles MacNeill 5:89031b2f5316 517
Charles MacNeill 5:89031b2f5316 518
Charles MacNeill 5:89031b2f5316 519 typedef struct {
Charles MacNeill 5:89031b2f5316 520
Charles MacNeill 5:89031b2f5316 521
Charles MacNeill 5:89031b2f5316 522 uint8_t vhv_loop_bound;
Charles MacNeill 5:89031b2f5316 523
Charles MacNeill 5:89031b2f5316 524
Charles MacNeill 5:89031b2f5316 525 uint8_t is_low_power_auto_mode;
Charles MacNeill 5:89031b2f5316 526
Charles MacNeill 5:89031b2f5316 527
Charles MacNeill 5:89031b2f5316 528 uint8_t low_power_auto_range_count;
Charles MacNeill 5:89031b2f5316 529
Charles MacNeill 5:89031b2f5316 530
Charles MacNeill 5:89031b2f5316 531 uint8_t saved_interrupt_config;
Charles MacNeill 5:89031b2f5316 532
Charles MacNeill 5:89031b2f5316 533
Charles MacNeill 5:89031b2f5316 534 uint8_t saved_vhv_init;
Charles MacNeill 5:89031b2f5316 535
Charles MacNeill 5:89031b2f5316 536
Charles MacNeill 5:89031b2f5316 537 uint8_t saved_vhv_timeout;
Charles MacNeill 5:89031b2f5316 538
Charles MacNeill 5:89031b2f5316 539
Charles MacNeill 5:89031b2f5316 540 uint8_t first_run_phasecal_result;
Charles MacNeill 5:89031b2f5316 541
Charles MacNeill 5:89031b2f5316 542
Charles MacNeill 5:89031b2f5316 543 uint32_t dss__total_rate_per_spad_mcps;
Charles MacNeill 5:89031b2f5316 544
Charles MacNeill 5:89031b2f5316 545
Charles MacNeill 5:89031b2f5316 546 uint16_t dss__required_spads;
Charles MacNeill 5:89031b2f5316 547
Charles MacNeill 5:89031b2f5316 548 } VL53LX_low_power_auto_data_t;
Charles MacNeill 5:89031b2f5316 549
Charles MacNeill 5:89031b2f5316 550
Charles MacNeill 5:89031b2f5316 551
Charles MacNeill 5:89031b2f5316 552
Charles MacNeill 5:89031b2f5316 553
Charles MacNeill 5:89031b2f5316 554
Charles MacNeill 5:89031b2f5316 555
Charles MacNeill 5:89031b2f5316 556 typedef struct {
Charles MacNeill 5:89031b2f5316 557
Charles MacNeill 5:89031b2f5316 558
Charles MacNeill 5:89031b2f5316 559 uint8_t smudge_corr_enabled;
Charles MacNeill 5:89031b2f5316 560
Charles MacNeill 5:89031b2f5316 561
Charles MacNeill 5:89031b2f5316 562 uint8_t smudge_corr_apply_enabled;
Charles MacNeill 5:89031b2f5316 563
Charles MacNeill 5:89031b2f5316 564
Charles MacNeill 5:89031b2f5316 565 uint8_t smudge_corr_single_apply;
Charles MacNeill 5:89031b2f5316 566
Charles MacNeill 5:89031b2f5316 567
Charles MacNeill 5:89031b2f5316 568
Charles MacNeill 5:89031b2f5316 569
Charles MacNeill 5:89031b2f5316 570 uint16_t smudge_margin;
Charles MacNeill 5:89031b2f5316 571
Charles MacNeill 5:89031b2f5316 572
Charles MacNeill 5:89031b2f5316 573 uint32_t noise_margin;
Charles MacNeill 5:89031b2f5316 574
Charles MacNeill 5:89031b2f5316 575
Charles MacNeill 5:89031b2f5316 576 uint32_t user_xtalk_offset_limit;
Charles MacNeill 5:89031b2f5316 577
Charles MacNeill 5:89031b2f5316 578
Charles MacNeill 5:89031b2f5316 579 uint8_t user_xtalk_offset_limit_hi;
Charles MacNeill 5:89031b2f5316 580
Charles MacNeill 5:89031b2f5316 581
Charles MacNeill 5:89031b2f5316 582 uint32_t sample_limit;
Charles MacNeill 5:89031b2f5316 583
Charles MacNeill 5:89031b2f5316 584
Charles MacNeill 5:89031b2f5316 585 uint32_t single_xtalk_delta;
Charles MacNeill 5:89031b2f5316 586
Charles MacNeill 5:89031b2f5316 587
Charles MacNeill 5:89031b2f5316 588 uint32_t averaged_xtalk_delta;
Charles MacNeill 5:89031b2f5316 589
Charles MacNeill 5:89031b2f5316 590
Charles MacNeill 5:89031b2f5316 591 uint32_t smudge_corr_clip_limit;
Charles MacNeill 5:89031b2f5316 592
Charles MacNeill 5:89031b2f5316 593
Charles MacNeill 5:89031b2f5316 594 uint32_t smudge_corr_ambient_threshold;
Charles MacNeill 5:89031b2f5316 595
Charles MacNeill 5:89031b2f5316 596
Charles MacNeill 5:89031b2f5316 597 uint8_t scaler_calc_method;
Charles MacNeill 5:89031b2f5316 598
Charles MacNeill 5:89031b2f5316 599
Charles MacNeill 5:89031b2f5316 600 int16_t x_gradient_scaler;
Charles MacNeill 5:89031b2f5316 601
Charles MacNeill 5:89031b2f5316 602
Charles MacNeill 5:89031b2f5316 603 int16_t y_gradient_scaler;
Charles MacNeill 5:89031b2f5316 604
Charles MacNeill 5:89031b2f5316 605
Charles MacNeill 5:89031b2f5316 606 uint8_t user_scaler_set;
Charles MacNeill 5:89031b2f5316 607
Charles MacNeill 5:89031b2f5316 608
Charles MacNeill 5:89031b2f5316 609 uint32_t nodetect_ambient_threshold;
Charles MacNeill 5:89031b2f5316 610
Charles MacNeill 5:89031b2f5316 611
Charles MacNeill 5:89031b2f5316 612 uint32_t nodetect_sample_limit;
Charles MacNeill 5:89031b2f5316 613
Charles MacNeill 5:89031b2f5316 614
Charles MacNeill 5:89031b2f5316 615 uint32_t nodetect_xtalk_offset;
Charles MacNeill 5:89031b2f5316 616
Charles MacNeill 5:89031b2f5316 617
Charles MacNeill 5:89031b2f5316 618 uint16_t nodetect_min_range_mm;
Charles MacNeill 5:89031b2f5316 619
Charles MacNeill 5:89031b2f5316 620
Charles MacNeill 5:89031b2f5316 621 uint32_t max_smudge_factor;
Charles MacNeill 5:89031b2f5316 622
Charles MacNeill 5:89031b2f5316 623 } VL53LX_smudge_corrector_config_t;
Charles MacNeill 5:89031b2f5316 624
Charles MacNeill 5:89031b2f5316 625
Charles MacNeill 5:89031b2f5316 626
Charles MacNeill 5:89031b2f5316 627 typedef struct {
Charles MacNeill 5:89031b2f5316 628
Charles MacNeill 5:89031b2f5316 629
Charles MacNeill 5:89031b2f5316 630 uint32_t current_samples;
Charles MacNeill 5:89031b2f5316 631
Charles MacNeill 5:89031b2f5316 632
Charles MacNeill 5:89031b2f5316 633 uint32_t required_samples;
Charles MacNeill 5:89031b2f5316 634
Charles MacNeill 5:89031b2f5316 635
Charles MacNeill 5:89031b2f5316 636 uint64_t accumulator;
Charles MacNeill 5:89031b2f5316 637
Charles MacNeill 5:89031b2f5316 638
Charles MacNeill 5:89031b2f5316 639 uint32_t nodetect_counter;
Charles MacNeill 5:89031b2f5316 640
Charles MacNeill 5:89031b2f5316 641 } VL53LX_smudge_corrector_internals_t;
Charles MacNeill 5:89031b2f5316 642
Charles MacNeill 5:89031b2f5316 643
Charles MacNeill 5:89031b2f5316 644
Charles MacNeill 5:89031b2f5316 645 typedef struct {
Charles MacNeill 5:89031b2f5316 646
Charles MacNeill 5:89031b2f5316 647
Charles MacNeill 5:89031b2f5316 648 uint8_t smudge_corr_valid;
Charles MacNeill 5:89031b2f5316 649
Charles MacNeill 5:89031b2f5316 650
Charles MacNeill 5:89031b2f5316 651 uint8_t smudge_corr_clipped;
Charles MacNeill 5:89031b2f5316 652
Charles MacNeill 5:89031b2f5316 653
Charles MacNeill 5:89031b2f5316 654 uint8_t single_xtalk_delta_flag;
Charles MacNeill 5:89031b2f5316 655
Charles MacNeill 5:89031b2f5316 656
Charles MacNeill 5:89031b2f5316 657 uint8_t averaged_xtalk_delta_flag;
Charles MacNeill 5:89031b2f5316 658
Charles MacNeill 5:89031b2f5316 659
Charles MacNeill 5:89031b2f5316 660 uint8_t sample_limit_exceeded_flag;
Charles MacNeill 5:89031b2f5316 661
Charles MacNeill 5:89031b2f5316 662
Charles MacNeill 5:89031b2f5316 663 uint8_t gradient_zero_flag;
Charles MacNeill 5:89031b2f5316 664
Charles MacNeill 5:89031b2f5316 665
Charles MacNeill 5:89031b2f5316 666 uint8_t new_xtalk_applied_flag;
Charles MacNeill 5:89031b2f5316 667
Charles MacNeill 5:89031b2f5316 668
Charles MacNeill 5:89031b2f5316 669 uint32_t algo__crosstalk_compensation_plane_offset_kcps;
Charles MacNeill 5:89031b2f5316 670
Charles MacNeill 5:89031b2f5316 671
Charles MacNeill 5:89031b2f5316 672 int16_t algo__crosstalk_compensation_x_plane_gradient_kcps;
Charles MacNeill 5:89031b2f5316 673
Charles MacNeill 5:89031b2f5316 674
Charles MacNeill 5:89031b2f5316 675 int16_t algo__crosstalk_compensation_y_plane_gradient_kcps;
Charles MacNeill 5:89031b2f5316 676
Charles MacNeill 5:89031b2f5316 677
Charles MacNeill 5:89031b2f5316 678 } VL53LX_smudge_corrector_data_t;
Charles MacNeill 5:89031b2f5316 679
Charles MacNeill 5:89031b2f5316 680
Charles MacNeill 5:89031b2f5316 681
Charles MacNeill 5:89031b2f5316 682
Charles MacNeill 5:89031b2f5316 683
Charles MacNeill 5:89031b2f5316 684 typedef struct {
Charles MacNeill 5:89031b2f5316 685
Charles MacNeill 5:89031b2f5316 686
Charles MacNeill 5:89031b2f5316 687
Charles MacNeill 5:89031b2f5316 688 uint8_t range_id;
Charles MacNeill 5:89031b2f5316 689
Charles MacNeill 5:89031b2f5316 690 uint32_t time_stamp;
Charles MacNeill 5:89031b2f5316 691
Charles MacNeill 5:89031b2f5316 692 uint8_t VL53LX_p_012;
Charles MacNeill 5:89031b2f5316 693
Charles MacNeill 5:89031b2f5316 694 uint8_t VL53LX_p_019;
Charles MacNeill 5:89031b2f5316 695
Charles MacNeill 5:89031b2f5316 696 uint8_t VL53LX_p_023;
Charles MacNeill 5:89031b2f5316 697
Charles MacNeill 5:89031b2f5316 698 uint8_t VL53LX_p_024;
Charles MacNeill 5:89031b2f5316 699
Charles MacNeill 5:89031b2f5316 700 uint8_t VL53LX_p_013;
Charles MacNeill 5:89031b2f5316 701
Charles MacNeill 5:89031b2f5316 702 uint8_t VL53LX_p_025;
Charles MacNeill 5:89031b2f5316 703
Charles MacNeill 5:89031b2f5316 704
Charles MacNeill 5:89031b2f5316 705 uint16_t width;
Charles MacNeill 5:89031b2f5316 706
Charles MacNeill 5:89031b2f5316 707 uint8_t VL53LX_p_029;
Charles MacNeill 5:89031b2f5316 708
Charles MacNeill 5:89031b2f5316 709
Charles MacNeill 5:89031b2f5316 710 uint16_t fast_osc_frequency;
Charles MacNeill 5:89031b2f5316 711
Charles MacNeill 5:89031b2f5316 712 uint16_t zero_distance_phase;
Charles MacNeill 5:89031b2f5316 713
Charles MacNeill 5:89031b2f5316 714 uint16_t VL53LX_p_004;
Charles MacNeill 5:89031b2f5316 715
Charles MacNeill 5:89031b2f5316 716
Charles MacNeill 5:89031b2f5316 717 uint32_t total_periods_elapsed;
Charles MacNeill 5:89031b2f5316 718
Charles MacNeill 5:89031b2f5316 719
Charles MacNeill 5:89031b2f5316 720 uint32_t peak_duration_us;
Charles MacNeill 5:89031b2f5316 721
Charles MacNeill 5:89031b2f5316 722
Charles MacNeill 5:89031b2f5316 723 uint32_t woi_duration_us;
Charles MacNeill 5:89031b2f5316 724
Charles MacNeill 5:89031b2f5316 725
Charles MacNeill 5:89031b2f5316 726
Charles MacNeill 5:89031b2f5316 727
Charles MacNeill 5:89031b2f5316 728
Charles MacNeill 5:89031b2f5316 729 uint32_t VL53LX_p_016;
Charles MacNeill 5:89031b2f5316 730
Charles MacNeill 5:89031b2f5316 731 uint32_t VL53LX_p_017;
Charles MacNeill 5:89031b2f5316 732
Charles MacNeill 5:89031b2f5316 733 int32_t VL53LX_p_010;
Charles MacNeill 5:89031b2f5316 734
Charles MacNeill 5:89031b2f5316 735
Charles MacNeill 5:89031b2f5316 736
Charles MacNeill 5:89031b2f5316 737
Charles MacNeill 5:89031b2f5316 738 uint16_t peak_signal_count_rate_mcps;
Charles MacNeill 5:89031b2f5316 739
Charles MacNeill 5:89031b2f5316 740 uint16_t avg_signal_count_rate_mcps;
Charles MacNeill 5:89031b2f5316 741
Charles MacNeill 5:89031b2f5316 742 uint16_t ambient_count_rate_mcps;
Charles MacNeill 5:89031b2f5316 743
Charles MacNeill 5:89031b2f5316 744 uint16_t total_rate_per_spad_mcps;
Charles MacNeill 5:89031b2f5316 745
Charles MacNeill 5:89031b2f5316 746 uint32_t VL53LX_p_009;
Charles MacNeill 5:89031b2f5316 747
Charles MacNeill 5:89031b2f5316 748
Charles MacNeill 5:89031b2f5316 749
Charles MacNeill 5:89031b2f5316 750
Charles MacNeill 5:89031b2f5316 751 uint16_t VL53LX_p_002;
Charles MacNeill 5:89031b2f5316 752
Charles MacNeill 5:89031b2f5316 753
Charles MacNeill 5:89031b2f5316 754
Charles MacNeill 5:89031b2f5316 755
Charles MacNeill 5:89031b2f5316 756 uint16_t VL53LX_p_026;
Charles MacNeill 5:89031b2f5316 757
Charles MacNeill 5:89031b2f5316 758 uint16_t VL53LX_p_011;
Charles MacNeill 5:89031b2f5316 759
Charles MacNeill 5:89031b2f5316 760 uint16_t VL53LX_p_027;
Charles MacNeill 5:89031b2f5316 761
Charles MacNeill 5:89031b2f5316 762
Charles MacNeill 5:89031b2f5316 763
Charles MacNeill 5:89031b2f5316 764
Charles MacNeill 5:89031b2f5316 765 int16_t min_range_mm;
Charles MacNeill 5:89031b2f5316 766
Charles MacNeill 5:89031b2f5316 767 int16_t median_range_mm;
Charles MacNeill 5:89031b2f5316 768
Charles MacNeill 5:89031b2f5316 769 int16_t max_range_mm;
Charles MacNeill 5:89031b2f5316 770
Charles MacNeill 5:89031b2f5316 771
Charles MacNeill 5:89031b2f5316 772
Charles MacNeill 5:89031b2f5316 773
Charles MacNeill 5:89031b2f5316 774 uint8_t range_status;
Charles MacNeill 5:89031b2f5316 775
Charles MacNeill 5:89031b2f5316 776 } VL53LX_range_data_t;
Charles MacNeill 5:89031b2f5316 777
Charles MacNeill 5:89031b2f5316 778
Charles MacNeill 5:89031b2f5316 779
Charles MacNeill 5:89031b2f5316 780
Charles MacNeill 5:89031b2f5316 781 typedef struct {
Charles MacNeill 5:89031b2f5316 782
Charles MacNeill 5:89031b2f5316 783 VL53LX_DeviceState cfg_device_state;
Charles MacNeill 5:89031b2f5316 784
Charles MacNeill 5:89031b2f5316 785 VL53LX_DeviceState rd_device_state;
Charles MacNeill 5:89031b2f5316 786
Charles MacNeill 5:89031b2f5316 787 uint8_t zone_id;
Charles MacNeill 5:89031b2f5316 788
Charles MacNeill 5:89031b2f5316 789 uint8_t stream_count;
Charles MacNeill 5:89031b2f5316 790
Charles MacNeill 5:89031b2f5316 791
Charles MacNeill 5:89031b2f5316 792 int16_t VL53LX_p_022[VL53LX_MAX_AMBIENT_DMAX_VALUES];
Charles MacNeill 5:89031b2f5316 793
Charles MacNeill 5:89031b2f5316 794 int16_t wrap_dmax_mm;
Charles MacNeill 5:89031b2f5316 795
Charles MacNeill 5:89031b2f5316 796
Charles MacNeill 5:89031b2f5316 797 uint8_t device_status;
Charles MacNeill 5:89031b2f5316 798
Charles MacNeill 5:89031b2f5316 799
Charles MacNeill 5:89031b2f5316 800 uint8_t max_results;
Charles MacNeill 5:89031b2f5316 801
Charles MacNeill 5:89031b2f5316 802 uint8_t active_results;
Charles MacNeill 5:89031b2f5316 803
Charles MacNeill 5:89031b2f5316 804 VL53LX_range_data_t VL53LX_p_003[VL53LX_MAX_RANGE_RESULTS];
Charles MacNeill 5:89031b2f5316 805
Charles MacNeill 5:89031b2f5316 806 VL53LX_range_data_t xmonitor;
Charles MacNeill 5:89031b2f5316 807
Charles MacNeill 5:89031b2f5316 808 VL53LX_smudge_corrector_data_t smudge_corrector_data;
Charles MacNeill 5:89031b2f5316 809
Charles MacNeill 5:89031b2f5316 810
Charles MacNeill 5:89031b2f5316 811
Charles MacNeill 5:89031b2f5316 812 } VL53LX_range_results_t;
Charles MacNeill 5:89031b2f5316 813
Charles MacNeill 5:89031b2f5316 814
Charles MacNeill 5:89031b2f5316 815
Charles MacNeill 5:89031b2f5316 816
Charles MacNeill 5:89031b2f5316 817 typedef struct {
Charles MacNeill 5:89031b2f5316 818
Charles MacNeill 5:89031b2f5316 819 uint8_t no_of_samples;
Charles MacNeill 5:89031b2f5316 820
Charles MacNeill 5:89031b2f5316 821 uint32_t rate_per_spad_kcps_sum;
Charles MacNeill 5:89031b2f5316 822
Charles MacNeill 5:89031b2f5316 823 uint32_t rate_per_spad_kcps_avg;
Charles MacNeill 5:89031b2f5316 824
Charles MacNeill 5:89031b2f5316 825 int32_t signal_total_events_sum;
Charles MacNeill 5:89031b2f5316 826
Charles MacNeill 5:89031b2f5316 827 int32_t signal_total_events_avg;
Charles MacNeill 5:89031b2f5316 828
Charles MacNeill 5:89031b2f5316 829 uint32_t sigma_mm_sum;
Charles MacNeill 5:89031b2f5316 830
Charles MacNeill 5:89031b2f5316 831 uint32_t sigma_mm_avg;
Charles MacNeill 5:89031b2f5316 832
Charles MacNeill 5:89031b2f5316 833 uint32_t median_phase_sum;
Charles MacNeill 5:89031b2f5316 834
Charles MacNeill 5:89031b2f5316 835 uint32_t median_phase_avg;
Charles MacNeill 5:89031b2f5316 836
Charles MacNeill 5:89031b2f5316 837
Charles MacNeill 5:89031b2f5316 838 } VL53LX_xtalk_range_data_t;
Charles MacNeill 5:89031b2f5316 839
Charles MacNeill 5:89031b2f5316 840
Charles MacNeill 5:89031b2f5316 841
Charles MacNeill 5:89031b2f5316 842
Charles MacNeill 5:89031b2f5316 843 typedef struct {
Charles MacNeill 5:89031b2f5316 844
Charles MacNeill 5:89031b2f5316 845 VL53LX_Error cal_status;
Charles MacNeill 5:89031b2f5316 846
Charles MacNeill 5:89031b2f5316 847 uint8_t num_of_samples_status;
Charles MacNeill 5:89031b2f5316 848
Charles MacNeill 5:89031b2f5316 849 uint8_t zero_samples_status;
Charles MacNeill 5:89031b2f5316 850
Charles MacNeill 5:89031b2f5316 851 uint8_t max_sigma_status;
Charles MacNeill 5:89031b2f5316 852
Charles MacNeill 5:89031b2f5316 853 uint8_t max_results;
Charles MacNeill 5:89031b2f5316 854
Charles MacNeill 5:89031b2f5316 855 uint8_t active_results;
Charles MacNeill 5:89031b2f5316 856
Charles MacNeill 5:89031b2f5316 857
Charles MacNeill 5:89031b2f5316 858 VL53LX_xtalk_range_data_t
Charles MacNeill 5:89031b2f5316 859 VL53LX_p_003[VL53LX_MAX_XTALK_RANGE_RESULTS];
Charles MacNeill 5:89031b2f5316 860
Charles MacNeill 5:89031b2f5316 861 VL53LX_histogram_bin_data_t central_histogram_sum;
Charles MacNeill 5:89031b2f5316 862
Charles MacNeill 5:89031b2f5316 863 VL53LX_histogram_bin_data_t central_histogram_avg;
Charles MacNeill 5:89031b2f5316 864
Charles MacNeill 5:89031b2f5316 865 uint8_t central_histogram__window_start;
Charles MacNeill 5:89031b2f5316 866
Charles MacNeill 5:89031b2f5316 867 uint8_t central_histogram__window_end;
Charles MacNeill 5:89031b2f5316 868
Charles MacNeill 5:89031b2f5316 869 VL53LX_histogram_bin_data_t
Charles MacNeill 5:89031b2f5316 870 histogram_avg_1[VL53LX_MAX_XTALK_RANGE_RESULTS];
Charles MacNeill 5:89031b2f5316 871
Charles MacNeill 5:89031b2f5316 872 VL53LX_histogram_bin_data_t
Charles MacNeill 5:89031b2f5316 873 histogram_avg_2[VL53LX_MAX_XTALK_RANGE_RESULTS];
Charles MacNeill 5:89031b2f5316 874
Charles MacNeill 5:89031b2f5316 875 VL53LX_histogram_bin_data_t
Charles MacNeill 5:89031b2f5316 876 xtalk_avg[VL53LX_MAX_XTALK_RANGE_RESULTS];
Charles MacNeill 5:89031b2f5316 877
Charles MacNeill 5:89031b2f5316 878
Charles MacNeill 5:89031b2f5316 879 } VL53LX_xtalk_range_results_t;
Charles MacNeill 5:89031b2f5316 880
Charles MacNeill 5:89031b2f5316 881
Charles MacNeill 5:89031b2f5316 882
Charles MacNeill 5:89031b2f5316 883
Charles MacNeill 5:89031b2f5316 884 typedef struct {
Charles MacNeill 5:89031b2f5316 885
Charles MacNeill 5:89031b2f5316 886 uint8_t preset_mode;
Charles MacNeill 5:89031b2f5316 887
Charles MacNeill 5:89031b2f5316 888 uint8_t dss_config__roi_mode_control;
Charles MacNeill 5:89031b2f5316 889
Charles MacNeill 5:89031b2f5316 890 uint16_t dss_config__manual_effective_spads_select;
Charles MacNeill 5:89031b2f5316 891
Charles MacNeill 5:89031b2f5316 892 uint8_t no_of_samples;
Charles MacNeill 5:89031b2f5316 893
Charles MacNeill 5:89031b2f5316 894 uint32_t effective_spads;
Charles MacNeill 5:89031b2f5316 895
Charles MacNeill 5:89031b2f5316 896 uint32_t peak_rate_mcps;
Charles MacNeill 5:89031b2f5316 897
Charles MacNeill 5:89031b2f5316 898 uint32_t VL53LX_p_002;
Charles MacNeill 5:89031b2f5316 899
Charles MacNeill 5:89031b2f5316 900 int32_t median_range_mm;
Charles MacNeill 5:89031b2f5316 901
Charles MacNeill 5:89031b2f5316 902 int32_t range_mm_offset;
Charles MacNeill 5:89031b2f5316 903
Charles MacNeill 5:89031b2f5316 904
Charles MacNeill 5:89031b2f5316 905 } VL53LX_offset_range_data_t;
Charles MacNeill 5:89031b2f5316 906
Charles MacNeill 5:89031b2f5316 907
Charles MacNeill 5:89031b2f5316 908
Charles MacNeill 5:89031b2f5316 909
Charles MacNeill 5:89031b2f5316 910 typedef struct {
Charles MacNeill 5:89031b2f5316 911
Charles MacNeill 5:89031b2f5316 912 int16_t cal_distance_mm;
Charles MacNeill 5:89031b2f5316 913
Charles MacNeill 5:89031b2f5316 914 uint16_t cal_reflectance_pc;
Charles MacNeill 5:89031b2f5316 915
Charles MacNeill 5:89031b2f5316 916 VL53LX_Error cal_status;
Charles MacNeill 5:89031b2f5316 917
Charles MacNeill 5:89031b2f5316 918 uint8_t cal_report;
Charles MacNeill 5:89031b2f5316 919
Charles MacNeill 5:89031b2f5316 920 uint8_t max_results;
Charles MacNeill 5:89031b2f5316 921
Charles MacNeill 5:89031b2f5316 922 uint8_t active_results;
Charles MacNeill 5:89031b2f5316 923
Charles MacNeill 5:89031b2f5316 924 VL53LX_offset_range_data_t
Charles MacNeill 5:89031b2f5316 925 VL53LX_p_003[VL53LX_MAX_OFFSET_RANGE_RESULTS];
Charles MacNeill 5:89031b2f5316 926
Charles MacNeill 5:89031b2f5316 927
Charles MacNeill 5:89031b2f5316 928 } VL53LX_offset_range_results_t;
Charles MacNeill 5:89031b2f5316 929
Charles MacNeill 5:89031b2f5316 930
Charles MacNeill 5:89031b2f5316 931
Charles MacNeill 5:89031b2f5316 932
Charles MacNeill 5:89031b2f5316 933 typedef struct {
Charles MacNeill 5:89031b2f5316 934
Charles MacNeill 5:89031b2f5316 935 uint16_t result__mm_inner_actual_effective_spads;
Charles MacNeill 5:89031b2f5316 936
Charles MacNeill 5:89031b2f5316 937 uint16_t result__mm_outer_actual_effective_spads;
Charles MacNeill 5:89031b2f5316 938
Charles MacNeill 5:89031b2f5316 939 uint16_t result__mm_inner_peak_signal_count_rtn_mcps;
Charles MacNeill 5:89031b2f5316 940
Charles MacNeill 5:89031b2f5316 941 uint16_t result__mm_outer_peak_signal_count_rtn_mcps;
Charles MacNeill 5:89031b2f5316 942
Charles MacNeill 5:89031b2f5316 943
Charles MacNeill 5:89031b2f5316 944 } VL53LX_additional_offset_cal_data_t;
Charles MacNeill 5:89031b2f5316 945
Charles MacNeill 5:89031b2f5316 946
Charles MacNeill 5:89031b2f5316 947
Charles MacNeill 5:89031b2f5316 948 typedef struct {
Charles MacNeill 5:89031b2f5316 949 int16_t short_a_offset_mm;
Charles MacNeill 5:89031b2f5316 950 int16_t short_b_offset_mm;
Charles MacNeill 5:89031b2f5316 951 int16_t medium_a_offset_mm;
Charles MacNeill 5:89031b2f5316 952 int16_t medium_b_offset_mm;
Charles MacNeill 5:89031b2f5316 953 int16_t long_a_offset_mm;
Charles MacNeill 5:89031b2f5316 954 int16_t long_b_offset_mm;
Charles MacNeill 5:89031b2f5316 955 } VL53LX_per_vcsel_period_offset_cal_data_t;
Charles MacNeill 5:89031b2f5316 956
Charles MacNeill 5:89031b2f5316 957
Charles MacNeill 5:89031b2f5316 958
Charles MacNeill 5:89031b2f5316 959
Charles MacNeill 5:89031b2f5316 960
Charles MacNeill 5:89031b2f5316 961 typedef struct {
Charles MacNeill 5:89031b2f5316 962
Charles MacNeill 5:89031b2f5316 963 uint32_t VL53LX_p_016;
Charles MacNeill 5:89031b2f5316 964
Charles MacNeill 5:89031b2f5316 965 uint32_t VL53LX_p_017;
Charles MacNeill 5:89031b2f5316 966
Charles MacNeill 5:89031b2f5316 967 uint16_t VL53LX_p_011;
Charles MacNeill 5:89031b2f5316 968
Charles MacNeill 5:89031b2f5316 969 uint8_t range_status;
Charles MacNeill 5:89031b2f5316 970
Charles MacNeill 5:89031b2f5316 971
Charles MacNeill 5:89031b2f5316 972 } VL53LX_object_data_t;
Charles MacNeill 5:89031b2f5316 973
Charles MacNeill 5:89031b2f5316 974
Charles MacNeill 5:89031b2f5316 975
Charles MacNeill 5:89031b2f5316 976
Charles MacNeill 5:89031b2f5316 977 typedef struct {
Charles MacNeill 5:89031b2f5316 978
Charles MacNeill 5:89031b2f5316 979 VL53LX_DeviceState cfg_device_state;
Charles MacNeill 5:89031b2f5316 980
Charles MacNeill 5:89031b2f5316 981 VL53LX_DeviceState rd_device_state;
Charles MacNeill 5:89031b2f5316 982
Charles MacNeill 5:89031b2f5316 983 uint8_t zone_id;
Charles MacNeill 5:89031b2f5316 984
Charles MacNeill 5:89031b2f5316 985 uint8_t stream_count;
Charles MacNeill 5:89031b2f5316 986
Charles MacNeill 5:89031b2f5316 987 uint8_t max_objects;
Charles MacNeill 5:89031b2f5316 988
Charles MacNeill 5:89031b2f5316 989 uint8_t active_objects;
Charles MacNeill 5:89031b2f5316 990
Charles MacNeill 5:89031b2f5316 991 VL53LX_object_data_t VL53LX_p_003[VL53LX_MAX_RANGE_RESULTS];
Charles MacNeill 5:89031b2f5316 992
Charles MacNeill 5:89031b2f5316 993
Charles MacNeill 5:89031b2f5316 994 VL53LX_object_data_t xmonitor;
Charles MacNeill 5:89031b2f5316 995
Charles MacNeill 5:89031b2f5316 996
Charles MacNeill 5:89031b2f5316 997 } VL53LX_zone_objects_t;
Charles MacNeill 5:89031b2f5316 998
Charles MacNeill 5:89031b2f5316 999
Charles MacNeill 5:89031b2f5316 1000
Charles MacNeill 5:89031b2f5316 1001
Charles MacNeill 5:89031b2f5316 1002
Charles MacNeill 5:89031b2f5316 1003
Charles MacNeill 5:89031b2f5316 1004 typedef struct {
Charles MacNeill 5:89031b2f5316 1005
Charles MacNeill 5:89031b2f5316 1006 uint8_t max_zones;
Charles MacNeill 5:89031b2f5316 1007
Charles MacNeill 5:89031b2f5316 1008 uint8_t active_zones;
Charles MacNeill 5:89031b2f5316 1009
Charles MacNeill 5:89031b2f5316 1010 VL53LX_zone_objects_t VL53LX_p_003[VL53LX_MAX_USER_ZONES];
Charles MacNeill 5:89031b2f5316 1011
Charles MacNeill 5:89031b2f5316 1012
Charles MacNeill 5:89031b2f5316 1013 } VL53LX_zone_results_t;
Charles MacNeill 5:89031b2f5316 1014
Charles MacNeill 5:89031b2f5316 1015
Charles MacNeill 5:89031b2f5316 1016
Charles MacNeill 5:89031b2f5316 1017
Charles MacNeill 5:89031b2f5316 1018 typedef struct {
Charles MacNeill 5:89031b2f5316 1019
Charles MacNeill 5:89031b2f5316 1020 VL53LX_DeviceState rd_device_state;
Charles MacNeill 5:89031b2f5316 1021
Charles MacNeill 5:89031b2f5316 1022
Charles MacNeill 5:89031b2f5316 1023 uint8_t number_of_ambient_bins;
Charles MacNeill 5:89031b2f5316 1024
Charles MacNeill 5:89031b2f5316 1025
Charles MacNeill 5:89031b2f5316 1026 uint16_t result__dss_actual_effective_spads;
Charles MacNeill 5:89031b2f5316 1027
Charles MacNeill 5:89031b2f5316 1028 uint8_t VL53LX_p_005;
Charles MacNeill 5:89031b2f5316 1029
Charles MacNeill 5:89031b2f5316 1030 uint32_t total_periods_elapsed;
Charles MacNeill 5:89031b2f5316 1031
Charles MacNeill 5:89031b2f5316 1032
Charles MacNeill 5:89031b2f5316 1033 int32_t ambient_events_sum;
Charles MacNeill 5:89031b2f5316 1034
Charles MacNeill 5:89031b2f5316 1035
Charles MacNeill 5:89031b2f5316 1036 } VL53LX_zone_hist_info_t;
Charles MacNeill 5:89031b2f5316 1037
Charles MacNeill 5:89031b2f5316 1038
Charles MacNeill 5:89031b2f5316 1039
Charles MacNeill 5:89031b2f5316 1040
Charles MacNeill 5:89031b2f5316 1041 typedef struct {
Charles MacNeill 5:89031b2f5316 1042
Charles MacNeill 5:89031b2f5316 1043 uint8_t max_zones;
Charles MacNeill 5:89031b2f5316 1044
Charles MacNeill 5:89031b2f5316 1045 uint8_t active_zones;
Charles MacNeill 5:89031b2f5316 1046
Charles MacNeill 5:89031b2f5316 1047 VL53LX_zone_hist_info_t VL53LX_p_003[VL53LX_MAX_USER_ZONES];
Charles MacNeill 5:89031b2f5316 1048
Charles MacNeill 5:89031b2f5316 1049
Charles MacNeill 5:89031b2f5316 1050 } VL53LX_zone_histograms_t;
Charles MacNeill 5:89031b2f5316 1051
Charles MacNeill 5:89031b2f5316 1052
Charles MacNeill 5:89031b2f5316 1053
Charles MacNeill 5:89031b2f5316 1054
Charles MacNeill 5:89031b2f5316 1055 typedef struct {
Charles MacNeill 5:89031b2f5316 1056
Charles MacNeill 5:89031b2f5316 1057 uint32_t no_of_samples;
Charles MacNeill 5:89031b2f5316 1058
Charles MacNeill 5:89031b2f5316 1059 uint32_t effective_spads;
Charles MacNeill 5:89031b2f5316 1060
Charles MacNeill 5:89031b2f5316 1061 uint32_t peak_rate_mcps;
Charles MacNeill 5:89031b2f5316 1062
Charles MacNeill 5:89031b2f5316 1063 uint32_t VL53LX_p_011;
Charles MacNeill 5:89031b2f5316 1064
Charles MacNeill 5:89031b2f5316 1065 uint32_t VL53LX_p_002;
Charles MacNeill 5:89031b2f5316 1066
Charles MacNeill 5:89031b2f5316 1067 int32_t median_range_mm;
Charles MacNeill 5:89031b2f5316 1068
Charles MacNeill 5:89031b2f5316 1069 int32_t range_mm_offset;
Charles MacNeill 5:89031b2f5316 1070
Charles MacNeill 5:89031b2f5316 1071
Charles MacNeill 5:89031b2f5316 1072 } VL53LX_zone_calibration_data_t;
Charles MacNeill 5:89031b2f5316 1073
Charles MacNeill 5:89031b2f5316 1074
Charles MacNeill 5:89031b2f5316 1075
Charles MacNeill 5:89031b2f5316 1076
Charles MacNeill 5:89031b2f5316 1077
Charles MacNeill 5:89031b2f5316 1078
Charles MacNeill 5:89031b2f5316 1079 typedef struct {
Charles MacNeill 5:89031b2f5316 1080
Charles MacNeill 5:89031b2f5316 1081 uint32_t struct_version;
Charles MacNeill 5:89031b2f5316 1082
Charles MacNeill 5:89031b2f5316 1083 VL53LX_DevicePresetModes preset_mode;
Charles MacNeill 5:89031b2f5316 1084
Charles MacNeill 5:89031b2f5316 1085 VL53LX_DeviceZonePreset zone_preset;
Charles MacNeill 5:89031b2f5316 1086
Charles MacNeill 5:89031b2f5316 1087 int16_t cal_distance_mm;
Charles MacNeill 5:89031b2f5316 1088
Charles MacNeill 5:89031b2f5316 1089 uint16_t cal_reflectance_pc;
Charles MacNeill 5:89031b2f5316 1090
Charles MacNeill 5:89031b2f5316 1091 uint16_t phasecal_result__reference_phase;
Charles MacNeill 5:89031b2f5316 1092
Charles MacNeill 5:89031b2f5316 1093 uint16_t zero_distance_phase;
Charles MacNeill 5:89031b2f5316 1094
Charles MacNeill 5:89031b2f5316 1095 VL53LX_Error cal_status;
Charles MacNeill 5:89031b2f5316 1096
Charles MacNeill 5:89031b2f5316 1097 uint8_t max_zones;
Charles MacNeill 5:89031b2f5316 1098
Charles MacNeill 5:89031b2f5316 1099 uint8_t active_zones;
Charles MacNeill 5:89031b2f5316 1100
Charles MacNeill 5:89031b2f5316 1101 VL53LX_zone_calibration_data_t VL53LX_p_003[VL53LX_MAX_USER_ZONES];
Charles MacNeill 5:89031b2f5316 1102
Charles MacNeill 5:89031b2f5316 1103
Charles MacNeill 5:89031b2f5316 1104 } VL53LX_zone_calibration_results_t;
Charles MacNeill 5:89031b2f5316 1105
Charles MacNeill 5:89031b2f5316 1106
Charles MacNeill 5:89031b2f5316 1107
Charles MacNeill 5:89031b2f5316 1108
Charles MacNeill 5:89031b2f5316 1109
Charles MacNeill 5:89031b2f5316 1110 typedef struct {
Charles MacNeill 5:89031b2f5316 1111
Charles MacNeill 5:89031b2f5316 1112 int16_t cal_distance_mm;
Charles MacNeill 5:89031b2f5316 1113
Charles MacNeill 5:89031b2f5316 1114 uint16_t cal_reflectance_pc;
Charles MacNeill 5:89031b2f5316 1115
Charles MacNeill 5:89031b2f5316 1116 uint16_t max_samples;
Charles MacNeill 5:89031b2f5316 1117
Charles MacNeill 5:89031b2f5316 1118 uint16_t width;
Charles MacNeill 5:89031b2f5316 1119
Charles MacNeill 5:89031b2f5316 1120 uint16_t height;
Charles MacNeill 5:89031b2f5316 1121
Charles MacNeill 5:89031b2f5316 1122 uint16_t peak_rate_mcps[VL53LX_NVM_PEAK_RATE_MAP_SAMPLES];
Charles MacNeill 5:89031b2f5316 1123
Charles MacNeill 5:89031b2f5316 1124
Charles MacNeill 5:89031b2f5316 1125 } VL53LX_cal_peak_rate_map_t;
Charles MacNeill 5:89031b2f5316 1126
Charles MacNeill 5:89031b2f5316 1127
Charles MacNeill 5:89031b2f5316 1128
Charles MacNeill 5:89031b2f5316 1129
Charles MacNeill 5:89031b2f5316 1130 typedef struct {
Charles MacNeill 5:89031b2f5316 1131
Charles MacNeill 5:89031b2f5316 1132 uint8_t expected_stream_count;
Charles MacNeill 5:89031b2f5316 1133
Charles MacNeill 5:89031b2f5316 1134 uint8_t expected_gph_id;
Charles MacNeill 5:89031b2f5316 1135
Charles MacNeill 5:89031b2f5316 1136 uint8_t dss_mode;
Charles MacNeill 5:89031b2f5316 1137
Charles MacNeill 5:89031b2f5316 1138 uint16_t dss_requested_effective_spad_count;
Charles MacNeill 5:89031b2f5316 1139
Charles MacNeill 5:89031b2f5316 1140 uint8_t seed_cfg;
Charles MacNeill 5:89031b2f5316 1141
Charles MacNeill 5:89031b2f5316 1142 uint8_t initial_phase_seed;
Charles MacNeill 5:89031b2f5316 1143
Charles MacNeill 5:89031b2f5316 1144
Charles MacNeill 5:89031b2f5316 1145 uint8_t roi_config__user_roi_centre_spad;
Charles MacNeill 5:89031b2f5316 1146
Charles MacNeill 5:89031b2f5316 1147 uint8_t roi_config__user_roi_requested_global_xy_size;
Charles MacNeill 5:89031b2f5316 1148
Charles MacNeill 5:89031b2f5316 1149
Charles MacNeill 5:89031b2f5316 1150 } VL53LX_zone_private_dyn_cfg_t;
Charles MacNeill 5:89031b2f5316 1151
Charles MacNeill 5:89031b2f5316 1152
Charles MacNeill 5:89031b2f5316 1153
Charles MacNeill 5:89031b2f5316 1154
Charles MacNeill 5:89031b2f5316 1155 typedef struct {
Charles MacNeill 5:89031b2f5316 1156
Charles MacNeill 5:89031b2f5316 1157 uint8_t max_zones;
Charles MacNeill 5:89031b2f5316 1158
Charles MacNeill 5:89031b2f5316 1159 uint8_t active_zones;
Charles MacNeill 5:89031b2f5316 1160
Charles MacNeill 5:89031b2f5316 1161 VL53LX_zone_private_dyn_cfg_t VL53LX_p_003[VL53LX_MAX_USER_ZONES];
Charles MacNeill 5:89031b2f5316 1162
Charles MacNeill 5:89031b2f5316 1163
Charles MacNeill 5:89031b2f5316 1164 } VL53LX_zone_private_dyn_cfgs_t;
Charles MacNeill 5:89031b2f5316 1165
Charles MacNeill 5:89031b2f5316 1166
Charles MacNeill 5:89031b2f5316 1167
Charles MacNeill 5:89031b2f5316 1168 typedef struct {
Charles MacNeill 5:89031b2f5316 1169
Charles MacNeill 5:89031b2f5316 1170 uint32_t algo__crosstalk_compensation_plane_offset_kcps;
Charles MacNeill 5:89031b2f5316 1171
Charles MacNeill 5:89031b2f5316 1172 int16_t algo__crosstalk_compensation_x_plane_gradient_kcps;
Charles MacNeill 5:89031b2f5316 1173
Charles MacNeill 5:89031b2f5316 1174 int16_t algo__crosstalk_compensation_y_plane_gradient_kcps;
Charles MacNeill 5:89031b2f5316 1175
Charles MacNeill 5:89031b2f5316 1176 uint32_t algo__xtalk_cpo_HistoMerge_kcps[VL53LX_BIN_REC_SIZE];
Charles MacNeill 5:89031b2f5316 1177
Charles MacNeill 5:89031b2f5316 1178
Charles MacNeill 5:89031b2f5316 1179 } VL53LX_xtalk_calibration_results_t;
Charles MacNeill 5:89031b2f5316 1180
Charles MacNeill 5:89031b2f5316 1181
Charles MacNeill 5:89031b2f5316 1182
Charles MacNeill 5:89031b2f5316 1183
Charles MacNeill 5:89031b2f5316 1184 typedef struct {
Charles MacNeill 5:89031b2f5316 1185
Charles MacNeill 5:89031b2f5316 1186
Charles MacNeill 5:89031b2f5316 1187 uint32_t sample_count;
Charles MacNeill 5:89031b2f5316 1188
Charles MacNeill 5:89031b2f5316 1189
Charles MacNeill 5:89031b2f5316 1190 uint32_t pll_period_mm;
Charles MacNeill 5:89031b2f5316 1191
Charles MacNeill 5:89031b2f5316 1192
Charles MacNeill 5:89031b2f5316 1193 uint32_t peak_duration_us_sum;
Charles MacNeill 5:89031b2f5316 1194
Charles MacNeill 5:89031b2f5316 1195
Charles MacNeill 5:89031b2f5316 1196 uint32_t effective_spad_count_sum;
Charles MacNeill 5:89031b2f5316 1197
Charles MacNeill 5:89031b2f5316 1198
Charles MacNeill 5:89031b2f5316 1199 uint32_t zero_distance_phase_sum;
Charles MacNeill 5:89031b2f5316 1200
Charles MacNeill 5:89031b2f5316 1201
Charles MacNeill 5:89031b2f5316 1202 uint32_t zero_distance_phase_avg;
Charles MacNeill 5:89031b2f5316 1203
Charles MacNeill 5:89031b2f5316 1204
Charles MacNeill 5:89031b2f5316 1205 int32_t event_scaler_sum;
Charles MacNeill 5:89031b2f5316 1206
Charles MacNeill 5:89031b2f5316 1207
Charles MacNeill 5:89031b2f5316 1208 int32_t event_scaler_avg;
Charles MacNeill 5:89031b2f5316 1209
Charles MacNeill 5:89031b2f5316 1210
Charles MacNeill 5:89031b2f5316 1211 int32_t signal_events_sum;
Charles MacNeill 5:89031b2f5316 1212
Charles MacNeill 5:89031b2f5316 1213
Charles MacNeill 5:89031b2f5316 1214 uint32_t xtalk_rate_kcps_per_spad;
Charles MacNeill 5:89031b2f5316 1215
Charles MacNeill 5:89031b2f5316 1216
Charles MacNeill 5:89031b2f5316 1217 int32_t xtalk_start_phase;
Charles MacNeill 5:89031b2f5316 1218
Charles MacNeill 5:89031b2f5316 1219
Charles MacNeill 5:89031b2f5316 1220 int32_t xtalk_end_phase;
Charles MacNeill 5:89031b2f5316 1221
Charles MacNeill 5:89031b2f5316 1222
Charles MacNeill 5:89031b2f5316 1223 int32_t xtalk_width_phase;
Charles MacNeill 5:89031b2f5316 1224
Charles MacNeill 5:89031b2f5316 1225
Charles MacNeill 5:89031b2f5316 1226 int32_t target_start_phase;
Charles MacNeill 5:89031b2f5316 1227
Charles MacNeill 5:89031b2f5316 1228
Charles MacNeill 5:89031b2f5316 1229 int32_t target_end_phase;
Charles MacNeill 5:89031b2f5316 1230
Charles MacNeill 5:89031b2f5316 1231
Charles MacNeill 5:89031b2f5316 1232 int32_t target_width_phase;
Charles MacNeill 5:89031b2f5316 1233
Charles MacNeill 5:89031b2f5316 1234
Charles MacNeill 5:89031b2f5316 1235 int32_t effective_width;
Charles MacNeill 5:89031b2f5316 1236
Charles MacNeill 5:89031b2f5316 1237
Charles MacNeill 5:89031b2f5316 1238 int32_t event_scaler;
Charles MacNeill 5:89031b2f5316 1239
Charles MacNeill 5:89031b2f5316 1240
Charles MacNeill 5:89031b2f5316 1241 uint8_t VL53LX_p_012;
Charles MacNeill 5:89031b2f5316 1242
Charles MacNeill 5:89031b2f5316 1243
Charles MacNeill 5:89031b2f5316 1244 uint8_t VL53LX_p_013;
Charles MacNeill 5:89031b2f5316 1245
Charles MacNeill 5:89031b2f5316 1246
Charles MacNeill 5:89031b2f5316 1247 uint8_t target_start;
Charles MacNeill 5:89031b2f5316 1248
Charles MacNeill 5:89031b2f5316 1249
Charles MacNeill 5:89031b2f5316 1250 int32_t max_shape_value;
Charles MacNeill 5:89031b2f5316 1251
Charles MacNeill 5:89031b2f5316 1252
Charles MacNeill 5:89031b2f5316 1253 int32_t bin_data_sums[VL53LX_XTALK_HISTO_BINS];
Charles MacNeill 5:89031b2f5316 1254
Charles MacNeill 5:89031b2f5316 1255 } VL53LX_hist_xtalk_extract_data_t;
Charles MacNeill 5:89031b2f5316 1256
Charles MacNeill 5:89031b2f5316 1257
Charles MacNeill 5:89031b2f5316 1258
Charles MacNeill 5:89031b2f5316 1259
Charles MacNeill 5:89031b2f5316 1260 typedef struct {
Charles MacNeill 5:89031b2f5316 1261
Charles MacNeill 5:89031b2f5316 1262 uint16_t standard_ranging_gain_factor;
Charles MacNeill 5:89031b2f5316 1263
Charles MacNeill 5:89031b2f5316 1264 uint16_t histogram_ranging_gain_factor;
Charles MacNeill 5:89031b2f5316 1265
Charles MacNeill 5:89031b2f5316 1266
Charles MacNeill 5:89031b2f5316 1267 } VL53LX_gain_calibration_data_t;
Charles MacNeill 5:89031b2f5316 1268
Charles MacNeill 5:89031b2f5316 1269
Charles MacNeill 5:89031b2f5316 1270
Charles MacNeill 5:89031b2f5316 1271
Charles MacNeill 5:89031b2f5316 1272 typedef struct {
Charles MacNeill 5:89031b2f5316 1273
Charles MacNeill 5:89031b2f5316 1274 VL53LX_DeviceState cfg_device_state;
Charles MacNeill 5:89031b2f5316 1275
Charles MacNeill 5:89031b2f5316 1276 uint8_t cfg_stream_count;
Charles MacNeill 5:89031b2f5316 1277
Charles MacNeill 5:89031b2f5316 1278 uint8_t cfg_internal_stream_count;
Charles MacNeill 5:89031b2f5316 1279
Charles MacNeill 5:89031b2f5316 1280 uint8_t cfg_internal_stream_count_val;
Charles MacNeill 5:89031b2f5316 1281
Charles MacNeill 5:89031b2f5316 1282 uint8_t cfg_gph_id;
Charles MacNeill 5:89031b2f5316 1283
Charles MacNeill 5:89031b2f5316 1284 uint8_t cfg_timing_status;
Charles MacNeill 5:89031b2f5316 1285
Charles MacNeill 5:89031b2f5316 1286 uint8_t cfg_zone_id;
Charles MacNeill 5:89031b2f5316 1287
Charles MacNeill 5:89031b2f5316 1288
Charles MacNeill 5:89031b2f5316 1289 VL53LX_DeviceState rd_device_state;
Charles MacNeill 5:89031b2f5316 1290
Charles MacNeill 5:89031b2f5316 1291 uint8_t rd_stream_count;
Charles MacNeill 5:89031b2f5316 1292
Charles MacNeill 5:89031b2f5316 1293 uint8_t rd_internal_stream_count;
Charles MacNeill 5:89031b2f5316 1294
Charles MacNeill 5:89031b2f5316 1295 uint8_t rd_internal_stream_count_val;
Charles MacNeill 5:89031b2f5316 1296
Charles MacNeill 5:89031b2f5316 1297 uint8_t rd_gph_id;
Charles MacNeill 5:89031b2f5316 1298
Charles MacNeill 5:89031b2f5316 1299 uint8_t rd_timing_status;
Charles MacNeill 5:89031b2f5316 1300
Charles MacNeill 5:89031b2f5316 1301 uint8_t rd_zone_id;
Charles MacNeill 5:89031b2f5316 1302
Charles MacNeill 5:89031b2f5316 1303
Charles MacNeill 5:89031b2f5316 1304 } VL53LX_ll_driver_state_t;
Charles MacNeill 5:89031b2f5316 1305
Charles MacNeill 5:89031b2f5316 1306
Charles MacNeill 5:89031b2f5316 1307
Charles MacNeill 5:89031b2f5316 1308
Charles MacNeill 5:89031b2f5316 1309 typedef struct {
Charles MacNeill 5:89031b2f5316 1310
Charles MacNeill 5:89031b2f5316 1311 uint8_t wait_method;
Charles MacNeill 5:89031b2f5316 1312
Charles MacNeill 5:89031b2f5316 1313 VL53LX_DevicePresetModes preset_mode;
Charles MacNeill 5:89031b2f5316 1314
Charles MacNeill 5:89031b2f5316 1315 VL53LX_DeviceZonePreset zone_preset;
Charles MacNeill 5:89031b2f5316 1316
Charles MacNeill 5:89031b2f5316 1317 VL53LX_DeviceMeasurementModes measurement_mode;
Charles MacNeill 5:89031b2f5316 1318
Charles MacNeill 5:89031b2f5316 1319 VL53LX_OffsetCalibrationMode offset_calibration_mode;
Charles MacNeill 5:89031b2f5316 1320
Charles MacNeill 5:89031b2f5316 1321 VL53LX_OffsetCorrectionMode offset_correction_mode;
Charles MacNeill 5:89031b2f5316 1322
Charles MacNeill 5:89031b2f5316 1323 VL53LX_DeviceDmaxMode dmax_mode;
Charles MacNeill 5:89031b2f5316 1324
Charles MacNeill 5:89031b2f5316 1325 uint32_t phasecal_config_timeout_us;
Charles MacNeill 5:89031b2f5316 1326
Charles MacNeill 5:89031b2f5316 1327 uint32_t mm_config_timeout_us;
Charles MacNeill 5:89031b2f5316 1328
Charles MacNeill 5:89031b2f5316 1329 uint32_t range_config_timeout_us;
Charles MacNeill 5:89031b2f5316 1330
Charles MacNeill 5:89031b2f5316 1331 uint32_t inter_measurement_period_ms;
Charles MacNeill 5:89031b2f5316 1332
Charles MacNeill 5:89031b2f5316 1333 uint16_t dss_config__target_total_rate_mcps;
Charles MacNeill 5:89031b2f5316 1334
Charles MacNeill 5:89031b2f5316 1335 uint32_t fw_ready_poll_duration_ms;
Charles MacNeill 5:89031b2f5316 1336
Charles MacNeill 5:89031b2f5316 1337 uint8_t fw_ready;
Charles MacNeill 5:89031b2f5316 1338
Charles MacNeill 5:89031b2f5316 1339 uint8_t debug_mode;
Charles MacNeill 5:89031b2f5316 1340
Charles MacNeill 5:89031b2f5316 1341
Charles MacNeill 5:89031b2f5316 1342
Charles MacNeill 5:89031b2f5316 1343 VL53LX_ll_version_t version;
Charles MacNeill 5:89031b2f5316 1344
Charles MacNeill 5:89031b2f5316 1345
Charles MacNeill 5:89031b2f5316 1346 VL53LX_ll_driver_state_t ll_state;
Charles MacNeill 5:89031b2f5316 1347
Charles MacNeill 5:89031b2f5316 1348
Charles MacNeill 5:89031b2f5316 1349 VL53LX_GPIO_interrupt_config_t gpio_interrupt_config;
Charles MacNeill 5:89031b2f5316 1350
Charles MacNeill 5:89031b2f5316 1351
Charles MacNeill 5:89031b2f5316 1352 VL53LX_customer_nvm_managed_t customer;
Charles MacNeill 5:89031b2f5316 1353 VL53LX_cal_peak_rate_map_t cal_peak_rate_map;
Charles MacNeill 5:89031b2f5316 1354 VL53LX_additional_offset_cal_data_t add_off_cal_data;
Charles MacNeill 5:89031b2f5316 1355 VL53LX_dmax_calibration_data_t fmt_dmax_cal;
Charles MacNeill 5:89031b2f5316 1356 VL53LX_dmax_calibration_data_t cust_dmax_cal;
Charles MacNeill 5:89031b2f5316 1357 VL53LX_gain_calibration_data_t gain_cal;
Charles MacNeill 5:89031b2f5316 1358 VL53LX_user_zone_t mm_roi;
Charles MacNeill 5:89031b2f5316 1359 VL53LX_optical_centre_t optical_centre;
Charles MacNeill 5:89031b2f5316 1360 VL53LX_zone_config_t zone_cfg;
Charles MacNeill 5:89031b2f5316 1361
Charles MacNeill 5:89031b2f5316 1362
Charles MacNeill 5:89031b2f5316 1363 VL53LX_tuning_parm_storage_t tuning_parms;
Charles MacNeill 5:89031b2f5316 1364
Charles MacNeill 5:89031b2f5316 1365
Charles MacNeill 5:89031b2f5316 1366 uint8_t rtn_good_spads[VL53LX_RTN_SPAD_BUFFER_SIZE];
Charles MacNeill 5:89031b2f5316 1367
Charles MacNeill 5:89031b2f5316 1368
Charles MacNeill 5:89031b2f5316 1369 VL53LX_refspadchar_config_t refspadchar;
Charles MacNeill 5:89031b2f5316 1370 VL53LX_ssc_config_t ssc_cfg;
Charles MacNeill 5:89031b2f5316 1371 VL53LX_hist_post_process_config_t histpostprocess;
Charles MacNeill 5:89031b2f5316 1372 VL53LX_hist_gen3_dmax_config_t dmax_cfg;
Charles MacNeill 5:89031b2f5316 1373 VL53LX_xtalkextract_config_t xtalk_extract_cfg;
Charles MacNeill 5:89031b2f5316 1374 VL53LX_xtalk_config_t xtalk_cfg;
Charles MacNeill 5:89031b2f5316 1375 VL53LX_offsetcal_config_t offsetcal_cfg;
Charles MacNeill 5:89031b2f5316 1376 VL53LX_zonecal_config_t zonecal_cfg;
Charles MacNeill 5:89031b2f5316 1377
Charles MacNeill 5:89031b2f5316 1378
Charles MacNeill 5:89031b2f5316 1379 VL53LX_static_nvm_managed_t stat_nvm;
Charles MacNeill 5:89031b2f5316 1380 VL53LX_histogram_config_t hist_cfg;
Charles MacNeill 5:89031b2f5316 1381 VL53LX_static_config_t stat_cfg;
Charles MacNeill 5:89031b2f5316 1382 VL53LX_general_config_t gen_cfg;
Charles MacNeill 5:89031b2f5316 1383 VL53LX_timing_config_t tim_cfg;
Charles MacNeill 5:89031b2f5316 1384 VL53LX_dynamic_config_t dyn_cfg;
Charles MacNeill 5:89031b2f5316 1385 VL53LX_system_control_t sys_ctrl;
Charles MacNeill 5:89031b2f5316 1386 VL53LX_system_results_t sys_results;
Charles MacNeill 5:89031b2f5316 1387 VL53LX_nvm_copy_data_t nvm_copy_data;
Charles MacNeill 5:89031b2f5316 1388
Charles MacNeill 5:89031b2f5316 1389
Charles MacNeill 5:89031b2f5316 1390 VL53LX_histogram_bin_data_t hist_data;
Charles MacNeill 5:89031b2f5316 1391 VL53LX_histogram_bin_data_t hist_xtalk;
Charles MacNeill 5:89031b2f5316 1392
Charles MacNeill 5:89031b2f5316 1393
Charles MacNeill 5:89031b2f5316 1394 VL53LX_xtalk_histogram_data_t xtalk_shapes;
Charles MacNeill 5:89031b2f5316 1395 VL53LX_xtalk_range_results_t xtalk_results;
Charles MacNeill 5:89031b2f5316 1396 VL53LX_xtalk_calibration_results_t xtalk_cal;
Charles MacNeill 5:89031b2f5316 1397 VL53LX_hist_xtalk_extract_data_t xtalk_extract;
Charles MacNeill 5:89031b2f5316 1398
Charles MacNeill 5:89031b2f5316 1399
Charles MacNeill 5:89031b2f5316 1400 VL53LX_offset_range_results_t offset_results;
Charles MacNeill 5:89031b2f5316 1401
Charles MacNeill 5:89031b2f5316 1402
Charles MacNeill 5:89031b2f5316 1403 VL53LX_core_results_t core_results;
Charles MacNeill 5:89031b2f5316 1404 VL53LX_debug_results_t dbg_results;
Charles MacNeill 5:89031b2f5316 1405
Charles MacNeill 5:89031b2f5316 1406 VL53LX_smudge_corrector_config_t smudge_correct_config;
Charles MacNeill 5:89031b2f5316 1407
Charles MacNeill 5:89031b2f5316 1408 VL53LX_smudge_corrector_internals_t smudge_corrector_internals;
Charles MacNeill 5:89031b2f5316 1409
Charles MacNeill 5:89031b2f5316 1410
Charles MacNeill 5:89031b2f5316 1411
Charles MacNeill 5:89031b2f5316 1412
Charles MacNeill 5:89031b2f5316 1413 VL53LX_low_power_auto_data_t low_power_auto_data;
Charles MacNeill 5:89031b2f5316 1414
Charles MacNeill 5:89031b2f5316 1415 uint8_t wArea1[1536];
Charles MacNeill 5:89031b2f5316 1416 uint8_t wArea2[512];
Charles MacNeill 5:89031b2f5316 1417 VL53LX_per_vcsel_period_offset_cal_data_t per_vcsel_cal_data;
Charles MacNeill 5:89031b2f5316 1418
Charles MacNeill 5:89031b2f5316 1419 uint8_t bin_rec_pos;
Charles MacNeill 5:89031b2f5316 1420
Charles MacNeill 5:89031b2f5316 1421 uint8_t pos_before_next_recom;
Charles MacNeill 5:89031b2f5316 1422
Charles MacNeill 5:89031b2f5316 1423 int32_t multi_bins_rec[VL53LX_BIN_REC_SIZE]
Charles MacNeill 5:89031b2f5316 1424 [VL53LX_TIMING_CONF_A_B_SIZE][VL53LX_HISTOGRAM_BUFFER_SIZE];
Charles MacNeill 5:89031b2f5316 1425
Charles MacNeill 5:89031b2f5316 1426 int16_t PreviousRangeMilliMeter[VL53LX_MAX_RANGE_RESULTS];
Charles MacNeill 5:89031b2f5316 1427 uint8_t PreviousRangeStatus[VL53LX_MAX_RANGE_RESULTS];
Charles MacNeill 5:89031b2f5316 1428 uint8_t PreviousExtendedRange[VL53LX_MAX_RANGE_RESULTS];
Charles MacNeill 5:89031b2f5316 1429 uint8_t PreviousStreamCount;
Charles MacNeill 5:89031b2f5316 1430 } VL53LX_LLDriverData_t;
Charles MacNeill 5:89031b2f5316 1431
Charles MacNeill 5:89031b2f5316 1432
Charles MacNeill 5:89031b2f5316 1433
Charles MacNeill 5:89031b2f5316 1434
Charles MacNeill 5:89031b2f5316 1435 typedef struct {
Charles MacNeill 5:89031b2f5316 1436
Charles MacNeill 5:89031b2f5316 1437
Charles MacNeill 5:89031b2f5316 1438 VL53LX_range_results_t range_results;
Charles MacNeill 5:89031b2f5316 1439
Charles MacNeill 5:89031b2f5316 1440
Charles MacNeill 5:89031b2f5316 1441 VL53LX_zone_private_dyn_cfgs_t zone_dyn_cfgs;
Charles MacNeill 5:89031b2f5316 1442
Charles MacNeill 5:89031b2f5316 1443
Charles MacNeill 5:89031b2f5316 1444 VL53LX_zone_results_t zone_results;
Charles MacNeill 5:89031b2f5316 1445 VL53LX_zone_histograms_t zone_hists;
Charles MacNeill 5:89031b2f5316 1446 VL53LX_zone_calibration_results_t zone_cal;
Charles MacNeill 5:89031b2f5316 1447
Charles MacNeill 5:89031b2f5316 1448 } VL53LX_LLDriverResults_t;
Charles MacNeill 5:89031b2f5316 1449
Charles MacNeill 5:89031b2f5316 1450
Charles MacNeill 5:89031b2f5316 1451
Charles MacNeill 5:89031b2f5316 1452
Charles MacNeill 5:89031b2f5316 1453 typedef struct {
Charles MacNeill 5:89031b2f5316 1454
Charles MacNeill 5:89031b2f5316 1455 uint32_t struct_version;
Charles MacNeill 5:89031b2f5316 1456 VL53LX_customer_nvm_managed_t customer;
Charles MacNeill 5:89031b2f5316 1457 VL53LX_dmax_calibration_data_t fmt_dmax_cal;
Charles MacNeill 5:89031b2f5316 1458 VL53LX_dmax_calibration_data_t cust_dmax_cal;
Charles MacNeill 5:89031b2f5316 1459 VL53LX_additional_offset_cal_data_t add_off_cal_data;
Charles MacNeill 5:89031b2f5316 1460 VL53LX_optical_centre_t optical_centre;
Charles MacNeill 5:89031b2f5316 1461 VL53LX_xtalk_histogram_data_t xtalkhisto;
Charles MacNeill 5:89031b2f5316 1462 VL53LX_gain_calibration_data_t gain_cal;
Charles MacNeill 5:89031b2f5316 1463 VL53LX_cal_peak_rate_map_t cal_peak_rate_map;
Charles MacNeill 5:89031b2f5316 1464 VL53LX_per_vcsel_period_offset_cal_data_t per_vcsel_cal_data;
Charles MacNeill 5:89031b2f5316 1465
Charles MacNeill 5:89031b2f5316 1466 } VL53LX_calibration_data_t;
Charles MacNeill 5:89031b2f5316 1467
Charles MacNeill 5:89031b2f5316 1468
Charles MacNeill 5:89031b2f5316 1469
Charles MacNeill 5:89031b2f5316 1470
Charles MacNeill 5:89031b2f5316 1471 typedef struct {
Charles MacNeill 5:89031b2f5316 1472
Charles MacNeill 5:89031b2f5316 1473 VL53LX_customer_nvm_managed_t customer;
Charles MacNeill 5:89031b2f5316 1474 VL53LX_xtalkextract_config_t xtalk_extract_cfg;
Charles MacNeill 5:89031b2f5316 1475 VL53LX_xtalk_config_t xtalk_cfg;
Charles MacNeill 5:89031b2f5316 1476 VL53LX_histogram_bin_data_t hist_data;
Charles MacNeill 5:89031b2f5316 1477 VL53LX_xtalk_histogram_data_t xtalk_shapes;
Charles MacNeill 5:89031b2f5316 1478 VL53LX_xtalk_range_results_t xtalk_results;
Charles MacNeill 5:89031b2f5316 1479
Charles MacNeill 5:89031b2f5316 1480 } VL53LX_xtalk_debug_data_t;
Charles MacNeill 5:89031b2f5316 1481
Charles MacNeill 5:89031b2f5316 1482
Charles MacNeill 5:89031b2f5316 1483
Charles MacNeill 5:89031b2f5316 1484
Charles MacNeill 5:89031b2f5316 1485 typedef struct {
Charles MacNeill 5:89031b2f5316 1486
Charles MacNeill 5:89031b2f5316 1487 VL53LX_customer_nvm_managed_t customer;
Charles MacNeill 5:89031b2f5316 1488 VL53LX_dmax_calibration_data_t fmt_dmax_cal;
Charles MacNeill 5:89031b2f5316 1489 VL53LX_dmax_calibration_data_t cust_dmax_cal;
Charles MacNeill 5:89031b2f5316 1490 VL53LX_additional_offset_cal_data_t add_off_cal_data;
Charles MacNeill 5:89031b2f5316 1491 VL53LX_offset_range_results_t offset_results;
Charles MacNeill 5:89031b2f5316 1492
Charles MacNeill 5:89031b2f5316 1493 } VL53LX_offset_debug_data_t;
Charles MacNeill 5:89031b2f5316 1494
Charles MacNeill 5:89031b2f5316 1495
Charles MacNeill 5:89031b2f5316 1496
Charles MacNeill 5:89031b2f5316 1497
Charles MacNeill 5:89031b2f5316 1498 typedef struct {
Charles MacNeill 5:89031b2f5316 1499 uint16_t vl53lx_tuningparm_version;
Charles MacNeill 5:89031b2f5316 1500 uint16_t vl53lx_tuningparm_key_table_version;
Charles MacNeill 5:89031b2f5316 1501 uint16_t vl53lx_tuningparm_lld_version;
Charles MacNeill 5:89031b2f5316 1502 uint8_t vl53lx_tuningparm_hist_algo_select;
Charles MacNeill 5:89031b2f5316 1503 uint8_t vl53lx_tuningparm_hist_target_order;
Charles MacNeill 5:89031b2f5316 1504 uint8_t vl53lx_tuningparm_hist_filter_woi_0;
Charles MacNeill 5:89031b2f5316 1505 uint8_t vl53lx_tuningparm_hist_filter_woi_1;
Charles MacNeill 5:89031b2f5316 1506 uint8_t vl53lx_tuningparm_hist_amb_est_method;
Charles MacNeill 5:89031b2f5316 1507 uint8_t vl53lx_tuningparm_hist_amb_thresh_sigma_0;
Charles MacNeill 5:89031b2f5316 1508 uint8_t vl53lx_tuningparm_hist_amb_thresh_sigma_1;
Charles MacNeill 5:89031b2f5316 1509 int32_t vl53lx_tuningparm_hist_min_amb_thresh_events;
Charles MacNeill 5:89031b2f5316 1510 uint16_t vl53lx_tuningparm_hist_amb_events_scaler;
Charles MacNeill 5:89031b2f5316 1511 uint16_t vl53lx_tuningparm_hist_noise_threshold;
Charles MacNeill 5:89031b2f5316 1512 int32_t vl53lx_tuningparm_hist_signal_total_events_limit;
Charles MacNeill 5:89031b2f5316 1513 uint8_t vl53lx_tuningparm_hist_sigma_est_ref_mm;
Charles MacNeill 5:89031b2f5316 1514 uint16_t vl53lx_tuningparm_hist_sigma_thresh_mm;
Charles MacNeill 5:89031b2f5316 1515 uint16_t vl53lx_tuningparm_hist_gain_factor;
Charles MacNeill 5:89031b2f5316 1516 uint8_t vl53lx_tuningparm_consistency_hist_phase_tolerance;
Charles MacNeill 5:89031b2f5316 1517 uint16_t vl53lx_tuningparm_consistency_hist_min_max_tolerance_mm;
Charles MacNeill 5:89031b2f5316 1518 uint8_t vl53lx_tuningparm_consistency_hist_event_sigma;
Charles MacNeill 5:89031b2f5316 1519 uint16_t vl53lx_tuningparm_consistency_hist_event_sigma_min_spad_limit;
Charles MacNeill 5:89031b2f5316 1520 uint8_t vl53lx_tuningparm_initial_phase_rtn_histo_long_range;
Charles MacNeill 5:89031b2f5316 1521 uint8_t vl53lx_tuningparm_initial_phase_rtn_histo_med_range;
Charles MacNeill 5:89031b2f5316 1522 uint8_t vl53lx_tuningparm_initial_phase_rtn_histo_short_range;
Charles MacNeill 5:89031b2f5316 1523 uint8_t vl53lx_tuningparm_initial_phase_ref_histo_long_range;
Charles MacNeill 5:89031b2f5316 1524 uint8_t vl53lx_tuningparm_initial_phase_ref_histo_med_range;
Charles MacNeill 5:89031b2f5316 1525 uint8_t vl53lx_tuningparm_initial_phase_ref_histo_short_range;
Charles MacNeill 5:89031b2f5316 1526 int16_t vl53lx_tuningparm_xtalk_detect_min_valid_range_mm;
Charles MacNeill 5:89031b2f5316 1527 int16_t vl53lx_tuningparm_xtalk_detect_max_valid_range_mm;
Charles MacNeill 5:89031b2f5316 1528 uint16_t vl53lx_tuningparm_xtalk_detect_max_sigma_mm;
Charles MacNeill 5:89031b2f5316 1529 uint16_t vl53lx_tuningparm_xtalk_detect_min_max_tolerance;
Charles MacNeill 5:89031b2f5316 1530 uint16_t vl53lx_tuningparm_xtalk_detect_max_valid_rate_kcps;
Charles MacNeill 5:89031b2f5316 1531 uint8_t vl53lx_tuningparm_xtalk_detect_event_sigma;
Charles MacNeill 5:89031b2f5316 1532 int16_t vl53lx_tuningparm_hist_xtalk_margin_kcps;
Charles MacNeill 5:89031b2f5316 1533 uint8_t vl53lx_tuningparm_consistency_lite_phase_tolerance;
Charles MacNeill 5:89031b2f5316 1534 uint8_t vl53lx_tuningparm_phasecal_target;
Charles MacNeill 5:89031b2f5316 1535 uint16_t vl53lx_tuningparm_lite_cal_repeat_rate;
Charles MacNeill 5:89031b2f5316 1536 uint16_t vl53lx_tuningparm_lite_ranging_gain_factor;
Charles MacNeill 5:89031b2f5316 1537 uint8_t vl53lx_tuningparm_lite_min_clip_mm;
Charles MacNeill 5:89031b2f5316 1538 uint16_t vl53lx_tuningparm_lite_long_sigma_thresh_mm;
Charles MacNeill 5:89031b2f5316 1539 uint16_t vl53lx_tuningparm_lite_med_sigma_thresh_mm;
Charles MacNeill 5:89031b2f5316 1540 uint16_t vl53lx_tuningparm_lite_short_sigma_thresh_mm;
Charles MacNeill 5:89031b2f5316 1541 uint16_t vl53lx_tuningparm_lite_long_min_count_rate_rtn_mcps;
Charles MacNeill 5:89031b2f5316 1542 uint16_t vl53lx_tuningparm_lite_med_min_count_rate_rtn_mcps;
Charles MacNeill 5:89031b2f5316 1543 uint16_t vl53lx_tuningparm_lite_short_min_count_rate_rtn_mcps;
Charles MacNeill 5:89031b2f5316 1544 uint8_t vl53lx_tuningparm_lite_sigma_est_pulse_width;
Charles MacNeill 5:89031b2f5316 1545 uint8_t vl53lx_tuningparm_lite_sigma_est_amb_width_ns;
Charles MacNeill 5:89031b2f5316 1546 uint8_t vl53lx_tuningparm_lite_sigma_ref_mm;
Charles MacNeill 5:89031b2f5316 1547 uint8_t vl53lx_tuningparm_lite_rit_mult;
Charles MacNeill 5:89031b2f5316 1548 uint8_t vl53lx_tuningparm_lite_seed_config;
Charles MacNeill 5:89031b2f5316 1549 uint8_t vl53lx_tuningparm_lite_quantifier;
Charles MacNeill 5:89031b2f5316 1550 uint8_t vl53lx_tuningparm_lite_first_order_select;
Charles MacNeill 5:89031b2f5316 1551 int16_t vl53lx_tuningparm_lite_xtalk_margin_kcps;
Charles MacNeill 5:89031b2f5316 1552 uint8_t vl53lx_tuningparm_initial_phase_rtn_lite_long_range;
Charles MacNeill 5:89031b2f5316 1553 uint8_t vl53lx_tuningparm_initial_phase_rtn_lite_med_range;
Charles MacNeill 5:89031b2f5316 1554 uint8_t vl53lx_tuningparm_initial_phase_rtn_lite_short_range;
Charles MacNeill 5:89031b2f5316 1555 uint8_t vl53lx_tuningparm_initial_phase_ref_lite_long_range;
Charles MacNeill 5:89031b2f5316 1556 uint8_t vl53lx_tuningparm_initial_phase_ref_lite_med_range;
Charles MacNeill 5:89031b2f5316 1557 uint8_t vl53lx_tuningparm_initial_phase_ref_lite_short_range;
Charles MacNeill 5:89031b2f5316 1558 uint8_t vl53lx_tuningparm_timed_seed_config;
Charles MacNeill 5:89031b2f5316 1559 uint8_t vl53lx_tuningparm_dmax_cfg_signal_thresh_sigma;
Charles MacNeill 5:89031b2f5316 1560 uint16_t vl53lx_tuningparm_dmax_cfg_reflectance_array_0;
Charles MacNeill 5:89031b2f5316 1561 uint16_t vl53lx_tuningparm_dmax_cfg_reflectance_array_1;
Charles MacNeill 5:89031b2f5316 1562 uint16_t vl53lx_tuningparm_dmax_cfg_reflectance_array_2;
Charles MacNeill 5:89031b2f5316 1563 uint16_t vl53lx_tuningparm_dmax_cfg_reflectance_array_3;
Charles MacNeill 5:89031b2f5316 1564 uint16_t vl53lx_tuningparm_dmax_cfg_reflectance_array_4;
Charles MacNeill 5:89031b2f5316 1565 uint8_t vl53lx_tuningparm_vhv_loopbound;
Charles MacNeill 5:89031b2f5316 1566 uint8_t vl53lx_tuningparm_refspadchar_device_test_mode;
Charles MacNeill 5:89031b2f5316 1567 uint8_t vl53lx_tuningparm_refspadchar_vcsel_period;
Charles MacNeill 5:89031b2f5316 1568 uint32_t vl53lx_tuningparm_refspadchar_phasecal_timeout_us;
Charles MacNeill 5:89031b2f5316 1569 uint16_t vl53lx_tuningparm_refspadchar_target_count_rate_mcps;
Charles MacNeill 5:89031b2f5316 1570 uint16_t vl53lx_tuningparm_refspadchar_min_countrate_limit_mcps;
Charles MacNeill 5:89031b2f5316 1571 uint16_t vl53lx_tuningparm_refspadchar_max_countrate_limit_mcps;
Charles MacNeill 5:89031b2f5316 1572 uint8_t vl53lx_tuningparm_xtalk_extract_num_of_samples;
Charles MacNeill 5:89031b2f5316 1573 int16_t vl53lx_tuningparm_xtalk_extract_min_filter_thresh_mm;
Charles MacNeill 5:89031b2f5316 1574 int16_t vl53lx_tuningparm_xtalk_extract_max_filter_thresh_mm;
Charles MacNeill 5:89031b2f5316 1575 uint16_t vl53lx_tuningparm_xtalk_extract_dss_rate_mcps;
Charles MacNeill 5:89031b2f5316 1576 uint32_t vl53lx_tuningparm_xtalk_extract_phasecal_timeout_us;
Charles MacNeill 5:89031b2f5316 1577 uint16_t vl53lx_tuningparm_xtalk_extract_max_valid_rate_kcps;
Charles MacNeill 5:89031b2f5316 1578 uint16_t vl53lx_tuningparm_xtalk_extract_sigma_threshold_mm;
Charles MacNeill 5:89031b2f5316 1579 uint32_t vl53lx_tuningparm_xtalk_extract_dss_timeout_us;
Charles MacNeill 5:89031b2f5316 1580 uint32_t vl53lx_tuningparm_xtalk_extract_bin_timeout_us;
Charles MacNeill 5:89031b2f5316 1581 uint16_t vl53lx_tuningparm_offset_cal_dss_rate_mcps;
Charles MacNeill 5:89031b2f5316 1582 uint32_t vl53lx_tuningparm_offset_cal_phasecal_timeout_us;
Charles MacNeill 5:89031b2f5316 1583 uint32_t vl53lx_tuningparm_offset_cal_mm_timeout_us;
Charles MacNeill 5:89031b2f5316 1584 uint32_t vl53lx_tuningparm_offset_cal_range_timeout_us;
Charles MacNeill 5:89031b2f5316 1585 uint8_t vl53lx_tuningparm_offset_cal_pre_samples;
Charles MacNeill 5:89031b2f5316 1586 uint8_t vl53lx_tuningparm_offset_cal_mm1_samples;
Charles MacNeill 5:89031b2f5316 1587 uint8_t vl53lx_tuningparm_offset_cal_mm2_samples;
Charles MacNeill 5:89031b2f5316 1588 uint16_t vl53lx_tuningparm_zone_cal_dss_rate_mcps;
Charles MacNeill 5:89031b2f5316 1589 uint32_t vl53lx_tuningparm_zone_cal_phasecal_timeout_us;
Charles MacNeill 5:89031b2f5316 1590 uint32_t vl53lx_tuningparm_zone_cal_dss_timeout_us;
Charles MacNeill 5:89031b2f5316 1591 uint16_t vl53lx_tuningparm_zone_cal_phasecal_num_samples;
Charles MacNeill 5:89031b2f5316 1592 uint32_t vl53lx_tuningparm_zone_cal_range_timeout_us;
Charles MacNeill 5:89031b2f5316 1593 uint16_t vl53lx_tuningparm_zone_cal_zone_num_samples;
Charles MacNeill 5:89031b2f5316 1594 uint8_t vl53lx_tuningparm_spadmap_vcsel_period;
Charles MacNeill 5:89031b2f5316 1595 uint8_t vl53lx_tuningparm_spadmap_vcsel_start;
Charles MacNeill 5:89031b2f5316 1596 uint16_t vl53lx_tuningparm_spadmap_rate_limit_mcps;
Charles MacNeill 5:89031b2f5316 1597 uint16_t vl53lx_tuningparm_lite_dss_config_target_total_rate_mcps;
Charles MacNeill 5:89031b2f5316 1598 uint16_t vl53lx_tuningparm_ranging_dss_config_target_total_rate_mcps;
Charles MacNeill 5:89031b2f5316 1599 uint16_t vl53lx_tuningparm_mz_dss_config_target_total_rate_mcps;
Charles MacNeill 5:89031b2f5316 1600 uint16_t vl53lx_tuningparm_timed_dss_config_target_total_rate_mcps;
Charles MacNeill 5:89031b2f5316 1601 uint32_t vl53lx_tuningparm_lite_phasecal_config_timeout_us;
Charles MacNeill 5:89031b2f5316 1602 uint32_t vl53lx_tuningparm_ranging_long_phasecal_config_timeout_us;
Charles MacNeill 5:89031b2f5316 1603 uint32_t vl53lx_tuningparm_ranging_med_phasecal_config_timeout_us;
Charles MacNeill 5:89031b2f5316 1604 uint32_t vl53lx_tuningparm_ranging_short_phasecal_config_timeout_us;
Charles MacNeill 5:89031b2f5316 1605 uint32_t vl53lx_tuningparm_mz_long_phasecal_config_timeout_us;
Charles MacNeill 5:89031b2f5316 1606 uint32_t vl53lx_tuningparm_mz_med_phasecal_config_timeout_us;
Charles MacNeill 5:89031b2f5316 1607 uint32_t vl53lx_tuningparm_mz_short_phasecal_config_timeout_us;
Charles MacNeill 5:89031b2f5316 1608 uint32_t vl53lx_tuningparm_timed_phasecal_config_timeout_us;
Charles MacNeill 5:89031b2f5316 1609 uint32_t vl53lx_tuningparm_lite_mm_config_timeout_us;
Charles MacNeill 5:89031b2f5316 1610 uint32_t vl53lx_tuningparm_ranging_mm_config_timeout_us;
Charles MacNeill 5:89031b2f5316 1611 uint32_t vl53lx_tuningparm_mz_mm_config_timeout_us;
Charles MacNeill 5:89031b2f5316 1612 uint32_t vl53lx_tuningparm_timed_mm_config_timeout_us;
Charles MacNeill 5:89031b2f5316 1613 uint32_t vl53lx_tuningparm_lite_range_config_timeout_us;
Charles MacNeill 5:89031b2f5316 1614 uint32_t vl53lx_tuningparm_ranging_range_config_timeout_us;
Charles MacNeill 5:89031b2f5316 1615 uint32_t vl53lx_tuningparm_mz_range_config_timeout_us;
Charles MacNeill 5:89031b2f5316 1616 uint32_t vl53lx_tuningparm_timed_range_config_timeout_us;
Charles MacNeill 5:89031b2f5316 1617 uint16_t vl53lx_tuningparm_dynxtalk_smudge_margin;
Charles MacNeill 5:89031b2f5316 1618 uint32_t vl53lx_tuningparm_dynxtalk_noise_margin;
Charles MacNeill 5:89031b2f5316 1619 uint32_t vl53lx_tuningparm_dynxtalk_xtalk_offset_limit;
Charles MacNeill 5:89031b2f5316 1620 uint8_t vl53lx_tuningparm_dynxtalk_xtalk_offset_limit_hi;
Charles MacNeill 5:89031b2f5316 1621 uint32_t vl53lx_tuningparm_dynxtalk_sample_limit;
Charles MacNeill 5:89031b2f5316 1622 uint32_t vl53lx_tuningparm_dynxtalk_single_xtalk_delta;
Charles MacNeill 5:89031b2f5316 1623 uint32_t vl53lx_tuningparm_dynxtalk_averaged_xtalk_delta;
Charles MacNeill 5:89031b2f5316 1624 uint32_t vl53lx_tuningparm_dynxtalk_clip_limit;
Charles MacNeill 5:89031b2f5316 1625 uint8_t vl53lx_tuningparm_dynxtalk_scaler_calc_method;
Charles MacNeill 5:89031b2f5316 1626 int16_t vl53lx_tuningparm_dynxtalk_xgradient_scaler;
Charles MacNeill 5:89031b2f5316 1627 int16_t vl53lx_tuningparm_dynxtalk_ygradient_scaler;
Charles MacNeill 5:89031b2f5316 1628 uint8_t vl53lx_tuningparm_dynxtalk_user_scaler_set;
Charles MacNeill 5:89031b2f5316 1629 uint8_t vl53lx_tuningparm_dynxtalk_smudge_cor_single_apply;
Charles MacNeill 5:89031b2f5316 1630 uint32_t vl53lx_tuningparm_dynxtalk_xtalk_amb_threshold;
Charles MacNeill 5:89031b2f5316 1631 uint32_t vl53lx_tuningparm_dynxtalk_nodetect_amb_threshold_kcps;
Charles MacNeill 5:89031b2f5316 1632 uint32_t vl53lx_tuningparm_dynxtalk_nodetect_sample_limit;
Charles MacNeill 5:89031b2f5316 1633 uint32_t vl53lx_tuningparm_dynxtalk_nodetect_xtalk_offset_kcps;
Charles MacNeill 5:89031b2f5316 1634 uint16_t vl53lx_tuningparm_dynxtalk_nodetect_min_range_mm;
Charles MacNeill 5:89031b2f5316 1635 uint8_t vl53lx_tuningparm_lowpowerauto_vhv_loop_bound;
Charles MacNeill 5:89031b2f5316 1636 uint32_t vl53lx_tuningparm_lowpowerauto_mm_config_timeout_us;
Charles MacNeill 5:89031b2f5316 1637 uint32_t vl53lx_tuningparm_lowpowerauto_range_config_timeout_us;
Charles MacNeill 5:89031b2f5316 1638 uint16_t vl53lx_tuningparm_very_short_dss_rate_mcps;
Charles MacNeill 5:89031b2f5316 1639 uint32_t vl53lx_tuningparm_phasecal_patch_power;
Charles MacNeill 5:89031b2f5316 1640 } VL53LX_tuning_parameters_t;
Charles MacNeill 5:89031b2f5316 1641
Charles MacNeill 5:89031b2f5316 1642
Charles MacNeill 5:89031b2f5316 1643
Charles MacNeill 5:89031b2f5316 1644
Charles MacNeill 5:89031b2f5316 1645
Charles MacNeill 5:89031b2f5316 1646 typedef struct {
Charles MacNeill 5:89031b2f5316 1647
Charles MacNeill 5:89031b2f5316 1648 uint16_t target_reflectance_for_dmax[VL53LX_MAX_AMBIENT_DMAX_VALUES];
Charles MacNeill 5:89031b2f5316 1649
Charles MacNeill 5:89031b2f5316 1650 } VL53LX_dmax_reflectance_array_t;
Charles MacNeill 5:89031b2f5316 1651
Charles MacNeill 5:89031b2f5316 1652
Charles MacNeill 5:89031b2f5316 1653
Charles MacNeill 5:89031b2f5316 1654
Charles MacNeill 5:89031b2f5316 1655 typedef struct {
Charles MacNeill 5:89031b2f5316 1656
Charles MacNeill 5:89031b2f5316 1657 uint8_t spad_type;
Charles MacNeill 5:89031b2f5316 1658
Charles MacNeill 5:89031b2f5316 1659 uint16_t VL53LX_p_020;
Charles MacNeill 5:89031b2f5316 1660
Charles MacNeill 5:89031b2f5316 1661 uint16_t rate_data[VL53LX_NO_OF_SPAD_ENABLES];
Charles MacNeill 5:89031b2f5316 1662
Charles MacNeill 5:89031b2f5316 1663 uint16_t no_of_values;
Charles MacNeill 5:89031b2f5316 1664
Charles MacNeill 5:89031b2f5316 1665 uint8_t fractional_bits;
Charles MacNeill 5:89031b2f5316 1666
Charles MacNeill 5:89031b2f5316 1667 uint8_t error_status;
Charles MacNeill 5:89031b2f5316 1668
Charles MacNeill 5:89031b2f5316 1669
Charles MacNeill 5:89031b2f5316 1670 } VL53LX_spad_rate_data_t;
Charles MacNeill 5:89031b2f5316 1671
Charles MacNeill 5:89031b2f5316 1672
Charles MacNeill 5:89031b2f5316 1673
Charles MacNeill 5:89031b2f5316 1674
Charles MacNeill 5:89031b2f5316 1675
Charles MacNeill 5:89031b2f5316 1676
Charles MacNeill 5:89031b2f5316 1677 typedef struct {
Charles MacNeill 5:89031b2f5316 1678
Charles MacNeill 5:89031b2f5316 1679 VL53LX_DevicePresetModes preset_mode;
Charles MacNeill 5:89031b2f5316 1680
Charles MacNeill 5:89031b2f5316 1681 VL53LX_DeviceZonePreset zone_preset;
Charles MacNeill 5:89031b2f5316 1682
Charles MacNeill 5:89031b2f5316 1683 VL53LX_DeviceMeasurementModes measurement_mode;
Charles MacNeill 5:89031b2f5316 1684
Charles MacNeill 5:89031b2f5316 1685 VL53LX_OffsetCalibrationMode offset_calibration_mode;
Charles MacNeill 5:89031b2f5316 1686
Charles MacNeill 5:89031b2f5316 1687 VL53LX_OffsetCorrectionMode offset_correction_mode;
Charles MacNeill 5:89031b2f5316 1688
Charles MacNeill 5:89031b2f5316 1689 VL53LX_DeviceDmaxMode dmax_mode;
Charles MacNeill 5:89031b2f5316 1690
Charles MacNeill 5:89031b2f5316 1691
Charles MacNeill 5:89031b2f5316 1692 uint32_t phasecal_config_timeout_us;
Charles MacNeill 5:89031b2f5316 1693
Charles MacNeill 5:89031b2f5316 1694 uint32_t mm_config_timeout_us;
Charles MacNeill 5:89031b2f5316 1695
Charles MacNeill 5:89031b2f5316 1696 uint32_t range_config_timeout_us;
Charles MacNeill 5:89031b2f5316 1697
Charles MacNeill 5:89031b2f5316 1698 uint32_t inter_measurement_period_ms;
Charles MacNeill 5:89031b2f5316 1699
Charles MacNeill 5:89031b2f5316 1700 uint16_t dss_config__target_total_rate_mcps;
Charles MacNeill 5:89031b2f5316 1701
Charles MacNeill 5:89031b2f5316 1702
Charles MacNeill 5:89031b2f5316 1703 VL53LX_histogram_bin_data_t VL53LX_p_006;
Charles MacNeill 5:89031b2f5316 1704
Charles MacNeill 5:89031b2f5316 1705
Charles MacNeill 5:89031b2f5316 1706 } VL53LX_additional_data_t;
Charles MacNeill 5:89031b2f5316 1707
Charles MacNeill 5:89031b2f5316 1708
Charles MacNeill 5:89031b2f5316 1709
Charles MacNeill 5:89031b2f5316 1710
Charles MacNeill 5:89031b2f5316 1711
Charles MacNeill 5:89031b2f5316 1712
Charles MacNeill 5:89031b2f5316 1713
Charles MacNeill 5:89031b2f5316 1714
Charles MacNeill 5:89031b2f5316 1715 #define SUPPRESS_UNUSED_WARNING(x) \
Charles MacNeill 5:89031b2f5316 1716 ((void) (x))
Charles MacNeill 5:89031b2f5316 1717
Charles MacNeill 5:89031b2f5316 1718
Charles MacNeill 5:89031b2f5316 1719 #define IGNORE_STATUS(__FUNCTION_ID__, __ERROR_STATUS_CHECK__, __STATUS__) \
Charles MacNeill 5:89031b2f5316 1720 do { \
Charles MacNeill 5:89031b2f5316 1721 DISABLE_WARNINGS(); \
Charles MacNeill 5:89031b2f5316 1722 if (__FUNCTION_ID__) { \
Charles MacNeill 5:89031b2f5316 1723 if (__STATUS__ == __ERROR_STATUS_CHECK__) { \
Charles MacNeill 5:89031b2f5316 1724 __STATUS__ = VL53LX_ERROR_NONE; \
Charles MacNeill 5:89031b2f5316 1725 WARN_OVERRIDE_STATUS(__FUNCTION_ID__); \
Charles MacNeill 5:89031b2f5316 1726 } \
Charles MacNeill 5:89031b2f5316 1727 } \
Charles MacNeill 5:89031b2f5316 1728 ENABLE_WARNINGS(); \
Charles MacNeill 5:89031b2f5316 1729 } \
Charles MacNeill 5:89031b2f5316 1730 while (0)
Charles MacNeill 5:89031b2f5316 1731
Charles MacNeill 5:89031b2f5316 1732 #define VL53LX_COPYSTRING(str, ...) \
Charles MacNeill 5:89031b2f5316 1733 (strncpy(str, ##__VA_ARGS__, VL53LX_MAX_STRING_LENGTH-1))
Charles MacNeill 5:89031b2f5316 1734
Charles MacNeill 5:89031b2f5316 1735 #ifdef __cplusplus
Charles MacNeill 5:89031b2f5316 1736 }
Charles MacNeill 5:89031b2f5316 1737 #endif
Charles MacNeill 5:89031b2f5316 1738
Charles MacNeill 5:89031b2f5316 1739 #endif
Charles MacNeill 5:89031b2f5316 1740
Charles MacNeill 5:89031b2f5316 1741
Charles MacNeill 5:89031b2f5316 1742