amiro-lld / drivers / VL53L1X / v1 / api / core / vl53l1_api_core.h @ 3ed0cc4d
History | View | Annotate | Download (38.815 KB)
1 |
/*
|
---|---|
2 |
* Copyright (c) 2017, STMicroelectronics - All Rights Reserved
|
3 |
*
|
4 |
* This file is part of VL53L1 Core and is dual licensed,
|
5 |
* either 'STMicroelectronics
|
6 |
* Proprietary license'
|
7 |
* or 'BSD 3-clause "New" or "Revised" License' , at your option.
|
8 |
*
|
9 |
********************************************************************************
|
10 |
*
|
11 |
* 'STMicroelectronics Proprietary license'
|
12 |
*
|
13 |
********************************************************************************
|
14 |
*
|
15 |
* License terms: STMicroelectronics Proprietary in accordance with licensing
|
16 |
* terms at www.st.com/sla0081
|
17 |
*
|
18 |
* STMicroelectronics confidential
|
19 |
* Reproduction and Communication of this document is strictly prohibited unless
|
20 |
* specifically authorized in writing by STMicroelectronics.
|
21 |
*
|
22 |
*
|
23 |
********************************************************************************
|
24 |
*
|
25 |
* Alternatively, VL53L1 Core may be distributed under the terms of
|
26 |
* 'BSD 3-clause "New" or "Revised" License', in which case the following
|
27 |
* provisions apply instead of the ones mentioned above :
|
28 |
*
|
29 |
********************************************************************************
|
30 |
*
|
31 |
* License terms: BSD 3-clause "New" or "Revised" License.
|
32 |
*
|
33 |
* Redistribution and use in source and binary forms, with or without
|
34 |
* modification, are permitted provided that the following conditions are met:
|
35 |
*
|
36 |
* 1. Redistributions of source code must retain the above copyright notice, this
|
37 |
* list of conditions and the following disclaimer.
|
38 |
*
|
39 |
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
40 |
* this list of conditions and the following disclaimer in the documentation
|
41 |
* and/or other materials provided with the distribution.
|
42 |
*
|
43 |
* 3. Neither the name of the copyright holder nor the names of its contributors
|
44 |
* may be used to endorse or promote products derived from this software
|
45 |
* without specific prior written permission.
|
46 |
*
|
47 |
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
48 |
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
49 |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
50 |
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
51 |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
52 |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
53 |
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
54 |
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
55 |
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
56 |
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
57 |
*
|
58 |
*
|
59 |
********************************************************************************
|
60 |
*
|
61 |
*/
|
62 |
|
63 |
/**
|
64 |
* @file vl53l1_api_core.h
|
65 |
*
|
66 |
* @brief EwokPlus25 low level API function definitions
|
67 |
*/
|
68 |
|
69 |
#ifndef _VL53L1_API_CORE_H_
|
70 |
#define _VL53L1_API_CORE_H_
|
71 |
|
72 |
#include "vl53l1_platform.h" |
73 |
|
74 |
#ifdef __cplusplus
|
75 |
extern "C" { |
76 |
#endif
|
77 |
|
78 |
|
79 |
/**
|
80 |
* @brief Get LL Driver version information
|
81 |
*
|
82 |
* @param[in] Dev : Device handle
|
83 |
* @param[out] pversion : pointer to VL53L1_ll_version_t
|
84 |
*
|
85 |
* @return VL53L1_ERROR_NONE Success
|
86 |
*/
|
87 |
|
88 |
#ifdef VL53L1_DEBUG
|
89 |
VL53L1_Error VL53L1_get_version( |
90 |
VL53L1_DEV Dev, |
91 |
VL53L1_ll_version_t *pversion); |
92 |
|
93 |
/**
|
94 |
* @brief Gets Device Firmware version
|
95 |
*
|
96 |
* @param[in] Dev : Device handle
|
97 |
* @param[out] pfw_version : pointer to uint16_t FW version
|
98 |
*
|
99 |
* @return VL53L1_ERROR_NONE Success
|
100 |
*/
|
101 |
|
102 |
VL53L1_Error VL53L1_get_device_firmware_version( |
103 |
VL53L1_DEV Dev, |
104 |
uint16_t *pfw_version); |
105 |
#endif
|
106 |
|
107 |
|
108 |
/**
|
109 |
* @brief Initialises pdev structure and optionally read the
|
110 |
* part to part information form he device G02 registers
|
111 |
*
|
112 |
* Important: VL53L1_platform_initialise() *must* called before calling
|
113 |
* this function
|
114 |
*
|
115 |
* @param[in] Dev : Device handle
|
116 |
* @param[out] read_p2p_data : if > 0 then reads and caches P2P data
|
117 |
*
|
118 |
* @return VL53L1_ERROR_NONE Success
|
119 |
*/
|
120 |
|
121 |
VL53L1_Error VL53L1_data_init( |
122 |
VL53L1_DEV Dev, |
123 |
uint8_t read_p2p_data); |
124 |
|
125 |
|
126 |
/**
|
127 |
* @brief For C-API one time initialization only reads device
|
128 |
* G02 registers containing data copied from NVM
|
129 |
*
|
130 |
* Contains the key NVM data e.g identification info
|
131 |
* fast oscillator freq, max trim and laser safety info
|
132 |
*
|
133 |
* Function all only be called after the device has finished booting
|
134 |
*
|
135 |
* @param[in] Dev : Device handle
|
136 |
*
|
137 |
* @return VL53L1_ERROR_NONE Success
|
138 |
*/
|
139 |
|
140 |
VL53L1_Error VL53L1_read_p2p_data( |
141 |
VL53L1_DEV Dev); |
142 |
|
143 |
|
144 |
/**
|
145 |
* @brief Performs device software reset and then waits for the firmware
|
146 |
* to finish booting
|
147 |
*
|
148 |
* @param[in] Dev : Device handle
|
149 |
*
|
150 |
* @return VL53L1_ERROR_NONE Success
|
151 |
* @return "Other error code" See ::VL53L1_Error
|
152 |
*/
|
153 |
|
154 |
VL53L1_Error VL53L1_software_reset( |
155 |
VL53L1_DEV Dev); |
156 |
|
157 |
|
158 |
/**
|
159 |
* @brief Sets the customer part to part data
|
160 |
*
|
161 |
* Important: does **not** apply the settings to the device.
|
162 |
* Updates the following structures in the device structure
|
163 |
*
|
164 |
* Just an internal memcpy to
|
165 |
*
|
166 |
*
|
167 |
* @param[in] Dev : Device handle
|
168 |
* @param[in] pcal_data : pointer to VL53L1_calibration_data_t
|
169 |
*
|
170 |
* @return VL53L1_ERROR_NONE Success
|
171 |
* @return "Other error code" See ::VL53L1_Error
|
172 |
*/
|
173 |
|
174 |
VL53L1_Error VL53L1_set_part_to_part_data( |
175 |
VL53L1_DEV Dev, |
176 |
VL53L1_calibration_data_t *pcal_data); |
177 |
|
178 |
|
179 |
/**
|
180 |
* @brief Gets the customer part to part data
|
181 |
*
|
182 |
* Just an internal memory copy
|
183 |
*
|
184 |
* @param[in] Dev : Device handle
|
185 |
* @param[out] pcal_data : pointer to VL53L1_calibration_data_t
|
186 |
*
|
187 |
*
|
188 |
* @return VL53L1_ERROR_NONE Success
|
189 |
* @return "Other error code" See ::VL53L1_Error
|
190 |
*/
|
191 |
|
192 |
VL53L1_Error VL53L1_get_part_to_part_data( |
193 |
VL53L1_DEV Dev, |
194 |
VL53L1_calibration_data_t *pcal_data); |
195 |
|
196 |
|
197 |
/**
|
198 |
* @brief Gets the tuning parm part to part data
|
199 |
*
|
200 |
* Just an internal copy
|
201 |
*
|
202 |
* @param[in] Dev : Device handle
|
203 |
* @param[out] ptun_data : pointer to VL53L1_tuning_parameters_t
|
204 |
*
|
205 |
*
|
206 |
* @return VL53L1_ERROR_NONE Success
|
207 |
* @return "Other error code" See ::VL53L1_Error
|
208 |
*/
|
209 |
|
210 |
#ifdef VL53L1_DEBUG
|
211 |
VL53L1_Error VL53L1_get_tuning_debug_data( |
212 |
VL53L1_DEV Dev, |
213 |
VL53L1_tuning_parameters_t *ptun_data); |
214 |
#endif
|
215 |
|
216 |
|
217 |
/**
|
218 |
* @brief Sets the inter measurement period in the VL53L1_timing_config_t structure
|
219 |
*
|
220 |
* Uses the pdev->dbg_results.result__osc_calibrate_val value convert from [ms]
|
221 |
*
|
222 |
* @param[in] Dev : Device handle
|
223 |
* @param[in] inter_measurement_period_ms : requested inter measurement period in [ms]
|
224 |
*
|
225 |
* @return VL53L1_ERROR_NONE Success
|
226 |
* @return "Other error code" See ::VL53L1_Error
|
227 |
*/
|
228 |
|
229 |
VL53L1_Error VL53L1_set_inter_measurement_period_ms( |
230 |
VL53L1_DEV Dev, |
231 |
uint32_t inter_measurement_period_ms); |
232 |
|
233 |
|
234 |
/**
|
235 |
* @brief Gets inter measurement period from the VL53L1_timing_config_t structure
|
236 |
*
|
237 |
* Uses the pdev->dbg_results.result__osc_calibrate_val value convert into [ms]
|
238 |
*
|
239 |
* @param[in] Dev : Device handle
|
240 |
* @param[out] pinter_measurement_period_ms : current inter measurement period in [ms]
|
241 |
*
|
242 |
* @return VL53L1_ERROR_NONE Success
|
243 |
* @return "Other error code" See ::VL53L1_Error
|
244 |
*/
|
245 |
|
246 |
VL53L1_Error VL53L1_get_inter_measurement_period_ms( |
247 |
VL53L1_DEV Dev, |
248 |
uint32_t *pinter_measurement_period_ms); |
249 |
|
250 |
|
251 |
/**
|
252 |
* @brief Sets the phasecal, mode mitigation and ranging timeouts
|
253 |
* in the VL53L1_timing_config_t structure
|
254 |
*
|
255 |
* Uses the pdev->stat_nvm.osc_measured__fast_osc__frequency value convert from [us]
|
256 |
*
|
257 |
* @param[in] Dev : Device handle
|
258 |
* @param[in] phasecal_config_timeout_us : requested Phase Cal Timeout e.g. 1000us
|
259 |
* @param[in] mm_config_timeout_us : requested MM Timeout e.g. 2000us
|
260 |
* @param[in] range_config_timeout_us : requested Ranging Timeout e.g 13000us
|
261 |
*
|
262 |
* @return VL53L1_ERROR_NONE Success
|
263 |
* @return "Other error code" See ::VL53L1_Error
|
264 |
*/
|
265 |
|
266 |
VL53L1_Error VL53L1_set_timeouts_us( |
267 |
VL53L1_DEV Dev, |
268 |
uint32_t phasecal_config_timeout_us, |
269 |
uint32_t mm_config_timeout_us, |
270 |
uint32_t range_config_timeout_us); |
271 |
|
272 |
|
273 |
/**
|
274 |
* @brief Gets the phasecal, mode mitigation and ranging timeouts
|
275 |
* for the VL53L1_timing_config_t structure
|
276 |
*
|
277 |
* Uses the pdev->stat_nvm.osc_measured__fast_osc__frequency convert into [us]
|
278 |
*
|
279 |
* @param[in] Dev : Device handle
|
280 |
* @param[out] pphasecal_config_timeout_us : current Phase Cal Timeout in [us]
|
281 |
* @param[out] pmm_config_timeout_us : current MM Timeout in [us]
|
282 |
* @param[out] prange_config_timeout_us : current Ranging Timeout in [us]
|
283 |
*
|
284 |
* @return VL53L1_ERROR_NONE Success
|
285 |
* @return "Other error code" See ::VL53L1_Error
|
286 |
*/
|
287 |
|
288 |
VL53L1_Error VL53L1_get_timeouts_us( |
289 |
VL53L1_DEV Dev, |
290 |
uint32_t *pphasecal_config_timeout_us, |
291 |
uint32_t *pmm_config_timeout_us, |
292 |
uint32_t *prange_config_timeout_us); |
293 |
|
294 |
|
295 |
/**
|
296 |
* @brief Sets the 12-bit calibration repeat period value
|
297 |
*
|
298 |
* Sets the repeat period for VHV and phasecal in ranges.
|
299 |
* Setting to zero to disables the repeat, but the VHV
|
300 |
* and PhaseCal is still run on the very first range in
|
301 |
* this case.
|
302 |
*
|
303 |
* Only even values should be set
|
304 |
*
|
305 |
* The max value is 4094 i.e. every
|
306 |
*
|
307 |
* @param[in] Dev : Device handle
|
308 |
* @param[in] cal_config__repeat_period : current calibration config repeat period
|
309 |
*
|
310 |
* @return VL53L1_ERROR_NONE Success
|
311 |
* @return "Other error code" See ::VL53L1_Error
|
312 |
*/
|
313 |
|
314 |
VL53L1_Error VL53L1_set_calibration_repeat_period( |
315 |
VL53L1_DEV Dev, |
316 |
uint16_t cal_config__repeat_period); |
317 |
|
318 |
|
319 |
/**
|
320 |
* @brief Gets the current 12-bit calibration repeat period value
|
321 |
*
|
322 |
* @param[in] Dev : Device handle
|
323 |
* @param[out] pcal_config__repeat_period : current calibration config repeat period
|
324 |
*
|
325 |
* @return VL53L1_ERROR_NONE Success
|
326 |
* @return "Other error code" See ::VL53L1_Error
|
327 |
*/
|
328 |
|
329 |
VL53L1_Error VL53L1_get_calibration_repeat_period( |
330 |
VL53L1_DEV Dev, |
331 |
uint16_t *pcal_config__repeat_period); |
332 |
|
333 |
|
334 |
/**
|
335 |
* @brief Set system sequence config bit value
|
336 |
*
|
337 |
* @param[in] Dev : Device handle
|
338 |
* @param[in] bit_id : VL53L1_DeviceSequenceConfig bit id
|
339 |
* @param[in] value : Input Bit value = 0 or 1
|
340 |
*
|
341 |
* @return VL53L1_ERROR_NONE Success
|
342 |
* @return "Other error code" See ::VL53L1_Error
|
343 |
*/
|
344 |
|
345 |
VL53L1_Error VL53L1_set_sequence_config_bit( |
346 |
VL53L1_DEV Dev, |
347 |
VL53L1_DeviceSequenceConfig bit_id, |
348 |
uint8_t value); |
349 |
|
350 |
|
351 |
/**
|
352 |
* @brief Get system sequence config bit value
|
353 |
*
|
354 |
* @param[in] Dev : Device handle
|
355 |
* @param[in] bit_id : VL53L1_DeviceSequenceConfig bit id
|
356 |
* @param[out] pvalue : Output Bit value = 0 or 1
|
357 |
*
|
358 |
* @return VL53L1_ERROR_NONE Success
|
359 |
* @return "Other error code" See ::VL53L1_Error
|
360 |
*/
|
361 |
|
362 |
VL53L1_Error VL53L1_get_sequence_config_bit( |
363 |
VL53L1_DEV Dev, |
364 |
VL53L1_DeviceSequenceConfig bit_id, |
365 |
uint8_t *pvalue); |
366 |
|
367 |
|
368 |
/**
|
369 |
* @brief Set the interrupt polarity bit in
|
370 |
*
|
371 |
* @param[in] Dev : Device handle
|
372 |
* @param[in] interrupt_polarity : Interrupt Polarity
|
373 |
*
|
374 |
* @return VL53L1_ERROR_NONE Success
|
375 |
* @return "Other error code" See ::VL53L1_Error
|
376 |
*/
|
377 |
|
378 |
VL53L1_Error VL53L1_set_interrupt_polarity( |
379 |
VL53L1_DEV Dev, |
380 |
VL53L1_DeviceInterruptPolarity interrupt_polarity); |
381 |
|
382 |
|
383 |
/**
|
384 |
* @brief Get the interrupt polarity bit state
|
385 |
*
|
386 |
* @param[in] Dev : Device handle
|
387 |
* @param[out] pinterrupt_polarity : Interrupt Polarity Bit value
|
388 |
*
|
389 |
* @return VL53L1_ERROR_NONE Success
|
390 |
* @return "Other error code" See ::VL53L1_Error
|
391 |
*/
|
392 |
|
393 |
VL53L1_Error VL53L1_get_interrupt_polarity( |
394 |
VL53L1_DEV Dev, |
395 |
VL53L1_DeviceInterruptPolarity *pinterrupt_polarity); |
396 |
|
397 |
/**
|
398 |
* @brief Set the Ref spad char cfg struct internal to pdev
|
399 |
*
|
400 |
* @param[in] Dev : Device handle
|
401 |
* @param[in] pdata : Input pointer to VL53L1_refspadchar_config_t
|
402 |
*
|
403 |
* @return VL53L1_ERROR_NONE Success
|
404 |
* @return "Other error code" See ::VL53L1_Error
|
405 |
*/
|
406 |
|
407 |
#ifndef VL53L1_NOCALIB
|
408 |
VL53L1_Error VL53L1_get_refspadchar_config_struct( |
409 |
VL53L1_DEV Dev, |
410 |
VL53L1_refspadchar_config_t *pdata); |
411 |
#endif
|
412 |
|
413 |
/**
|
414 |
* @brief Extract the Ref spad char cfg struct from pdev
|
415 |
*
|
416 |
* @param[in] Dev : Device handle
|
417 |
* @param[out] pdata : Output pointer to VL53L1_refspadchar_config_t
|
418 |
*
|
419 |
* @return VL53L1_ERROR_NONE Success
|
420 |
* @return "Other error code" See ::VL53L1_Error
|
421 |
*/
|
422 |
|
423 |
#ifndef VL53L1_NOCALIB
|
424 |
VL53L1_Error VL53L1_set_refspadchar_config_struct( |
425 |
VL53L1_DEV Dev, |
426 |
VL53L1_refspadchar_config_t *pdata); |
427 |
#endif
|
428 |
|
429 |
/**
|
430 |
* @brief Set the Range Ignore Threshold Rate value
|
431 |
*
|
432 |
* @param[in] Dev : Device handle
|
433 |
* @param[in] range_ignore_thresh_mult : Input RIT Mult value, in \
|
434 |
* 3.5 fractional value
|
435 |
* @param[in] range_ignore_threshold_mcps : Range Ignore Threshold value
|
436 |
*
|
437 |
* @return VL53L1_ERROR_NONE Success
|
438 |
* @return "Other error code" See ::VL53L1_Error
|
439 |
*/
|
440 |
|
441 |
VL53L1_Error VL53L1_set_range_ignore_threshold( |
442 |
VL53L1_DEV Dev, |
443 |
uint8_t range_ignore_thresh_mult, |
444 |
uint16_t range_ignore_threshold_mcps); |
445 |
|
446 |
/**
|
447 |
* @brief Get the Range Ignore Threshold Rate value
|
448 |
*
|
449 |
*
|
450 |
*
|
451 |
* @param[in] Dev : Device handle
|
452 |
* @param[out] prange_ignore_thresh_mult : \
|
453 |
* Range ignore threshold internal multiplier value in \
|
454 |
* 3.5 fractional format.
|
455 |
* @param[out] prange_ignore_threshold_mcps_internal : \
|
456 |
* Range Ignore Threshold Rate value generated from \
|
457 |
* current xtalk parms
|
458 |
* @param[out] prange_ignore_threshold_mcps_current : \
|
459 |
* Range Ignore Threshold Rate value generated from \
|
460 |
* device static config struct
|
461 |
*
|
462 |
* @return VL53L1_ERROR_NONE Success
|
463 |
* @return "Other error code" See ::VL53L1_Error
|
464 |
*/
|
465 |
|
466 |
VL53L1_Error VL53L1_get_range_ignore_threshold( |
467 |
VL53L1_DEV Dev, |
468 |
uint8_t *prange_ignore_thresh_mult, |
469 |
uint16_t *prange_ignore_threshold_mcps_internal, |
470 |
uint16_t *prange_ignore_threshold_mcps_current); |
471 |
|
472 |
|
473 |
/**
|
474 |
* @brief Sets the current user Zone (ROI) configuration structure data
|
475 |
*
|
476 |
* @param[in] Dev : Device handle
|
477 |
* @param[in] puser_zone : pointer to user Zone (ROI) data structure
|
478 |
*
|
479 |
* @return VL53L1_ERROR_NONE Success
|
480 |
* @return "Other error code" See ::VL53L1_Error
|
481 |
*/
|
482 |
|
483 |
VL53L1_Error VL53L1_set_user_zone( |
484 |
VL53L1_DEV Dev, |
485 |
VL53L1_user_zone_t *puser_zone); |
486 |
|
487 |
|
488 |
/**
|
489 |
* @brief Gets the current user zone (ROI) configuration structure data
|
490 |
*
|
491 |
* @param[in] Dev : Device handle
|
492 |
* @param[out] puser_zone : pointer to user zone (ROI) data structure
|
493 |
*
|
494 |
* @return VL53L1_ERROR_NONE Success
|
495 |
* @return "Other error code" See ::VL53L1_Error
|
496 |
*/
|
497 |
|
498 |
VL53L1_Error VL53L1_get_user_zone( |
499 |
VL53L1_DEV Dev, |
500 |
VL53L1_user_zone_t *puser_zone); |
501 |
|
502 |
|
503 |
/**
|
504 |
* @brief Gets the current mode mitigation zone (ROI) configuration structure data
|
505 |
*
|
506 |
* @param[in] Dev : Device handle
|
507 |
* @param[out] pmm_roi : pointer to user zone (ROI) data structure
|
508 |
*
|
509 |
* @return VL53L1_ERROR_NONE Success
|
510 |
* @return "Other error code" See ::VL53L1_Error
|
511 |
*/
|
512 |
|
513 |
VL53L1_Error VL53L1_get_mode_mitigation_roi( |
514 |
VL53L1_DEV Dev, |
515 |
VL53L1_user_zone_t *pmm_roi); |
516 |
|
517 |
|
518 |
/**
|
519 |
* @brief Initialises the configuration data structures for
|
520 |
* the selected preset mode
|
521 |
*
|
522 |
* Important: does **not** apply the settings to the device.
|
523 |
* Updates the following structures in the device structure
|
524 |
*
|
525 |
* - static config : pdev->stat_cfg
|
526 |
* - dynamic config : pdev->dyn_cfg
|
527 |
* - system_control :pdev->sys_ctrl
|
528 |
*
|
529 |
* Uses osc_measured__fast_osc__frequency in pdev->stat_nvm to
|
530 |
* convert the input timeouts in [us] to internal macro period
|
531 |
* timeout values.
|
532 |
*
|
533 |
* Please call VL53L1_init_and_start_range() to update device
|
534 |
* and start a range
|
535 |
*
|
536 |
* @param[in] Dev : Device handle
|
537 |
* @param[in] device_preset_mode : selected device preset mode
|
538 |
* @param[in] dss_config__target_total_rate_mcps : DSS target rate in 9.7 format e.g 0x0A00 -> 20.0 Mcps
|
539 |
* @param[in] phasecal_config_timeout_us : requested Phase Cal Timeout e.g. 1000us
|
540 |
* @param[in] mm_config_timeout_us : requested MM Timeout e.g. 2000us
|
541 |
* @param[in] range_config_timeout_us : requested Ranging Timeout e.g 10000us
|
542 |
* @param[in] inter_measurement_period_ms : requested timed mode repeat rate e.g 100ms
|
543 |
*
|
544 |
* @return VL53L1_ERROR_NONE Success
|
545 |
* @return "Other error code" See ::VL53L1_Error
|
546 |
*/
|
547 |
|
548 |
VL53L1_Error VL53L1_set_preset_mode( |
549 |
VL53L1_DEV Dev, |
550 |
VL53L1_DevicePresetModes device_preset_mode, |
551 |
uint16_t dss_config__target_total_rate_mcps, |
552 |
uint32_t phasecal_config_timeout_us, |
553 |
uint32_t mm_config_timeout_us, |
554 |
uint32_t range_config_timeout_us, |
555 |
uint32_t inter_measurement_period_ms); |
556 |
|
557 |
|
558 |
/**
|
559 |
* @brief Gets the requested preset mode configuration tuning parameters
|
560 |
*
|
561 |
* Function Added as part of Patch_TuningParmPresetModeAddition_11839
|
562 |
*
|
563 |
* @param[in] Dev : Device Handle
|
564 |
* @param[in] device_preset_mode : selected device preset mode
|
565 |
* @param[out] pdss_config__target_total_rate_mcps : dss rate output value
|
566 |
* @param[out] pphasecal_config_timeout_us : phasecal timeout output value
|
567 |
* @param[out] pmm_config_timeout_us : mm timeout output value
|
568 |
* @param[out] prange_config_timeout_us : range timeout output value
|
569 |
*
|
570 |
* @return VL53L1_ERROR_NONE Success
|
571 |
* @return "Other error code" See ::VL53L1_Error
|
572 |
*/
|
573 |
|
574 |
VL53L1_Error VL53L1_get_preset_mode_timing_cfg( |
575 |
VL53L1_DEV Dev, |
576 |
VL53L1_DevicePresetModes device_preset_mode, |
577 |
uint16_t *pdss_config__target_total_rate_mcps, |
578 |
uint32_t *pphasecal_config_timeout_us, |
579 |
uint32_t *pmm_config_timeout_us, |
580 |
uint32_t *prange_config_timeout_us); |
581 |
|
582 |
/**
|
583 |
* @brief Simple function to enable xtalk compensation
|
584 |
*
|
585 |
* Applies xtalk compensation to hist post processing,
|
586 |
* and applies settings to device,
|
587 |
*
|
588 |
* @param[in] Dev : Device Handle
|
589 |
*
|
590 |
* @return VL53L1_ERROR_NONE Success
|
591 |
* @return "Other error code" See ::VL53L1_Error
|
592 |
*/
|
593 |
|
594 |
VL53L1_Error VL53L1_enable_xtalk_compensation( |
595 |
VL53L1_DEV Dev); |
596 |
|
597 |
/**
|
598 |
* @brief Simple function to disable xtalk compensation
|
599 |
*
|
600 |
* Disables xtalk compensation from hist post processing,
|
601 |
* and clears settings to device
|
602 |
*
|
603 |
* @param[in] Dev : Device Handle
|
604 |
*
|
605 |
* @return VL53L1_ERROR_NONE Success
|
606 |
* @return "Other error code" See ::VL53L1_Error
|
607 |
*/
|
608 |
|
609 |
VL53L1_Error VL53L1_disable_xtalk_compensation( |
610 |
VL53L1_DEV Dev); |
611 |
|
612 |
|
613 |
/**
|
614 |
* @brief Simple function to retrieve xtalk compensation
|
615 |
* status
|
616 |
*
|
617 |
* @param[in] Dev : Device Handle
|
618 |
* @param[out] pcrosstalk_compensation_enable : pointer to \
|
619 |
* uint8 type, returns crosstalk compensation status \
|
620 |
* where 0 means disabled and 1 means enabled.
|
621 |
*
|
622 |
*/
|
623 |
|
624 |
void VL53L1_get_xtalk_compensation_enable(
|
625 |
VL53L1_DEV Dev, |
626 |
uint8_t *pcrosstalk_compensation_enable); |
627 |
|
628 |
/**
|
629 |
* @brief Builds and sends the I2C buffer to initialize the device
|
630 |
* and start a range measurement
|
631 |
*
|
632 |
* The device_config_level input controls the level of initialization
|
633 |
* applied to the device
|
634 |
*
|
635 |
* - System control only
|
636 |
* - Dynamic Onwards
|
637 |
* - dynamic_config and system_control
|
638 |
* - Static Onwards
|
639 |
* - static_config, dynamic_config & system_control
|
640 |
* - software standby mode only
|
641 |
* - Customer Onwards
|
642 |
* - customer_nvm_managed, static_config, dynamic_config & system_control
|
643 |
* - software standby mode only
|
644 |
* - Full
|
645 |
* - static_nvm_managed, customer_nvm_managed, static_config, dynamic_config & system_control
|
646 |
* - software standby mode only
|
647 |
*
|
648 |
* The system_control register group is always written as the last
|
649 |
* register of this group SYSTEM__MODE_START decides what happens next ...
|
650 |
*
|
651 |
* @param[in] Dev : Device handle
|
652 |
* @param[in] measurement_mode : Options: \n
|
653 |
* VL53L1_DEVICEMEASUREMENTMODE_STOP \n
|
654 |
* VL53L1_DEVICEMEASUREMENTMODE_SINGLESHOT \n
|
655 |
* VL53L1_DEVICEMEASUREMENTMODE_BACKTOBACK \n
|
656 |
* VL53L1_DEVICEMEASUREMENTMODE_TIMED
|
657 |
* @param[in] device_config_level : Options: \n
|
658 |
* VL53L1_DEVICECONFIGLEVEL_SYSTEM_CONTROL \n
|
659 |
* VL53L1_DEVICECONFIGLEVEL_DYNAMIC_ONWARDS \n
|
660 |
* VL53L1_DEVICECONFIGLEVEL_TIMING_ONWARDS \n
|
661 |
* VL53L1_DEVICECONFIGLEVEL_STATIC_ONWARDS \n
|
662 |
* VL53L1_DEVICECONFIGLEVEL_CUSTOMER_ONWARDS \n
|
663 |
* VL53L1_DEVICECONFIGLEVEL_FULL
|
664 |
*
|
665 |
* The system_control register group is always written as the last
|
666 |
* register of this group SYSTEM__MODE_START decides what happens next ..
|
667 |
* @return VL53L1_ERROR_NONE Success
|
668 |
* @return "Other error code" See ::VL53L1_Error
|
669 |
*/
|
670 |
|
671 |
VL53L1_Error VL53L1_init_and_start_range( |
672 |
VL53L1_DEV Dev, |
673 |
uint8_t measurement_mode, |
674 |
VL53L1_DeviceConfigLevel device_config_level); |
675 |
|
676 |
|
677 |
/**
|
678 |
* @brief Sends an abort command to stop the in progress range.
|
679 |
* Also clears all of the measurement mode bits.
|
680 |
*
|
681 |
* @param[in] Dev : Device handle
|
682 |
*
|
683 |
* @return VL53L1_ERROR_NONE Success
|
684 |
* @return "Other error code" See ::VL53L1_Error
|
685 |
*/
|
686 |
|
687 |
VL53L1_Error VL53L1_stop_range( |
688 |
VL53L1_DEV Dev); |
689 |
|
690 |
|
691 |
/**
|
692 |
* @brief Get range measurement result data
|
693 |
*
|
694 |
* Reads the required number of registers as single multi byte read
|
695 |
* transaction and decodes the data into the data structures
|
696 |
*
|
697 |
* range_result_level controls which result data is read back from the
|
698 |
* device
|
699 |
*
|
700 |
* - Full
|
701 |
* - both system and core results are read back
|
702 |
* - System Results
|
703 |
* - only system results are read back
|
704 |
* - only the system_results structure is updated in this case
|
705 |
*
|
706 |
* @param[in] Dev : Device Handle
|
707 |
* @param[in] device_result_level : Options: \n
|
708 |
* VL53L1_DEVICERESULTSLEVEL_FULL \n
|
709 |
* VL53L1_DEVICERESULTSLEVEL_UPTO_CORE \n
|
710 |
* VL53L1_DEVICERESULTSLEVEL_SYSTEM_RESULTS
|
711 |
*
|
712 |
* @return VL53L1_ERROR_NONE Success
|
713 |
* @return "Other error code" See ::VL53L1_Error
|
714 |
*/
|
715 |
|
716 |
VL53L1_Error VL53L1_get_measurement_results( |
717 |
VL53L1_DEV Dev, |
718 |
VL53L1_DeviceResultsLevel device_result_level); |
719 |
|
720 |
|
721 |
/**
|
722 |
* @brief Get device system results, updates GPH registers and
|
723 |
* clears interrupt and configures SYSTEM__MODE_START
|
724 |
* based on the input measurement mode
|
725 |
*
|
726 |
* Internally uses the following functions:
|
727 |
*
|
728 |
* - VL53L1_get_measurement_results()
|
729 |
* - VLS3L1_init_and_start_range()
|
730 |
*
|
731 |
* The system_control register group is always written as the last
|
732 |
* register of this group SYSTEM__MODE_START decides what happens next ...
|
733 |
*
|
734 |
* @param[in] Dev : Device Handle
|
735 |
* @param[in] device_result_level : Options: \n
|
736 |
* VL53L1_DEVICERESULTSLEVEL_FULL \n
|
737 |
* VL53L1_DEVICERESULTSLEVEL_UPTO_CORE \n
|
738 |
* VL53L1_DEVICERESULTSLEVEL_SYSTEM_RESULTS
|
739 |
* @param[out] prange_results : pointer to VL53L1_range_results_t
|
740 |
|
741 |
*
|
742 |
* @return VL53L1_ERROR_NONE Success
|
743 |
* @return "Other error code" See ::VL53L1_Error
|
744 |
*/
|
745 |
|
746 |
VL53L1_Error VL53L1_get_device_results( |
747 |
VL53L1_DEV Dev, |
748 |
VL53L1_DeviceResultsLevel device_result_level, |
749 |
VL53L1_range_results_t *prange_results); |
750 |
|
751 |
|
752 |
/**
|
753 |
* @brief Sends the ranging handshake to clear the interrupt
|
754 |
* allow the device to move onto the next range
|
755 |
*
|
756 |
* updates GPH registers and clears interrupt and configures
|
757 |
* SYSTEM__MODE_START register based on the input measurement mode
|
758 |
*
|
759 |
* Internally uses the following functions:
|
760 |
*
|
761 |
* - VLS3L1_init_and_start_range()
|
762 |
*
|
763 |
* The system_control register group is always written as the last
|
764 |
* register of this group SYSTEM__MODE_START decides what happens next ...
|
765 |
*
|
766 |
* @param[in] Dev : Device Handle
|
767 |
* @param[in] measurement_mode : Options: \n
|
768 |
* VL53L1_DEVICEMEASUREMENTMODE_STOP \n
|
769 |
* VL53L1_DEVICEMEASUREMENTMODE_SINGLESHOT \n
|
770 |
* VL53L1_DEVICEMEASUREMENTMODE_BACKTOBACK \n
|
771 |
* VL53L1_DEVICEMEASUREMENTMODE_TIMED
|
772 |
*
|
773 |
* @return VL53L1_ERROR_NONE Success
|
774 |
* @return "Other error code" See ::VL53L1_Error
|
775 |
*/
|
776 |
|
777 |
VL53L1_Error VL53L1_clear_interrupt_and_enable_next_range( |
778 |
VL53L1_DEV Dev, |
779 |
uint8_t measurement_mode); |
780 |
|
781 |
|
782 |
/**
|
783 |
* @brief Copies system and core results to range results data structure
|
784 |
*
|
785 |
* @param[in] gain_factor : gain correction factor 1.11 format
|
786 |
* @param[in] psys : pointer to VL53L1_system_results_t
|
787 |
* @param[in] pcore : pointer to VL53L1_core_results_t
|
788 |
* @param[out] presults : pointer to VL53L1_range_results_t
|
789 |
*/
|
790 |
|
791 |
void VL53L1_copy_sys_and_core_results_to_range_results(
|
792 |
int32_t gain_factor, |
793 |
VL53L1_system_results_t *psys, |
794 |
VL53L1_core_results_t *pcore, |
795 |
VL53L1_range_results_t *presults); |
796 |
|
797 |
/**
|
798 |
* @brief Configure the GPIO interrupt config, from the given input
|
799 |
*
|
800 |
* @param[in] Dev : Device Handle
|
801 |
* @param[in] intr_mode_distance : distance interrupt mode
|
802 |
* @param[in] intr_mode_rate : rate interrupt mode
|
803 |
* @param[in] intr_new_measure_ready : trigger when new interrupt ready
|
804 |
* @param[in] intr_no_target : trigger when no target found
|
805 |
* @param[in] intr_combined_mode : switch on combined mode
|
806 |
* @param[in] thresh_distance_high : High distance threshold in mm
|
807 |
* @param[in] thresh_distance_low : Low distance threshold in mm
|
808 |
* @param[in] thresh_rate_high : High rate threshold in 9.7 Mcps
|
809 |
* @param[in] thresh_rate_low : Low rate threshold in 9.7 Mcps
|
810 |
*/
|
811 |
|
812 |
VL53L1_Error VL53L1_set_GPIO_interrupt_config( |
813 |
VL53L1_DEV Dev, |
814 |
VL53L1_GPIO_Interrupt_Mode intr_mode_distance, |
815 |
VL53L1_GPIO_Interrupt_Mode intr_mode_rate, |
816 |
uint8_t intr_new_measure_ready, |
817 |
uint8_t intr_no_target, |
818 |
uint8_t intr_combined_mode, |
819 |
uint16_t thresh_distance_high, |
820 |
uint16_t thresh_distance_low, |
821 |
uint16_t thresh_rate_high, |
822 |
uint16_t thresh_rate_low |
823 |
); |
824 |
|
825 |
/**
|
826 |
* @brief Configure the GPIO interrupt config, from the given structure
|
827 |
*
|
828 |
* @param[in] Dev : Device Handle
|
829 |
* @param[in] intconf : input structure (note, not a pointer)
|
830 |
*/
|
831 |
|
832 |
VL53L1_Error VL53L1_set_GPIO_interrupt_config_struct( |
833 |
VL53L1_DEV Dev, |
834 |
VL53L1_GPIO_interrupt_config_t intconf); |
835 |
|
836 |
/**
|
837 |
* @brief Retrieves the GPIO interrupt config structure currently programmed
|
838 |
* into the API
|
839 |
*
|
840 |
* @param[in] Dev : Device Handle
|
841 |
* @param[out] pintconf : output pointer to structure (note, pointer)
|
842 |
*/
|
843 |
|
844 |
VL53L1_Error VL53L1_get_GPIO_interrupt_config( |
845 |
VL53L1_DEV Dev, |
846 |
VL53L1_GPIO_interrupt_config_t *pintconf); |
847 |
|
848 |
/**
|
849 |
* @brief Set function for offset calibration mode
|
850 |
*
|
851 |
* @param[in] Dev : Device Handle
|
852 |
* @param[in] offset_cal_mode : input calibration mode
|
853 |
*
|
854 |
* @return VL53L1_ERROR_NONE Success
|
855 |
* @return "Other error code" See ::VL53L1_Error
|
856 |
*/
|
857 |
|
858 |
VL53L1_Error VL53L1_set_offset_calibration_mode( |
859 |
VL53L1_DEV Dev, |
860 |
VL53L1_OffsetCalibrationMode offset_cal_mode); |
861 |
|
862 |
|
863 |
/**
|
864 |
* @brief Get function for offset calibration mode
|
865 |
*
|
866 |
* @param[in] Dev : Device Handle
|
867 |
* @param[out] poffset_cal_mode : output pointer for calibration mode
|
868 |
*
|
869 |
* @return VL53L1_ERROR_NONE Success
|
870 |
* @return "Other error code" See ::VL53L1_Error
|
871 |
*/
|
872 |
|
873 |
VL53L1_Error VL53L1_get_offset_calibration_mode( |
874 |
VL53L1_DEV Dev, |
875 |
VL53L1_OffsetCalibrationMode *poffset_cal_mode); |
876 |
|
877 |
|
878 |
/**
|
879 |
* @brief Set function for offset correction mode
|
880 |
*
|
881 |
* @param[in] Dev : Device Handle
|
882 |
* @param[in] offset_cor_mode : input correction mode
|
883 |
*
|
884 |
* @return VL53L1_ERROR_NONE Success
|
885 |
* @return "Other error code" See ::VL53L1_Error
|
886 |
*/
|
887 |
|
888 |
VL53L1_Error VL53L1_set_offset_correction_mode( |
889 |
VL53L1_DEV Dev, |
890 |
VL53L1_OffsetCalibrationMode offset_cor_mode); |
891 |
|
892 |
|
893 |
/**
|
894 |
* @brief Get function for offset correction mode
|
895 |
*
|
896 |
* @param[in] Dev : Device Handle
|
897 |
* @param[out] poffset_cor_mode : output pointer for correction mode
|
898 |
*
|
899 |
* @return VL53L1_ERROR_NONE Success
|
900 |
* @return "Other error code" See ::VL53L1_Error
|
901 |
*/
|
902 |
|
903 |
VL53L1_Error VL53L1_get_offset_correction_mode( |
904 |
VL53L1_DEV Dev, |
905 |
VL53L1_OffsetCorrectionMode *poffset_cor_mode); |
906 |
|
907 |
/**
|
908 |
* @brief Get function for Xtalk Margin setting
|
909 |
* Histogram Mode version
|
910 |
*
|
911 |
* @param[in] Dev : Device Handle
|
912 |
* @param[out] pxtalk_margin : output pointer for int16_t xtalk_margin factor \
|
913 |
* in fixed point 7.9 Kcps.
|
914 |
*
|
915 |
* @return VL53L1_ERROR_NONE Success
|
916 |
* @return "Other error code" See ::VL53L1_Error
|
917 |
*/
|
918 |
|
919 |
VL53L1_Error VL53L1_get_lite_xtalk_margin_kcps( |
920 |
VL53L1_DEV Dev, |
921 |
int16_t *pxtalk_margin); |
922 |
|
923 |
/**
|
924 |
* @brief Set function for Xtalk Margin setting
|
925 |
* Histogram Mode version
|
926 |
*
|
927 |
* @param[in] Dev : Device Handle
|
928 |
* @param[in] xtalk_margin : Input int16_t xtalk_margin factor \
|
929 |
* in fixed point 7.9 Kcps.
|
930 |
*
|
931 |
* @return VL53L1_ERROR_NONE Success
|
932 |
* @return "Other error code" See ::VL53L1_Error
|
933 |
*/
|
934 |
|
935 |
VL53L1_Error VL53L1_set_lite_xtalk_margin_kcps( |
936 |
VL53L1_DEV Dev, |
937 |
int16_t xtalk_margin); |
938 |
|
939 |
/**
|
940 |
* @brief Get function for Lite Mode Minimum Count Rate
|
941 |
* parameter, used to filter and validate ranges based on
|
942 |
* signal rate
|
943 |
*
|
944 |
* Note: the min count rate value is overwritten when setting preset
|
945 |
* modes, and should only be altered after preset mode has been
|
946 |
* selected when running Lite Mode.
|
947 |
*
|
948 |
* @param[in] Dev : Device Handle
|
949 |
* @param[out] plite_mincountrate : Output pointer for uint16_t min count rate\
|
950 |
* in fixed point 9.7 Mcps
|
951 |
*
|
952 |
* @return VL53L1_ERROR_NONE Success
|
953 |
* @return "Other error code" See ::VL53L1_Error
|
954 |
*/
|
955 |
|
956 |
VL53L1_Error VL53L1_get_lite_min_count_rate( |
957 |
VL53L1_DEV Dev, |
958 |
uint16_t *plite_mincountrate); |
959 |
|
960 |
|
961 |
/**
|
962 |
* @brief Set function for Lite Mode Minimum Count Rate
|
963 |
* parameter, used to filter and validate ranges based on
|
964 |
* signal rate
|
965 |
*
|
966 |
* Note: the min count rate value is overwritten when setting preset
|
967 |
* modes, and should only be altered after preset mode has been
|
968 |
* selected when running Lite Mode.
|
969 |
*
|
970 |
* @param[in] Dev : Device Handle
|
971 |
* @param[in] lite_mincountrate : Input uint16_t min count rate
|
972 |
* in fixed point 9.7 Mcps
|
973 |
*
|
974 |
* @return VL53L1_ERROR_NONE Success
|
975 |
* @return "Other error code" See ::VL53L1_Error
|
976 |
*/
|
977 |
|
978 |
VL53L1_Error VL53L1_set_lite_min_count_rate( |
979 |
VL53L1_DEV Dev, |
980 |
uint16_t lite_mincountrate); |
981 |
|
982 |
|
983 |
/**
|
984 |
* @brief Get function for Lite Mode Max Sigma Threshold
|
985 |
* parameter, used to filter and validate ranges based on
|
986 |
* estimated sigma level
|
987 |
*
|
988 |
* Note: the sigma thresh value is overwritten when setting preset
|
989 |
* modes, and should only be altered after preset mode has been
|
990 |
* selected when running Lite Mode.
|
991 |
*
|
992 |
* @param[in] Dev : Device Handle
|
993 |
* @param[out] plite_sigma : Output pointer for uint16_t sigma thresh\
|
994 |
* in fixed point 14.2 mm
|
995 |
*
|
996 |
* @return VL53L1_ERROR_NONE Success
|
997 |
* @return "Other error code" See ::VL53L1_Error
|
998 |
*/
|
999 |
|
1000 |
|
1001 |
VL53L1_Error VL53L1_get_lite_sigma_threshold( |
1002 |
VL53L1_DEV Dev, |
1003 |
uint16_t *plite_sigma); |
1004 |
|
1005 |
|
1006 |
/**
|
1007 |
* @brief Set function for Lite Mode Max Sigma Threshold
|
1008 |
* parameter, used to filter and validate ranges based on
|
1009 |
* estimated sigma level
|
1010 |
*
|
1011 |
* Note: the sigma thresh value is overwritten when setting preset
|
1012 |
* modes, and should only be altered after preset mode has been
|
1013 |
* selected when running Lite Mode.
|
1014 |
*
|
1015 |
* @param[in] Dev : Device Handle
|
1016 |
* @param[in] lite_sigma : Input uint16_t sigma thresh\
|
1017 |
* in fixed point 14.2 mm
|
1018 |
*
|
1019 |
* @return VL53L1_ERROR_NONE Success
|
1020 |
* @return "Other error code" See ::VL53L1_Error
|
1021 |
*/
|
1022 |
|
1023 |
VL53L1_Error VL53L1_set_lite_sigma_threshold( |
1024 |
VL53L1_DEV Dev, |
1025 |
uint16_t lite_sigma); |
1026 |
|
1027 |
|
1028 |
/**
|
1029 |
* @brief Function to restore the plane_offset, x gradient and y gradient
|
1030 |
* values to original NVM values.
|
1031 |
*
|
1032 |
* This function does not recalculate all xtalk parms derived from the
|
1033 |
* rates in question. In order to ensure correct ranging, a call to
|
1034 |
* VL53L1_enable_xtalk_compensation should always be called prior
|
1035 |
* to starting the ranging process.
|
1036 |
*
|
1037 |
* @param[in] Dev : Device Handle
|
1038 |
*
|
1039 |
* @return VL53L1_ERROR_NONE Success
|
1040 |
* @return "Other error code" See ::VL53L1_Error
|
1041 |
*/
|
1042 |
|
1043 |
VL53L1_Error VL53L1_restore_xtalk_nvm_default( |
1044 |
VL53L1_DEV Dev); |
1045 |
|
1046 |
/**
|
1047 |
* @brief Set function for VHV Config values
|
1048 |
* sets two parms into individual internal byte
|
1049 |
*
|
1050 |
* init_en - enables use of the init value instead of latest setting
|
1051 |
* init_value - custom vhv setting or populated from nvm
|
1052 |
*
|
1053 |
* @param[in] Dev : Device Handle
|
1054 |
* @param[in] vhv_init_en : input init_en setting
|
1055 |
* @param[in] vhv_init_value : input vhv custom value
|
1056 |
*
|
1057 |
* @return VL53L1_ERROR_NONE Success
|
1058 |
* @return "Other error code" See ::VL53L1_Error
|
1059 |
*/
|
1060 |
|
1061 |
VL53L1_Error VL53L1_set_vhv_config( |
1062 |
VL53L1_DEV Dev, |
1063 |
uint8_t vhv_init_en, |
1064 |
uint8_t vhv_init_value); |
1065 |
|
1066 |
/**
|
1067 |
* @brief Get function for VHV Config values
|
1068 |
* extracts two parms from individual internal byte
|
1069 |
*
|
1070 |
* init_en - enables use of the init value instead of latest setting
|
1071 |
* init_value - custom vhv setting or populated from nvm
|
1072 |
*
|
1073 |
* @param[in] Dev : Device Handle
|
1074 |
* @param[out] pvhv_init_en : Output pointer to uint8_t value
|
1075 |
* @param[out] pvhv_init_value : Output pointer to uint8_t value
|
1076 |
*
|
1077 |
* @return VL53L1_ERROR_NONE Success
|
1078 |
* @return "Other error code" See ::VL53L1_Error
|
1079 |
*/
|
1080 |
|
1081 |
VL53L1_Error VL53L1_get_vhv_config( |
1082 |
VL53L1_DEV Dev, |
1083 |
uint8_t *pvhv_init_en, |
1084 |
uint8_t *pvhv_init_value); |
1085 |
|
1086 |
/**
|
1087 |
* @brief Set function for VHV loopbound config
|
1088 |
*
|
1089 |
* Loopbound sets the number of +/- vhv settings to try
|
1090 |
* around the vhv init value during vhv search
|
1091 |
* i.e. if init_value = 10 and loopbound = 2
|
1092 |
* vhv search will run from 10-2 to 10+2
|
1093 |
* 8 to 12.
|
1094 |
*
|
1095 |
* @param[in] Dev : Device Handle
|
1096 |
* @param[in] vhv_loopbound : input loopbound value
|
1097 |
*
|
1098 |
* @return VL53L1_ERROR_NONE Success
|
1099 |
* @return "Other error code" See ::VL53L1_Error
|
1100 |
*/
|
1101 |
|
1102 |
VL53L1_Error VL53L1_set_vhv_loopbound( |
1103 |
VL53L1_DEV Dev, |
1104 |
uint8_t vhv_loopbound); |
1105 |
|
1106 |
/**
|
1107 |
* @brief Get function for VHV loopbound config
|
1108 |
*
|
1109 |
* Loopbound sets the number of +/- vhv settings to try
|
1110 |
* around the vhv init value during vhv search
|
1111 |
* i.e. if init_value = 10 and loopbound = 2
|
1112 |
* vhv search will run from 10-2 to 10+2
|
1113 |
* 8 to 12.
|
1114 |
*
|
1115 |
* @param[in] Dev : Device Handle
|
1116 |
* @param[out] pvhv_loopbound : pointer to byte to extract loopbound
|
1117 |
*
|
1118 |
* @return VL53L1_ERROR_NONE Success
|
1119 |
* @return "Other error code" See ::VL53L1_Error
|
1120 |
*/
|
1121 |
|
1122 |
VL53L1_Error VL53L1_get_vhv_loopbound( |
1123 |
VL53L1_DEV Dev, |
1124 |
uint8_t *pvhv_loopbound); |
1125 |
|
1126 |
/**
|
1127 |
* @brief Generic Tuning Parameter extraction function
|
1128 |
*
|
1129 |
* User passes a key input to retrieve a specific tuning parameter
|
1130 |
* value, this will be cast to the int32_t type and output via
|
1131 |
* the ptuning_parm_value pointer
|
1132 |
*
|
1133 |
* If the key does not match any tuning parameter, status is returned
|
1134 |
* with VL53L1_ERROR_INVALID_PARAMS
|
1135 |
*
|
1136 |
* Patch_AddedTuningParms_11761
|
1137 |
*
|
1138 |
* @param[in] Dev : Device Handle
|
1139 |
* @param[in] tuning_parm_key : Key value to access specific tuning parm
|
1140 |
* @param[out] ptuning_parm_value : Pointer to output int32_t type, retrieves \
|
1141 |
* requested tuning parm
|
1142 |
*
|
1143 |
* @return VL53L1_ERROR_NONE Success
|
1144 |
* @return "Other error code" See ::VL53L1_Error
|
1145 |
*/
|
1146 |
|
1147 |
VL53L1_Error VL53L1_get_tuning_parm( |
1148 |
VL53L1_DEV Dev, |
1149 |
VL53L1_TuningParms tuning_parm_key, |
1150 |
int32_t *ptuning_parm_value); |
1151 |
|
1152 |
/**
|
1153 |
* @brief Generic Tuning Parameter set function
|
1154 |
*
|
1155 |
* User passes a key input to set a specific tuning parameter
|
1156 |
* value, this will be cast to the internal data type from the
|
1157 |
* input int32_t data type.
|
1158 |
*
|
1159 |
* If the key does not match any tuning parameter, status is returned
|
1160 |
* with VL53L1_ERROR_INVALID_PARAMS
|
1161 |
*
|
1162 |
* Patch_AddedTuningParms_11761
|
1163 |
*
|
1164 |
* @param[in] Dev : Device Handle
|
1165 |
* @param[in] tuning_parm_key : Key value to access specific tuning parm
|
1166 |
* @param[in] tuning_parm_value : Input tuning parm value of int32_t type, \
|
1167 |
* sets requested tuning parm.
|
1168 |
*
|
1169 |
* @return VL53L1_ERROR_NONE Success
|
1170 |
* @return "Other error code" See ::VL53L1_Error
|
1171 |
*/
|
1172 |
|
1173 |
VL53L1_Error VL53L1_set_tuning_parm( |
1174 |
VL53L1_DEV Dev, |
1175 |
VL53L1_TuningParms tuning_parm_key, |
1176 |
int32_t tuning_parm_value); |
1177 |
|
1178 |
|
1179 |
#ifdef __cplusplus
|
1180 |
} |
1181 |
#endif
|
1182 |
|
1183 |
#endif /* _VL53L1_API_CORE_H_ */ |