Fork, renaming of VL53L1CB-2

Dependencies:   X_NUCLEO_COMMON ST_INTERFACES

Dependents:   X_NUCLEO_53L1CB

Committer:
Charles MacNeill
Date:
Fri Jun 11 17:08:27 2021 +0100
Revision:
13:3f1b341901dd
Parent:
7:1add29d51e72
changing case of vl53l1cb.* so it works in linux

Who changed what in which revision?

UserRevisionLine numberNew contents of line
charlesmn 0:3ac96e360672 1
Charles MacNeill 7:1add29d51e72 2 /* SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause */
Charles MacNeill 7:1add29d51e72 3 /******************************************************************************
charlesmn 0:3ac96e360672 4 * Copyright (c) 2020, STMicroelectronics - All Rights Reserved
charlesmn 0:3ac96e360672 5
Charles MacNeill 7:1add29d51e72 6 This file is part of VL53L1 and is dual licensed,
Charles MacNeill 7:1add29d51e72 7 either GPL-2.0+
charlesmn 0:3ac96e360672 8 or 'BSD 3-clause "New" or "Revised" License' , at your option.
Charles MacNeill 7:1add29d51e72 9 ******************************************************************************
Charles MacNeill 7:1add29d51e72 10 */
charlesmn 0:3ac96e360672 11
charlesmn 0:3ac96e360672 12
charlesmn 0:3ac96e360672 13
charlesmn 0:3ac96e360672 14
charlesmn 0:3ac96e360672 15 #ifndef _VL53L1_CORE_H_
charlesmn 0:3ac96e360672 16 #define _VL53L1_CORE_H_
charlesmn 0:3ac96e360672 17
charlesmn 0:3ac96e360672 18 #include "vl53l1_platform.h"
charlesmn 0:3ac96e360672 19 #include "vl53l1_core_support.h"
charlesmn 0:3ac96e360672 20
charlesmn 0:3ac96e360672 21 #ifdef __cplusplus
charlesmn 0:3ac96e360672 22 extern "C" {
charlesmn 0:3ac96e360672 23 #endif
charlesmn 0:3ac96e360672 24
charlesmn 0:3ac96e360672 25
charlesmn 0:3ac96e360672 26
charlesmn 0:3ac96e360672 27
charlesmn 0:3ac96e360672 28 void VL53L1_init_version(
charlesmn 0:3ac96e360672 29 VL53L1_DEV Dev);
charlesmn 0:3ac96e360672 30
charlesmn 0:3ac96e360672 31
charlesmn 0:3ac96e360672 32
charlesmn 0:3ac96e360672 33
charlesmn 0:3ac96e360672 34 void VL53L1_init_ll_driver_state(
charlesmn 0:3ac96e360672 35 VL53L1_DEV Dev,
charlesmn 0:3ac96e360672 36 VL53L1_DeviceState ll_state);
charlesmn 0:3ac96e360672 37
charlesmn 0:3ac96e360672 38
charlesmn 0:3ac96e360672 39
charlesmn 0:3ac96e360672 40
charlesmn 0:3ac96e360672 41 VL53L1_Error VL53L1_update_ll_driver_rd_state(
charlesmn 0:3ac96e360672 42 VL53L1_DEV Dev);
charlesmn 0:3ac96e360672 43
charlesmn 0:3ac96e360672 44
charlesmn 0:3ac96e360672 45
charlesmn 0:3ac96e360672 46
charlesmn 0:3ac96e360672 47 VL53L1_Error VL53L1_check_ll_driver_rd_state(
charlesmn 0:3ac96e360672 48 VL53L1_DEV Dev);
charlesmn 0:3ac96e360672 49
charlesmn 0:3ac96e360672 50
charlesmn 0:3ac96e360672 51
charlesmn 0:3ac96e360672 52
charlesmn 0:3ac96e360672 53 VL53L1_Error VL53L1_update_ll_driver_cfg_state(
charlesmn 0:3ac96e360672 54 VL53L1_DEV Dev);
charlesmn 0:3ac96e360672 55
charlesmn 0:3ac96e360672 56
charlesmn 0:3ac96e360672 57
charlesmn 0:3ac96e360672 58
charlesmn 0:3ac96e360672 59 void VL53L1_copy_rtn_good_spads_to_buffer(
charlesmn 0:3ac96e360672 60 VL53L1_nvm_copy_data_t *pdata,
charlesmn 0:3ac96e360672 61 uint8_t *pbuffer);
charlesmn 0:3ac96e360672 62
charlesmn 0:3ac96e360672 63
charlesmn 0:3ac96e360672 64
charlesmn 0:3ac96e360672 65
charlesmn 0:3ac96e360672 66 void VL53L1_init_system_results(
charlesmn 0:3ac96e360672 67 VL53L1_system_results_t *pdata);
charlesmn 0:3ac96e360672 68
charlesmn 0:3ac96e360672 69
charlesmn 0:3ac96e360672 70
charlesmn 0:3ac96e360672 71
charlesmn 0:3ac96e360672 72 void V53L1_init_zone_results_structure(
charlesmn 0:3ac96e360672 73 uint8_t active_zones,
charlesmn 0:3ac96e360672 74 VL53L1_zone_results_t *pdata);
charlesmn 0:3ac96e360672 75
charlesmn 0:3ac96e360672 76
charlesmn 0:3ac96e360672 77
charlesmn 0:3ac96e360672 78
charlesmn 0:3ac96e360672 79 void V53L1_init_zone_dss_configs(
charlesmn 0:3ac96e360672 80 VL53L1_DEV Dev);
charlesmn 0:3ac96e360672 81
charlesmn 0:3ac96e360672 82
charlesmn 0:3ac96e360672 83
charlesmn 0:3ac96e360672 84
charlesmn 0:3ac96e360672 85 void VL53L1_init_histogram_config_structure(
charlesmn 0:3ac96e360672 86 uint8_t even_bin0,
charlesmn 0:3ac96e360672 87 uint8_t even_bin1,
charlesmn 0:3ac96e360672 88 uint8_t even_bin2,
charlesmn 0:3ac96e360672 89 uint8_t even_bin3,
charlesmn 0:3ac96e360672 90 uint8_t even_bin4,
charlesmn 0:3ac96e360672 91 uint8_t even_bin5,
charlesmn 0:3ac96e360672 92 uint8_t odd_bin0,
charlesmn 0:3ac96e360672 93 uint8_t odd_bin1,
charlesmn 0:3ac96e360672 94 uint8_t odd_bin2,
charlesmn 0:3ac96e360672 95 uint8_t odd_bin3,
charlesmn 0:3ac96e360672 96 uint8_t odd_bin4,
charlesmn 0:3ac96e360672 97 uint8_t odd_bin5,
charlesmn 0:3ac96e360672 98 VL53L1_histogram_config_t *pdata);
charlesmn 0:3ac96e360672 99
charlesmn 0:3ac96e360672 100
charlesmn 0:3ac96e360672 101
charlesmn 0:3ac96e360672 102 void VL53L1_init_histogram_multizone_config_structure(
charlesmn 0:3ac96e360672 103 uint8_t even_bin0,
charlesmn 0:3ac96e360672 104 uint8_t even_bin1,
charlesmn 0:3ac96e360672 105 uint8_t even_bin2,
charlesmn 0:3ac96e360672 106 uint8_t even_bin3,
charlesmn 0:3ac96e360672 107 uint8_t even_bin4,
charlesmn 0:3ac96e360672 108 uint8_t even_bin5,
charlesmn 0:3ac96e360672 109 uint8_t odd_bin0,
charlesmn 0:3ac96e360672 110 uint8_t odd_bin1,
charlesmn 0:3ac96e360672 111 uint8_t odd_bin2,
charlesmn 0:3ac96e360672 112 uint8_t odd_bin3,
charlesmn 0:3ac96e360672 113 uint8_t odd_bin4,
charlesmn 0:3ac96e360672 114 uint8_t odd_bin5,
charlesmn 0:3ac96e360672 115 VL53L1_histogram_config_t *pdata);
charlesmn 0:3ac96e360672 116
charlesmn 0:3ac96e360672 117
charlesmn 0:3ac96e360672 118
charlesmn 0:3ac96e360672 119
charlesmn 0:3ac96e360672 120 void VL53L1_init_xtalk_bin_data_struct(
charlesmn 0:3ac96e360672 121 uint32_t bin_value,
charlesmn 0:3ac96e360672 122 uint16_t VL53L1_p_024,
charlesmn 0:3ac96e360672 123 VL53L1_xtalk_histogram_shape_t *pdata);
charlesmn 0:3ac96e360672 124
charlesmn 0:3ac96e360672 125
charlesmn 0:3ac96e360672 126
charlesmn 0:3ac96e360672 127
charlesmn 0:3ac96e360672 128 void VL53L1_i2c_encode_uint16_t(
charlesmn 0:3ac96e360672 129 uint16_t ip_value,
charlesmn 0:3ac96e360672 130 uint16_t count,
charlesmn 0:3ac96e360672 131 uint8_t *pbuffer);
charlesmn 0:3ac96e360672 132
charlesmn 0:3ac96e360672 133
charlesmn 0:3ac96e360672 134
charlesmn 0:3ac96e360672 135
charlesmn 0:3ac96e360672 136 uint16_t VL53L1_i2c_decode_uint16_t(
charlesmn 0:3ac96e360672 137 uint16_t count,
charlesmn 0:3ac96e360672 138 uint8_t *pbuffer);
charlesmn 0:3ac96e360672 139
charlesmn 0:3ac96e360672 140
charlesmn 0:3ac96e360672 141
charlesmn 0:3ac96e360672 142
charlesmn 0:3ac96e360672 143 void VL53L1_i2c_encode_int16_t(
charlesmn 0:3ac96e360672 144 int16_t ip_value,
charlesmn 0:3ac96e360672 145 uint16_t count,
charlesmn 0:3ac96e360672 146 uint8_t *pbuffer);
charlesmn 0:3ac96e360672 147
charlesmn 0:3ac96e360672 148
charlesmn 0:3ac96e360672 149
charlesmn 0:3ac96e360672 150
charlesmn 0:3ac96e360672 151 int16_t VL53L1_i2c_decode_int16_t(
charlesmn 0:3ac96e360672 152 uint16_t count,
charlesmn 0:3ac96e360672 153 uint8_t *pbuffer);
charlesmn 0:3ac96e360672 154
charlesmn 0:3ac96e360672 155
charlesmn 0:3ac96e360672 156
charlesmn 0:3ac96e360672 157
charlesmn 0:3ac96e360672 158 void VL53L1_i2c_encode_uint32_t(
charlesmn 0:3ac96e360672 159 uint32_t ip_value,
charlesmn 0:3ac96e360672 160 uint16_t count,
charlesmn 0:3ac96e360672 161 uint8_t *pbuffer);
charlesmn 0:3ac96e360672 162
charlesmn 0:3ac96e360672 163
charlesmn 0:3ac96e360672 164
charlesmn 0:3ac96e360672 165
charlesmn 0:3ac96e360672 166 uint32_t VL53L1_i2c_decode_uint32_t(
charlesmn 0:3ac96e360672 167 uint16_t count,
charlesmn 0:3ac96e360672 168 uint8_t *pbuffer);
charlesmn 0:3ac96e360672 169
charlesmn 0:3ac96e360672 170
charlesmn 0:3ac96e360672 171
charlesmn 0:3ac96e360672 172
charlesmn 0:3ac96e360672 173 uint32_t VL53L1_i2c_decode_with_mask(
charlesmn 0:3ac96e360672 174 uint16_t count,
charlesmn 0:3ac96e360672 175 uint8_t *pbuffer,
charlesmn 0:3ac96e360672 176 uint32_t bit_mask,
charlesmn 0:3ac96e360672 177 uint32_t down_shift,
charlesmn 0:3ac96e360672 178 uint32_t offset);
charlesmn 0:3ac96e360672 179
charlesmn 0:3ac96e360672 180
charlesmn 0:3ac96e360672 181
charlesmn 0:3ac96e360672 182
charlesmn 0:3ac96e360672 183 void VL53L1_i2c_encode_int32_t(
charlesmn 0:3ac96e360672 184 int32_t ip_value,
charlesmn 0:3ac96e360672 185 uint16_t count,
charlesmn 0:3ac96e360672 186 uint8_t *pbuffer);
charlesmn 0:3ac96e360672 187
charlesmn 0:3ac96e360672 188
charlesmn 0:3ac96e360672 189
charlesmn 0:3ac96e360672 190
charlesmn 0:3ac96e360672 191 int32_t VL53L1_i2c_decode_int32_t(
charlesmn 0:3ac96e360672 192 uint16_t count,
charlesmn 0:3ac96e360672 193 uint8_t *pbuffer);
charlesmn 0:3ac96e360672 194
charlesmn 0:3ac96e360672 195
charlesmn 0:3ac96e360672 196
charlesmn 0:3ac96e360672 197
charlesmn 0:3ac96e360672 198 VL53L1_Error VL53L1_start_test(
charlesmn 0:3ac96e360672 199 VL53L1_DEV Dev,
charlesmn 0:3ac96e360672 200 uint8_t test_mode__ctrl);
charlesmn 0:3ac96e360672 201
charlesmn 0:3ac96e360672 202
charlesmn 0:3ac96e360672 203
charlesmn 0:3ac96e360672 204
charlesmn 0:3ac96e360672 205 VL53L1_Error VL53L1_set_firmware_enable_register(
charlesmn 0:3ac96e360672 206 VL53L1_DEV Dev,
charlesmn 0:3ac96e360672 207 uint8_t value);
charlesmn 0:3ac96e360672 208
charlesmn 0:3ac96e360672 209
charlesmn 0:3ac96e360672 210
charlesmn 0:3ac96e360672 211
charlesmn 0:3ac96e360672 212 VL53L1_Error VL53L1_enable_firmware(
charlesmn 0:3ac96e360672 213 VL53L1_DEV Dev);
charlesmn 0:3ac96e360672 214
charlesmn 0:3ac96e360672 215
charlesmn 0:3ac96e360672 216
charlesmn 0:3ac96e360672 217
charlesmn 0:3ac96e360672 218 VL53L1_Error VL53L1_disable_firmware(
charlesmn 0:3ac96e360672 219 VL53L1_DEV Dev);
charlesmn 0:3ac96e360672 220
charlesmn 0:3ac96e360672 221
charlesmn 0:3ac96e360672 222
charlesmn 0:3ac96e360672 223
charlesmn 0:3ac96e360672 224 VL53L1_Error VL53L1_set_powerforce_register(
charlesmn 0:3ac96e360672 225 VL53L1_DEV Dev,
charlesmn 0:3ac96e360672 226 uint8_t value);
charlesmn 0:3ac96e360672 227
charlesmn 0:3ac96e360672 228
charlesmn 0:3ac96e360672 229
charlesmn 0:3ac96e360672 230
charlesmn 0:3ac96e360672 231
charlesmn 0:3ac96e360672 232 VL53L1_Error VL53L1_enable_powerforce(
charlesmn 0:3ac96e360672 233 VL53L1_DEV Dev);
charlesmn 0:3ac96e360672 234
charlesmn 0:3ac96e360672 235
charlesmn 0:3ac96e360672 236
charlesmn 0:3ac96e360672 237 VL53L1_Error VL53L1_disable_powerforce(
charlesmn 0:3ac96e360672 238 VL53L1_DEV Dev);
charlesmn 0:3ac96e360672 239
charlesmn 0:3ac96e360672 240
charlesmn 0:3ac96e360672 241
charlesmn 0:3ac96e360672 242
charlesmn 0:3ac96e360672 243
charlesmn 0:3ac96e360672 244 VL53L1_Error VL53L1_clear_interrupt(
charlesmn 0:3ac96e360672 245 VL53L1_DEV Dev);
charlesmn 0:3ac96e360672 246
charlesmn 0:3ac96e360672 247
charlesmn 0:3ac96e360672 248
charlesmn 0:3ac96e360672 249
charlesmn 0:3ac96e360672 250
charlesmn 0:3ac96e360672 251 VL53L1_Error VL53L1_force_shadow_stream_count_to_zero(
charlesmn 0:3ac96e360672 252 VL53L1_DEV Dev);
charlesmn 0:3ac96e360672 253
charlesmn 0:3ac96e360672 254
charlesmn 0:3ac96e360672 255
charlesmn 0:3ac96e360672 256
charlesmn 0:3ac96e360672 257 uint32_t VL53L1_calc_macro_period_us(
charlesmn 0:3ac96e360672 258 uint16_t fast_osc_frequency,
charlesmn 0:3ac96e360672 259 uint8_t VL53L1_p_009);
charlesmn 0:3ac96e360672 260
charlesmn 0:3ac96e360672 261
charlesmn 0:3ac96e360672 262
charlesmn 0:3ac96e360672 263
charlesmn 0:3ac96e360672 264 uint16_t VL53L1_calc_range_ignore_threshold(
charlesmn 0:3ac96e360672 265 uint32_t central_rate,
charlesmn 0:3ac96e360672 266 int16_t x_gradient,
charlesmn 0:3ac96e360672 267 int16_t y_gradient,
charlesmn 0:3ac96e360672 268 uint8_t rate_mult);
charlesmn 0:3ac96e360672 269
charlesmn 0:3ac96e360672 270
charlesmn 0:3ac96e360672 271
charlesmn 0:3ac96e360672 272
charlesmn 0:3ac96e360672 273 uint32_t VL53L1_calc_timeout_mclks(
charlesmn 0:3ac96e360672 274 uint32_t timeout_us,
charlesmn 0:3ac96e360672 275 uint32_t macro_period_us);
charlesmn 0:3ac96e360672 276
charlesmn 0:3ac96e360672 277
charlesmn 0:3ac96e360672 278
charlesmn 0:3ac96e360672 279 uint16_t VL53L1_calc_encoded_timeout(
charlesmn 0:3ac96e360672 280 uint32_t timeout_us,
charlesmn 0:3ac96e360672 281 uint32_t macro_period_us);
charlesmn 0:3ac96e360672 282
charlesmn 0:3ac96e360672 283
charlesmn 0:3ac96e360672 284
charlesmn 0:3ac96e360672 285
charlesmn 0:3ac96e360672 286 uint32_t VL53L1_calc_timeout_us(
charlesmn 0:3ac96e360672 287 uint32_t timeout_mclks,
charlesmn 0:3ac96e360672 288 uint32_t macro_period_us);
charlesmn 0:3ac96e360672 289
charlesmn 0:3ac96e360672 290
charlesmn 0:3ac96e360672 291
charlesmn 0:3ac96e360672 292 uint32_t VL53L1_calc_decoded_timeout_us(
charlesmn 0:3ac96e360672 293 uint16_t timeout_encoded,
charlesmn 0:3ac96e360672 294 uint32_t macro_period_us);
charlesmn 0:3ac96e360672 295
charlesmn 0:3ac96e360672 296
charlesmn 0:3ac96e360672 297
charlesmn 0:3ac96e360672 298
charlesmn 0:3ac96e360672 299 uint16_t VL53L1_encode_timeout(
charlesmn 0:3ac96e360672 300 uint32_t timeout_mclks);
charlesmn 0:3ac96e360672 301
charlesmn 0:3ac96e360672 302
charlesmn 0:3ac96e360672 303
charlesmn 0:3ac96e360672 304
charlesmn 0:3ac96e360672 305 uint32_t VL53L1_decode_timeout(
charlesmn 0:3ac96e360672 306 uint16_t encoded_timeout);
charlesmn 0:3ac96e360672 307
charlesmn 0:3ac96e360672 308
charlesmn 0:3ac96e360672 309
charlesmn 0:3ac96e360672 310
charlesmn 0:3ac96e360672 311 VL53L1_Error VL53L1_calc_timeout_register_values(
charlesmn 0:3ac96e360672 312 uint32_t phasecal_config_timeout_us,
charlesmn 0:3ac96e360672 313 uint32_t mm_config_timeout_us,
charlesmn 0:3ac96e360672 314 uint32_t range_config_timeout_us,
charlesmn 0:3ac96e360672 315 uint16_t fast_osc_frequency,
charlesmn 0:3ac96e360672 316 VL53L1_general_config_t *pgeneral,
charlesmn 0:3ac96e360672 317 VL53L1_timing_config_t *ptiming);
charlesmn 0:3ac96e360672 318
charlesmn 0:3ac96e360672 319
charlesmn 0:3ac96e360672 320
charlesmn 0:3ac96e360672 321
charlesmn 0:3ac96e360672 322 uint8_t VL53L1_encode_vcsel_period(
charlesmn 0:3ac96e360672 323 uint8_t VL53L1_p_031);
charlesmn 0:3ac96e360672 324
charlesmn 0:3ac96e360672 325
charlesmn 0:3ac96e360672 326
charlesmn 0:3ac96e360672 327
charlesmn 0:3ac96e360672 328 uint32_t VL53L1_decode_unsigned_integer(
charlesmn 0:3ac96e360672 329 uint8_t *pbuffer,
charlesmn 0:3ac96e360672 330 uint8_t no_of_bytes);
charlesmn 0:3ac96e360672 331
charlesmn 0:3ac96e360672 332
charlesmn 0:3ac96e360672 333
charlesmn 0:3ac96e360672 334
charlesmn 0:3ac96e360672 335 void VL53L1_encode_unsigned_integer(
charlesmn 0:3ac96e360672 336 uint32_t ip_value,
charlesmn 0:3ac96e360672 337 uint8_t no_of_bytes,
charlesmn 0:3ac96e360672 338 uint8_t *pbuffer);
charlesmn 0:3ac96e360672 339
charlesmn 0:3ac96e360672 340
charlesmn 0:3ac96e360672 341
charlesmn 0:3ac96e360672 342
charlesmn 0:3ac96e360672 343 VL53L1_Error VL53L1_hist_copy_and_scale_ambient_info(
charlesmn 0:3ac96e360672 344 VL53L1_zone_hist_info_t *pidata,
charlesmn 0:3ac96e360672 345 VL53L1_histogram_bin_data_t *podata);
charlesmn 0:3ac96e360672 346
charlesmn 0:3ac96e360672 347
charlesmn 0:3ac96e360672 348
charlesmn 0:3ac96e360672 349
charlesmn 0:3ac96e360672 350 void VL53L1_hist_get_bin_sequence_config(
charlesmn 0:3ac96e360672 351 VL53L1_DEV Dev,
charlesmn 0:3ac96e360672 352 VL53L1_histogram_bin_data_t *pdata);
charlesmn 0:3ac96e360672 353
charlesmn 0:3ac96e360672 354
charlesmn 0:3ac96e360672 355
charlesmn 0:3ac96e360672 356
charlesmn 0:3ac96e360672 357 VL53L1_Error VL53L1_hist_phase_consistency_check(
charlesmn 0:3ac96e360672 358 VL53L1_DEV Dev,
charlesmn 0:3ac96e360672 359 VL53L1_zone_hist_info_t *phist_prev,
charlesmn 0:3ac96e360672 360 VL53L1_zone_objects_t *prange_prev,
charlesmn 0:3ac96e360672 361 VL53L1_range_results_t *prange_curr);
charlesmn 0:3ac96e360672 362
charlesmn 0:3ac96e360672 363
charlesmn 0:3ac96e360672 364
charlesmn 0:3ac96e360672 365
charlesmn 0:3ac96e360672 366
charlesmn 0:3ac96e360672 367
charlesmn 0:3ac96e360672 368
charlesmn 0:3ac96e360672 369 VL53L1_Error VL53L1_hist_events_consistency_check(
charlesmn 0:3ac96e360672 370 uint8_t event_sigma,
charlesmn 0:3ac96e360672 371 uint16_t min_effective_spad_count,
charlesmn 0:3ac96e360672 372 VL53L1_zone_hist_info_t *phist_prev,
charlesmn 0:3ac96e360672 373 VL53L1_object_data_t *prange_prev,
charlesmn 0:3ac96e360672 374 VL53L1_range_data_t *prange_curr,
charlesmn 0:3ac96e360672 375 int32_t *pevents_tolerance,
charlesmn 0:3ac96e360672 376 int32_t *pevents_delta,
charlesmn 0:3ac96e360672 377 VL53L1_DeviceError *prange_status);
charlesmn 0:3ac96e360672 378
charlesmn 0:3ac96e360672 379
charlesmn 0:3ac96e360672 380
charlesmn 0:3ac96e360672 381
charlesmn 0:3ac96e360672 382
charlesmn 0:3ac96e360672 383
charlesmn 0:3ac96e360672 384
charlesmn 0:3ac96e360672 385 VL53L1_Error VL53L1_hist_merged_pulse_check(
charlesmn 0:3ac96e360672 386 int16_t min_max_tolerance_mm,
charlesmn 0:3ac96e360672 387 VL53L1_range_data_t *pdata,
charlesmn 0:3ac96e360672 388 VL53L1_DeviceError *prange_status);
charlesmn 0:3ac96e360672 389
charlesmn 0:3ac96e360672 390
charlesmn 0:3ac96e360672 391
charlesmn 0:3ac96e360672 392
charlesmn 0:3ac96e360672 393
charlesmn 0:3ac96e360672 394
charlesmn 0:3ac96e360672 395 VL53L1_Error VL53L1_hist_xmonitor_consistency_check(
charlesmn 0:3ac96e360672 396 VL53L1_DEV Dev,
charlesmn 0:3ac96e360672 397 VL53L1_zone_hist_info_t *phist_prev,
charlesmn 0:3ac96e360672 398 VL53L1_zone_objects_t *prange_prev,
charlesmn 0:3ac96e360672 399 VL53L1_range_data_t *prange_curr);
charlesmn 0:3ac96e360672 400
charlesmn 0:3ac96e360672 401
charlesmn 0:3ac96e360672 402
charlesmn 0:3ac96e360672 403
charlesmn 0:3ac96e360672 404
charlesmn 0:3ac96e360672 405
charlesmn 0:3ac96e360672 406 VL53L1_Error VL53L1_hist_wrap_dmax(
charlesmn 0:3ac96e360672 407 VL53L1_hist_post_process_config_t *phistpostprocess,
charlesmn 0:3ac96e360672 408 VL53L1_histogram_bin_data_t *pcurrent,
charlesmn 0:3ac96e360672 409 int16_t *pwrap_dmax_mm);
charlesmn 0:3ac96e360672 410
charlesmn 0:3ac96e360672 411
charlesmn 0:3ac96e360672 412
charlesmn 0:3ac96e360672 413
charlesmn 0:3ac96e360672 414 void VL53L1_hist_combine_mm1_mm2_offsets(
charlesmn 0:3ac96e360672 415 int16_t mm1_offset_mm,
charlesmn 0:3ac96e360672 416 int16_t mm2_offset_mm,
charlesmn 0:3ac96e360672 417 uint8_t encoded_mm_roi_centre,
charlesmn 0:3ac96e360672 418 uint8_t encoded_mm_roi_size,
charlesmn 0:3ac96e360672 419 uint8_t encoded_zone_centre,
charlesmn 0:3ac96e360672 420 uint8_t encoded_zone_size,
charlesmn 0:3ac96e360672 421 VL53L1_additional_offset_cal_data_t *pcal_data,
charlesmn 0:3ac96e360672 422 uint8_t *pgood_spads,
charlesmn 0:3ac96e360672 423 uint16_t aperture_attenuation,
charlesmn 0:3ac96e360672 424 int16_t *prange_offset_mm);
charlesmn 0:3ac96e360672 425
charlesmn 0:3ac96e360672 426
charlesmn 0:3ac96e360672 427
charlesmn 0:3ac96e360672 428
charlesmn 0:3ac96e360672 429 VL53L1_Error VL53L1_hist_xtalk_extract_calc_window(
charlesmn 0:3ac96e360672 430 int16_t target_distance_mm,
charlesmn 0:3ac96e360672 431 uint16_t target_width_oversize,
charlesmn 0:3ac96e360672 432 VL53L1_histogram_bin_data_t *phist_bins,
charlesmn 0:3ac96e360672 433 VL53L1_hist_xtalk_extract_data_t *pxtalk_data);
charlesmn 0:3ac96e360672 434
charlesmn 0:3ac96e360672 435
charlesmn 0:3ac96e360672 436
charlesmn 0:3ac96e360672 437
charlesmn 0:3ac96e360672 438 VL53L1_Error VL53L1_hist_xtalk_extract_calc_event_sums(
charlesmn 0:3ac96e360672 439 VL53L1_histogram_bin_data_t *phist_bins,
charlesmn 0:3ac96e360672 440 VL53L1_hist_xtalk_extract_data_t *pxtalk_data);
charlesmn 0:3ac96e360672 441
charlesmn 0:3ac96e360672 442
charlesmn 0:3ac96e360672 443
charlesmn 0:3ac96e360672 444
charlesmn 0:3ac96e360672 445 VL53L1_Error VL53L1_hist_xtalk_extract_calc_rate_per_spad(
charlesmn 0:3ac96e360672 446 VL53L1_hist_xtalk_extract_data_t *pxtalk_data);
charlesmn 0:3ac96e360672 447
charlesmn 0:3ac96e360672 448
charlesmn 0:3ac96e360672 449
charlesmn 0:3ac96e360672 450 VL53L1_Error VL53L1_hist_xtalk_extract_calc_shape(
charlesmn 0:3ac96e360672 451 VL53L1_hist_xtalk_extract_data_t *pxtalk_data,
charlesmn 0:3ac96e360672 452 VL53L1_xtalk_histogram_shape_t *pxtalk_shape);
charlesmn 0:3ac96e360672 453
charlesmn 0:3ac96e360672 454
charlesmn 0:3ac96e360672 455
charlesmn 0:3ac96e360672 456 VL53L1_Error VL53L1_hist_xtalk_shape_model(
charlesmn 0:3ac96e360672 457 uint16_t events_per_bin,
charlesmn 0:3ac96e360672 458 uint16_t pulse_centre,
charlesmn 0:3ac96e360672 459 uint16_t pulse_width,
charlesmn 0:3ac96e360672 460 VL53L1_xtalk_histogram_shape_t *pxtalk_shape);
charlesmn 0:3ac96e360672 461
charlesmn 0:3ac96e360672 462
charlesmn 0:3ac96e360672 463
charlesmn 0:3ac96e360672 464
charlesmn 0:3ac96e360672 465 uint16_t VL53L1_hist_xtalk_shape_model_interp(
charlesmn 0:3ac96e360672 466 uint16_t events_per_bin,
charlesmn 0:3ac96e360672 467 uint32_t phase_delta);
charlesmn 0:3ac96e360672 468
charlesmn 0:3ac96e360672 469
charlesmn 0:3ac96e360672 470
charlesmn 0:3ac96e360672 471
charlesmn 0:3ac96e360672 472 void VL53L1_spad_number_to_byte_bit_index(
charlesmn 0:3ac96e360672 473 uint8_t spad_number,
charlesmn 0:3ac96e360672 474 uint8_t *pbyte_index,
charlesmn 0:3ac96e360672 475 uint8_t *pbit_index,
charlesmn 0:3ac96e360672 476 uint8_t *pbit_mask);
charlesmn 0:3ac96e360672 477
charlesmn 0:3ac96e360672 478
charlesmn 0:3ac96e360672 479
charlesmn 0:3ac96e360672 480
charlesmn 0:3ac96e360672 481 void VL53L1_encode_row_col(
charlesmn 0:3ac96e360672 482 uint8_t row,
charlesmn 0:3ac96e360672 483 uint8_t col,
charlesmn 0:3ac96e360672 484 uint8_t *pspad_number);
charlesmn 0:3ac96e360672 485
charlesmn 0:3ac96e360672 486
charlesmn 0:3ac96e360672 487
charlesmn 0:3ac96e360672 488
charlesmn 0:3ac96e360672 489 void VL53L1_decode_zone_size(
charlesmn 0:3ac96e360672 490 uint8_t encoded_xy_size,
charlesmn 0:3ac96e360672 491 uint8_t *pwidth,
charlesmn 0:3ac96e360672 492 uint8_t *pheight);
charlesmn 0:3ac96e360672 493
charlesmn 0:3ac96e360672 494
charlesmn 0:3ac96e360672 495
charlesmn 0:3ac96e360672 496
charlesmn 0:3ac96e360672 497 void VL53L1_encode_zone_size(
charlesmn 0:3ac96e360672 498 uint8_t width,
charlesmn 0:3ac96e360672 499 uint8_t height,
charlesmn 0:3ac96e360672 500 uint8_t *pencoded_xy_size);
charlesmn 0:3ac96e360672 501
charlesmn 0:3ac96e360672 502
charlesmn 0:3ac96e360672 503
charlesmn 0:3ac96e360672 504
charlesmn 0:3ac96e360672 505 void VL53L1_decode_zone_limits(
charlesmn 0:3ac96e360672 506 uint8_t encoded_xy_centre,
charlesmn 0:3ac96e360672 507 uint8_t encoded_xy_size,
charlesmn 0:3ac96e360672 508 int16_t *px_ll,
charlesmn 0:3ac96e360672 509 int16_t *py_ll,
charlesmn 0:3ac96e360672 510 int16_t *px_ur,
charlesmn 0:3ac96e360672 511 int16_t *py_ur);
charlesmn 0:3ac96e360672 512
charlesmn 0:3ac96e360672 513
charlesmn 0:3ac96e360672 514
charlesmn 0:3ac96e360672 515
charlesmn 0:3ac96e360672 516 uint8_t VL53L1_is_aperture_location(
charlesmn 0:3ac96e360672 517 uint8_t row,
charlesmn 0:3ac96e360672 518 uint8_t col);
charlesmn 0:3ac96e360672 519
charlesmn 0:3ac96e360672 520
charlesmn 0:3ac96e360672 521
charlesmn 0:3ac96e360672 522
charlesmn 0:3ac96e360672 523 void VL53L1_calc_max_effective_spads(
charlesmn 0:3ac96e360672 524 uint8_t encoded_zone_centre,
charlesmn 0:3ac96e360672 525 uint8_t encoded_zone_size,
charlesmn 0:3ac96e360672 526 uint8_t *pgood_spads,
charlesmn 0:3ac96e360672 527 uint16_t aperture_attenuation,
charlesmn 0:3ac96e360672 528 uint16_t *pmax_effective_spads);
charlesmn 0:3ac96e360672 529
charlesmn 0:3ac96e360672 530
charlesmn 0:3ac96e360672 531
charlesmn 0:3ac96e360672 532
charlesmn 0:3ac96e360672 533 void VL53L1_calc_mm_effective_spads(
charlesmn 0:3ac96e360672 534 uint8_t encoded_mm_roi_centre,
charlesmn 0:3ac96e360672 535 uint8_t encoded_mm_roi_size,
charlesmn 0:3ac96e360672 536 uint8_t encoded_zone_centre,
charlesmn 0:3ac96e360672 537 uint8_t encoded_zone_size,
charlesmn 0:3ac96e360672 538 uint8_t *pgood_spads,
charlesmn 0:3ac96e360672 539 uint16_t aperture_attenuation,
charlesmn 0:3ac96e360672 540 uint16_t *pmm_inner_effective_spads,
charlesmn 0:3ac96e360672 541 uint16_t *pmm_outer_effective_spads);
charlesmn 0:3ac96e360672 542
charlesmn 0:3ac96e360672 543
charlesmn 0:3ac96e360672 544
charlesmn 0:3ac96e360672 545
charlesmn 0:3ac96e360672 546 void VL53L1_hist_copy_results_to_sys_and_core(
charlesmn 0:3ac96e360672 547 VL53L1_histogram_bin_data_t *pbins,
charlesmn 0:3ac96e360672 548 VL53L1_range_results_t *phist,
charlesmn 0:3ac96e360672 549 VL53L1_system_results_t *psys,
charlesmn 0:3ac96e360672 550 VL53L1_core_results_t *pcore);
charlesmn 0:3ac96e360672 551
charlesmn 0:3ac96e360672 552
charlesmn 0:3ac96e360672 553
charlesmn 0:3ac96e360672 554
charlesmn 0:3ac96e360672 555 VL53L1_Error VL53L1_sum_histogram_data(
charlesmn 0:3ac96e360672 556 VL53L1_histogram_bin_data_t *phist_input,
charlesmn 0:3ac96e360672 557 VL53L1_histogram_bin_data_t *phist_output);
charlesmn 0:3ac96e360672 558
charlesmn 0:3ac96e360672 559
charlesmn 0:3ac96e360672 560
charlesmn 0:3ac96e360672 561
charlesmn 0:3ac96e360672 562 VL53L1_Error VL53L1_avg_histogram_data(
charlesmn 0:3ac96e360672 563 uint8_t no_of_samples,
charlesmn 0:3ac96e360672 564 VL53L1_histogram_bin_data_t *phist_sum,
charlesmn 0:3ac96e360672 565 VL53L1_histogram_bin_data_t *phist_avg);
charlesmn 0:3ac96e360672 566
charlesmn 0:3ac96e360672 567
charlesmn 0:3ac96e360672 568
charlesmn 0:3ac96e360672 569
charlesmn 0:3ac96e360672 570 VL53L1_Error VL53L1_save_cfg_data(
charlesmn 0:3ac96e360672 571 VL53L1_DEV Dev);
charlesmn 0:3ac96e360672 572
charlesmn 0:3ac96e360672 573
charlesmn 0:3ac96e360672 574
charlesmn 0:3ac96e360672 575
charlesmn 0:3ac96e360672 576 VL53L1_Error VL53L1_dynamic_zone_update(
charlesmn 0:3ac96e360672 577 VL53L1_DEV Dev,
charlesmn 0:3ac96e360672 578 VL53L1_range_results_t *presults);
charlesmn 0:3ac96e360672 579
charlesmn 0:3ac96e360672 580
charlesmn 0:3ac96e360672 581
charlesmn 0:3ac96e360672 582
charlesmn 0:3ac96e360672 583 VL53L1_Error VL53L1_update_internal_stream_counters(
charlesmn 0:3ac96e360672 584 VL53L1_DEV Dev,
charlesmn 0:3ac96e360672 585 uint8_t external_stream_count,
charlesmn 0:3ac96e360672 586 uint8_t *pinternal_stream_count,
charlesmn 0:3ac96e360672 587 uint8_t *pinternal_stream_count_val
charlesmn 0:3ac96e360672 588 );
charlesmn 0:3ac96e360672 589
charlesmn 0:3ac96e360672 590
charlesmn 0:3ac96e360672 591
charlesmn 0:3ac96e360672 592 VL53L1_Error VL53L1_multizone_hist_bins_update(
charlesmn 0:3ac96e360672 593 VL53L1_DEV Dev);
charlesmn 0:3ac96e360672 594
charlesmn 0:3ac96e360672 595
charlesmn 0:3ac96e360672 596
charlesmn 0:3ac96e360672 597 VL53L1_Error VL53L1_set_histogram_multizone_initial_bin_config(
charlesmn 0:3ac96e360672 598 VL53L1_zone_config_t *pzone_cfg,
charlesmn 0:3ac96e360672 599 VL53L1_histogram_config_t *phist_cfg,
charlesmn 0:3ac96e360672 600 VL53L1_histogram_config_t *pmulti_hist
charlesmn 0:3ac96e360672 601 );
charlesmn 0:3ac96e360672 602
charlesmn 0:3ac96e360672 603
charlesmn 0:3ac96e360672 604
charlesmn 0:3ac96e360672 605 uint8_t VL53L1_encode_GPIO_interrupt_config(
charlesmn 0:3ac96e360672 606 VL53L1_GPIO_interrupt_config_t *pintconf);
charlesmn 0:3ac96e360672 607
charlesmn 0:3ac96e360672 608
charlesmn 0:3ac96e360672 609
charlesmn 0:3ac96e360672 610 VL53L1_GPIO_interrupt_config_t VL53L1_decode_GPIO_interrupt_config(
charlesmn 0:3ac96e360672 611 uint8_t system__interrupt_config);
charlesmn 0:3ac96e360672 612
charlesmn 0:3ac96e360672 613
charlesmn 0:3ac96e360672 614
charlesmn 0:3ac96e360672 615 VL53L1_Error VL53L1_set_GPIO_distance_threshold(
charlesmn 0:3ac96e360672 616 VL53L1_DEV Dev,
charlesmn 0:3ac96e360672 617 uint16_t threshold_high,
charlesmn 0:3ac96e360672 618 uint16_t threshold_low);
charlesmn 0:3ac96e360672 619
charlesmn 0:3ac96e360672 620
charlesmn 0:3ac96e360672 621
charlesmn 0:3ac96e360672 622 VL53L1_Error VL53L1_set_GPIO_rate_threshold(
charlesmn 0:3ac96e360672 623 VL53L1_DEV Dev,
charlesmn 0:3ac96e360672 624 uint16_t threshold_high,
charlesmn 0:3ac96e360672 625 uint16_t threshold_low);
charlesmn 0:3ac96e360672 626
charlesmn 0:3ac96e360672 627
charlesmn 0:3ac96e360672 628
charlesmn 0:3ac96e360672 629 VL53L1_Error VL53L1_set_GPIO_thresholds_from_struct(
charlesmn 0:3ac96e360672 630 VL53L1_DEV Dev,
charlesmn 0:3ac96e360672 631 VL53L1_GPIO_interrupt_config_t *pintconf);
charlesmn 0:3ac96e360672 632
charlesmn 0:3ac96e360672 633
charlesmn 0:3ac96e360672 634
charlesmn 0:3ac96e360672 635
charlesmn 0:3ac96e360672 636
charlesmn 0:3ac96e360672 637 VL53L1_Error VL53L1_set_ref_spad_char_config(
charlesmn 0:3ac96e360672 638 VL53L1_DEV Dev,
charlesmn 0:3ac96e360672 639 uint8_t vcsel_period_a,
charlesmn 0:3ac96e360672 640 uint32_t phasecal_timeout_us,
charlesmn 0:3ac96e360672 641 uint16_t total_rate_target_mcps,
charlesmn 0:3ac96e360672 642 uint16_t max_count_rate_rtn_limit_mcps,
charlesmn 0:3ac96e360672 643 uint16_t min_count_rate_rtn_limit_mcps,
charlesmn 0:3ac96e360672 644 uint16_t fast_osc_frequency);
charlesmn 0:3ac96e360672 645
charlesmn 0:3ac96e360672 646
charlesmn 0:3ac96e360672 647
charlesmn 0:3ac96e360672 648
charlesmn 0:3ac96e360672 649 VL53L1_Error VL53L1_set_ssc_config(
charlesmn 0:3ac96e360672 650 VL53L1_DEV Dev,
charlesmn 0:3ac96e360672 651 VL53L1_ssc_config_t *pssc_cfg,
charlesmn 0:3ac96e360672 652 uint16_t fast_osc_frequency);
charlesmn 0:3ac96e360672 653
charlesmn 0:3ac96e360672 654
charlesmn 0:3ac96e360672 655
charlesmn 0:3ac96e360672 656
charlesmn 0:3ac96e360672 657 VL53L1_Error VL53L1_get_spad_rate_data(
charlesmn 0:3ac96e360672 658 VL53L1_DEV Dev,
charlesmn 0:3ac96e360672 659 VL53L1_spad_rate_data_t *pspad_rates);
charlesmn 0:3ac96e360672 660
charlesmn 0:3ac96e360672 661
charlesmn 0:3ac96e360672 662
charlesmn 0:3ac96e360672 663 uint32_t VL53L1_calc_crosstalk_plane_offset_with_margin(
charlesmn 0:3ac96e360672 664 uint32_t plane_offset_kcps,
charlesmn 0:3ac96e360672 665 int16_t margin_offset_kcps);
charlesmn 0:3ac96e360672 666
charlesmn 0:3ac96e360672 667
charlesmn 0:3ac96e360672 668
charlesmn 0:3ac96e360672 669 VL53L1_Error VL53L1_low_power_auto_data_init(
charlesmn 0:3ac96e360672 670 VL53L1_DEV Dev
charlesmn 0:3ac96e360672 671 );
charlesmn 0:3ac96e360672 672
charlesmn 0:3ac96e360672 673
charlesmn 0:3ac96e360672 674
charlesmn 0:3ac96e360672 675 VL53L1_Error VL53L1_low_power_auto_data_stop_range(
charlesmn 0:3ac96e360672 676 VL53L1_DEV Dev
charlesmn 0:3ac96e360672 677 );
charlesmn 0:3ac96e360672 678
charlesmn 0:3ac96e360672 679
charlesmn 0:3ac96e360672 680
charlesmn 0:3ac96e360672 681
charlesmn 0:3ac96e360672 682 VL53L1_Error VL53L1_dynamic_xtalk_correction_calc_required_samples(
charlesmn 0:3ac96e360672 683 VL53L1_DEV Dev
charlesmn 0:3ac96e360672 684 );
charlesmn 0:3ac96e360672 685
charlesmn 0:3ac96e360672 686
charlesmn 0:3ac96e360672 687
charlesmn 0:3ac96e360672 688 VL53L1_Error VL53L1_dynamic_xtalk_correction_calc_new_xtalk(
charlesmn 0:3ac96e360672 689 VL53L1_DEV Dev,
charlesmn 0:3ac96e360672 690 uint32_t xtalk_offset_out,
charlesmn 0:3ac96e360672 691 VL53L1_smudge_corrector_config_t *pconfig,
charlesmn 0:3ac96e360672 692 VL53L1_smudge_corrector_data_t *pout,
charlesmn 0:3ac96e360672 693 uint8_t add_smudge,
charlesmn 0:3ac96e360672 694 uint8_t soft_update
charlesmn 0:3ac96e360672 695 );
charlesmn 0:3ac96e360672 696
charlesmn 0:3ac96e360672 697
charlesmn 0:3ac96e360672 698
charlesmn 0:3ac96e360672 699 VL53L1_Error VL53L1_dynamic_xtalk_correction_corrector(
charlesmn 0:3ac96e360672 700 VL53L1_DEV Dev
charlesmn 0:3ac96e360672 701 );
charlesmn 0:3ac96e360672 702
charlesmn 0:3ac96e360672 703
charlesmn 0:3ac96e360672 704
charlesmn 0:3ac96e360672 705 VL53L1_Error VL53L1_dynamic_xtalk_correction_data_init(
charlesmn 0:3ac96e360672 706 VL53L1_DEV Dev
charlesmn 0:3ac96e360672 707 );
charlesmn 0:3ac96e360672 708
charlesmn 0:3ac96e360672 709
charlesmn 0:3ac96e360672 710
charlesmn 0:3ac96e360672 711 VL53L1_Error VL53L1_dynamic_xtalk_correction_output_init(
charlesmn 0:3ac96e360672 712 VL53L1_LLDriverResults_t *pres
charlesmn 0:3ac96e360672 713 );
charlesmn 0:3ac96e360672 714
charlesmn 0:3ac96e360672 715
charlesmn 0:3ac96e360672 716
charlesmn 0:3ac96e360672 717 VL53L1_Error VL53L1_xtalk_cal_data_init(
charlesmn 0:3ac96e360672 718 VL53L1_DEV Dev
charlesmn 0:3ac96e360672 719 );
charlesmn 0:3ac96e360672 720
charlesmn 0:3ac96e360672 721
charlesmn 0:3ac96e360672 722
charlesmn 0:3ac96e360672 723 VL53L1_Error VL53L1_config_low_power_auto_mode(
charlesmn 0:3ac96e360672 724 VL53L1_general_config_t *pgeneral,
charlesmn 0:3ac96e360672 725 VL53L1_dynamic_config_t *pdynamic,
charlesmn 0:3ac96e360672 726 VL53L1_low_power_auto_data_t *plpadata
charlesmn 0:3ac96e360672 727 );
charlesmn 0:3ac96e360672 728
charlesmn 0:3ac96e360672 729
charlesmn 0:3ac96e360672 730
charlesmn 0:3ac96e360672 731 VL53L1_Error VL53L1_low_power_auto_setup_manual_calibration(
charlesmn 0:3ac96e360672 732 VL53L1_DEV Dev);
charlesmn 0:3ac96e360672 733
charlesmn 0:3ac96e360672 734
charlesmn 0:3ac96e360672 735
charlesmn 0:3ac96e360672 736 VL53L1_Error VL53L1_low_power_auto_update_DSS(
charlesmn 0:3ac96e360672 737 VL53L1_DEV Dev);
charlesmn 0:3ac96e360672 738
charlesmn 0:3ac96e360672 739
charlesmn 0:3ac96e360672 740 VL53L1_Error VL53L1_compute_histo_merge_nb(
charlesmn 0:3ac96e360672 741 VL53L1_DEV Dev, uint8_t *histo_merge_nb);
charlesmn 0:3ac96e360672 742
charlesmn 0:3ac96e360672 743 #ifdef __cplusplus
charlesmn 0:3ac96e360672 744 }
charlesmn 0:3ac96e360672 745 #endif
charlesmn 0:3ac96e360672 746
charlesmn 0:3ac96e360672 747 #endif
charlesmn 0:3ac96e360672 748