Rename library

Dependencies:   X_NUCLEO_COMMON ST_INTERFACES

Dependents:   VL53L3CX_NoShield_1Sensor_poll_Mb06x VL53L3_NoShield_1Sensor_polling_Mb63 X_NUCLEO_53L3A2 53L3A2_Ranging

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

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Charles MacNeill 5:89031b2f5316 1
Charles MacNeill 5:89031b2f5316 2 /* SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause */
Charles MacNeill 5:89031b2f5316 3 /******************************************************************************
Charles MacNeill 5:89031b2f5316 4 * Copyright (c) 2020, STMicroelectronics - All Rights Reserved
Charles MacNeill 5:89031b2f5316 5
Charles MacNeill 5:89031b2f5316 6 This file is part of VL53LX and is dual licensed,
Charles MacNeill 5:89031b2f5316 7 either GPL-2.0+
Charles MacNeill 5:89031b2f5316 8 or 'BSD 3-clause "New" or "Revised" License' , at your option.
Charles MacNeill 5:89031b2f5316 9 ******************************************************************************
Charles MacNeill 5:89031b2f5316 10 */
Charles MacNeill 5:89031b2f5316 11
Charles MacNeill 5:89031b2f5316 12
Charles MacNeill 5:89031b2f5316 13
Charles MacNeill 5:89031b2f5316 14
Charles MacNeill 5:89031b2f5316 15
Charles MacNeill 5:89031b2f5316 16 #ifndef _VL53LX_HIST_STRUCTS_H_
Charles MacNeill 5:89031b2f5316 17 #define _VL53LX_HIST_STRUCTS_H_
Charles MacNeill 5:89031b2f5316 18
Charles MacNeill 5:89031b2f5316 19 #include "vl53lx_ll_device.h"
Charles MacNeill 5:89031b2f5316 20 #include "vl53lx_dmax_structs.h"
Charles MacNeill 5:89031b2f5316 21
Charles MacNeill 5:89031b2f5316 22 #ifdef __cplusplus
Charles MacNeill 5:89031b2f5316 23 extern "C"
Charles MacNeill 5:89031b2f5316 24 {
Charles MacNeill 5:89031b2f5316 25 #endif
Charles MacNeill 5:89031b2f5316 26
Charles MacNeill 5:89031b2f5316 27 #define VL53LX_MAX_BIN_SEQUENCE_LENGTH 6
Charles MacNeill 5:89031b2f5316 28 #define VL53LX_MAX_BIN_SEQUENCE_CODE 15
Charles MacNeill 5:89031b2f5316 29 #define VL53LX_HISTOGRAM_BUFFER_SIZE 24
Charles MacNeill 5:89031b2f5316 30 #define VL53LX_XTALK_HISTO_BINS 12
Charles MacNeill 5:89031b2f5316 31
Charles MacNeill 5:89031b2f5316 32
Charles MacNeill 5:89031b2f5316 33
Charles MacNeill 5:89031b2f5316 34 typedef struct {
Charles MacNeill 5:89031b2f5316 35
Charles MacNeill 5:89031b2f5316 36 uint8_t histogram_config__spad_array_selection;
Charles MacNeill 5:89031b2f5316 37
Charles MacNeill 5:89031b2f5316 38 uint8_t histogram_config__low_amb_even_bin_0_1;
Charles MacNeill 5:89031b2f5316 39 uint8_t histogram_config__low_amb_even_bin_2_3;
Charles MacNeill 5:89031b2f5316 40 uint8_t histogram_config__low_amb_even_bin_4_5;
Charles MacNeill 5:89031b2f5316 41
Charles MacNeill 5:89031b2f5316 42 uint8_t histogram_config__low_amb_odd_bin_0_1;
Charles MacNeill 5:89031b2f5316 43 uint8_t histogram_config__low_amb_odd_bin_2_3;
Charles MacNeill 5:89031b2f5316 44 uint8_t histogram_config__low_amb_odd_bin_4_5;
Charles MacNeill 5:89031b2f5316 45
Charles MacNeill 5:89031b2f5316 46 uint8_t histogram_config__mid_amb_even_bin_0_1;
Charles MacNeill 5:89031b2f5316 47 uint8_t histogram_config__mid_amb_even_bin_2_3;
Charles MacNeill 5:89031b2f5316 48 uint8_t histogram_config__mid_amb_even_bin_4_5;
Charles MacNeill 5:89031b2f5316 49
Charles MacNeill 5:89031b2f5316 50 uint8_t histogram_config__mid_amb_odd_bin_0_1;
Charles MacNeill 5:89031b2f5316 51 uint8_t histogram_config__mid_amb_odd_bin_2;
Charles MacNeill 5:89031b2f5316 52 uint8_t histogram_config__mid_amb_odd_bin_3_4;
Charles MacNeill 5:89031b2f5316 53 uint8_t histogram_config__mid_amb_odd_bin_5;
Charles MacNeill 5:89031b2f5316 54
Charles MacNeill 5:89031b2f5316 55 uint8_t histogram_config__user_bin_offset;
Charles MacNeill 5:89031b2f5316 56
Charles MacNeill 5:89031b2f5316 57 uint8_t histogram_config__high_amb_even_bin_0_1;
Charles MacNeill 5:89031b2f5316 58 uint8_t histogram_config__high_amb_even_bin_2_3;
Charles MacNeill 5:89031b2f5316 59 uint8_t histogram_config__high_amb_even_bin_4_5;
Charles MacNeill 5:89031b2f5316 60
Charles MacNeill 5:89031b2f5316 61 uint8_t histogram_config__high_amb_odd_bin_0_1;
Charles MacNeill 5:89031b2f5316 62 uint8_t histogram_config__high_amb_odd_bin_2_3;
Charles MacNeill 5:89031b2f5316 63 uint8_t histogram_config__high_amb_odd_bin_4_5;
Charles MacNeill 5:89031b2f5316 64
Charles MacNeill 5:89031b2f5316 65 uint16_t histogram_config__amb_thresh_low;
Charles MacNeill 5:89031b2f5316 66
Charles MacNeill 5:89031b2f5316 67 uint16_t histogram_config__amb_thresh_high;
Charles MacNeill 5:89031b2f5316 68
Charles MacNeill 5:89031b2f5316 69
Charles MacNeill 5:89031b2f5316 70 } VL53LX_histogram_config_t;
Charles MacNeill 5:89031b2f5316 71
Charles MacNeill 5:89031b2f5316 72
Charles MacNeill 5:89031b2f5316 73
Charles MacNeill 5:89031b2f5316 74
Charles MacNeill 5:89031b2f5316 75 typedef struct {
Charles MacNeill 5:89031b2f5316 76
Charles MacNeill 5:89031b2f5316 77 VL53LX_HistAlgoSelect hist_algo_select;
Charles MacNeill 5:89031b2f5316 78
Charles MacNeill 5:89031b2f5316 79
Charles MacNeill 5:89031b2f5316 80 VL53LX_HistTargetOrder hist_target_order;
Charles MacNeill 5:89031b2f5316 81
Charles MacNeill 5:89031b2f5316 82
Charles MacNeill 5:89031b2f5316 83 uint8_t filter_woi0;
Charles MacNeill 5:89031b2f5316 84
Charles MacNeill 5:89031b2f5316 85 uint8_t filter_woi1;
Charles MacNeill 5:89031b2f5316 86
Charles MacNeill 5:89031b2f5316 87
Charles MacNeill 5:89031b2f5316 88 VL53LX_HistAmbEstMethod hist_amb_est_method;
Charles MacNeill 5:89031b2f5316 89
Charles MacNeill 5:89031b2f5316 90 uint8_t ambient_thresh_sigma0;
Charles MacNeill 5:89031b2f5316 91
Charles MacNeill 5:89031b2f5316 92 uint8_t ambient_thresh_sigma1;
Charles MacNeill 5:89031b2f5316 93
Charles MacNeill 5:89031b2f5316 94
Charles MacNeill 5:89031b2f5316 95
Charles MacNeill 5:89031b2f5316 96 uint16_t ambient_thresh_events_scaler;
Charles MacNeill 5:89031b2f5316 97
Charles MacNeill 5:89031b2f5316 98
Charles MacNeill 5:89031b2f5316 99
Charles MacNeill 5:89031b2f5316 100 int32_t min_ambient_thresh_events;
Charles MacNeill 5:89031b2f5316 101
Charles MacNeill 5:89031b2f5316 102 uint16_t noise_threshold;
Charles MacNeill 5:89031b2f5316 103
Charles MacNeill 5:89031b2f5316 104
Charles MacNeill 5:89031b2f5316 105 int32_t signal_total_events_limit;
Charles MacNeill 5:89031b2f5316 106
Charles MacNeill 5:89031b2f5316 107 uint8_t sigma_estimator__sigma_ref_mm;
Charles MacNeill 5:89031b2f5316 108
Charles MacNeill 5:89031b2f5316 109 uint16_t sigma_thresh;
Charles MacNeill 5:89031b2f5316 110
Charles MacNeill 5:89031b2f5316 111 int16_t range_offset_mm;
Charles MacNeill 5:89031b2f5316 112
Charles MacNeill 5:89031b2f5316 113 uint16_t gain_factor;
Charles MacNeill 5:89031b2f5316 114
Charles MacNeill 5:89031b2f5316 115
Charles MacNeill 5:89031b2f5316 116 uint8_t valid_phase_low;
Charles MacNeill 5:89031b2f5316 117
Charles MacNeill 5:89031b2f5316 118 uint8_t valid_phase_high;
Charles MacNeill 5:89031b2f5316 119
Charles MacNeill 5:89031b2f5316 120 uint8_t algo__consistency_check__phase_tolerance;
Charles MacNeill 5:89031b2f5316 121
Charles MacNeill 5:89031b2f5316 122 uint8_t algo__consistency_check__event_sigma;
Charles MacNeill 5:89031b2f5316 123
Charles MacNeill 5:89031b2f5316 124
Charles MacNeill 5:89031b2f5316 125
Charles MacNeill 5:89031b2f5316 126 uint16_t algo__consistency_check__event_min_spad_count;
Charles MacNeill 5:89031b2f5316 127
Charles MacNeill 5:89031b2f5316 128
Charles MacNeill 5:89031b2f5316 129
Charles MacNeill 5:89031b2f5316 130 uint16_t algo__consistency_check__min_max_tolerance;
Charles MacNeill 5:89031b2f5316 131
Charles MacNeill 5:89031b2f5316 132
Charles MacNeill 5:89031b2f5316 133 uint8_t algo__crosstalk_compensation_enable;
Charles MacNeill 5:89031b2f5316 134
Charles MacNeill 5:89031b2f5316 135 uint32_t algo__crosstalk_compensation_plane_offset_kcps;
Charles MacNeill 5:89031b2f5316 136
Charles MacNeill 5:89031b2f5316 137 int16_t algo__crosstalk_compensation_x_plane_gradient_kcps;
Charles MacNeill 5:89031b2f5316 138
Charles MacNeill 5:89031b2f5316 139 int16_t algo__crosstalk_compensation_y_plane_gradient_kcps;
Charles MacNeill 5:89031b2f5316 140
Charles MacNeill 5:89031b2f5316 141
Charles MacNeill 5:89031b2f5316 142 int16_t algo__crosstalk_detect_min_valid_range_mm;
Charles MacNeill 5:89031b2f5316 143
Charles MacNeill 5:89031b2f5316 144 int16_t algo__crosstalk_detect_max_valid_range_mm;
Charles MacNeill 5:89031b2f5316 145
Charles MacNeill 5:89031b2f5316 146 uint16_t algo__crosstalk_detect_max_valid_rate_kcps;
Charles MacNeill 5:89031b2f5316 147
Charles MacNeill 5:89031b2f5316 148 uint16_t algo__crosstalk_detect_max_sigma_mm;
Charles MacNeill 5:89031b2f5316 149
Charles MacNeill 5:89031b2f5316 150
Charles MacNeill 5:89031b2f5316 151
Charles MacNeill 5:89031b2f5316 152 uint8_t algo__crosstalk_detect_event_sigma;
Charles MacNeill 5:89031b2f5316 153
Charles MacNeill 5:89031b2f5316 154
Charles MacNeill 5:89031b2f5316 155
Charles MacNeill 5:89031b2f5316 156 uint16_t algo__crosstalk_detect_min_max_tolerance;
Charles MacNeill 5:89031b2f5316 157
Charles MacNeill 5:89031b2f5316 158
Charles MacNeill 5:89031b2f5316 159 } VL53LX_hist_post_process_config_t;
Charles MacNeill 5:89031b2f5316 160
Charles MacNeill 5:89031b2f5316 161
Charles MacNeill 5:89031b2f5316 162
Charles MacNeill 5:89031b2f5316 163 typedef struct {
Charles MacNeill 5:89031b2f5316 164
Charles MacNeill 5:89031b2f5316 165
Charles MacNeill 5:89031b2f5316 166 VL53LX_DeviceState cfg_device_state;
Charles MacNeill 5:89031b2f5316 167
Charles MacNeill 5:89031b2f5316 168 VL53LX_DeviceState rd_device_state;
Charles MacNeill 5:89031b2f5316 169
Charles MacNeill 5:89031b2f5316 170
Charles MacNeill 5:89031b2f5316 171 uint8_t zone_id;
Charles MacNeill 5:89031b2f5316 172
Charles MacNeill 5:89031b2f5316 173 uint32_t time_stamp;
Charles MacNeill 5:89031b2f5316 174
Charles MacNeill 5:89031b2f5316 175
Charles MacNeill 5:89031b2f5316 176 uint8_t VL53LX_p_019;
Charles MacNeill 5:89031b2f5316 177
Charles MacNeill 5:89031b2f5316 178 uint8_t VL53LX_p_020;
Charles MacNeill 5:89031b2f5316 179
Charles MacNeill 5:89031b2f5316 180 uint8_t VL53LX_p_021;
Charles MacNeill 5:89031b2f5316 181
Charles MacNeill 5:89031b2f5316 182 uint8_t number_of_ambient_bins;
Charles MacNeill 5:89031b2f5316 183
Charles MacNeill 5:89031b2f5316 184 uint8_t bin_seq[VL53LX_MAX_BIN_SEQUENCE_LENGTH];
Charles MacNeill 5:89031b2f5316 185
Charles MacNeill 5:89031b2f5316 186 uint8_t bin_rep[VL53LX_MAX_BIN_SEQUENCE_LENGTH];
Charles MacNeill 5:89031b2f5316 187
Charles MacNeill 5:89031b2f5316 188 int32_t bin_data[VL53LX_HISTOGRAM_BUFFER_SIZE];
Charles MacNeill 5:89031b2f5316 189
Charles MacNeill 5:89031b2f5316 190
Charles MacNeill 5:89031b2f5316 191 uint8_t result__interrupt_status;
Charles MacNeill 5:89031b2f5316 192
Charles MacNeill 5:89031b2f5316 193 uint8_t result__range_status;
Charles MacNeill 5:89031b2f5316 194
Charles MacNeill 5:89031b2f5316 195 uint8_t result__report_status;
Charles MacNeill 5:89031b2f5316 196
Charles MacNeill 5:89031b2f5316 197 uint8_t result__stream_count;
Charles MacNeill 5:89031b2f5316 198
Charles MacNeill 5:89031b2f5316 199 uint16_t result__dss_actual_effective_spads;
Charles MacNeill 5:89031b2f5316 200
Charles MacNeill 5:89031b2f5316 201
Charles MacNeill 5:89031b2f5316 202 uint16_t phasecal_result__reference_phase;
Charles MacNeill 5:89031b2f5316 203
Charles MacNeill 5:89031b2f5316 204 uint8_t phasecal_result__vcsel_start;
Charles MacNeill 5:89031b2f5316 205
Charles MacNeill 5:89031b2f5316 206 uint8_t cal_config__vcsel_start;
Charles MacNeill 5:89031b2f5316 207
Charles MacNeill 5:89031b2f5316 208 uint16_t vcsel_width;
Charles MacNeill 5:89031b2f5316 209
Charles MacNeill 5:89031b2f5316 210 uint8_t VL53LX_p_005;
Charles MacNeill 5:89031b2f5316 211
Charles MacNeill 5:89031b2f5316 212 uint16_t VL53LX_p_015;
Charles MacNeill 5:89031b2f5316 213
Charles MacNeill 5:89031b2f5316 214 uint32_t total_periods_elapsed;
Charles MacNeill 5:89031b2f5316 215
Charles MacNeill 5:89031b2f5316 216
Charles MacNeill 5:89031b2f5316 217 uint32_t peak_duration_us;
Charles MacNeill 5:89031b2f5316 218
Charles MacNeill 5:89031b2f5316 219 uint32_t woi_duration_us;
Charles MacNeill 5:89031b2f5316 220
Charles MacNeill 5:89031b2f5316 221
Charles MacNeill 5:89031b2f5316 222 int32_t min_bin_value;
Charles MacNeill 5:89031b2f5316 223
Charles MacNeill 5:89031b2f5316 224 int32_t max_bin_value;
Charles MacNeill 5:89031b2f5316 225
Charles MacNeill 5:89031b2f5316 226
Charles MacNeill 5:89031b2f5316 227 uint16_t zero_distance_phase;
Charles MacNeill 5:89031b2f5316 228
Charles MacNeill 5:89031b2f5316 229 uint8_t number_of_ambient_samples;
Charles MacNeill 5:89031b2f5316 230
Charles MacNeill 5:89031b2f5316 231 int32_t ambient_events_sum;
Charles MacNeill 5:89031b2f5316 232
Charles MacNeill 5:89031b2f5316 233 int32_t VL53LX_p_028;
Charles MacNeill 5:89031b2f5316 234
Charles MacNeill 5:89031b2f5316 235
Charles MacNeill 5:89031b2f5316 236 uint8_t roi_config__user_roi_centre_spad;
Charles MacNeill 5:89031b2f5316 237
Charles MacNeill 5:89031b2f5316 238 uint8_t roi_config__user_roi_requested_global_xy_size;
Charles MacNeill 5:89031b2f5316 239
Charles MacNeill 5:89031b2f5316 240
Charles MacNeill 5:89031b2f5316 241 } VL53LX_histogram_bin_data_t;
Charles MacNeill 5:89031b2f5316 242
Charles MacNeill 5:89031b2f5316 243
Charles MacNeill 5:89031b2f5316 244
Charles MacNeill 5:89031b2f5316 245
Charles MacNeill 5:89031b2f5316 246 typedef struct {
Charles MacNeill 5:89031b2f5316 247
Charles MacNeill 5:89031b2f5316 248
Charles MacNeill 5:89031b2f5316 249 uint8_t zone_id;
Charles MacNeill 5:89031b2f5316 250
Charles MacNeill 5:89031b2f5316 251 uint32_t time_stamp;
Charles MacNeill 5:89031b2f5316 252
Charles MacNeill 5:89031b2f5316 253
Charles MacNeill 5:89031b2f5316 254 uint8_t VL53LX_p_019;
Charles MacNeill 5:89031b2f5316 255
Charles MacNeill 5:89031b2f5316 256 uint8_t VL53LX_p_020;
Charles MacNeill 5:89031b2f5316 257
Charles MacNeill 5:89031b2f5316 258 uint8_t VL53LX_p_021;
Charles MacNeill 5:89031b2f5316 259
Charles MacNeill 5:89031b2f5316 260 uint32_t bin_data[VL53LX_XTALK_HISTO_BINS];
Charles MacNeill 5:89031b2f5316 261
Charles MacNeill 5:89031b2f5316 262
Charles MacNeill 5:89031b2f5316 263
Charles MacNeill 5:89031b2f5316 264 uint16_t phasecal_result__reference_phase;
Charles MacNeill 5:89031b2f5316 265
Charles MacNeill 5:89031b2f5316 266 uint8_t phasecal_result__vcsel_start;
Charles MacNeill 5:89031b2f5316 267
Charles MacNeill 5:89031b2f5316 268 uint8_t cal_config__vcsel_start;
Charles MacNeill 5:89031b2f5316 269
Charles MacNeill 5:89031b2f5316 270 uint16_t vcsel_width;
Charles MacNeill 5:89031b2f5316 271
Charles MacNeill 5:89031b2f5316 272 uint16_t VL53LX_p_015;
Charles MacNeill 5:89031b2f5316 273
Charles MacNeill 5:89031b2f5316 274 uint16_t zero_distance_phase;
Charles MacNeill 5:89031b2f5316 275
Charles MacNeill 5:89031b2f5316 276
Charles MacNeill 5:89031b2f5316 277 } VL53LX_xtalk_histogram_shape_t;
Charles MacNeill 5:89031b2f5316 278
Charles MacNeill 5:89031b2f5316 279
Charles MacNeill 5:89031b2f5316 280
Charles MacNeill 5:89031b2f5316 281
Charles MacNeill 5:89031b2f5316 282 typedef struct {
Charles MacNeill 5:89031b2f5316 283
Charles MacNeill 5:89031b2f5316 284
Charles MacNeill 5:89031b2f5316 285 VL53LX_xtalk_histogram_shape_t xtalk_shape;
Charles MacNeill 5:89031b2f5316 286
Charles MacNeill 5:89031b2f5316 287 VL53LX_histogram_bin_data_t xtalk_hist_removed;
Charles MacNeill 5:89031b2f5316 288
Charles MacNeill 5:89031b2f5316 289 } VL53LX_xtalk_histogram_data_t;
Charles MacNeill 5:89031b2f5316 290
Charles MacNeill 5:89031b2f5316 291
Charles MacNeill 5:89031b2f5316 292
Charles MacNeill 5:89031b2f5316 293
Charles MacNeill 5:89031b2f5316 294 #ifdef __cplusplus
Charles MacNeill 5:89031b2f5316 295 }
Charles MacNeill 5:89031b2f5316 296 #endif
Charles MacNeill 5:89031b2f5316 297
Charles MacNeill 5:89031b2f5316 298 #endif
Charles MacNeill 5:89031b2f5316 299