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:
Charles MacNeill
Date:
Wed Jul 14 12:45:49 2021 +0100
Revision:
5:89031b2f5316
The class files now just are wrappers for the files in the "MODULES" directory.The porting directory includes the mbed interface

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