Rename library
Dependencies: X_NUCLEO_COMMON ST_INTERFACES
Dependents: VL53L3CX_NoShield_1Sensor_poll_Mb06x VL53L3_NoShield_1Sensor_polling_Mb63 X_NUCLEO_53L3A2 53L3A2_Ranging
Revision 7:7f1bbf370283, committed 2021-07-21
- Comitter:
- charlesmn
- Date:
- Wed Jul 21 14:07:59 2021 +0000
- Parent:
- 6:df30b960b7dc
- Commit message:
- Moved vl53l3cx_class.cpp and .h to 53l3a2_RangingClass
Changed in this revision
vl53l3cx_class.cpp | Show diff for this revision Revisions of this file |
vl53l3cx_class.h | Show diff for this revision Revisions of this file |
diff -r df30b960b7dc -r 7f1bbf370283 vl53l3cx_class.cpp --- a/vl53l3cx_class.cpp Wed Jul 14 14:36:12 2021 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3579 +0,0 @@ -/** - ****************************************************************************** - * @file vl53l3x_class.cpp - * @author CGM - * @version V0.0.1 - * @date 14-December-2021 - * @brief Implementation file for the VL53LX driver class - ****************************************************************************** - * @attention - * - * <h2><center>© COPYRIGHT(c) 2021 STMicroelectronics</center></h2> - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * 3. Neither the name of STMicroelectronics nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************** -* This is just a CPP wrapper around the C files in the module directory which -* are from the bare-driver release. -*/ - - -/* Includes */ -#include <stdlib.h> - -#include "mbed.h" - -#include "pinmap.h" -//#include "Arduino.h" -#include "vl53l3cx_class.h" -#include "vl53L3_I2c.h" -#include "vl53lx_platform.h" - -#include "vl53lx_ll_def.h" - - -#include "vl53lx_core_support.h" -#include "vl53lx_def.h" -#include "vl53lx_api_calibration.h" -#include "vl53lx_core.h" -#include "vl53lx_api.h" -#include "vl53lx_wait.h" -#include "vl53lx_register_settings.h" -#include "vl53lx_register_funcs.h" -#include "vl53lx_platform_ipp.h" -#include "vl53lx_nvm.h" -#include "vl53lx_api_core.h" -#include "vl53lx_hist_map.h" -#include "vl53lx_api_preset_modes.h" -#include "vl53lx_xtalk.h" -#include "vl53lx_hist_core.h" -#include "vl53lx_hist_algos_gen3.h" -#include "vl53lx_hist_algos_gen4.h" -#include "vl53lx_dmax.h" -#include "vl53lx_sigma_estimate.h" -#include "vl53lx_hist_core.h" -#include "vl53lx_hist_funcs.h" -#include "vl53lx_silicon_core.h" - - - -#define TEMP_BUF_SIZE 80 - -VL53LX_Error VL53L3CX::VL53L3CX_I2CWrite(uint8_t DeviceAddr, uint16_t RegisterAddr, uint8_t *pBuffer, uint16_t NumByteToWrite) -{ - - return i2c_inst->VL53L3_i2c_write(pBuffer,DeviceAddr,RegisterAddr,NumByteToWrite); -} - - -VL53LX_Error VL53L3CX::VL53L3CX_I2CRead(uint8_t DeviceAddr, uint16_t RegisterAddr, uint8_t *pBuffer, uint16_t NumByteToRead) -{ - - return i2c_inst->VL53L3_i2c_read(pBuffer,DeviceAddr,RegisterAddr,NumByteToRead); -} - - -VL53LX_Error VL53L3CX::VL53L3CX_GetTickCount( - uint32_t *ptick_count_ms) -{ - - return VL53LX_GetTickCount(Dev,ptick_count_ms); - - /* Returns current tick count in [ms] */ - -} - - - -VL53LX_Error VL53L3CX::VL53L3CX_WaitUs(VL53LX_Dev_t *pdev, int32_t wait_num_us) -{ -// (void)pdev; - //delay(wait_us / 1000); - wait_ms(wait_num_us/1000); - return VL53LX_ERROR_NONE; -} - - -VL53LX_Error VL53L3CX::VL53L3CX_WaitMs(VL53LX_DEV Dev, int32_t wait_num_ms) -{ - return VL53LX_WaitMs(Dev,wait_num_ms); -} - - -VL53LX_Error VL53L3CX::VL53L3CX_WaitValueMaskEx( - VL53LX_DEV Dev, - uint32_t timeout_ms, - uint16_t index, - uint8_t value, - uint8_t mask, - uint32_t poll_delay_ms) -{ - - return VL53LX_WaitValueMaskEx( - Dev, - timeout_ms, - index, - value, - mask, - poll_delay_ms); - -} - - - -/* vl53lx_api_core.c */ - - - -VL53LX_Error VL53L3CX::VL53L3CX_load_patch() -{ - - return VL53LX_load_patch(Dev); -} - - - -VL53LX_Error VL53L3CX::VL53L3CX_unload_patch() -{ - return VL53LX_unload_patch(Dev); -} - -VL53LX_Error VL53L3CX::VL53L3CX_get_version(VL53LX_ll_version_t *pdata) -{ - return VL53LX_get_version(Dev, pdata); -} - - - - - -VL53LX_Error VL53L3CX::VL53L3CX_data_init(uint8_t read_p2p_data) -{ - return VL53LX_data_init(Dev,read_p2p_data); -} - -VL53LX_Error VL53L3CX::VL53L3CX_read_p2p_data() -{ - return VL53LX_read_p2p_data(Dev); -} - - - - -VL53LX_Error VL53L3CX::VL53L3CX_set_part_to_part_data(VL53LX_calibration_data_t *pcal_data) -{ - return VL53LX_set_part_to_part_data(Dev, pcal_data); -} - -VL53LX_Error VL53L3CX::VL53L3CX_get_part_to_part_data(VL53LX_calibration_data_t *pcal_data) -{ - return VL53LX_get_part_to_part_data(Dev, pcal_data); -} - -VL53LX_Error VL53L3CX::VL53L3CX_set_inter_measurement_period_ms( - uint32_t inter_measurement_period_ms) -{ - return VL53LX_set_inter_measurement_period_ms(Dev,inter_measurement_period_ms); -} - -VL53LX_Error VL53L3CX::VL53L3CX_get_inter_measurement_period_ms(uint32_t *pinter_measurement_period_ms) -{ - return VL53LX_get_inter_measurement_period_ms(Dev, pinter_measurement_period_ms); -} - -VL53LX_Error VL53L3CX::VL53L3CX_set_timeouts_us( - uint32_t phasecal_config_timeout_us, - uint32_t mm_config_timeout_us, - uint32_t range_config_timeout_us) -{ - - return VL53LX_set_timeouts_us(Dev, - phasecal_config_timeout_us, - mm_config_timeout_us, - range_config_timeout_us); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_get_timeouts_us( - uint32_t *pphasecal_config_timeout_us, - uint32_t *pmm_config_timeout_us, - uint32_t *prange_config_timeout_us) -{ - - return VL53LX_get_timeouts_us(Dev, - pphasecal_config_timeout_us, - pmm_config_timeout_us, - prange_config_timeout_us); - -} - - - - -VL53LX_Error VL53L3CX::VL53L3CX_set_user_zone( - VL53LX_user_zone_t *puser_zone) -{ - return VL53LX_set_user_zone( - Dev, - puser_zone); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_get_user_zone( - VL53LX_user_zone_t *puser_zone) -{ - return VL53LX_get_user_zone( Dev, puser_zone); -} - -VL53LX_Error VL53L3CX::VL53L3CX_get_mode_mitigation_roi( - VL53LX_user_zone_t *pmm_roi) -{ - - return VL53LX_get_mode_mitigation_roi( Dev, pmm_roi); -} - -VL53LX_Error VL53L3CX::VL53L3CX_set_zone_config( - VL53LX_zone_config_t *pzone_cfg) -{ - - return VL53LX_set_zone_config(Dev, pzone_cfg ); - -} - - - -VL53LX_Error VL53L3CX::VL53L3CX_get_zone_config( - VL53LX_zone_config_t *pzone_cfg) -{ - - return VL53LX_get_zone_config(Dev, pzone_cfg); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_get_preset_mode_timing_cfg( - VL53LX_DevicePresetModes device_preset_mode, - uint16_t *pdss_config__target_total_rate_mcps, - uint32_t *pphasecal_config_timeout_us, - uint32_t *pmm_config_timeout_us, - uint32_t *prange_config_timeout_us) -{ - - return VL53LX_get_preset_mode_timing_cfg(Dev, - device_preset_mode, - pdss_config__target_total_rate_mcps, - pphasecal_config_timeout_us, - pmm_config_timeout_us, - prange_config_timeout_us); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_set_preset_mode( - VL53LX_DevicePresetModes device_preset_mode, - uint16_t dss_config__target_total_rate_mcps, - uint32_t phasecal_config_timeout_us, - uint32_t mm_config_timeout_us, - uint32_t range_config_timeout_us, - uint32_t inter_measurement_period_ms) -{ - - return VL53LX_set_preset_mode( - Dev, - device_preset_mode, - dss_config__target_total_rate_mcps, - phasecal_config_timeout_us, - mm_config_timeout_us, - range_config_timeout_us, - inter_measurement_period_ms); - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_enable_xtalk_compensation() -{ - - return VL53LX_enable_xtalk_compensation(Dev); - -} - -void VL53L3CX::VL53L3CX_get_xtalk_compensation_enable(uint8_t *pcrosstalk_compensation_enable) -{ - return VL53LX_get_xtalk_compensation_enable(Dev,pcrosstalk_compensation_enable); - -} - - - - - - -VL53LX_Error VL53L3CX::VL53L3CX_disable_xtalk_compensation() -{ - - return VL53LX_disable_xtalk_compensation(Dev); - -} - - - - -VL53LX_Error VL53L3CX::VL53L3CX_init_and_start_range( - uint8_t measurement_mode, - VL53LX_DeviceConfigLevel device_config_level) -{ - - return VL53LX_init_and_start_range( Dev, measurement_mode, device_config_level); - -} -VL53LX_Error VL53L3CX::VL53L3CX_stop_range() -{ - return VL53LX_stop_range(Dev); -} - -VL53LX_Error VL53L3CX::VL53L3CX_get_measurement_results( - VL53LX_DeviceResultsLevel device_results_level) -{ - - return VL53LX_get_measurement_results( Dev, device_results_level); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_get_device_results( - VL53LX_DeviceResultsLevel device_results_level, - VL53LX_range_results_t *prange_results) -{ - return VL53LX_get_device_results( Dev, device_results_level,prange_results); -} - -VL53LX_Error VL53L3CX::VL53L3CX_clear_interrupt_and_enable_next_range( - uint8_t measurement_mode) -{ - return VL53LX_clear_interrupt_and_enable_next_range(Dev,measurement_mode); -} - - -VL53LX_Error VL53L3CX::VL53L3CX_get_histogram_bin_data( - VL53LX_histogram_bin_data_t *pdata) -{ - return VL53LX_get_histogram_bin_data(Dev, pdata); -} - -void VL53L3CX::VL53L3CX_copy_sys_and_core_results_to_range_results( - int32_t gain_factor, - VL53LX_system_results_t *psys, - VL53LX_core_results_t *pcore, - VL53LX_range_results_t *presults) -{ - - return VL53LX_copy_sys_and_core_results_to_range_results( - gain_factor, - psys, - pcore, - presults); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_set_zone_dss_config( - VL53LX_zone_private_dyn_cfg_t *pzone_dyn_cfg) -{ - - return VL53LX_set_zone_dss_config( Dev, - pzone_dyn_cfg); - -} - - - -VL53LX_Error VL53L3CX::VL53L3CX_set_dmax_mode( - VL53LX_DeviceDmaxMode dmax_mode) -{ - - return VL53LX_set_dmax_mode(Dev,dmax_mode); - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_get_dmax_mode( - VL53LX_DeviceDmaxMode *pdmax_mode) -{ - - return VL53LX_get_dmax_mode( Dev,pdmax_mode); - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_get_dmax_calibration_data( - VL53LX_DeviceDmaxMode dmax_mode, - VL53LX_dmax_calibration_data_t *pdmax_cal) -{ - - return VL53LX_get_dmax_calibration_data(Dev, dmax_mode, pdmax_cal); - -} - - - - -VL53LX_Error VL53L3CX::VL53L3CX_set_offset_correction_mode( - VL53LX_OffsetCorrectionMode offset_cor_mode) -{ - - return VL53LX_set_offset_correction_mode(Dev, offset_cor_mode); - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_get_offset_correction_mode( - VL53LX_OffsetCorrectionMode *poffset_cor_mode) -{ - return VL53LX_get_offset_correction_mode( Dev, poffset_cor_mode); - -} - - - -VL53LX_Error VL53L3CX::VL53L3CX_get_tuning_debug_data( - VL53LX_tuning_parameters_t *ptun_data) -{ - - return VL53LX_get_tuning_debug_data(Dev,ptun_data); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_get_tuning_parm( - VL53LX_TuningParms tuning_parm_key, - int32_t *ptuning_parm_value) -{ - - return VL53LX_get_tuning_parm(Dev, tuning_parm_key, - ptuning_parm_value); - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_set_tuning_parm( - VL53LX_TuningParms tuning_parm_key, - int32_t tuning_parm_value) -{ - - return VL53LX_set_tuning_parm(Dev, tuning_parm_key, tuning_parm_value); - - } - -VL53LX_Error VL53L3CX::VL53L3CX_dynamic_xtalk_correction_enable() -{ - - return VL53LX_dynamic_xtalk_correction_enable(Dev); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_dynamic_xtalk_correction_disable() -{ - return VL53LX_dynamic_xtalk_correction_disable(Dev); - -} -VL53LX_Error VL53L3CX::VL53L3CX_dynamic_xtalk_correction_apply_enable() -{ - - return VL53LX_dynamic_xtalk_correction_apply_enable(Dev); -} - -VL53LX_Error VL53L3CX::VL53L3CX_dynamic_xtalk_correction_apply_disable() -{ - - return VL53LX_dynamic_xtalk_correction_apply_disable(Dev); - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_dynamic_xtalk_correction_single_apply_enable() -{ - - return VL53LX_dynamic_xtalk_correction_single_apply_enable(Dev); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_dynamic_xtalk_correction_single_apply_disable() -{ - - return VL53LX_dynamic_xtalk_correction_single_apply_disable(Dev); - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_get_current_xtalk_settings( - VL53LX_xtalk_calibration_results_t *pxtalk -) -{ - - return VL53LX_get_current_xtalk_settings(Dev,pxtalk); - -} -VL53LX_Error VL53L3CX::VL53L3CX_set_current_xtalk_settings( - VL53LX_xtalk_calibration_results_t *pxtalk -) -{ - return VL53LX_set_current_xtalk_settings(Dev, pxtalk); - -} - -/* vl53lx_register_funcs.c */ - -VL53LX_Error VL53L3CX::VL53L3CX_i2c_encode_static_nvm_managed( - VL53LX_static_nvm_managed_t *pdata, - uint16_t buf_size, - uint8_t *pbuffer) -{ - - return VL53LX_i2c_encode_static_nvm_managed( pdata, buf_size, pbuffer); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_i2c_decode_static_nvm_managed( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_static_nvm_managed_t *pdata) -{ - - - return VL53LX_i2c_decode_static_nvm_managed( - buf_size, - pbuffer, - pdata); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_set_static_nvm_managed( - VL53LX_static_nvm_managed_t *pdata) -{ - - return VL53LX_set_static_nvm_managed( Dev, pdata); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_get_static_nvm_managed( - VL53LX_static_nvm_managed_t *pdata) -{ - - return VL53LX_get_static_nvm_managed( Dev, - pdata); - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_i2c_encode_customer_nvm_managed( - VL53LX_customer_nvm_managed_t *pdata, - uint16_t buf_size, - uint8_t *pbuffer) -{ - - - return VL53LX_i2c_encode_customer_nvm_managed( pdata, - buf_size, - pbuffer); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_i2c_decode_customer_nvm_managed( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_customer_nvm_managed_t *pdata) -{ - - return VL53LX_i2c_decode_customer_nvm_managed( buf_size, - pbuffer, - pdata); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_set_customer_nvm_managed( - VL53LX_customer_nvm_managed_t *pdata) -{ - - - return VL53LX_set_customer_nvm_managed(Dev, - pdata); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_get_customer_nvm_managed( - VL53LX_customer_nvm_managed_t *pdata) -{ - - return VL53LX_get_customer_nvm_managed(Dev,pdata); - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_i2c_encode_static_config( - VL53LX_static_config_t *pdata, - uint16_t buf_size, - uint8_t *pbuffer) -{ - - return VL53LX_i2c_encode_static_config(pdata, buf_size, pbuffer); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_i2c_decode_static_config( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_static_config_t *pdata) -{ - - return VL53LX_i2c_decode_static_config( buf_size, pbuffer, pdata); - - } - -VL53LX_Error VL53L3CX::VL53L3CX_set_static_config( - VL53LX_static_config_t *pdata) -{ - - return VL53LX_set_static_config(Dev, pdata); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_get_static_config( - VL53LX_static_config_t *pdata) -{ - - return VL53LX_get_static_config( Dev, pdata); - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_i2c_encode_general_config( - VL53LX_general_config_t *pdata, - uint16_t buf_size, - uint8_t *pbuffer) -{ - - return VL53LX_i2c_encode_general_config( - pdata, - buf_size, - pbuffer); - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_i2c_decode_general_config( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_general_config_t *pdata) -{ - - return VL53LX_i2c_decode_general_config( - buf_size, - pbuffer, - pdata); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_set_general_config( - VL53LX_general_config_t *pdata) -{ - - return VL53LX_set_general_config( Dev, pdata); - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_get_general_config( - VL53LX_general_config_t *pdata) -{ - - return VL53LX_get_general_config( Dev,pdata); - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_i2c_encode_timing_config( - VL53LX_timing_config_t *pdata, - uint16_t buf_size, - uint8_t *pbuffer) -{ - - return VL53LX_i2c_encode_timing_config( - pdata, - buf_size, - pbuffer); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_i2c_decode_timing_config( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_timing_config_t *pdata) -{ - - return VL53LX_i2c_decode_timing_config( - buf_size, - pbuffer, - pdata); - - } - -VL53LX_Error VL53L3CX::VL53L3CX_set_timing_config( - VL53LX_timing_config_t *pdata) -{ - - return VL53LX_set_timing_config( Dev, pdata); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_get_timing_config( - VL53LX_timing_config_t *pdata) -{ - - return VL53LX_set_timing_config( Dev, pdata); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_i2c_encode_dynamic_config( - VL53LX_dynamic_config_t *pdata, - uint16_t buf_size, - uint8_t *pbuffer) -{ - - return VL53LX_i2c_encode_dynamic_config( pdata, buf_size, pbuffer); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_i2c_decode_dynamic_config( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_dynamic_config_t *pdata) -{ - - return VL53LX_i2c_decode_dynamic_config(buf_size,pbuffer,pdata); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_set_dynamic_config( - VL53LX_dynamic_config_t *pdata) -{ - - return VL53LX_set_dynamic_config( Dev, pdata); - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_get_dynamic_config( - VL53LX_dynamic_config_t *pdata) -{ - - return VL53LX_get_dynamic_config( Dev,pdata); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_i2c_encode_system_control( - VL53LX_system_control_t *pdata, - uint16_t buf_size, - uint8_t *pbuffer) -{ - - return VL53LX_i2c_encode_system_control( pdata, - buf_size, - pbuffer); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_i2c_decode_system_control( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_system_control_t *pdata) -{ - - - return VL53LX_i2c_decode_system_control( - buf_size, - pbuffer, - pdata); - - - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_set_system_control( - VL53LX_system_control_t *pdata) -{ - - return VL53LX_set_system_control(Dev,pdata); - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_get_system_control( - VL53LX_system_control_t *pdata) -{ - - return VL53LX_get_system_control(Dev,pdata); - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_i2c_encode_system_results( - VL53LX_system_results_t *pdata, - uint16_t buf_size, - uint8_t *pbuffer) -{ - - return VL53LX_i2c_encode_system_results(pdata, - buf_size, - pbuffer); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_i2c_decode_system_results( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_system_results_t *pdata) -{ - - - return VL53LX_i2c_decode_system_results( buf_size,pbuffer,pdata); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_set_system_results( - VL53LX_system_results_t *pdata) -{ - - return VL53LX_set_system_results(Dev,pdata); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_get_system_results( - VL53LX_system_results_t *pdata) -{ - - return VL53LX_get_system_results(Dev,pdata); - -} -VL53LX_Error VL53L3CX::VL53L3CX_i2c_encode_core_results( - VL53LX_core_results_t *pdata, - uint16_t buf_size, - uint8_t *pbuffer) -{ - - - return VL53LX_i2c_encode_core_results( - pdata, - buf_size, - pbuffer); - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_i2c_decode_core_results( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_core_results_t *pdata) -{ - - - return VL53LX_i2c_decode_core_results( buf_size, - pbuffer, - pdata); -} - -VL53LX_Error VL53L3CX::VL53L3CX_set_core_results( - VL53LX_core_results_t *pdata) -{ - - return VL53LX_set_core_results( Dev, pdata); - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_get_core_results( - VL53LX_core_results_t *pdata) -{ - - return VL53LX_get_core_results( Dev, pdata); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_i2c_encode_debug_results( - VL53LX_debug_results_t *pdata, - uint16_t buf_size, - uint8_t *pbuffer) -{ - - return VL53LX_i2c_encode_debug_results(pdata, buf_size, pbuffer); - - -} - -VL53LX_Error VL53L3CX::VL53L3CX_i2c_decode_debug_results( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_debug_results_t *pdata) -{ - - return VL53LX_i2c_decode_debug_results(buf_size,pbuffer,pdata); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_set_debug_results( - VL53LX_debug_results_t *pdata) -{ - - return VL53LX_set_debug_results(Dev, pdata); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_get_debug_results( - VL53LX_debug_results_t *pdata) -{ - - return VL53LX_get_debug_results( Dev, pdata); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_i2c_encode_nvm_copy_data( - VL53LX_nvm_copy_data_t *pdata, - uint16_t buf_size, - uint8_t *pbuffer) -{ - - return VL53LX_i2c_encode_nvm_copy_data(pdata,buf_size,pbuffer); - -} - - - -VL53LX_Error VL53L3CX::VL53L3CX_i2c_decode_nvm_copy_data( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_nvm_copy_data_t *pdata) -{ - - return VL53LX_i2c_decode_nvm_copy_data( - buf_size, - pbuffer, - pdata); - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_set_nvm_copy_data( - VL53LX_nvm_copy_data_t *pdata) -{ - - return VL53LX_set_nvm_copy_data( Dev, pdata); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_get_nvm_copy_data( - VL53LX_nvm_copy_data_t *pdata) -{ - - return VL53LX_get_nvm_copy_data(Dev, pdata); - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_i2c_encode_prev_shadow_system_results( - VL53LX_prev_shadow_system_results_t *pdata, - uint16_t buf_size, - uint8_t *pbuffer) -{ - - return VL53LX_i2c_encode_prev_shadow_system_results( - pdata, - buf_size, - pbuffer); - -} - - - -VL53LX_Error VL53L3CX::VL53L3CX_i2c_decode_prev_shadow_system_results( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_prev_shadow_system_results_t *pdata) -{ - - return VL53LX_i2c_decode_prev_shadow_system_results( buf_size, pbuffer, pdata); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_set_prev_shadow_system_results( - VL53LX_prev_shadow_system_results_t *pdata) -{ - - return VL53LX_set_prev_shadow_system_results( Dev,pdata); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_get_prev_shadow_system_results( - VL53LX_prev_shadow_system_results_t *pdata) -{ - - return VL53LX_get_prev_shadow_system_results( Dev,pdata); - -} -VL53LX_Error VL53L3CX::VL53L3CX_i2c_encode_prev_shadow_core_results( - VL53LX_prev_shadow_core_results_t *pdata, - uint16_t buf_size, - uint8_t *pbuffer) -{ - - return VL53LX_i2c_encode_prev_shadow_core_results( pdata, buf_size, pbuffer); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_i2c_decode_prev_shadow_core_results( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_prev_shadow_core_results_t *pdata) -{ - - return VL53LX_i2c_decode_prev_shadow_core_results( buf_size, pbuffer, pdata); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_set_prev_shadow_core_results( - VL53LX_prev_shadow_core_results_t *pdata) -{ - - return VL53LX_set_prev_shadow_core_results(Dev, pdata); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_get_prev_shadow_core_results( - VL53LX_prev_shadow_core_results_t *pdata) -{ - - return VL53LX_get_prev_shadow_core_results( Dev, pdata); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_i2c_encode_patch_debug( - VL53LX_patch_debug_t *pdata, - uint16_t buf_size, - uint8_t *pbuffer) -{ - - return VL53LX_i2c_encode_patch_debug( - pdata, - buf_size, - pbuffer); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_i2c_decode_patch_debug( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_patch_debug_t *pdata) -{ - - return VL53LX_i2c_decode_patch_debug( - buf_size, - pbuffer, - pdata); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_set_patch_debug( - VL53LX_patch_debug_t *pdata) -{ - - return VL53LX_set_patch_debug( Dev, pdata); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_get_patch_debug( - VL53LX_patch_debug_t *pdata) -{ - - return VL53LX_get_patch_debug( Dev,pdata); - -} -VL53LX_Error VL53L3CX::VL53L3CX_i2c_encode_gph_general_config( - VL53LX_gph_general_config_t *pdata, - uint16_t buf_size, - uint8_t *pbuffer) -{ - - return VL53LX_i2c_encode_gph_general_config( pdata, buf_size, pbuffer); - -} -VL53LX_Error VL53L3CX::VL53L3CX_i2c_decode_gph_general_config( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_gph_general_config_t *pdata) -{ - - return VL53LX_i2c_decode_gph_general_config( buf_size, pbuffer, pdata); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_set_gph_general_config( - VL53LX_gph_general_config_t *pdata) -{ - - return VL53LX_set_gph_general_config( Dev, pdata); - -} -VL53LX_Error VL53L3CX::VL53L3CX_get_gph_general_config( - VL53LX_gph_general_config_t *pdata) -{ - - return VL53LX_get_gph_general_config( Dev, pdata); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_i2c_encode_gph_static_config( - VL53LX_gph_static_config_t *pdata, - uint16_t buf_size, - uint8_t *pbuffer) -{ - - - return VL53LX_i2c_encode_gph_static_config( - pdata, - buf_size, - pbuffer); - - -} -VL53LX_Error VL53L3CX::VL53L3CX_i2c_decode_gph_static_config( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_gph_static_config_t *pdata) -{ - - return VL53LX_i2c_decode_gph_static_config( - buf_size, - pbuffer, - pdata); - -} -VL53LX_Error VL53L3CX::VL53L3CX_set_gph_static_config( - VL53LX_gph_static_config_t *pdata) -{ - - return VL53LX_set_gph_static_config( Dev, pdata); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_get_gph_static_config( - VL53LX_gph_static_config_t *pdata) -{ - - return VL53LX_get_gph_static_config( Dev,pdata); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_i2c_encode_gph_timing_config( - VL53LX_gph_timing_config_t *pdata, - uint16_t buf_size, - uint8_t *pbuffer) -{ - - return VL53LX_i2c_encode_gph_timing_config( pdata, - buf_size, - pbuffer); - - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_i2c_decode_gph_timing_config( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_gph_timing_config_t *pdata) -{ - - return VL53LX_i2c_decode_gph_timing_config( - buf_size, - pbuffer, - pdata); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_set_gph_timing_config( - VL53LX_gph_timing_config_t *pdata) -{ - - return VL53LX_set_gph_timing_config( Dev,pdata); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_get_gph_timing_config( - VL53LX_gph_timing_config_t *pdata) -{ - - return VL53LX_get_gph_timing_config(Dev, pdata); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_i2c_encode_fw_internal( - VL53LX_fw_internal_t *pdata, - uint16_t buf_size, - uint8_t *pbuffer) -{ - - return VL53LX_i2c_encode_fw_internal( - pdata, - buf_size, - pbuffer); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_i2c_decode_fw_internal( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_fw_internal_t *pdata) -{ - - return VL53LX_i2c_decode_fw_internal( buf_size, pbuffer, pdata); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_set_fw_internal( - VL53LX_fw_internal_t *pdata) -{ - - return VL53LX_set_fw_internal( Dev,pdata); - -} -VL53LX_Error VL53L3CX::VL53L3CX_get_fw_internal( - VL53LX_fw_internal_t *pdata) -{ - - return VL53LX_get_fw_internal( Dev, pdata); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_i2c_encode_patch_results( - VL53LX_patch_results_t *pdata, - uint16_t buf_size, - uint8_t *pbuffer) -{ - - return VL53LX_i2c_encode_patch_results(pdata, buf_size, pbuffer); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_i2c_decode_patch_results( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_patch_results_t *pdata) -{ - return VL53LX_i2c_decode_patch_results( buf_size, pbuffer, pdata); -} - - -VL53LX_Error VL53L3CX::VL53L3CX_set_patch_results( - VL53LX_patch_results_t *pdata) -{ - - return VL53LX_set_patch_results( Dev, pdata); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_get_patch_results( - VL53LX_patch_results_t *pdata) -{ - - return VL53LX_get_patch_results( Dev, pdata); -} - -VL53LX_Error VL53L3CX::VL53L3CX_i2c_encode_shadow_system_results( - VL53LX_shadow_system_results_t *pdata, - uint16_t buf_size, - uint8_t *pbuffer) -{ - return VL53LX_i2c_encode_shadow_system_results(pdata,buf_size,pbuffer); -} - -VL53LX_Error VL53L3CX::VL53L3CX_i2c_decode_shadow_system_results( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_shadow_system_results_t *pdata) -{ - return VL53LX_i2c_decode_shadow_system_results( buf_size, pbuffer,pdata); -} - -VL53LX_Error VL53L3CX::VL53L3CX_set_shadow_system_results( - VL53LX_shadow_system_results_t *pdata) -{ - - return VL53LX_set_shadow_system_results( Dev, pdata); - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_get_shadow_system_results( - VL53LX_shadow_system_results_t *pdata) -{ - - return VL53LX_get_shadow_system_results( Dev, pdata); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_i2c_encode_shadow_core_results( - VL53LX_shadow_core_results_t *pdata, - uint16_t buf_size, - uint8_t *pbuffer) -{ - - return VL53LX_i2c_encode_shadow_core_results( pdata, buf_size, pbuffer); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_i2c_decode_shadow_core_results( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_shadow_core_results_t *pdata) -{ - - return VL53LX_i2c_decode_shadow_core_results( buf_size,pbuffer,pdata); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_set_shadow_core_results( - VL53LX_shadow_core_results_t *pdata) -{ - - return VL53LX_set_shadow_core_results( Dev,pdata); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_get_shadow_core_results( - VL53LX_shadow_core_results_t *pdata) -{ - - return VL53LX_get_shadow_core_results( Dev,pdata); - -} - - -/* vl53lx_nvm.c */ - -VL53LX_Error VL53L3CX::VL53L3CX_nvm_enable( - uint16_t nvm_ctrl_pulse_width, - int32_t nvm_power_up_delay_us) -{ - - return VL53LX_nvm_enable(Dev, nvm_ctrl_pulse_width, nvm_power_up_delay_us); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_nvm_read( - uint8_t start_address, - uint8_t count, - uint8_t *pdata) -{ - - return VL53LX_nvm_read( Dev, start_address, count, pdata); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_nvm_disable() -{ - - return VL53LX_nvm_disable( Dev ); - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_nvm_format_decode( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_decoded_nvm_data_t *pdata) -{ - - return VL53LX_nvm_disable( Dev ); - -} -VL53LX_Error VL53L3CX::VL53L3CX_nvm_decode_optical_centre( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_optical_centre_t *pdata) -{ - - return VL53LX_nvm_decode_optical_centre( buf_size, pbuffer, pdata); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_nvm_decode_cal_peak_rate_map( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_cal_peak_rate_map_t *pdata) -{ - - return VL53LX_nvm_decode_cal_peak_rate_map( buf_size, pbuffer, pdata); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_nvm_decode_additional_offset_cal_data( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_additional_offset_cal_data_t *pdata) -{ - - return VL53LX_nvm_decode_additional_offset_cal_data( buf_size, pbuffer, pdata); - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_nvm_decode_fmt_range_results_data( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_decoded_nvm_fmt_range_data_t *pdata) -{ - - return VL53LX_nvm_decode_fmt_range_results_data( buf_size, pbuffer,pdata); - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_nvm_decode_fmt_info( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_decoded_nvm_fmt_info_t *pdata) -{ - - return VL53LX_nvm_decode_fmt_info( buf_size, pbuffer, pdata); - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_nvm_decode_ews_info( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_decoded_nvm_ews_info_t *pdata) -{ - - - return VL53LX_nvm_decode_ews_info( - buf_size, - pbuffer, - pdata); - - -} - - -void VL53L3CX::VL53L3CX_nvm_format_encode( - VL53LX_decoded_nvm_data_t *pnvm_info, - uint8_t *pnvm_data) -{ - SUPPRESS_UNUSED_WARNING(pnvm_info); - SUPPRESS_UNUSED_WARNING(pnvm_data); -} - -VL53LX_Error VL53L3CX::VL53L3CX_read_nvm_raw_data( - uint8_t start_address, - uint8_t count, - uint8_t *pnvm_raw_data) -{ - - return VL53LX_read_nvm_raw_data( - Dev, - start_address, - count, - pnvm_raw_data); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_read_nvm( - uint8_t nvm_format, - VL53LX_decoded_nvm_data_t *pnvm_info) -{ - - return VL53LX_read_nvm(Dev, nvm_format,pnvm_info); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_read_nvm_optical_centre( - VL53LX_optical_centre_t *pcentre) -{ - - return VL53LX_read_nvm_optical_centre( - Dev, - pcentre); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_read_nvm_cal_peak_rate_map( - VL53LX_cal_peak_rate_map_t *pcal_data) -{ - - - return VL53LX_read_nvm_cal_peak_rate_map( - Dev, - pcal_data); - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_read_nvm_additional_offset_cal_data( - VL53LX_additional_offset_cal_data_t *pcal_data) -{ - - return VL53LX_read_nvm_additional_offset_cal_data( - Dev, - pcal_data); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_read_nvm_fmt_range_results_data( - uint16_t range_results_select, - VL53LX_decoded_nvm_fmt_range_data_t *prange_data) -{ - return VL53LX_read_nvm_fmt_range_results_data( - Dev, - range_results_select, - prange_data); - -} - -/* vl53lx_platform_ipp.c */ - -VL53LX_Error VL53L3CX::VL53L3CX_ipp_hist_process_data( - VL53LX_dmax_calibration_data_t *pdmax_cal, - VL53LX_hist_gen3_dmax_config_t *pdmax_cfg, - VL53LX_hist_post_process_config_t *ppost_cfg, - VL53LX_histogram_bin_data_t *pbins, - VL53LX_xtalk_histogram_data_t *pxtalk, - uint8_t *pArea1, - uint8_t *pArea2, - uint8_t *phisto_merge_nb, - VL53LX_range_results_t *presults) -{ - - return VL53L3CX_ipp_hist_process_data( pdmax_cal, pdmax_cfg,ppost_cfg,pbins,pxtalk,pArea1,pArea2,phisto_merge_nb,presults); - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_ipp_hist_ambient_dmax( - uint16_t target_reflectance, - VL53LX_dmax_calibration_data_t *pdmax_cal, - VL53LX_hist_gen3_dmax_config_t *pdmax_cfg, - VL53LX_histogram_bin_data_t *pbins, - int16_t *pambient_dmax_mm) -{ - - - return VL53LX_ipp_hist_ambient_dmax( Dev, - target_reflectance, - pdmax_cal, - pdmax_cfg, - pbins, - pambient_dmax_mm); - - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_ipp_xtalk_calibration_process_data( - VL53LX_xtalk_range_results_t *pxtalk_ranges, - VL53LX_xtalk_histogram_data_t *pxtalk_shape, - VL53LX_xtalk_calibration_results_t *pxtalk_cal) -{ - - return VL53LX_ipp_xtalk_calibration_process_data( Dev, - pxtalk_ranges, - pxtalk_shape, - pxtalk_cal); - -} - - - - -/* vl53lx_hist_funcs.c */ - -VL53LX_Error VL53L3CX::VL53L3CX_hist_process_data( - VL53LX_dmax_calibration_data_t *pdmax_cal, - VL53LX_hist_gen3_dmax_config_t *pdmax_cfg, - VL53LX_hist_post_process_config_t *ppost_cfg, - VL53LX_histogram_bin_data_t *pbins_input, - VL53LX_xtalk_histogram_data_t *pxtalk_shape, - uint8_t *pArea1, - uint8_t *pArea2, - VL53LX_range_results_t *presults, - uint8_t *HistMergeNumber) -{ - - return VL53LX_hist_process_data(pdmax_cal,pdmax_cfg,ppost_cfg,pbins_input, - pxtalk_shape,pArea1,pArea2,presults,HistMergeNumber); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_hist_ambient_dmax( - uint16_t target_reflectance, - VL53LX_dmax_calibration_data_t *pdmax_cal, - VL53LX_hist_gen3_dmax_config_t *pdmax_cfg, - VL53LX_histogram_bin_data_t *pbins, - int16_t *pambient_dmax_mm) -{ - - return VL53LX_hist_ambient_dmax(target_reflectance, pdmax_cal, pdmax_cfg, pbins,pambient_dmax_mm); - -} - -/* vl53lx_core_support.c */ - -uint32_t VL53L3CX::VL53L3CX_calc_pll_period_us( - uint16_t fast_osc_frequency) -{ - - return VL53LX_calc_pll_period_us(fast_osc_frequency); - -} - -uint32_t VL53L3CX::VL53L3CX_duration_maths( - uint32_t pll_period_us, - uint32_t vcsel_parm_pclks, - uint32_t window_vclks, - uint32_t elapsed_mclks) -{ - - return VL53LX_duration_maths( pll_period_us,vcsel_parm_pclks,window_vclks,elapsed_mclks); - -} - -uint32_t VL53L3CX::VL53L3CX_events_per_spad_maths( - int32_t VL53LX_p_010, - uint16_t num_spads, - uint32_t duration) -{ - - return VL53LX_events_per_spad_maths( VL53LX_p_010,num_spads, duration); - -} - -uint32_t VL53L3CX::VL53L3CX_isqrt(uint32_t num) -{ - - return VL53LX_isqrt(num); - -} - -void VL53L3CX::VL53L3CX_hist_calc_zero_distance_phase( - VL53LX_histogram_bin_data_t *pdata) -{ - - return VL53LX_hist_calc_zero_distance_phase(pdata); - -} - -void VL53L3CX::VL53L3CX_hist_estimate_ambient_from_thresholded_bins( - int32_t ambient_threshold_sigma, - VL53LX_histogram_bin_data_t *pdata) -{ - - return VL53LX_hist_estimate_ambient_from_thresholded_bins( ambient_threshold_sigma, pdata); - -} - - -void VL53L3CX::VL53L3CX_hist_remove_ambient_bins( - VL53LX_histogram_bin_data_t *pdata) -{ - - return VL53LX_hist_remove_ambient_bins(pdata); - -} - - -uint32_t VL53L3CX::VL53L3CX_calc_pll_period_mm( - uint16_t fast_osc_frequency) -{ - - return VL53LX_calc_pll_period_mm( fast_osc_frequency); - -} - - -uint16_t VL53L3CX::VL53L3CX_rate_maths( - int32_t VL53LX_p_018, - uint32_t time_us) -{ - - return VL53LX_rate_maths( VL53LX_p_018 , time_us); - -} - -uint16_t VL53L3CX::VL53L3CX_rate_per_spad_maths( - uint32_t frac_bits, - uint32_t peak_count_rate, - uint16_t num_spads, - uint32_t max_output_value) -{ - - return VL53LX_rate_per_spad_maths( frac_bits, - peak_count_rate, - num_spads, - max_output_value); - -} - -int32_t VL53L3CX::VL53L3CX_range_maths( - uint16_t fast_osc_frequency, - uint16_t VL53LX_p_014, - uint16_t zero_distance_phase, - uint8_t fractional_bits, - int32_t gain_factor, - int32_t range_offset_mm) -{ - - return VL53LX_range_maths( fast_osc_frequency, - VL53LX_p_014, - zero_distance_phase, - fractional_bits, - gain_factor, - range_offset_mm); - -} - -uint8_t VL53L3CX::VL53L3CX_decode_vcsel_period(uint8_t vcsel_period_reg) -{ - return VL53LX_decode_vcsel_period( vcsel_period_reg); - -} - - -void VL53L3CX::VL53L3CX_copy_xtalk_bin_data_to_histogram_data_struct( - VL53LX_xtalk_histogram_shape_t *pxtalk, - VL53LX_histogram_bin_data_t *phist) -{ - - VL53LX_copy_xtalk_bin_data_to_histogram_data_struct( pxtalk, phist); - -} - -void VL53L3CX::VL53L3CX_init_histogram_bin_data_struct( - int32_t bin_value, - uint16_t VL53LX_p_021, - VL53LX_histogram_bin_data_t *pdata) -{ - - VL53LX_init_histogram_bin_data_struct( bin_value, - VL53LX_p_021, - pdata); - -} - -void VL53L3CX::VL53L3CX_decode_row_col( - uint8_t spad_number, - uint8_t *prow, - uint8_t *pcol) -{ - - VL53LX_decode_row_col( spad_number, - prow, - pcol); - -} - -void VL53L3CX::VL53L3CX_hist_find_min_max_bin_values( - VL53LX_histogram_bin_data_t *pdata) -{ - - VL53LX_hist_find_min_max_bin_values(pdata); - -} - -void VL53L3CX::VL53L3CX_hist_estimate_ambient_from_ambient_bins( - VL53LX_histogram_bin_data_t *pdata) -{ - VL53LX_hist_estimate_ambient_from_ambient_bins(pdata); - -} -/* vl53lx_core.c */ -void VL53L3CX::VL53L3CX_init_version() -{ - VL53LX_init_version(Dev); - -} - -void VL53L3CX::VL53L3CX_init_ll_driver_state( - VL53LX_DeviceState device_state) -{ - - VL53LX_init_ll_driver_state(Dev, device_state); - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_update_ll_driver_rd_state() -{ - - return VL53LX_update_ll_driver_rd_state(Dev); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_check_ll_driver_rd_state() -{ - - return VL53LX_check_ll_driver_rd_state(Dev); - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_update_ll_driver_cfg_state() -{ - - return VL53LX_update_ll_driver_cfg_state(Dev); - -} - -void VL53L3CX::VL53L3CX_copy_rtn_good_spads_to_buffer( - VL53LX_nvm_copy_data_t *pdata, - uint8_t *pbuffer) -{ - - VL53LX_copy_rtn_good_spads_to_buffer( pdata,pbuffer); - -} - -void VL53L3CX::VL53L3CX_init_system_results( - VL53LX_system_results_t *pdata) -{ - - VL53LX_init_system_results(pdata); - -} -void VL53L3CX::VL53L3CX_init_zone_results_structure( - uint8_t active_zones, - VL53LX_zone_results_t *pdata) -{ - - V53L1_init_zone_results_structure(active_zones, pdata); - -} - -void VL53L3CX::VL53L3CX_init_zone_dss_configs() -{ - - V53L1_init_zone_dss_configs(Dev); - -} - -void VL53L3CX::VL53L3CX_init_histogram_config_structure( - uint8_t even_bin0, - uint8_t even_bin1, - uint8_t even_bin2, - uint8_t even_bin3, - uint8_t even_bin4, - uint8_t even_bin5, - uint8_t odd_bin0, - uint8_t odd_bin1, - uint8_t odd_bin2, - uint8_t odd_bin3, - uint8_t odd_bin4, - uint8_t odd_bin5, - VL53LX_histogram_config_t *pdata) -{ - - - VL53LX_init_histogram_config_structure(even_bin0, - even_bin1, - even_bin2, - even_bin3, - even_bin4, - even_bin5, - odd_bin0, - odd_bin1, - odd_bin2, - odd_bin3, - odd_bin4, - odd_bin5, - pdata); - -} - -void VL53L3CX::VL53L3CX_init_histogram_multizone_config_structure( - uint8_t even_bin0, - uint8_t even_bin1, - uint8_t even_bin2, - uint8_t even_bin3, - uint8_t even_bin4, - uint8_t even_bin5, - uint8_t odd_bin0, - uint8_t odd_bin1, - uint8_t odd_bin2, - uint8_t odd_bin3, - uint8_t odd_bin4, - uint8_t odd_bin5, - VL53LX_histogram_config_t *pdata) -{ - - VL53LX_init_histogram_multizone_config_structure( even_bin0, - even_bin1, - even_bin2, - even_bin3, - even_bin4, - even_bin5, - odd_bin0, - odd_bin1, - odd_bin2, - odd_bin3, - odd_bin4, - odd_bin5, - pdata); - -} - -void VL53L3CX::VL53L3CX_init_xtalk_bin_data_struct( - uint32_t bin_value, - uint16_t VL53LX_p_021, - VL53LX_xtalk_histogram_shape_t *pdata) -{ - - VL53LX_init_xtalk_bin_data_struct( bin_value, - VL53LX_p_021, - pdata); - -} - -void VL53L3CX::VL53L3CX_i2c_encode_uint16_t( - uint16_t ip_value, - uint16_t count, - uint8_t *pbuffer) -{ - - VL53LX_i2c_encode_uint16_t( ip_value, - count, - pbuffer); - -} - -uint16_t VL53L3CX::VL53L3CX_i2c_decode_uint16_t( - uint16_t count, - uint8_t *pbuffer) -{ - - return VL53LX_i2c_decode_uint16_t( count, pbuffer); - -} - -void VL53L3CX::VL53L3CX_i2c_encode_int16_t( - int16_t ip_value, - uint16_t count, - uint8_t *pbuffer) -{ - - return VL53LX_i2c_encode_uint16_t( ip_value, count, pbuffer); - -} - -int16_t VL53L3CX::VL53L3CX_i2c_decode_int16_t( - uint16_t count, - uint8_t *pbuffer) -{ - - return VL53LX_i2c_decode_int16_t(count,pbuffer); - -} - -void VL53L3CX::VL53L3CX_i2c_encode_uint32_t( - uint32_t ip_value, - uint16_t count, - uint8_t *pbuffer) -{ - - VL53LX_i2c_encode_uint32_t(ip_value,count,pbuffer); - -} - - -uint32_t VL53L3CX::VL53L3CX_i2c_decode_uint32_t( - uint16_t count, - uint8_t *pbuffer) -{ - - return VL53LX_i2c_decode_uint32_t( count, pbuffer); - -} - -uint32_t VL53L3CX::VL53L3CX_i2c_decode_with_mask( - uint16_t count, - uint8_t *pbuffer, - uint32_t bit_mask, - uint32_t down_shift, - uint32_t offset) -{ - - return VL53LX_i2c_decode_with_mask( count, pbuffer, bit_mask,down_shift,offset); - -} - -void VL53L3CX::VL53L3CX_i2c_encode_int32_t( - int32_t ip_value, - uint16_t count, - uint8_t *pbuffer) -{ - - return VL53LX_i2c_encode_int32_t( ip_value, count, pbuffer); - -} - -int32_t VL53L3CX::VL53L3CX_i2c_decode_int32_t( - uint16_t count, - uint8_t *pbuffer) -{ - - return VL53LX_i2c_decode_int32_t( count,pbuffer); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_start_test( - uint8_t test_mode__ctrl) -{ - - return VL53LX_start_test(Dev,test_mode__ctrl); - -} -VL53LX_Error VL53L3CX::VL53L3CX_set_firmware_enable_register(uint8_t value) -{ - - return VL53LX_set_firmware_enable_register(Dev,value); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_enable_firmware() -{ - - return VL53LX_enable_firmware(Dev); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_disable_firmware() -{ - return VL53LX_disable_firmware(Dev); -} - - -VL53LX_Error VL53L3CX::VL53L3CX_set_powerforce_register( - uint8_t value) -{ - - return VL53LX_set_powerforce_register(Dev, value); - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_enable_powerforce() -{ - - return VL53LX_enable_powerforce(Dev); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_disable_powerforce() -{ - - return VL53LX_disable_powerforce(Dev); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_clear_interrupt() -{ - - return VL53LX_clear_interrupt(Dev); - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_force_shadow_stream_count_to_zero() -{ - - return VL53LX_force_shadow_stream_count_to_zero(Dev); - -} - -uint32_t VL53L3CX::VL53L3CX_calc_macro_period_us( - uint16_t fast_osc_frequency, - uint8_t VL53LX_p_005) -{ - - return VL53LX_calc_macro_period_us( - fast_osc_frequency, - VL53LX_p_005); - -} - -uint16_t VL53L3CX::VL53L3CX_calc_range_ignore_threshold( - uint32_t central_rate, - int16_t x_gradient, - int16_t y_gradient, - uint8_t rate_mult) -{ - - return VL53LX_calc_range_ignore_threshold( central_rate, - x_gradient, - y_gradient, - rate_mult); - - -} - -uint32_t VL53L3CX::VL53L3CX_calc_timeout_mclks( - uint32_t timeout_us, - uint32_t macro_period_us) -{ - - return VL53LX_calc_timeout_mclks(timeout_us, macro_period_us); - -} -uint16_t VL53L3CX::VL53L3CX_calc_encoded_timeout( - uint32_t timeout_us, - uint32_t macro_period_us) -{ - - return VL53LX_calc_encoded_timeout(timeout_us, - macro_period_us); -} - -uint32_t VL53L3CX::VL53L3CX_calc_timeout_us( - uint32_t timeout_mclks, - uint32_t macro_period_us) -{ - - return VL53LX_calc_timeout_us(timeout_mclks, - macro_period_us); - -} - -uint32_t VL53L3CX::VL53L3CX_calc_crosstalk_plane_offset_with_margin( - uint32_t plane_offset_kcps, - int16_t margin_offset_kcps) -{ - - return VL53LX_calc_crosstalk_plane_offset_with_margin( plane_offset_kcps, - margin_offset_kcps); -} - -uint32_t VL53L3CX::VL53L3CX_calc_decoded_timeout_us( - uint16_t timeout_encoded, - uint32_t macro_period_us) -{ - - return VL53LX_calc_decoded_timeout_us( timeout_encoded, - macro_period_us); - -} - -uint16_t VL53L3CX::VL53L3CX_encode_timeout(uint32_t timeout_mclks) -{ - - return VL53LX_encode_timeout(timeout_mclks); - -} - -uint32_t VL53L3CX::VL53L3CX_decode_timeout(uint16_t encoded_timeout) -{ - - return VL53LX_decode_timeout(encoded_timeout); - -} - - - - -VL53LX_Error VL53L3CX::VL53L3CX_calc_timeout_register_values( - uint32_t phasecal_config_timeout_us, - uint32_t mm_config_timeout_us, - uint32_t range_config_timeout_us, - uint16_t fast_osc_frequency, - VL53LX_general_config_t *pgeneral, - VL53LX_timing_config_t *ptiming) -{ - - return VL53LX_calc_timeout_register_values( - phasecal_config_timeout_us, - mm_config_timeout_us, - range_config_timeout_us, - fast_osc_frequency, - pgeneral, - ptiming); - - -} - -uint8_t VL53L3CX::VL53L3CX_encode_vcsel_period(uint8_t VL53LX_p_030) -{ - - return VL53LX_encode_vcsel_period(VL53LX_p_030); - -} - -uint32_t VL53L3CX::VL53L3CX_decode_unsigned_integer( - uint8_t *pbuffer, - uint8_t no_of_bytes) -{ - - return VL53LX_decode_unsigned_integer(pbuffer, no_of_bytes); - -} - - -void VL53L3CX::VL53L3CX_encode_unsigned_integer( - uint32_t ip_value, - uint8_t no_of_bytes, - uint8_t *pbuffer) -{ - - VL53LX_encode_unsigned_integer( ip_value, - no_of_bytes, - pbuffer); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_hist_copy_and_scale_ambient_info( - VL53LX_zone_hist_info_t *pidata, - VL53LX_histogram_bin_data_t *podata) -{ - - return VL53LX_hist_copy_and_scale_ambient_info( pidata, - podata); - - - } - - -void VL53L3CX::VL53L3CX_hist_get_bin_sequence_config( - VL53LX_histogram_bin_data_t *pdata) -{ - - VL53LX_hist_get_bin_sequence_config(Dev, pdata); - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_hist_phase_consistency_check( - VL53LX_zone_hist_info_t *phist_prev, - VL53LX_zone_objects_t *prange_prev, - VL53LX_range_results_t *prange_curr) -{ - - return VL53LX_hist_phase_consistency_check( - Dev, - phist_prev, - prange_prev, - prange_curr); - -} - - - -VL53LX_Error VL53L3CX::VL53L3CX_hist_events_consistency_check( - uint8_t event_sigma, - uint16_t min_effective_spad_count, - VL53LX_zone_hist_info_t *phist_prev, - VL53LX_object_data_t *prange_prev, - VL53LX_range_data_t *prange_curr, - int32_t *pevents_tolerance, - int32_t *pevents_delta, - VL53LX_DeviceError *prange_status) -{ - - return VL53LX_hist_events_consistency_check( event_sigma, - min_effective_spad_count, - phist_prev, - prange_prev, - prange_curr, - pevents_tolerance, - pevents_delta, - prange_status); - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_hist_merged_pulse_check( - int16_t min_max_tolerance_mm, - VL53LX_range_data_t *pdata, - VL53LX_DeviceError *prange_status) -{ - - return VL53LX_hist_merged_pulse_check( min_max_tolerance_mm, - pdata, - prange_status); - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_hist_xmonitor_consistency_check( - VL53LX_zone_hist_info_t *phist_prev, - VL53LX_zone_objects_t *prange_prev, - VL53LX_range_data_t *prange_curr) -{ - - return VL53LX_hist_xmonitor_consistency_check( - Dev, - phist_prev, - prange_prev, - prange_curr); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_hist_wrap_dmax( - VL53LX_hist_post_process_config_t *phistpostprocess, - VL53LX_histogram_bin_data_t *pcurrent, - int16_t *pwrap_dmax_mm) -{ - - - return VL53LX_hist_wrap_dmax( phistpostprocess, - pcurrent, - pwrap_dmax_mm); - -} - - -void VL53L3CX::VL53L3CX_hist_combine_mm1_mm2_offsets( - int16_t mm1_offset_mm, - int16_t mm2_offset_mm, - uint8_t encoded_mm_roi_centre, - uint8_t encoded_mm_roi_size, - uint8_t encoded_zone_centre, - uint8_t encoded_zone_size, - VL53LX_additional_offset_cal_data_t *pcal_data, - uint8_t *pgood_spads, - uint16_t aperture_attenuation, - int16_t *prange_offset_mm) -{ - - return VL53LX_hist_combine_mm1_mm2_offsets( - mm1_offset_mm, - mm2_offset_mm, - encoded_mm_roi_centre, - encoded_mm_roi_size, - encoded_zone_centre, - encoded_zone_size, - pcal_data, - pgood_spads, - aperture_attenuation, - prange_offset_mm); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_hist_xtalk_extract_calc_window( - int16_t target_distance_mm, - uint16_t target_width_oversize, - VL53LX_histogram_bin_data_t *phist_bins, - VL53LX_hist_xtalk_extract_data_t *pxtalk_data) -{ - - return VL53LX_hist_xtalk_extract_calc_window( target_distance_mm, - target_width_oversize, - phist_bins, - pxtalk_data); - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_hist_xtalk_extract_calc_event_sums( - VL53LX_histogram_bin_data_t *phist_bins, - VL53LX_hist_xtalk_extract_data_t *pxtalk_data) -{ - - return VL53LX_hist_xtalk_extract_calc_event_sums( phist_bins, pxtalk_data); - -} -VL53LX_Error VL53L3CX::VL53L3CX_hist_xtalk_extract_calc_rate_per_spad( - VL53LX_hist_xtalk_extract_data_t *pxtalk_data) -{ - - return VL53LX_hist_xtalk_extract_calc_rate_per_spad( pxtalk_data ); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_hist_xtalk_extract_calc_shape( - VL53LX_hist_xtalk_extract_data_t *pxtalk_data, - VL53LX_xtalk_histogram_shape_t *pxtalk_shape) -{ - - return VL53LX_hist_xtalk_extract_calc_shape( pxtalk_data, pxtalk_shape); - -} - - - -VL53LX_Error VL53L3CX::VL53L3CX_hist_xtalk_shape_model( - uint16_t events_per_bin, - uint16_t pulse_centre, - uint16_t pulse_width, - VL53LX_xtalk_histogram_shape_t *pxtalk_shape) -{ - - - VL53LX_Error status = VL53LX_ERROR_NONE; - - uint32_t phase_start = 0; - uint32_t phase_stop = 0; - uint32_t phase_bin = 0; - - uint32_t bin_start = 0; - uint32_t bin_stop = 0; - - uint32_t lb = 0; - uint16_t VL53LX_p_018 = 0; - - pxtalk_shape->VL53LX_p_019 = 0; - pxtalk_shape->VL53LX_p_020 = VL53LX_XTALK_HISTO_BINS; - pxtalk_shape->VL53LX_p_021 = VL53LX_XTALK_HISTO_BINS; - - pxtalk_shape->zero_distance_phase = pulse_centre; - pxtalk_shape->phasecal_result__reference_phase = - pulse_centre + (3 * 2048); - - - if (pulse_centre > (pulse_width >> 1)) - phase_start = (uint32_t)pulse_centre - - ((uint32_t)pulse_width >> 1); - else { - phase_start = 0; - } - - phase_stop = (uint32_t)pulse_centre + - ((uint32_t)pulse_width >> 1); - - - bin_start = (phase_start / 2048); - bin_stop = (phase_stop / 2048); - - for (lb = 0; lb < VL53LX_XTALK_HISTO_BINS; lb++) { - VL53LX_p_018 = 0; - - - if (lb == bin_start && lb == bin_stop) { - VL53LX_p_018 = - VL53LX_hist_xtalk_shape_model_interp( - events_per_bin, - phase_stop - phase_start); - - } else if (lb > bin_start && lb < bin_stop) { - - - VL53LX_p_018 = events_per_bin; - - } else if (lb == bin_start) { - - - phase_bin = (lb + 1) * 2048; - VL53LX_p_018 = - VL53LX_hist_xtalk_shape_model_interp( - events_per_bin, - (phase_bin - phase_start)); - - } else if (lb == bin_stop) { - - - phase_bin = lb * 2048; - VL53LX_p_018 = - VL53LX_hist_xtalk_shape_model_interp( - events_per_bin, - (phase_stop - phase_bin)); - } - - pxtalk_shape->bin_data[lb] = VL53LX_p_018; - } - - - return status; -} - -uint16_t VL53L3CX::VL53L3CX_hist_xtalk_shape_model_interp( - uint16_t events_per_bin, - uint32_t phase_delta) -{ - - return VL53LX_hist_xtalk_shape_model_interp( events_per_bin,phase_delta); - -} - -void VL53L3CX::VL53L3CX_spad_number_to_byte_bit_index( - uint8_t spad_number, - uint8_t *pbyte_index, - uint8_t *pbit_index, - uint8_t *pbit_mask) -{ - VL53LX_spad_number_to_byte_bit_index( - spad_number, - pbyte_index, - pbit_index, - pbit_mask); - -} - -void VL53L3CX::VL53L3CX_encode_row_col( - uint8_t row, - uint8_t col, - uint8_t *pspad_number) -{ - - VL53LX_encode_row_col(row, col, pspad_number); - -} -void VL53L3CX::VL53L3CX_decode_zone_size( - uint8_t encoded_xy_size, - uint8_t *pwidth, - uint8_t *pheight) -{ - - VL53LX_decode_zone_size(encoded_xy_size, pwidth, pheight); - -} - -void VL53L3CX::VL53L3CX_encode_zone_size( - uint8_t width, - uint8_t height, - uint8_t *pencoded_xy_size) -{ - - VL53LX_encode_zone_size(width, height, pencoded_xy_size); - -} - -void VL53L3CX::VL53L3CX_decode_zone_limits( - uint8_t encoded_xy_centre, - uint8_t encoded_xy_size, - int16_t *px_ll, - int16_t *py_ll, - int16_t *px_ur, - int16_t *py_ur) -{ - - VL53LX_decode_zone_limits( - encoded_xy_centre, - encoded_xy_size, - px_ll, - py_ll, - px_ur, - py_ur); - -} - -uint8_t VL53L3CX::VL53L3CX_is_aperture_location( - uint8_t row, - uint8_t col) -{ - - return VL53LX_is_aperture_location( row, col); - -} - -void VL53L3CX::VL53L3CX_calc_max_effective_spads( - uint8_t encoded_zone_centre, - uint8_t encoded_zone_size, - uint8_t *pgood_spads, - uint16_t aperture_attenuation, - uint16_t *pmax_effective_spads) -{ - - VL53LX_calc_max_effective_spads(encoded_zone_centre, - encoded_zone_size, - pgood_spads, - aperture_attenuation, - pmax_effective_spads); - -} - - - - -void VL53L3CX::VL53L3CX_calc_mm_effective_spads( - uint8_t encoded_mm_roi_centre, - uint8_t encoded_mm_roi_size, - uint8_t encoded_zone_centre, - uint8_t encoded_zone_size, - uint8_t *pgood_spads, - uint16_t aperture_attenuation, - uint16_t *pmm_inner_effective_spads, - uint16_t *pmm_outer_effective_spads) -{ - - VL53LX_calc_mm_effective_spads( encoded_mm_roi_centre, - encoded_mm_roi_size, - encoded_zone_centre, - encoded_zone_size, - pgood_spads, - aperture_attenuation, - pmm_inner_effective_spads, - pmm_outer_effective_spads); - -} - - -void VL53L3CX::VL53L3CX_hist_copy_results_to_sys_and_core( - VL53LX_histogram_bin_data_t *pbins, - VL53LX_range_results_t *phist, - VL53LX_system_results_t *psys, - VL53LX_core_results_t *pcore) -{ - - return VL53LX_hist_copy_results_to_sys_and_core(pbins, - phist, - psys, - pcore); - - -} - - - - - -VL53LX_Error VL53L3CX::VL53L3CX_save_cfg_data() -{ - - return VL53LX_save_cfg_data(Dev); - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_dynamic_zone_update( - VL53LX_range_results_t *presults) -{ - - return VL53LX_dynamic_zone_update(Dev, presults); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_multizone_hist_bins_update() -{ - - return VL53LX_multizone_hist_bins_update(Dev); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_update_internal_stream_counters( - uint8_t external_stream_count, - uint8_t *pinternal_stream_count, - uint8_t *pinternal_stream_count_val) -{ - - - return VL53LX_update_internal_stream_counters( Dev, - external_stream_count, - pinternal_stream_count, - pinternal_stream_count_val); - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_set_histogram_multizone_initial_bin_config( - VL53LX_zone_config_t *pzone_cfg, - VL53LX_histogram_config_t *phist_cfg, - VL53LX_histogram_config_t *pmulti_hist) -{ - - return VL53LX_set_histogram_multizone_initial_bin_config(pzone_cfg, - phist_cfg, - pmulti_hist); - -} - -uint8_t VL53L3CX::VL53L3CX_encode_GPIO_interrupt_config( - VL53LX_GPIO_interrupt_config_t *pintconf) -{ - - return VL53LX_encode_GPIO_interrupt_config(pintconf); - -} - -VL53LX_GPIO_interrupt_config_t VL53L3CX::VL53L3CX_decode_GPIO_interrupt_config( - uint8_t system__interrupt_config) -{ - - return VL53LX_decode_GPIO_interrupt_config( system__interrupt_config); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_set_GPIO_distance_threshold( - uint16_t threshold_high, - uint16_t threshold_low) -{ - - return VL53LX_set_GPIO_distance_threshold( Dev, - threshold_high, - threshold_low); - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_set_GPIO_rate_threshold( - uint16_t threshold_high, - uint16_t threshold_low) -{ - - return VL53LX_set_GPIO_rate_threshold( Dev, - threshold_high, - threshold_low); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_set_GPIO_thresholds_from_struct( - VL53LX_GPIO_interrupt_config_t *pintconf) -{ - - return VL53LX_set_GPIO_thresholds_from_struct( Dev, pintconf); -} - - -VL53LX_Error VL53L3CX::VL53L3CX_set_ref_spad_char_config( - uint8_t vcsel_period_a, - uint32_t phasecal_timeout_us, - uint16_t total_rate_target_mcps, - uint16_t max_count_rate_rtn_limit_mcps, - uint16_t min_count_rate_rtn_limit_mcps, - uint16_t fast_osc_frequency) -{ - - return VL53LX_set_ref_spad_char_config(Dev, - vcsel_period_a, - phasecal_timeout_us, - total_rate_target_mcps, - max_count_rate_rtn_limit_mcps, - min_count_rate_rtn_limit_mcps, - fast_osc_frequency); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_set_ssc_config( - VL53LX_ssc_config_t *pssc_cfg, - uint16_t fast_osc_frequency) -{ - - return VL53LX_set_ssc_config( Dev, - pssc_cfg, - fast_osc_frequency); - - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_get_spad_rate_data( - VL53LX_spad_rate_data_t *pspad_rates) -{ - - return VL53LX_get_spad_rate_data( Dev, pspad_rates); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_dynamic_xtalk_correction_calc_required_samples() -{ - - return VL53LX_dynamic_xtalk_correction_calc_required_samples( Dev); -} - -VL53LX_Error VL53L3CX::VL53L3CX_dynamic_xtalk_correction_calc_new_xtalk( - uint32_t xtalk_offset_out, - VL53LX_smudge_corrector_config_t *pconfig, - VL53LX_smudge_corrector_data_t *pout, - uint8_t add_smudge, - uint8_t soft_update -) -{ - - return VL53LX_dynamic_xtalk_correction_calc_new_xtalk( Dev, xtalk_offset_out, pconfig, pout,add_smudge,soft_update); -} - - - -VL53LX_Error VL53L3CX::VL53L3CX_dynamic_xtalk_correction_corrector() -{ - - return VL53LX_dynamic_xtalk_correction_corrector( Dev); -} - -VL53LX_Error VL53L3CX::VL53L3CX_dynamic_xtalk_correction_data_init() -{ - return VL53LX_dynamic_xtalk_correction_data_init( Dev); -} - - -VL53LX_Error VL53L3CX::VL53L3CX_dynamic_xtalk_correction_output_init( - VL53LX_LLDriverResults_t *pres -) -{ - - return VL53LX_dynamic_xtalk_correction_output_init(pres); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_xtalk_cal_data_init() -{ - - return VL53LX_xtalk_cal_data_init( Dev ); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_low_power_auto_data_init() -{ - - return VL53LX_low_power_auto_data_init( Dev); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_low_power_auto_data_stop_range() -{ - - return VL53LX_low_power_auto_data_stop_range(Dev); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_config_low_power_auto_mode( - VL53LX_general_config_t *pgeneral, - VL53LX_dynamic_config_t *pdynamic, - VL53LX_low_power_auto_data_t *plpadata -) -{ - - return VL53LX_config_low_power_auto_mode( pgeneral, pdynamic,plpadata); - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_low_power_auto_setup_manual_calibration() -{ - - return VL53LX_low_power_auto_setup_manual_calibration( Dev); -} - - -VL53LX_Error VL53L3CX::VL53L3CX_low_power_auto_update_DSS() -{ - - return VL53LX_low_power_auto_update_DSS( Dev ); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_compute_histo_merge_nb(uint8_t *histo_merge_nb) -{ - - return VL53LX_compute_histo_merge_nb( Dev, histo_merge_nb); - -} - -/* vl53lx_wait.c */ - - -VL53LX_Error VL53L3CX::VL53L3CX_wait_for_boot_completion() -{ - - return VL53LX_wait_for_boot_completion(Dev); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_wait_for_firmware_ready() -{ - - return VL53LX_wait_for_firmware_ready(Dev); - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_wait_for_range_completion() -{ - - return VL53LX_wait_for_range_completion(Dev); - -} -VL53LX_Error VL53L3CX::VL53L3CX_wait_for_test_completion() -{ - return VL53LX_wait_for_test_completion(Dev); -} - -VL53LX_Error VL53L3CX::VL53L3CX_is_boot_complete( - uint8_t *pready) -{ - - return VL53LX_is_boot_complete( Dev, - pready); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_is_firmware_ready( - uint8_t *pready) -{ - - return VL53LX_is_firmware_ready( Dev, pready); - -} -VL53LX_Error VL53L3CX::VL53L3CX_is_new_data_ready( - uint8_t *pready) -{ - - return VL53LX_is_new_data_ready(Dev, pready); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_poll_for_boot_completion( - uint32_t timeout_ms) -{ - - return VL53LX_poll_for_boot_completion(Dev,timeout_ms); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_poll_for_firmware_ready( - uint32_t timeout_ms) -{ - - return VL53LX_poll_for_firmware_ready(Dev,timeout_ms); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_poll_for_range_completion( - uint32_t timeout_ms) -{ - - return VL53LX_poll_for_range_completion(Dev, timeout_ms); - -} - -/* vl53lx_zone_presets.c */ - - -VL53LX_Error VL53L3CX::VL53L3CX_init_zone_config_histogram_bins( - VL53LX_zone_config_t *pdata) -{ - - return VL53LX_init_zone_config_histogram_bins(pdata); - -} - -/* vl53lx_api_preset_modes.h */ - -VL53LX_Error VL53L3CX::VL53L3CX_init_refspadchar_config_struct( - VL53LX_refspadchar_config_t *pdata) -{ - - return VL53LX_init_refspadchar_config_struct(pdata); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_init_ssc_config_struct( - VL53LX_ssc_config_t *pdata) -{ - - return VL53LX_init_ssc_config_struct(pdata); - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_init_xtalk_config_struct( - VL53LX_customer_nvm_managed_t *pnvm, - VL53LX_xtalk_config_t *pdata) -{ - - return VL53LX_init_xtalk_config_struct( - pnvm, - pdata); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_init_xtalk_extract_config_struct( - VL53LX_xtalkextract_config_t *pdata) -{ - - return VL53LX_init_xtalk_extract_config_struct(pdata); - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_init_offset_cal_config_struct( - VL53LX_offsetcal_config_t *pdata) -{ - - return VL53LX_init_offset_cal_config_struct(pdata); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_init_zone_cal_config_struct( - VL53LX_zonecal_config_t *pdata) -{ - - return VL53LX_init_zone_cal_config_struct(pdata); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_init_hist_post_process_config_struct( - uint8_t xtalk_compensation_enable, - VL53LX_hist_post_process_config_t *pdata) -{ - - return VL53LX_init_hist_post_process_config_struct( - xtalk_compensation_enable, - pdata); - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_init_dmax_calibration_data_struct( - VL53LX_dmax_calibration_data_t *pdata) -{ - - return VL53LX_init_dmax_calibration_data_struct( pdata ); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_init_tuning_parm_storage_struct( - VL53LX_tuning_parm_storage_t *pdata) -{ - - return VL53LX_init_tuning_parm_storage_struct( pdata ); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_init_hist_gen3_dmax_config_struct( - VL53LX_hist_gen3_dmax_config_t *pdata) -{ - return VL53LX_init_hist_gen3_dmax_config_struct( pdata); -} - - -VL53LX_Error VL53L3CX::VL53L3CX_preset_mode_standard_ranging( - VL53LX_static_config_t *pstatic, - VL53LX_histogram_config_t *phistogram, - VL53LX_general_config_t *pgeneral, - VL53LX_timing_config_t *ptiming, - VL53LX_dynamic_config_t *pdynamic, - VL53LX_system_control_t *psystem, - VL53LX_tuning_parm_storage_t *ptuning_parms, - VL53LX_zone_config_t *pzone_cfg) -{ - - - return VL53LX_preset_mode_standard_ranging( - pstatic, - phistogram, - pgeneral, - ptiming, - pdynamic, - psystem, - ptuning_parms, - pzone_cfg); -} - -VL53LX_Error VL53L3CX::VL53L3CX_preset_mode_histogram_ranging( - VL53LX_hist_post_process_config_t *phistpostprocess, - VL53LX_static_config_t *pstatic, - VL53LX_histogram_config_t *phistogram, - VL53LX_general_config_t *pgeneral, - VL53LX_timing_config_t *ptiming, - VL53LX_dynamic_config_t *pdynamic, - VL53LX_system_control_t *psystem, - VL53LX_tuning_parm_storage_t *ptuning_parms, - VL53LX_zone_config_t *pzone_cfg) -{ - - return VL53LX_preset_mode_histogram_ranging( phistpostprocess, - pstatic, - phistogram, - pgeneral, - ptiming, - pdynamic, - psystem, - ptuning_parms, - pzone_cfg); - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_preset_mode_histogram_long_range( - VL53LX_hist_post_process_config_t *phistpostprocess, - VL53LX_static_config_t *pstatic, - VL53LX_histogram_config_t *phistogram, - VL53LX_general_config_t *pgeneral, - VL53LX_timing_config_t *ptiming, - VL53LX_dynamic_config_t *pdynamic, - VL53LX_system_control_t *psystem, - VL53LX_tuning_parm_storage_t *ptuning_parms, - VL53LX_zone_config_t *pzone_cfg) -{ - - return VL53LX_preset_mode_histogram_long_range( phistpostprocess, - pstatic, - phistogram, - pgeneral, - ptiming, - pdynamic, - psystem, - ptuning_parms, - pzone_cfg); - -} - - - -VL53LX_Error VL53L3CX::VL53L3CX_preset_mode_histogram_medium_range( - VL53LX_hist_post_process_config_t *phistpostprocess, - VL53LX_static_config_t *pstatic, - VL53LX_histogram_config_t *phistogram, - VL53LX_general_config_t *pgeneral, - VL53LX_timing_config_t *ptiming, - VL53LX_dynamic_config_t *pdynamic, - VL53LX_system_control_t *psystem, - VL53LX_tuning_parm_storage_t *ptuning_parms, - VL53LX_zone_config_t *pzone_cfg) -{ - - - return VL53LX_preset_mode_histogram_medium_range( phistpostprocess, - pstatic, - phistogram, - pgeneral, - ptiming, - pdynamic, - psystem, - ptuning_parms, - pzone_cfg); - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_preset_mode_histogram_short_range( - VL53LX_hist_post_process_config_t *phistpostprocess, - VL53LX_static_config_t *pstatic, - VL53LX_histogram_config_t *phistogram, - VL53LX_general_config_t *pgeneral, - VL53LX_timing_config_t *ptiming, - VL53LX_dynamic_config_t *pdynamic, - VL53LX_system_control_t *psystem, - VL53LX_tuning_parm_storage_t *ptuning_parms, - VL53LX_zone_config_t *pzone_cfg) -{ - - - return VL53LX_preset_mode_histogram_short_range(phistpostprocess, - pstatic, - phistogram, - pgeneral, - ptiming, - pdynamic, - psystem, - ptuning_parms, - pzone_cfg); - -} - - - - - -void VL53L3CX::VL53L3CX_copy_hist_bins_to_static_cfg( - VL53LX_histogram_config_t *phistogram, - VL53LX_static_config_t *pstatic, - VL53LX_timing_config_t *ptiming) -{ - - return VL53LX_copy_hist_bins_to_static_cfg(phistogram, - pstatic, - ptiming); - -} - - -/* vl53lx_silicon_core.c */ - -VL53LX_Error VL53L3CX::VL53L3CX_is_firmware_ready_silicon( - uint8_t *pready) -{ - - return VL53LX_is_firmware_ready_silicon( Dev, pready); - -} - -/* vl53lx_hist_core.c */ - - -/* vl53lx_xtalk.c */ - - -VL53LX_Error VL53L3CX::VL53L3CX_xtalk_calibration_process_data( - VL53LX_xtalk_range_results_t *pxtalk_results, - VL53LX_xtalk_histogram_data_t *pxtalk_shape, - VL53LX_xtalk_calibration_results_t *pxtalk_cal) -{ - - return VL53LX_xtalk_calibration_process_data( pxtalk_results, - pxtalk_shape, - pxtalk_cal); - -} - - - - -/* vl53lx_sigma_estimate.c */ - - - -/* vl53lx_hist_algos_gen3.c */ - - - - - -/* vl53lx_hist_algos_gen4.c */ - - - - - -/* vl53lx_dmax.c */ - - - - - -/* vl53lx_api_calibration.c */ - - -VL53LX_Error VL53L3CX::VL53L3CX_run_ref_spad_char( - VL53LX_Error *pcal_status) -{ - return VL53LX_run_ref_spad_char(Dev, pcal_status); -} - - -VL53LX_Error VL53L3CX::VL53L3CX_get_and_avg_xtalk_samples( - uint8_t num_of_samples, - uint8_t measurement_mode, - int16_t xtalk_filter_thresh_max_mm, - int16_t xtalk_filter_thresh_min_mm, - uint16_t xtalk_max_valid_rate_kcps, - uint8_t xtalk_result_id, - uint8_t xtalk_histo_id, - VL53LX_xtalk_range_results_t *pXR, - VL53LX_histogram_bin_data_t *psum_histo, - VL53LX_histogram_bin_data_t *pavg_histo) -{ - - return VL53LX_get_and_avg_xtalk_samples( Dev, - num_of_samples, - measurement_mode, - xtalk_filter_thresh_max_mm, - xtalk_filter_thresh_min_mm, - xtalk_max_valid_rate_kcps, - xtalk_result_id, - xtalk_histo_id, - pXR, - psum_histo, - pavg_histo); - -} - - - -VL53LX_Error VL53L3CX::VL53L3CX_run_device_test( - VL53LX_DeviceTestMode device_test_mode) -{ - return VL53LX_run_device_test( Dev, device_test_mode); -} - -void VL53L3CX::VL53L3CX_hist_xtalk_extract_data_init( - VL53LX_hist_xtalk_extract_data_t *pxtalk_data) -{ - - VL53LX_hist_xtalk_extract_data_init(pxtalk_data); - -} - -VL53LX_Error VL53L3CX::VL53L3CX_hist_xtalk_extract_update( - int16_t target_distance_mm, - uint16_t target_width_oversize, - VL53LX_histogram_bin_data_t *phist_bins, - VL53LX_hist_xtalk_extract_data_t *pxtalk_data) -{ - - return VL53LX_hist_xtalk_extract_update(target_distance_mm, - target_width_oversize, - phist_bins, - pxtalk_data); - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_hist_xtalk_extract_fini( - VL53LX_histogram_bin_data_t *phist_bins, - VL53LX_hist_xtalk_extract_data_t *pxtalk_data, - VL53LX_xtalk_calibration_results_t *pxtalk_cal, - VL53LX_xtalk_histogram_shape_t *pxtalk_shape) -{ - - return VL53LX_hist_xtalk_extract_fini( phist_bins, - pxtalk_data, - pxtalk_cal, - pxtalk_shape); - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_run_hist_xtalk_extraction( - int16_t cal_distance_mm, - VL53LX_Error *pcal_status) -{ - return VL53LX_run_hist_xtalk_extraction(Dev, cal_distance_mm, pcal_status); -} - -/* vl53lx_api.c */ - -VL53LX_Error VL53L3CX::VL53L3CX_GetVersion(VL53LX_Version_t *pVersion) -{ - return VL53LX_GetVersion( pVersion); -} - -/* vl53lx_api.c */ -VL53LX_Error VL53L3CX::VL53L3CX_GetProductRevision( - uint8_t *pProductRevisionMajor, uint8_t *pProductRevisionMinor) -{ - return VL53LX_GetProductRevision( Dev, - pProductRevisionMajor, - pProductRevisionMinor); -} - -/* vl53lx_api.c */ -VL53LX_Error VL53L3CX::VL53L3CX_GetDeviceInfo( - VL53LX_DeviceInfo_t *pVL53LX_DeviceInfo) -{ - return VL53LX_GetDeviceInfo( Dev,pVL53LX_DeviceInfo); -} - -/* vl53lx_api.c */ -VL53LX_Error VL53L3CX::VL53L3CX_GetUID(uint64_t *pUid) -{ - return VL53LX_GetUID( Dev, pUid); -} -/* vl53lx_api.c */ -VL53LX_Error VL53L3CX::VL53L3CX_SetDeviceAddress(uint8_t DeviceAddress) -{ - return VL53LX_SetDeviceAddress(Dev, DeviceAddress); -} - -/* vl53lx_api.c */ -VL53LX_Error VL53L3CX::VL53L3CX_DataInit() -{ - return VL53LX_DataInit(Dev); -} - -/* vl53lx_api.c */ -VL53LX_Error VL53L3CX::VL53L3CX_WaitDeviceBooted() -{ - return VL53LX_WaitDeviceBooted(Dev); -} - - -/* vl53lx_api.c */ -VL53LX_Error VL53L3CX::VL53L3CX_SetDistanceMode( - VL53LX_DistanceModes DistanceMode) -{ - - return VL53LX_SetDistanceMode(Dev, DistanceMode); - -} -/* vl53lx_api.c */ -VL53LX_Error VL53L3CX::VL53L3CX_GetDistanceMode( - VL53LX_DistanceModes *pDistanceMode) -{ - return VL53LX_GetDistanceMode(Dev, pDistanceMode);; -} - -/* vl53lx_api.c */ -VL53LX_Error VL53L3CX::VL53L3CX_SetMeasurementTimingBudgetMicroSeconds( - uint32_t MeasurementTimingBudgetMicroSeconds) -{ - - return VL53LX_SetMeasurementTimingBudgetMicroSeconds(Dev, - MeasurementTimingBudgetMicroSeconds); - -} - -/* vl53lx_api.c */ -VL53LX_Error VL53L3CX::VL53L3CX_GetMeasurementTimingBudgetMicroSeconds( - uint32_t *pMeasurementTimingBudgetMicroSeconds) -{ - return VL53LX_GetMeasurementTimingBudgetMicroSeconds(Dev,pMeasurementTimingBudgetMicroSeconds); -} - -/* vl53lx_api.c */ -VL53LX_Error VL53L3CX::VL53L3CX_StartMeasurement() -{ - return VL53LX_StartMeasurement(Dev); -} - -/* vl53lx_api.c */ -VL53LX_Error VL53L3CX::VL53L3CX_StopMeasurement() -{ - return VL53LX_StopMeasurement(Dev); -} - -/* vl53lx_api.c */ -VL53LX_Error VL53L3CX::VL53L3CX_ClearInterruptAndStartMeasurement() -{ - return VL53LX_ClearInterruptAndStartMeasurement(Dev); -} - -/* vl53lx_api.c */ -VL53LX_Error VL53L3CX::VL53L3CX_GetMeasurementDataReady(uint8_t *pMeasurementDataReady) -{ - return VL53LX_GetMeasurementDataReady(Dev, pMeasurementDataReady); -} -/* vl53lx_api.c */ -VL53LX_Error VL53L3CX::VL53L3CX_WaitMeasurementDataReady() -{ - return VL53LX_WaitMeasurementDataReady(Dev); -} - - - -/* vl53lx_api.c */ -VL53LX_Error VL53L3CX::VL53L3CX_GetMultiRangingData( - VL53LX_MultiRangingData_t *pMultiRangingData) -{ - - return VL53LX_GetMultiRangingData(Dev, pMultiRangingData); - -} -/* vl53lx_api.c */ -VL53LX_Error VL53L3CX::VL53L3CX_GetAdditionalData(VL53LX_AdditionalData_t *pAdditionalData) -{ - return VL53LX_GetAdditionalData( Dev,pAdditionalData); -} - -/* vl53lx_api.c */ -VL53LX_Error VL53L3CX::VL53L3CX_SetTuningParameter( - uint16_t TuningParameterId, int32_t TuningParameterValue) -{ - - return VL53LX_SetTuningParameter( Dev, TuningParameterId, TuningParameterValue); - -} - -/* vl53lx_api.c */ -VL53LX_Error VL53L3CX::VL53L3CX_GetTuningParameter( - uint16_t TuningParameterId, int32_t *pTuningParameterValue) -{ - - return VL53LX_GetTuningParameter( Dev, TuningParameterId, pTuningParameterValue); - -} - -/* vl53lx_api.c */ -VL53LX_Error VL53L3CX::VL53L3CX_PerformRefSpadManagement() -{ - - return VL53LX_PerformRefSpadManagement(Dev); - -} - -/* vl53lx_api.c */ -VL53LX_Error VL53L3CX::VL53L3CX_SmudgeCorrectionEnable( - VL53LX_SmudgeCorrectionModes Mode) -{ - - return VL53LX_SmudgeCorrectionEnable(Dev, Mode); - -} - -/* vl53lx_api.c */ -VL53LX_Error VL53L3CX::VL53L3CX_SetXTalkCompensationEnable( - uint8_t XTalkCompensationEnable) -{ - - return VL53LX_SetXTalkCompensationEnable( Dev, XTalkCompensationEnable ); - -} - -/* vl53lx_api.c */ -VL53LX_Error VL53L3CX::VL53L3CX_GetXTalkCompensationEnable( - uint8_t *pXTalkCompensationEnable) -{ - - return VL53LX_GetXTalkCompensationEnable( Dev,pXTalkCompensationEnable); - -} - -/* vl53lx_api.c */ -VL53LX_Error VL53L3CX::VL53L3CX_PerformXTalkCalibration() -{ - - return VL53LX_PerformXTalkCalibration( Dev); - -} - -/* vl53lx_api.c */ -VL53LX_Error VL53L3CX::VL53L3CX_SetOffsetCorrectionMode( - VL53LX_OffsetCorrectionModes OffsetCorrectionMode) -{ - - return VL53LX_SetOffsetCorrectionMode(Dev, OffsetCorrectionMode); - -} - -/* vl53lx_api.c */ -VL53LX_Error VL53L3CX::VL53L3CX_PerformOffsetSimpleCalibration( - int32_t CalDistanceMilliMeter) -{ - - return VL53LX_PerformOffsetSimpleCalibration(Dev, CalDistanceMilliMeter); - -} - -/* vl53lx_api.c */ -VL53LX_Error VL53L3CX::VL53L3CX_PerformOffsetZeroDistanceCalibration() -{ - - return VL53LX_PerformOffsetZeroDistanceCalibration( Dev ); - -} - -/* vl53lx_api.c */ -VL53LX_Error VL53L3CX::VL53L3CX_SetCalibrationData( - VL53LX_CalibrationData_t *pCalibrationData) -{ - - return VL53LX_SetCalibrationData(Dev, pCalibrationData); - -} - -/* vl53lx_api.c */ -VL53LX_Error VL53L3CX::VL53L3CX_GetCalibrationData( - VL53LX_CalibrationData_t *pCalibrationData) -{ - - return VL53LX_GetCalibrationData(Dev,pCalibrationData); - -} - - -VL53LX_Error VL53L3CX::VL53L3CX_PerformOffsetPerVcselCalibration( - int32_t CalDistanceMilliMeter) -{ - - return VL53LX_PerformOffsetPerVcselCalibration( Dev, CalDistanceMilliMeter); - -} -
diff -r df30b960b7dc -r 7f1bbf370283 vl53l3cx_class.h --- a/vl53l3cx_class.h Wed Jul 14 14:36:12 2021 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2644 +0,0 @@ -/******************************************************************************* - Copyright © 2018, STMicroelectronics International N.V. - All rights reserved. - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of STMicroelectronics nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND - NON-INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS ARE DISCLAIMED. - IN NO EVENT SHALL STMICROELECTRONICS INTERNATIONAL N.V. BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - *****************************************************************************/ - -#ifndef __VL53LX_CLASS_H -#define __VL53LX_CLASS_H - -#ifdef _MSC_VER - #ifdef VL53LX_API_EXPORTS - #define VL53LX_API __declspec(dllexport) - #else - #define VL53LX_API - #endif -#else - #define VL53LX_API -#endif - -/* Includes ------------------------------------------------------------------*/ - -#include "mbed.h" -#include "RangeSensor.h" -#include "vl53lx_def.h" -#include "vl53L3_I2c.h" - - - -#include "PinNames.h" -#include "vl53lx_error_codes.h" -#include "vl53lx_platform_user_data.h" - -#include "vl53lx_nvm_structs.h"//cgm -#include "vl53lx_xtalk_private_structs.h" -#include "vl53lx_hist_private_structs.h" -#include "vl53lx_dmax_private_structs.h" -#include "vl53lx_api.h" - -#include "Stmpe1600.h" -/**********************************************************/ -#if (MBED_VERSION > 60300) -extern "C" void wait_ms(int ms); -#endif - - -#define VL53LX_DEFAULT_DEVICE_ADDRESS 0x52 - - - -#define VL53LX_MAX_I2C_XFER_SIZE 256 -#define CONT_CONTINUE 0 -#define CONT_NEXT_LOOP 1 -#define CONT_RESET 2 - - -/* vl53lx_api.c */ - -#ifndef MIN - #define MIN(v1, v2) ((v1) < (v2) ? (v1) : (v2)) -#endif -#ifndef MAX - #define MAX(v1, v2) ((v1) < (v2) ? (v2) : (v1)) -#endif - -#define DMAX_REFLECTANCE_IDX 2 - - - -#define LOWPOWER_AUTO_VHV_LOOP_DURATION_US 245 -#define LOWPOWER_AUTO_OVERHEAD_BEFORE_A_RANGING 1448 -#define LOWPOWER_AUTO_OVERHEAD_BETWEEN_A_B_RANGING 2100 - -#define FDA_MAX_TIMING_BUDGET_US 550000 - - -#define VL53LX_NVM_POWER_UP_DELAY_US 50 -#define VL53LX_NVM_READ_TRIGGER_DELAY_US 5 - - -#define VL53LX_D_002 0xFFFF -#define VL53LX_D_008 0xFFFF -#define VL53LX_D_003 0xFFFFFF -#define VL53LX_D_007 0xFFFFFFFF -#define VL53LX_D_005 0x7FFFFFFFFF -#define VL53LX_D_009 0xFFFFFFFFFF -#define VL53LX_D_010 0xFFFFFFFFFFFF -#define VL53LX_D_004 0xFFFFFFFFFFFFFF -#define VL53LX_D_006 0x7FFFFFFFFFFFFFFF -#define VL53LX_D_011 0xFFFFFFFFFFFFFFFF - -#define VL53L1X_DEFAULT_DEVICE_ADDRESS 0x52 -#define HIGH 1 - - -/* Classes -------------------------------------------------------------------*/ -/** Class representing a VL53L3CX sensor component - */ - -class VL53L3CX : public RangeSensor { - public: - /** Constructor - * @param[in] &i2c device I2C to be used for communication - * @param[in] &pin_gpio1 pin Mbed InterruptIn PinName to be used as component GPIO_1 INT - * @param[in] DevAddr device address, 0x52 by default - */ - - VL53L3CX(vl53L3_DevI2C *i2c, Stmpe1600DigiOut *pin, PinName pin_gpio1, uint8_t dev_addr = VL53LX_DEFAULT_DEVICE_ADDRESS) - : RangeSensor(), dev_i2c(i2c), _expgpio0(pin) - { - - Dev = new VL53L3CX_Object_t; - I2cDevAddr = dev_addr; - Dev->IO.Address = VL53LX_DEFAULT_DEVICE_ADDRESS; - - _gpio0 = NULL; - if (pin_gpio1 != NC) { - _gpio1Int = new InterruptIn(pin_gpio1); - } else { - _gpio1Int = NULL; - } - - i2c_inst = i2c; - - } - - - /** Destructor - */ - virtual ~VL53L3CX() {} - /* warning: VL53LX class inherits from GenericSensor, RangeSensor and LightSensor, that haven`t a destructor. - The warning should request to introduce a virtual destructor to make sure to delete the object */ - - /*** Interface Methods ***/ - /*** High level API ***/ - /** - * @brief PowerOn the sensor - * @return void - */ - - - /* turns on the sensor */ - virtual void VL53LX_On(void) - { - printf("VL53L1_On\r\n"); - if (_gpio0) { - *_gpio0 = 1; - } else { - if (_expgpio0) { - *_expgpio0 = 1; - } - } - wait_ms(100); - } - - /** - * @brief PowerOff the sensor - * @return void - */ - /* turns off the sensor */ - virtual void VL53LX_Off(void) - { - printf("VL53L1_Off\r\n"); - if (_gpio0) { - *_gpio0 = 0; - } else { - if (_expgpio0) { - *_expgpio0 = 0; - } - } - wait_ms(100); - } - - - - /** - * @brief Initialize the sensor with default values - * @return 0 on Success - */ - - VL53LX_Error InitSensor(uint8_t address) - { - - VL53LX_Error status = VL53LX_ERROR_NONE; - VL53LX_Off(); - VL53LX_On(); - Dev->IO.Address = VL53LX_DEFAULT_DEVICE_ADDRESS; - - status = VL53L3CX_SetDeviceAddress(address); - - wait_ms(100); - - if (status == VL53LX_ERROR_NONE) { - status = VL53L3CX_WaitDeviceBooted(); - printf("VL53L3CX_WaitDeviceBooted %d \n",status); - } - - if (status == VL53LX_ERROR_NONE) { - status = VL53L3CX_DataInit(); - printf("VL53L3CX_DataInit %d %d\n",status,Dev->IO.Address ); - } - - - return status; - } - - - - /** - * - * @brief One time device initialization - * @param void - * @return 0 on success - */ - virtual int Init() - { - return VL53L3CX_DataInit(); - } - - int init(void *init) - { - return VL53L3CX_DataInit(); - } - - /* Read function of the ID device */ - virtual int ReadID() - { - uint64_t Uid; - VL53L3CX_GetUID(&Uid); - if (Uid == 0x00FF000000FF) { - return 0; - } - return -1; - } - - - - /** - * @brief Get ranging result and only that - * @param pRange_mm Pointer to range distance - * @return 0 on success - */ - virtual int GetDistance(uint32_t *piData) - { - (void)piData; - return 0; - } - - - /* vl53lx_api.h */ - - /** @defgroup VL53LX_group VL53LX Function Definition - * @brief VL53LX Function Definition - * @{ - */ - - /** @defgroup VL53LX_general_group VL53LX General Functions - * @brief General functions and definitions - * @{ - */ - - /** - * @brief Return the VL53L3CX driver Version - * - * @note This function doesn't access to the device - * - * @param pVersion Rer to current driver Version - * @return VL53LX_Error_NONE Success - * @return "Other error code" See ::VL53LX_Error - */ - VL53LX_Error VL53L3CX_GetVersion(VL53LX_Version_t *pVersion); - - /** - * @brief Reads the Product Revision for a for given Device - * This function can be used to distinguish cut1.0 from cut1.1. - * - * @param Dev Device Handle - * @param pProductRevisionMajor Pointer to Product Revision Major - * for a given Device - * @param pProductRevisionMinor Pointer to Product Revision Minor - * for a given Device - * @return VL53LX_Error_NONE Success - * @return "Other error code" See ::VL53LX_Error - */ - VL53LX_Error VL53L3CX_GetProductRevision(uint8_t *pProductRevisionMajor, - uint8_t *pProductRevisionMinor); - - /** - * @brief Reads the Device information for given Device - * - * @note This function Access to the device - * - * @param Dev Device Handle - * @param pVL53LX_DeviceInfo Pointer to current device info for a given - * Device - * @return VL53LX_Error_NONE Success - * @return "Other error code" See ::VL53LX_Error - */ - VL53LX_Error VL53L3CX_GetDeviceInfo( - VL53LX_DeviceInfo_t *pVL53LX_DeviceInfo); - - /** - * @brief Reads the Device unique identifier - * - * @note This function Access to the device - * - * @param Dev Device Handle - * @param pUid Pointer to current device unique ID - * @return VL53LX_Error_NONE Success - * @return "Other error code" See ::VL53LX_Error - */ - VL53LX_Error VL53L3CX_GetUID(uint64_t *pUid); - - - /** @} VL53LX_general_group */ - - /** @defgroup VL53LX_init_group VL53LX Init Functions - * @brief VL53LX Init Functions - * @{ - */ - - /** - * @brief Set new device address - * - * After completion the device will answer to the new address programmed. - * This function should be called when several devices are used in parallel - * before start programming the sensor. - * When a single device us used, there is no need to call this function. - * - * When it is requested for multi devices system this function MUST be called - * prior to VL53LX_DataInit() - * - * @note This function Access to the device - * - * @param Dev Device Handle - * @param DeviceAddress The new Device address - * @return VL53LX_Error_NONE Success - * @return "Other error code" See ::VL53LX_Error - */ - VL53LX_Error VL53L3CX_SetDeviceAddress(uint8_t DeviceAddress); - - /** - * - * @brief One time device initialization - * - * To be called after device has been powered on and booted - * see @a VL53L3CX_WaitDeviceBooted() - * - * @par Function Description - * When not used after a fresh device "power up", it may return - * @a #VL53LX_Error_CALIBRATION_WARNING meaning wrong calibration data - * may have been fetched from device that can result in ranging offset error\n - * If VL53LX_DataInit is called several times then the application must restore - * calibration calling @a VL53LX_SetOffsetCalibrationData() - * It implies application has gathered calibration data thanks to - * @a VL53LX_GetOffsetCalibrationData() after an initial calibration stage. - * - * @note This function Access to the device - * - * @param Dev Device Handle - * @return VL53LX_Error_NONE Success - * @return "Other error code" See ::VL53LX_Error - */ - VL53LX_Error VL53L3CX_DataInit(); - - /** - * @brief Wait for device booted after chip enable (hardware standby) - * - * @param Dev Device Handle - * @return VL53LX_Error_NONE Success - * @return "Other error code" See ::VL53LX_Error - * - */ - VL53LX_Error VL53L3CX_WaitDeviceBooted(); - - - /** @} VL53LX_init_group */ - - /** @defgroup VL53LX_parameters_group VL53LX Parameters Functions - * @brief Functions used to prepare and setup the device - * @{ - */ - - /** - * @brief Set the distance mode - * @par Function Description - * Set the distance mode to be used for the next ranging.<br> - * The modes Short, Medium and Long are used to optimize the ranging accuracy - * in a specific range of distance.<br> The user select one of these modes to - * select the distance range. - * @note This function doesn't Access to the device - * - * @warning This function should be called after @a VL53LX_DataInit(). - - * @param Dev Device Handle - * @param DistanceMode Distance mode to apply, valid values are: - * @li VL53LX_DISTANCEMODE_SHORT - * @li VL53LX_DISTANCEMODE_MEDIUM - * @li VL53LX_DISTANCEMODE_LONG - * @return VL53LX_Error_NONE Success - * @return VL53LX_Error_MODE_NOT_SUPPORTED This error occurs when DistanceMode - * is not in the supported list - * @return "Other error code" See ::VL53LX_Error - */ - VL53LX_Error VL53L3CX_SetDistanceMode( - VL53LX_DistanceModes DistanceMode); - - /** - * @brief Get the distance mode - * @par Function Description - * Get the distance mode used for the next ranging. - * - * @param Dev Device Handle - * @param *pDistanceMode Pointer to Distance mode - * @return VL53LX_Error_NONE Success - * @return "Other error code" See ::VL53LX_Error - */ - VL53LX_Error VL53L3CX_GetDistanceMode( - VL53LX_DistanceModes *pDistanceMode); - - - /** - * @brief Set Ranging Timing Budget in microseconds - * - * @par Function Description - * Defines the maximum time allowed by the user to the device to run a - * full ranging sequence for the current mode (ranging, histogram, ASL ...) - * - * @param Dev Device Handle - * @param MeasurementTimingBudgetMicroSeconds Max measurement time in - * microseconds. - * @return VL53LX_Error_NONE Success - * @return VL53LX_Error_INVALID_PARAMS Error timing parameter not - * supported. - * The maximum accepted value for the - * computed timing budget is 10 seconds - * the minimum value depends on the preset - * mode selected. - * @return "Other error code" See ::VL53LX_Error - */ - VL53LX_Error VL53L3CX_SetMeasurementTimingBudgetMicroSeconds(uint32_t MeasurementTimingBudgetMicroSeconds); - - /** - * @brief Get Ranging Timing Budget in microseconds - * - * @par Function Description - * Returns the programmed the maximum time allowed by the user to the - * device to run a full ranging sequence for the current mode - * (ranging, histogram, ...) - * - * @param Dev Device Handle - * @param pMeasurementTimingBudgetMicroSeconds Max measurement time in - * microseconds. - * @return VL53LX_Error_NONE Success - * @return "Other error code" See ::VL53LX_Error - */ - VL53LX_Error VL53L3CX_GetMeasurementTimingBudgetMicroSeconds(uint32_t *pMeasurementTimingBudgetMicroSeconds); - /** @} VL53LX_parameters_group */ - - - /** @defgroup VL53LX_measurement_group VL53LX Measurement Functions - * @brief Functions used for the measurements - * @{ - */ - - /** - * @brief Start device measurement - * - * @details Started measurement will depend on distance parameter set through - * @a VL53L3CX_SetDistanceMode() - * - * @note This function Access to the device - * - * @param Dev Device Handle - * @return VL53LX_Error_NONE Success - * @return VL53LX_Error_TIME_OUT Time out on start measurement - * @return VL53LX_Error_INVALID_PARAMS This error might occur in timed mode - * when inter measurement period is smaller or too close to the timing budget. - * In such case measurements are not started and user must correct the timings - * passed to @a VL53LX_SetMeasurementTimingBudgetMicroSeconds() and - * @a VL53LX_SetInterMeasurementPeriodMilliSeconds() functions. - * @return "Other error code" See ::VL53LX_Error - */ - VL53LX_Error VL53L3CX_StartMeasurement(); - - /** - * @brief Stop device measurement - * - * @details Will set the device in standby mode at end of current measurement\n - * Not necessary in single mode as device shall return automatically - * in standby mode at end of measurement. - * - * @note This function Access to the device - * - * @param Dev Device Handle - * @return VL53LX_Error_NONE Success - * @return "Other error code" See ::VL53LX_Error - */ - VL53LX_Error VL53L3CX_StopMeasurement(); - - /** - * @brief Clear the Interrupt flag and start new measurement - * * - * @note This function Access to the device - * - * @param Dev Device Handle - * @return VL53LX_Error_NONE Success - * @return "Other error code" See ::VL53LX_Error - */ - VL53LX_Error VL53L3CX_ClearInterruptAndStartMeasurement(); - - /** - * @brief Return Measurement Data Ready - * - * @par Function Description - * This function indicate that a measurement data is ready. - * This function is used for non-blocking capture. - * - * @note This function Access to the device - * - * @param Dev Device Handle - * @param pMeasurementDataReady Pointer to Measurement Data Ready. - * 0 = data not ready, 1 = data ready - * @return VL53LX_Error_NONE Success - * @return "Other error code" See ::VL53LX_Error - */ - VL53LX_Error VL53L3CX_GetMeasurementDataReady( - uint8_t *pMeasurementDataReady); - - /** - * @brief Wait for measurement data ready. - * Blocking function. - * Note that the timeout is given by: - * VL53LX_RANGE_COMPLETION_POLLING_TIMEOUT_MS defined in def.h - * - * - * @note This function Access to the device - * - * @param Dev Device Handle - * @return VL53LX_Error_NONE Success - * @return VL53LX_Error_TIME_OUT In case of timeout - */ - VL53LX_Error VL53L3CX_WaitMeasurementDataReady(); - - - /** - * @brief Retrieve all measurements from device with the current setup - * - * @par Function Description - * Get data from last successful Ranging measurement - * - * @warning USER must call @a VL53LX_ClearInterruptAndStartMeasurement() prior - * to call again this function - * - * @note This function Access to the device - * - * @note The first valid value returned by this function will have a range - * status equal to VL53LX_RANGESTATUS_RANGE_VALID_NO_WRAP_CHECK which means that - * the data is valid but no wrap around check have been done. User should take - * care about that. - * - * @param Dev Device Handle - * @param pMultiRangingData Pointer to the data structure to fill up. - * @return VL53LX_Error_NONE Success - * @return "Other error code" See ::VL53LX_Error - */ - VL53LX_Error VL53L3CX_GetMultiRangingData(VL53LX_MultiRangingData_t *pMultiRangingData); - - /** - * @brief Get Additional Data - * - * @par Function Description - * This function is used to get lld debugging data on the last histogram - * measurement. shall be called when a new measurement is ready (interrupt or - * positive VL53LX_GetMeasurementDataReady() polling) and before a call to - * VL53LX_ClearInterruptAndStartMeasurement(). - * - * @param Dev Device Handle - * @param pAdditionalData Pointer to Additional data - * @return VL53LX_Error_NONE Success - * @return "Other error code" See ::VL53LX_Error - */ - VL53LX_Error VL53L3CX_GetAdditionalData( VL53LX_AdditionalData_t *pAdditionalData); - - - /** @} VL53LX_measurement_group */ - - /** @defgroup VL53LX_Calibration_group VL53LX Calibration Functions - * @brief Functions used for Calibration - * @{ - */ - - - /** - * @brief Set Tuning Parameter value for a given parameter ID - * - * @par Function Description - * This function is used to improve the performance of the device. It permit to - * change a particular value used for a timeout or a threshold or a constant - * in an algorithm. The function will change the value of the parameter - * identified by an unique ID. - * - * @note This function doesn't Access to the device - * - * @param Dev Device Handle - * @param TuningParameterId Tuning Parameter ID - * @param TuningParameterValue Tuning Parameter Value - * @return VL53LX_Error_NONE Success - * @return "Other error code" See ::VL53LX_Error - */ - VL53LX_Error VL53L3CX_SetTuningParameter( - uint16_t TuningParameterId, int32_t TuningParameterValue); - - /** - * @brief Get Tuning Parameter value for a given parameter ID - * - * @par Function Description - * This function is used to get the value of the parameter - * identified by an unique ID. - * - * @note This function doesn't Access to the device - * - * @param Dev Device Handle - * @param TuningParameterId Tuning Parameter ID - * @param pTuningParameterValue Pointer to Tuning Parameter Value - * for a given TuningParameterId. - * @return VL53LX_Error_NONE Success - * @return "Other error code" See ::VL53LX_Error - */ - VL53LX_Error VL53L3CX_GetTuningParameter( - uint16_t TuningParameterId, int32_t *pTuningParameterValue); - - /** - * @brief Performs Reference Spad Management - * - * @par Function Description - * The reference SPAD initialization procedure determines the minimum amount - * of reference spads to be enables to achieve a target reference signal rate - * and should be performed once during initialization. - * - * @note This function Access to the device - * - * @param Dev Device Handle - * @return VL53LX_Error_NONE Success - * @return "Other error code" See ::VL53LX_Error - */ - VL53LX_Error VL53L3CX_PerformRefSpadManagement(); - - /** - * @brief Enable/Disable dynamic Xtalk compensation feature - * - * Enable/Disable dynamic Xtalk compensation (aka smudge correction). - * - * @param Dev Device Handle - * @param Mode Set the smudge correction mode - * See ::VL53LX_SmudgeCorrectionModes - * @return VL53LX_Error_NONE Success - * @return "Other error code" See ::VL53LX_Error - */ - VL53LX_Error VL53L3CX_SmudgeCorrectionEnable( - VL53LX_SmudgeCorrectionModes Mode); - - - /** - * @brief Enable/Disable Cross talk compensation feature - * - * Enable/Disable Cross Talk correction. - * - * @param Dev Device Handle - * @param XTalkCompensationEnable Cross talk compensation - * to be set 0 = disabled or 1 = enabled. - * @return VL53LX_Error_NONE Success - * @return "Other error code" See ::VL53LX_Error - */ - VL53LX_Error VL53L3CX_SetXTalkCompensationEnable( - uint8_t XTalkCompensationEnable); - - /** - * @brief Get Cross talk compensation rate enable - * - * Get if the Cross Talk is Enabled or Disabled. - * - * @note This function doesn't access to the device - * - * @param Dev Device Handle - * @param pXTalkCompensationEnable Pointer to the Cross talk compensation - * state 0=disabled or 1 = enabled - * @return VL53LX_Error_NONE Success - * @return "Other error code" See ::VL53LX_Error - */ - VL53LX_Error VL53L3CX_GetXTalkCompensationEnable( - uint8_t *pXTalkCompensationEnable); - - /** - * @brief Perform XTalk Calibration - * - * @details Perform a XTalk calibration of the Device. - * This function will launch a measurement, if interrupts - * are enabled an interrupt will be done. - * This function will clear the interrupt generated automatically. - * This function will program a new value for the XTalk compensation - * and it will enable the cross talk before exit. - * - * @warning This function is a blocking function - * - * @note This function Access to the device - * - * @param Dev Device Handle - * the calibration sets appropriate - * distance mode and thus override existing one<br> - * The calibration uses a target which should be located at least @60cm from the - * device. The actual location of the target shall be passed - * through the bare driver tuning parameters table - * - * @return VL53LX_Error_NONE Success - * @return "Other error code" See ::VL53LX_Error - */ - VL53LX_Error VL53L3CX_PerformXTalkCalibration(); - - - /** - * @brief Define the mode to be used for the offset correction - * - * Define the mode to be used for the offset correction. - * - * @param Dev Device Handle - * @param OffsetCorrectionMode Offset Correction Mode valid values are: - * @li VL53LX_OFFSETCORRECTIONMODE_STANDARD - * @li VL53LX_OFFSETCORRECTIONMODE_PERVCSEL - * - * @return VL53LX_Error_NONE Success - * @return "Other error code" See ::VL53LX_Error - */ - VL53LX_Error VL53L3CX_SetOffsetCorrectionMode( - VL53LX_OffsetCorrectionModes OffsetCorrectionMode); - - - /** - * @brief Perform Offset simple Calibration - * - * @details Perform a very simple offset calibration of the Device. - * This function will launch few ranging measurements and computes offset - * calibration. The preset mode and the distance mode MUST be set by the - * application before to call this function. - * - * @warning This function is a blocking function - * - * @note This function Access to the device - * - * @param Dev Device Handle - * @param CalDistanceMilliMeter Calibration distance value used for the - * offset compensation. - * - * @return VL53LX_Error_NONE - * @return VL53LX_Error_OFFSET_CAL_NO_SAMPLE_FAIL the calibration failed by - * lack of valid measurements - * @return VL53LX_WARNING_OFFSET_CAL_SIGMA_TOO_HIGH means that the target - * distance combined to the number of loops performed in the calibration lead to - * an internal overflow. Try to reduce the distance of the target (140 mm) - * @return "Other error code" See ::VL53LX_Error - */ - VL53LX_Error VL53L3CX_PerformOffsetSimpleCalibration( - int32_t CalDistanceMilliMeter); - - /** - * @brief Perform Offset simple Calibration with a "zero distance" target - * - * @details Perform a simple offset calibration of the Device. - * This function will launch few ranging measurements and computes offset - * calibration. The preset mode and the distance mode MUST be set by the - * application before to call this function. - * A target must be place very close to the device. - * Ideally the target shall be touching the coverglass. - * - * @warning This function is a blocking function - * - * @note This function Access to the device - * - * @param Dev Device Handle - * - * @return VL53LX_Error_NONE - * @return VL53LX_Error_OFFSET_CAL_NO_SAMPLE_FAIL the calibration failed by - * lack of valid measurements - * @return VL53LX_WARNING_OFFSET_CAL_SIGMA_TOO_HIGH means that the target - * distance is too large, try to put the target closer to the device - * @return "Other error code" See ::VL53LX_Error - */ - VL53LX_Error VL53L3CX_PerformOffsetZeroDistanceCalibration(); - - - /** - * @brief Perform Offset per Vcsel Calibration. i.e. per distance mode - * - * @details Perform offset calibration of the Device depending on the - * three distance mode settings: short, medium and long. - * This function will launch few ranging measurements and computes offset - * calibration in each of the three distance modes. - * The preset mode MUST be set by the application before to call this function. - * - * @warning This function is a blocking function - * - * @note This function Access to the device - * - * @param Dev Device Handle - * @param CalDistanceMilliMeter Distance of the target used for the - * offset compensation calibration. - * - * @return VL53LX_Error_NONE - * @return VL53LX_Error_OFFSET_CAL_NO_SAMPLE_FAIL the calibration failed by - * lack of valid measurements - * @return VL53LX_WARNING_OFFSET_CAL_SIGMA_TOO_HIGH means that the target - * distance combined to the number of loops performed in the calibration lead to - * an internal overflow. Try to reduce the distance of the target (140 mm) - * @return "Other error code" See ::VL53LX_Error - */ - VL53LX_Error VL53L3CX_PerformOffsetPerVcselCalibration( - int32_t CalDistanceMilliMeter); - - - /** - * @brief Sets the Calibration Data. - * - * @par Function Description - * This function set all the Calibration Data issued from the functions - * @a VL53LX_PerformRefSpadManagement(), @a VL53LX_PerformXTalkCalibration, - * @a VL53LX_PerformOffsetCalibration() - * - * @note This function doesn't Accesses the device - * - * @param Dev Device Handle - * @param *pCalibrationData Pointer to Calibration data to be set. - * @return VL53LX_Error_NONE Success - * @return VL53LX_Error_INVALID_PARAMS pCalibrationData points to an older - * version of the inner structure. Need for support to convert its content. - * @return "Other error code" See ::VL53LX_Error - */ - VL53LX_Error VL53L3CX_SetCalibrationData( - VL53LX_CalibrationData_t *pCalibrationData); - - /** - * @brief Gets the Calibration Data. - * - * @par Function Description - * This function get all the Calibration Data issued from the functions - * @a VL53LX_PerformRefSpadManagement(), @a VL53LX_PerformXTalkCalibration, - * @a VL53LX_PerformOffsetCalibration() - * - * @note This function doesn't Accesses the device - * - * @param Dev Device Handle - * @param *pCalibrationData pointer where to store Calibration - * data. - * @return VL53LX_Error_NONE Success - * @return "Other error code" See ::VL53LX_Error - */ - VL53LX_Error VL53L3CX_GetCalibrationData( - VL53LX_CalibrationData_t *pCalibrationData); - - /** @} VL53LX_Calibration_group */ - - /** @} VL53LX_group */ - VL53LX_Error VL53L3CX_RdWord(VL53LX_DEV Dev, uint16_t index, uint16_t *data); - - // protected: - - /* vl53lx_api_core.h functions */ - - VL53LX_Error VL53L3CX_get_version(VL53LX_ll_version_t *pversion); - VL53LX_Error VL53L3CX_data_init(uint8_t read_p2p_data); - VL53LX_Error VL53L3CX_read_p2p_data(); - VL53LX_Error VL53L3CX_set_part_to_part_data(VL53LX_calibration_data_t *pcal_data); - VL53LX_Error VL53L3CX_get_part_to_part_data(VL53LX_calibration_data_t *pcal_data); - VL53LX_Error VL53L3CX_get_tuning_debug_data(VL53LX_tuning_parameters_t *ptun_data); - VL53LX_Error VL53L3CX_set_inter_measurement_period_ms(uint32_t inter_measurement_period_ms); - VL53LX_Error VL53L3CX_get_inter_measurement_period_ms(uint32_t *pinter_measurement_period_ms); - VL53LX_Error VL53L3CX_set_timeouts_us( - uint32_t phasecal_config_timeout_us, - uint32_t mm_config_timeout_us, - uint32_t range_config_timeout_us); - - VL53LX_Error VL53L3CX_get_timeouts_us( - uint32_t *pphasecal_config_timeout_us, - uint32_t *pmm_config_timeout_us, - uint32_t *prange_config_timeout_us); - - - - - VL53LX_Error VL53L3CX_set_user_zone( - VL53LX_user_zone_t *puser_zone); - - VL53LX_Error VL53L3CX_get_user_zone( - VL53LX_user_zone_t *puser_zone); - - - VL53LX_Error VL53L3CX_get_mode_mitigation_roi( - VL53LX_user_zone_t *pmm_roi); - - - VL53LX_Error VL53L3CX_set_zone_config( - VL53LX_zone_config_t *pzone_cfg); - - VL53LX_Error VL53L3CX_get_zone_config( - VL53LX_zone_config_t *pzone_cfg); - - - VL53LX_Error VL53L3CX_set_preset_mode( - VL53LX_DevicePresetModes device_preset_mode, - uint16_t dss_config__target_total_rate_mcps, - uint32_t phasecal_config_timeout_us, - uint32_t mm_config_timeout_us, - uint32_t range_config_timeout_us, - uint32_t inter_measurement_period_ms); - - VL53LX_Error VL53L3CX_get_preset_mode_timing_cfg( - VL53LX_DevicePresetModes device_preset_mode, - uint16_t *pdss_config__target_total_rate_mcps, - uint32_t *pphasecal_config_timeout_us, - uint32_t *pmm_config_timeout_us, - uint32_t *prange_config_timeout_us); - - - VL53LX_Error VL53L3CX_set_zone_preset( - VL53LX_DeviceZonePreset zone_preset); - - - VL53LX_Error VL53L3CX_enable_xtalk_compensation(); - - VL53LX_Error VL53L3CX_disable_xtalk_compensation(); - - - void VL53L3CX_get_xtalk_compensation_enable( - uint8_t *pcrosstalk_compensation_enable); - - - VL53LX_Error VL53L3CX_init_and_start_range( - uint8_t measurement_mode, - VL53LX_DeviceConfigLevel device_config_level); - - - VL53LX_Error VL53L3CX_stop_range(); // remove - - VL53LX_Error VL53L3CX_get_measurement_results( - VL53LX_DeviceResultsLevel device_result_level); - - - VL53LX_Error VL53L3CX_get_device_results( - VL53LX_DeviceResultsLevel device_result_level, - VL53LX_range_results_t *prange_results); - - - VL53LX_Error VL53L3CX_clear_interrupt_and_enable_next_range( - uint8_t measurement_mode); - - - VL53LX_Error VL53L3CX_get_histogram_bin_data( - VL53LX_histogram_bin_data_t *phist_data); - - void VL53L3CX_copy_sys_and_core_results_to_range_results( - int32_t gain_factor, - VL53LX_system_results_t *psys, - VL53LX_core_results_t *pcore, - VL53LX_range_results_t *presults); - - - - VL53LX_Error VL53L3CX_set_zone_dss_config( - VL53LX_zone_private_dyn_cfg_t *pzone_dyn_cfg); - - - VL53LX_Error VL53L3CX_set_dmax_mode( - VL53LX_DeviceDmaxMode dmax_mode); - - - VL53LX_Error VL53L3CX_get_dmax_mode( - VL53LX_DeviceDmaxMode *pdmax_mode); - - - VL53LX_Error VL53L3CX_set_dmax_calibration_data( - VL53LX_DeviceDmaxMode dmax_mode, - VL53LX_dmax_calibration_data_t *pdmax_cal); - - - VL53LX_Error VL53L3CX_get_dmax_calibration_data( - VL53LX_DeviceDmaxMode dmax_mode, - VL53LX_dmax_calibration_data_t *pdmax_cal); - - - VL53LX_Error VL53L3CX_set_offset_correction_mode( - VL53LX_OffsetCalibrationMode offset_cor_mode); - - - VL53LX_Error VL53L3CX_get_offset_correction_mode( - VL53LX_OffsetCorrectionMode *poffset_cor_mode); - - - VL53LX_Error VL53L3CX_et_zone_calibration_data( - VL53LX_zone_calibration_results_t *pzone_cal); - - - VL53LX_Error VL53L3CX_set_zone_calibration_data( - VL53LX_zone_calibration_results_t *pzone_cal); - - - - VL53LX_Error VL53L3CX_get_tuning_parm( - VL53LX_TuningParms tuning_parm_key, - int32_t *ptuning_parm_value); - - - - VL53LX_Error VL53L3CX_set_tuning_parm( - VL53LX_TuningParms tuning_parm_key, - int32_t tuning_parm_value); - - - - VL53LX_Error VL53L3CX_dynamic_xtalk_correction_enable(); - - - - VL53LX_Error VL53L3CX_dynamic_xtalk_correction_disable(); - - - - - VL53LX_Error VL53L3CX_dynamic_xtalk_correction_apply_enable(); - - - - VL53LX_Error VL53L3CX_dynamic_xtalk_correction_apply_disable(); - - - - VL53LX_Error VL53L3CX_dynamic_xtalk_correction_single_apply_enable(); - - - - VL53LX_Error VL53L3CX_dynamic_xtalk_correction_single_apply_disable(); - - - VL53LX_Error VL53L3CX_get_current_xtalk_settings( - - VL53LX_xtalk_calibration_results_t *pxtalk - ); - - - - VL53LX_Error VL53L3CX_set_current_xtalk_settings( - - VL53LX_xtalk_calibration_results_t *pxtalk - ); - - VL53LX_Error VL53L3CX_load_patch(); - - VL53LX_Error VL53L3CX_unload_patch(); - - - /* vl53lx_register_funcs.h */ - - - VL53LX_Error VL53L3CX_i2c_encode_static_nvm_managed( - VL53LX_static_nvm_managed_t *pdata, - uint16_t buf_size, - uint8_t *pbuffer); - - - - - VL53LX_Error VL53L3CX_i2c_decode_static_nvm_managed( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_static_nvm_managed_t *pdata); - - - - - VL53LX_Error VL53L3CX_set_static_nvm_managed( - VL53LX_static_nvm_managed_t *pdata); - - - - - VL53LX_Error VL53L3CX_get_static_nvm_managed( - VL53LX_static_nvm_managed_t *pdata); - - - - - VL53LX_Error VL53L3CX_i2c_encode_customer_nvm_managed( - VL53LX_customer_nvm_managed_t *pdata, - uint16_t buf_size, - uint8_t *pbuffer); - - - - - VL53LX_Error VL53L3CX_i2c_decode_customer_nvm_managed( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_customer_nvm_managed_t *pdata); - - - - - VL53LX_Error VL53L3CX_set_customer_nvm_managed( - VL53LX_customer_nvm_managed_t *pdata); - - - - - VL53LX_Error VL53L3CX_get_customer_nvm_managed( - VL53LX_customer_nvm_managed_t *pdata); - - - - - VL53LX_Error VL53L3CX_i2c_encode_static_config( - VL53LX_static_config_t *pdata, - uint16_t buf_size, - uint8_t *pbuffer); - - - - - VL53LX_Error VL53L3CX_i2c_decode_static_config( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_static_config_t *pdata); - - - - - VL53LX_Error VL53L3CX_set_static_config( - VL53LX_static_config_t *pdata); - - - - - VL53LX_Error VL53L3CX_get_static_config( - VL53LX_static_config_t *pdata); - - - - - VL53LX_Error VL53L3CX_i2c_encode_general_config( - VL53LX_general_config_t *pdata, - uint16_t buf_size, - uint8_t *pbuffer); - - - - - VL53LX_Error VL53L3CX_i2c_decode_general_config( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_general_config_t *pdata); - - - - - VL53LX_Error VL53L3CX_set_general_config( - VL53LX_general_config_t *pdata); - - - - - VL53LX_Error VL53L3CX_get_general_config( - VL53LX_general_config_t *pdata); - - - - - VL53LX_Error VL53L3CX_i2c_encode_timing_config( - VL53LX_timing_config_t *pdata, - uint16_t buf_size, - uint8_t *pbuffer); - - - - - VL53LX_Error VL53L3CX_i2c_decode_timing_config( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_timing_config_t *pdata); - - - - - VL53LX_Error VL53L3CX_set_timing_config( - VL53LX_timing_config_t *pdata); - - - - - VL53LX_Error VL53L3CX_get_timing_config( - VL53LX_timing_config_t *pdata); - - - - - VL53LX_Error VL53L3CX_i2c_encode_dynamic_config( - VL53LX_dynamic_config_t *pdata, - uint16_t buf_size, - uint8_t *pbuffer); - - - - - VL53LX_Error VL53L3CX_i2c_decode_dynamic_config( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_dynamic_config_t *pdata); - - - - - VL53LX_Error VL53L3CX_set_dynamic_config( - VL53LX_dynamic_config_t *pdata); - - - - - VL53LX_Error VL53L3CX_get_dynamic_config( - VL53LX_dynamic_config_t *pdata); - - - - - VL53LX_Error VL53L3CX_i2c_encode_system_control( - VL53LX_system_control_t *pdata, - uint16_t buf_size, - uint8_t *pbuffer); - - - - - VL53LX_Error VL53L3CX_i2c_decode_system_control( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_system_control_t *pdata); - - - - - VL53LX_Error VL53L3CX_set_system_control( - VL53LX_system_control_t *pdata); - - - - - VL53LX_Error VL53L3CX_get_system_control( - VL53LX_system_control_t *pdata); - - - - - VL53LX_Error VL53L3CX_i2c_encode_system_results( - VL53LX_system_results_t *pdata, - uint16_t buf_size, - uint8_t *pbuffer); - - - - - VL53LX_Error VL53L3CX_i2c_decode_system_results( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_system_results_t *pdata); - - - - - VL53LX_Error VL53L3CX_set_system_results( - VL53LX_system_results_t *pdata); - - - - - VL53LX_Error VL53L3CX_get_system_results( - VL53LX_system_results_t *pdata); - - - - - VL53LX_Error VL53L3CX_i2c_encode_core_results( - VL53LX_core_results_t *pdata, - uint16_t buf_size, - uint8_t *pbuffer); - - - - - VL53LX_Error VL53L3CX_i2c_decode_core_results( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_core_results_t *pdata); - - - - - VL53LX_Error VL53L3CX_set_core_results( - VL53LX_core_results_t *pdata); - - - - - VL53LX_Error VL53L3CX_get_core_results( - VL53LX_core_results_t *pdata); - - - - - VL53LX_Error VL53L3CX_i2c_encode_debug_results( - VL53LX_debug_results_t *pdata, - uint16_t buf_size, - uint8_t *pbuffer); - - - - - VL53LX_Error VL53L3CX_i2c_decode_debug_results( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_debug_results_t *pdata); - - - - - VL53LX_Error VL53L3CX_set_debug_results( - VL53LX_debug_results_t *pdata); - - - - - VL53LX_Error VL53L3CX_get_debug_results( - VL53LX_debug_results_t *pdata); - - - - - VL53LX_Error VL53L3CX_i2c_encode_nvm_copy_data( - VL53LX_nvm_copy_data_t *pdata, - uint16_t buf_size, - uint8_t *pbuffer); - - - - - VL53LX_Error VL53L3CX_i2c_decode_nvm_copy_data( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_nvm_copy_data_t *pdata); - - - - - VL53LX_Error VL53L3CX_set_nvm_copy_data( - VL53LX_nvm_copy_data_t *pdata); - - - - - VL53LX_Error VL53L3CX_get_nvm_copy_data( - VL53LX_nvm_copy_data_t *pdata); - - - - - VL53LX_Error VL53L3CX_i2c_encode_prev_shadow_system_results( - VL53LX_prev_shadow_system_results_t *pdata, - uint16_t buf_size, - uint8_t *pbuffer); - - - - - VL53LX_Error VL53L3CX_i2c_decode_prev_shadow_system_results( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_prev_shadow_system_results_t *pdata); - - - - - VL53LX_Error VL53L3CX_set_prev_shadow_system_results( - VL53LX_prev_shadow_system_results_t *pdata); - - - - - VL53LX_Error VL53L3CX_get_prev_shadow_system_results( - VL53LX_prev_shadow_system_results_t *pdata); - - - - - VL53LX_Error VL53L3CX_i2c_encode_prev_shadow_core_results( - VL53LX_prev_shadow_core_results_t *pdata, - uint16_t buf_size, - uint8_t *pbuffer); - - - - - VL53LX_Error VL53L3CX_i2c_decode_prev_shadow_core_results( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_prev_shadow_core_results_t *pdata); - - - - - VL53LX_Error VL53L3CX_set_prev_shadow_core_results( - VL53LX_prev_shadow_core_results_t *pdata); - - - - - VL53LX_Error VL53L3CX_get_prev_shadow_core_results( - VL53LX_prev_shadow_core_results_t *pdata); - - - - - VL53LX_Error VL53L3CX_i2c_encode_patch_debug( - VL53LX_patch_debug_t *pdata, - uint16_t buf_size, - uint8_t *pbuffer); - - - - - VL53LX_Error VL53L3CX_i2c_decode_patch_debug( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_patch_debug_t *pdata); - - - - - VL53LX_Error VL53L3CX_set_patch_debug( - VL53LX_patch_debug_t *pdata); - - - - - VL53LX_Error VL53L3CX_get_patch_debug( - VL53LX_patch_debug_t *pdata); - - - - - VL53LX_Error VL53L3CX_i2c_encode_gph_general_config( - VL53LX_gph_general_config_t *pdata, - uint16_t buf_size, - uint8_t *pbuffer); - - - - - VL53LX_Error VL53L3CX_i2c_decode_gph_general_config( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_gph_general_config_t *pdata); - - - - - VL53LX_Error VL53L3CX_set_gph_general_config( - VL53LX_gph_general_config_t *pdata); - - - - - VL53LX_Error VL53L3CX_get_gph_general_config( - VL53LX_gph_general_config_t *pdata); - - - - - VL53LX_Error VL53L3CX_i2c_encode_gph_static_config( - VL53LX_gph_static_config_t *pdata, - uint16_t buf_size, - uint8_t *pbuffer); - - - - - VL53LX_Error VL53L3CX_i2c_decode_gph_static_config( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_gph_static_config_t *pdata); - - - - - VL53LX_Error VL53L3CX_set_gph_static_config( - VL53LX_gph_static_config_t *pdata); - - - - - VL53LX_Error VL53L3CX_get_gph_static_config( - VL53LX_gph_static_config_t *pdata); - - - - - VL53LX_Error VL53L3CX_i2c_encode_gph_timing_config( - VL53LX_gph_timing_config_t *pdata, - uint16_t buf_size, - uint8_t *pbuffer); - - - - - VL53LX_Error VL53L3CX_i2c_decode_gph_timing_config( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_gph_timing_config_t *pdata); - - - - - VL53LX_Error VL53L3CX_set_gph_timing_config( - VL53LX_gph_timing_config_t *pdata); - - - - - VL53LX_Error VL53L3CX_get_gph_timing_config( - VL53LX_gph_timing_config_t *pdata); - - - - - VL53LX_Error VL53L3CX_i2c_encode_fw_internal( - VL53LX_fw_internal_t *pdata, - uint16_t buf_size, - uint8_t *pbuffer); - - - - - VL53LX_Error VL53L3CX_i2c_decode_fw_internal( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_fw_internal_t *pdata); - - - - - VL53LX_Error VL53L3CX_set_fw_internal( - VL53LX_fw_internal_t *pdata); - - - - - VL53LX_Error VL53L3CX_get_fw_internal( - VL53LX_fw_internal_t *pdata); - - - - - VL53LX_Error VL53L3CX_i2c_encode_patch_results( - VL53LX_patch_results_t *pdata, - uint16_t buf_size, - uint8_t *pbuffer); - - - - - VL53LX_Error VL53L3CX_i2c_decode_patch_results( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_patch_results_t *pdata); - - - - - VL53LX_Error VL53L3CX_set_patch_results( - VL53LX_patch_results_t *pdata); - - - - - VL53LX_Error VL53L3CX_get_patch_results( - VL53LX_patch_results_t *pdata); - - - - - VL53LX_Error VL53L3CX_i2c_encode_shadow_system_results( - VL53LX_shadow_system_results_t *pdata, - uint16_t buf_size, - uint8_t *pbuffer); - - - - - VL53LX_Error VL53L3CX_i2c_decode_shadow_system_results( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_shadow_system_results_t *pdata); - - - - - VL53LX_Error VL53L3CX_set_shadow_system_results( - VL53LX_shadow_system_results_t *pdata); - - - - - VL53LX_Error VL53L3CX_get_shadow_system_results( - VL53LX_shadow_system_results_t *pdata); - - - - - VL53LX_Error VL53L3CX_i2c_encode_shadow_core_results( - VL53LX_shadow_core_results_t *pdata, - uint16_t buf_size, - uint8_t *pbuffer); - - - - - VL53LX_Error VL53L3CX_i2c_decode_shadow_core_results( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_shadow_core_results_t *pdata); - - - - - VL53LX_Error VL53L3CX_set_shadow_core_results( - VL53LX_shadow_core_results_t *pdata); - - - - - VL53LX_Error VL53L3CX_get_shadow_core_results( - VL53LX_shadow_core_results_t *pdata); - - - - /* vl53lx_nvm.h */ - - - VL53LX_Error VL53L3CX_nvm_enable( - uint16_t nvm_ctrl_pulse_width, - int32_t nvm_power_up_delay_us); - - - - - VL53LX_Error VL53L3CX_nvm_read( - uint8_t start_address, - uint8_t count, - uint8_t *pdata); - - - - - VL53LX_Error VL53L3CX_nvm_disable(); - - - - - VL53LX_Error VL53L3CX_nvm_format_decode( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_decoded_nvm_data_t *pdata); - - - - - VL53LX_Error VL53L3CX_nvm_decode_optical_centre( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_optical_centre_t *pdata); - - - - - VL53LX_Error VL53L3CX_nvm_decode_cal_peak_rate_map( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_cal_peak_rate_map_t *pdata); - - - - - VL53LX_Error VL53L3CX_nvm_decode_additional_offset_cal_data( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_additional_offset_cal_data_t *pdata); - - - - - VL53LX_Error VL53L3CX_nvm_decode_fmt_range_results_data( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_decoded_nvm_fmt_range_data_t *pdata); - - - - - VL53LX_Error VL53L3CX_nvm_decode_fmt_info( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_decoded_nvm_fmt_info_t *pdata); - - - - - VL53LX_Error VL53L3CX_nvm_decode_ews_info( - uint16_t buf_size, - uint8_t *pbuffer, - VL53LX_decoded_nvm_ews_info_t *pdata); - - - - - void VL53L3CX_nvm_format_encode( - VL53LX_decoded_nvm_data_t *pnvm_info, - uint8_t *pnvm_data); - - - - - VL53LX_Error VL53L3CX_read_nvm_raw_data( - uint8_t start_address, - uint8_t count, - uint8_t *pnvm_raw_data); - - - - - VL53LX_Error VL53L3CX_read_nvm( - uint8_t nvm_format, - VL53LX_decoded_nvm_data_t *pnvm_info); - - - - - VL53LX_Error VL53L3CX_read_nvm_optical_centre( - VL53LX_optical_centre_t *pcentre); - - - - - VL53LX_Error VL53L3CX_read_nvm_cal_peak_rate_map( - VL53LX_cal_peak_rate_map_t *pcal_data); - - - - - VL53LX_Error VL53L3CX_read_nvm_additional_offset_cal_data( - VL53LX_additional_offset_cal_data_t *pcal_data); - - - - - VL53LX_Error VL53L3CX_read_nvm_fmt_range_results_data( - uint16_t range_results_select, - VL53LX_decoded_nvm_fmt_range_data_t *prange_data); - - - - /* vl53lx_platform_ipp.h */ - - VL53LX_Error VL53L3CX_ipp_hist_process_data( - VL53LX_dmax_calibration_data_t *pdmax_cal, - VL53LX_hist_gen3_dmax_config_t *pdmax_cfg, - VL53LX_hist_post_process_config_t *ppost_cfg, - VL53LX_histogram_bin_data_t *pbins, - VL53LX_xtalk_histogram_data_t *pxtalk, - uint8_t *pArea1, - uint8_t *pArea2, - uint8_t *phisto_merge_nb, - VL53LX_range_results_t *presults); - - VL53LX_Error VL53L3CX_ipp_hist_ambient_dmax( - uint16_t target_reflectance, - VL53LX_dmax_calibration_data_t *pdmax_cal, - VL53LX_hist_gen3_dmax_config_t *pdmax_cfg, - VL53LX_histogram_bin_data_t *pbins, - int16_t *pambient_dmax_mm); - - VL53LX_Error VL53L3CX_ipp_xtalk_calibration_process_data( - VL53LX_xtalk_range_results_t *pxtalk_ranges, - VL53LX_xtalk_histogram_data_t *pxtalk_shape, - VL53LX_xtalk_calibration_results_t *pxtalk_cal); - - - - - /* vl53lx_hist_funcs.h */ - - - VL53LX_Error VL53L3CX_hist_process_data( - VL53LX_dmax_calibration_data_t *pdmax_cal, - VL53LX_hist_gen3_dmax_config_t *pdmax_cfg, - VL53LX_hist_post_process_config_t *ppost_cfg, - VL53LX_histogram_bin_data_t *pbins, - VL53LX_xtalk_histogram_data_t *pxtalk, - uint8_t *pArea1, - uint8_t *pArea2, - VL53LX_range_results_t *presults, - uint8_t *HistMergeNumber); - - - VL53LX_Error VL53L3CX_hist_ambient_dmax( - uint16_t target_reflectance, - VL53LX_dmax_calibration_data_t *pdmax_cal, - VL53LX_hist_gen3_dmax_config_t *pdmax_cfg, - VL53LX_histogram_bin_data_t *pbins, - int16_t *pambient_dmax_mm); - - - /* vl53lx_core_support.h */ - - uint8_t VL53L3CX_decode_vcsel_period( uint8_t vcsel_period_reg); - - uint32_t VL53L3CX_events_per_spad_maths( - int32_t VL53LX_p_010, - uint16_t num_spads, - uint32_t duration); - - uint32_t VL53L3CX_isqrt( - uint32_t num); - - void VL53L3CX_hist_calc_zero_distance_phase( - VL53LX_histogram_bin_data_t *pdata); - - void VL53L3CX_hist_estimate_ambient_from_thresholded_bins( - int32_t ambient_threshold_sigma, - VL53LX_histogram_bin_data_t *pdata); - - void VL53L3CX_hist_remove_ambient_bins( - VL53LX_histogram_bin_data_t *pdata); - - uint32_t VL53L3CX_calc_pll_period_mm( - uint16_t fast_osc_frequency); - - uint16_t VL53L3CX_rate_maths( - int32_t VL53LX_p_018, - uint32_t time_us); - - uint16_t VL53L3CX_rate_per_spad_maths( - uint32_t frac_bits, - uint32_t peak_count_rate, - uint16_t num_spads, - uint32_t max_output_value); - - int32_t VL53L3CX_range_maths( - uint16_t fast_osc_frequency, - uint16_t VL53LX_p_014, - uint16_t zero_distance_phase, - uint8_t fractional_bits, - int32_t gain_factor, - int32_t range_offset_mm); - - - void VL53L3CX_copy_xtalk_bin_data_to_histogram_data_struct( - VL53LX_xtalk_histogram_shape_t *pxtalk, - VL53LX_histogram_bin_data_t *phist); - - void VL53L3CX_init_histogram_bin_data_struct( - int32_t bin_value, - uint16_t VL53LX_p_021, - VL53LX_histogram_bin_data_t *pdata); - - void VL53L3CX_decode_row_col( - uint8_t spad_number, - uint8_t *prow, - uint8_t *pcol); - - void VL53L3CX_hist_find_min_max_bin_values( - VL53LX_histogram_bin_data_t *pdata); - - void VL53L3CX_hist_estimate_ambient_from_ambient_bins( - VL53LX_histogram_bin_data_t *pdata); - - uint32_t VL53L3CX_calc_pll_period_us( - uint16_t fast_osc_frequency); - - uint32_t VL53L3CX_duration_maths( - uint32_t pll_period_us, - uint32_t vcsel_parm_pclks, - uint32_t window_vclks, - uint32_t periods_elapsed_mclks); - - - /* vl53lx_core.h */ - - void VL53L3CX_init_version(); - - void VL53L3CX_init_ll_driver_state( - VL53LX_DeviceState ll_state); - - VL53LX_Error VL53L3CX_update_ll_driver_rd_state(); - - VL53LX_Error VL53L3CX_check_ll_driver_rd_state(); - - VL53LX_Error VL53L3CX_update_ll_driver_cfg_state(); - - void VL53L3CX_copy_rtn_good_spads_to_buffer( - VL53LX_nvm_copy_data_t *pdata, - uint8_t *pbuffer); - - void VL53L3CX_init_system_results( - VL53LX_system_results_t *pdata); - - void VL53L3CX_init_zone_results_structure( - uint8_t active_zones, - VL53LX_zone_results_t *pdata); - - void VL53L3CX_init_zone_dss_configs(); - - void VL53L3CX_init_histogram_config_structure( - uint8_t even_bin0, - uint8_t even_bin1, - uint8_t even_bin2, - uint8_t even_bin3, - uint8_t even_bin4, - uint8_t even_bin5, - uint8_t odd_bin0, - uint8_t odd_bin1, - uint8_t odd_bin2, - uint8_t odd_bin3, - uint8_t odd_bin4, - uint8_t odd_bin5, - VL53LX_histogram_config_t *pdata); - - void VL53L3CX_init_histogram_multizone_config_structure( - uint8_t even_bin0, - uint8_t even_bin1, - uint8_t even_bin2, - uint8_t even_bin3, - uint8_t even_bin4, - uint8_t even_bin5, - uint8_t odd_bin0, - uint8_t odd_bin1, - uint8_t odd_bin2, - uint8_t odd_bin3, - uint8_t odd_bin4, - uint8_t odd_bin5, - VL53LX_histogram_config_t *pdata); - - void VL53L3CX_init_xtalk_bin_data_struct( - uint32_t bin_value, - uint16_t VL53LX_p_021, - VL53LX_xtalk_histogram_shape_t *pdata); - - void VL53L3CX_i2c_encode_uint16_t( - uint16_t ip_value, - uint16_t count, - uint8_t *pbuffer); - - uint16_t VL53L3CX_i2c_decode_uint16_t( - uint16_t count, - uint8_t *pbuffer); - - void VL53L3CX_i2c_encode_int16_t( - int16_t ip_value, - uint16_t count, - uint8_t *pbuffer); - - int16_t VL53L3CX_i2c_decode_int16_t( - uint16_t count, - uint8_t *pbuffer); - - void VL53L3CX_i2c_encode_uint32_t( - uint32_t ip_value, - uint16_t count, - uint8_t *pbuffer); - - uint32_t VL53L3CX_i2c_decode_uint32_t( - uint16_t count, - uint8_t *pbuffer); - - uint32_t VL53L3CX_i2c_decode_with_mask( - uint16_t count, - uint8_t *pbuffer, - uint32_t bit_mask, - uint32_t down_shift, - uint32_t offset); - - void VL53L3CX_i2c_encode_int32_t( - int32_t ip_value, - uint16_t count, - uint8_t *pbuffer); - - int32_t VL53L3CX_i2c_decode_int32_t( - uint16_t count, - uint8_t *pbuffer); - - VL53LX_Error VL53L3CX_start_test( - uint8_t test_mode__ctrl); - - VL53LX_Error VL53L3CX_set_firmware_enable_register(uint8_t value); - - VL53LX_Error VL53L3CX_enable_firmware(); - - VL53LX_Error VL53L3CX_disable_firmware(); - - VL53LX_Error VL53L3CX_set_powerforce_register( - uint8_t value); - - VL53LX_Error VL53L3CX_enable_powerforce(); - - VL53LX_Error VL53L3CX_disable_powerforce(); - - VL53LX_Error VL53L3CX_clear_interrupt(); - - VL53LX_Error VL53L3CX_force_shadow_stream_count_to_zero(); - - uint32_t VL53L3CX_calc_macro_period_us( - uint16_t fast_osc_frequency, - uint8_t VL53LX_p_005); - - uint16_t VL53L3CX_calc_range_ignore_threshold( - uint32_t central_rate, - int16_t x_gradient, - int16_t y_gradient, - uint8_t rate_mult); - - uint32_t VL53L3CX_calc_timeout_mclks( - uint32_t timeout_us, - uint32_t macro_period_us); - - uint16_t VL53L3CX_calc_encoded_timeout( - uint32_t timeout_us, - uint32_t macro_period_us); - - uint32_t VL53L3CX_calc_timeout_us( - uint32_t timeout_mclks, - uint32_t macro_period_us); - - uint32_t VL53L3CX_calc_decoded_timeout_us( - uint16_t timeout_encoded, - uint32_t macro_period_us); - - uint16_t VL53L3CX_encode_timeout( - uint32_t timeout_mclks); - - uint32_t VL53L3CX_decode_timeout( - uint16_t encoded_timeout); - - VL53LX_Error VL53L3CX_calc_timeout_register_values( - uint32_t phasecal_config_timeout_us, - uint32_t mm_config_timeout_us, - uint32_t range_config_timeout_us, - uint16_t fast_osc_frequency, - VL53LX_general_config_t *pgeneral, - VL53LX_timing_config_t *ptiming); - - uint8_t VL53L3CX_encode_vcsel_period( - uint8_t VL53LX_p_030); - - uint32_t VL53L3CX_decode_unsigned_integer( - uint8_t *pbuffer, - uint8_t no_of_bytes); - - void VL53L3CX_encode_unsigned_integer( - uint32_t ip_value, - uint8_t no_of_bytes, - uint8_t *pbuffer); - - VL53LX_Error VL53L3CX_hist_copy_and_scale_ambient_info( - VL53LX_zone_hist_info_t *pidata, - VL53LX_histogram_bin_data_t *podata); - - void VL53L3CX_hist_get_bin_sequence_config( - VL53LX_histogram_bin_data_t *pdata); - - VL53LX_Error VL53L3CX_hist_phase_consistency_check( - VL53LX_zone_hist_info_t *phist_prev, - VL53LX_zone_objects_t *prange_prev, - VL53LX_range_results_t *prange_curr); - - VL53LX_Error VL53L3CX_hist_events_consistency_check( - uint8_t event_sigma, - uint16_t min_effective_spad_count, - VL53LX_zone_hist_info_t *phist_prev, - VL53LX_object_data_t *prange_prev, - VL53LX_range_data_t *prange_curr, - int32_t *pevents_tolerance, - int32_t *pevents_delta, - VL53LX_DeviceError *prange_status); - - VL53LX_Error VL53L3CX_hist_merged_pulse_check( - int16_t min_max_tolerance_mm, - VL53LX_range_data_t *pdata, - VL53LX_DeviceError *prange_status); - - VL53LX_Error VL53L3CX_hist_xmonitor_consistency_check( - VL53LX_zone_hist_info_t *phist_prev, - VL53LX_zone_objects_t *prange_prev, - VL53LX_range_data_t *prange_curr); - - VL53LX_Error VL53L3CX_hist_wrap_dmax( - VL53LX_hist_post_process_config_t *phistpostprocess, - VL53LX_histogram_bin_data_t *pcurrent, - int16_t *pwrap_dmax_mm); - - void VL53L3CX_hist_combine_mm1_mm2_offsets( - int16_t mm1_offset_mm, - int16_t mm2_offset_mm, - uint8_t encoded_mm_roi_centre, - uint8_t encoded_mm_roi_size, - uint8_t encoded_zone_centre, - uint8_t encoded_zone_size, - VL53LX_additional_offset_cal_data_t *pcal_data, - uint8_t *pgood_spads, - uint16_t aperture_attenuation, - int16_t *prange_offset_mm); - - VL53LX_Error VL53L3CX_hist_xtalk_extract_calc_window( - int16_t target_distance_mm, - uint16_t target_width_oversize, - VL53LX_histogram_bin_data_t *phist_bins, - VL53LX_hist_xtalk_extract_data_t *pxtalk_data); - - VL53LX_Error VL53L3CX_hist_xtalk_extract_calc_event_sums( - VL53LX_histogram_bin_data_t *phist_bins, - VL53LX_hist_xtalk_extract_data_t *pxtalk_data); - - VL53LX_Error VL53L3CX_hist_xtalk_extract_calc_rate_per_spad( - VL53LX_hist_xtalk_extract_data_t *pxtalk_data); - - VL53LX_Error VL53L3CX_hist_xtalk_extract_calc_shape( - VL53LX_hist_xtalk_extract_data_t *pxtalk_data, - VL53LX_xtalk_histogram_shape_t *pxtalk_shape); - - VL53LX_Error VL53L3CX_hist_xtalk_shape_model( - uint16_t events_per_bin, - uint16_t pulse_centre, - uint16_t pulse_width, - VL53LX_xtalk_histogram_shape_t *pxtalk_shape); - - uint16_t VL53L3CX_hist_xtalk_shape_model_interp( - uint16_t events_per_bin, - uint32_t phase_delta); - - void VL53L3CX_spad_number_to_byte_bit_index( - uint8_t spad_number, - uint8_t *pbyte_index, - uint8_t *pbit_index, - uint8_t *pbit_mask); - - void VL53L3CX_encode_row_col( - uint8_t row, - uint8_t col, - uint8_t *pspad_number); - - void VL53L3CX_decode_zone_size( - uint8_t encoded_xy_size, - uint8_t *pwidth, - uint8_t *pheight); - - void VL53L3CX_encode_zone_size( - uint8_t width, - uint8_t height, - uint8_t *pencoded_xy_size); - - void VL53L3CX_decode_zone_limits( - uint8_t encoded_xy_centre, - uint8_t encoded_xy_size, - int16_t *px_ll, - int16_t *py_ll, - int16_t *px_ur, - int16_t *py_ur); - - uint8_t VL53L3CX_is_aperture_location( - uint8_t row, - uint8_t col); - - void VL53L3CX_calc_max_effective_spads( - uint8_t encoded_zone_centre, - uint8_t encoded_zone_size, - uint8_t *pgood_spads, - uint16_t aperture_attenuation, - uint16_t *pmax_effective_spads); - - void VL53L3CX_calc_mm_effective_spads( - uint8_t encoded_mm_roi_centre, - uint8_t encoded_mm_roi_size, - uint8_t encoded_zone_centre, - uint8_t encoded_zone_size, - uint8_t *pgood_spads, - uint16_t aperture_attenuation, - uint16_t *pmm_inner_effective_spads, - uint16_t *pmm_outer_effective_spads); - - void VL53L3CX_hist_copy_results_to_sys_and_core( - VL53LX_histogram_bin_data_t *pbins, - VL53LX_range_results_t *phist, - VL53LX_system_results_t *psys, - VL53LX_core_results_t *pcore); - - - - - VL53LX_Error VL53L3CX_save_cfg_data(); - - VL53LX_Error VL53L3CX_dynamic_zone_update( - VL53LX_range_results_t *presults); - - VL53LX_Error VL53L3CX_update_internal_stream_counters( - uint8_t external_stream_count, - uint8_t *pinternal_stream_count, - uint8_t *pinternal_stream_count_val - ); - - VL53LX_Error VL53L3CX_multizone_hist_bins_update(); - - VL53LX_Error VL53L3CX_set_histogram_multizone_initial_bin_config( - VL53LX_zone_config_t *pzone_cfg, - VL53LX_histogram_config_t *phist_cfg, - VL53LX_histogram_config_t *pmulti_hist - ); - - uint8_t VL53L3CX_encode_GPIO_interrupt_config( - VL53LX_GPIO_interrupt_config_t *pintconf); - - VL53LX_GPIO_interrupt_config_t VL53L3CX_decode_GPIO_interrupt_config( - uint8_t system__interrupt_config); - - VL53LX_Error VL53L3CX_set_GPIO_distance_threshold( - uint16_t threshold_high, - uint16_t threshold_low); - - VL53LX_Error VL53L3CX_set_GPIO_rate_threshold( - uint16_t threshold_high, - uint16_t threshold_low); - - VL53LX_Error VL53L3CX_set_GPIO_thresholds_from_struct( - VL53LX_GPIO_interrupt_config_t *pintconf); - - VL53LX_Error VL53L3CX_set_ref_spad_char_config( - uint8_t vcsel_period_a, - uint32_t phasecal_timeout_us, - uint16_t total_rate_target_mcps, - uint16_t max_count_rate_rtn_limit_mcps, - uint16_t min_count_rate_rtn_limit_mcps, - uint16_t fast_osc_frequency); - - VL53LX_Error VL53L3CX_set_ssc_config( - VL53LX_ssc_config_t *pssc_cfg, - uint16_t fast_osc_frequency); - - VL53LX_Error VL53L3CX_get_spad_rate_data( - VL53LX_spad_rate_data_t *pspad_rates); - - uint32_t VL53L3CX_calc_crosstalk_plane_offset_with_margin( - uint32_t plane_offset_kcps, - int16_t margin_offset_kcps); - - VL53LX_Error VL53L3CX_low_power_auto_data_init(); - - VL53LX_Error VL53L3CX_low_power_auto_data_stop_range(); - - VL53LX_Error VL53L3CX_dynamic_xtalk_correction_calc_required_samples(); - - VL53LX_Error VL53L3CX_dynamic_xtalk_correction_calc_new_xtalk( - uint32_t xtalk_offset_out, - VL53LX_smudge_corrector_config_t *pconfig, - VL53LX_smudge_corrector_data_t *pout, - uint8_t add_smudge, - uint8_t soft_update - ); - - VL53LX_Error VL53L3CX_dynamic_xtalk_correction_corrector(); - - VL53LX_Error VL53L3CX_dynamic_xtalk_correction_data_init(); - - VL53LX_Error VL53L3CX_dynamic_xtalk_correction_output_init( - VL53LX_LLDriverResults_t *pres - ); - - VL53LX_Error VL53L3CX_xtalk_cal_data_init(); - - VL53LX_Error VL53L3CX_config_low_power_auto_mode( - VL53LX_general_config_t *pgeneral, - VL53LX_dynamic_config_t *pdynamic, - VL53LX_low_power_auto_data_t *plpadata - ); - - VL53LX_Error VL53L3CX_low_power_auto_setup_manual_calibration(); - - VL53LX_Error VL53L3CX_low_power_auto_update_DSS(); - - VL53LX_Error VL53L3CX_compute_histo_merge_nb(uint8_t *histo_merge_nb); - - - - /* vl53lx_wait.h */ - - VL53LX_Error VL53L3CX_wait_for_boot_completion(); - - VL53LX_Error VL53L3CX_wait_for_firmware_ready(); - - VL53LX_Error VL53L3CX_wait_for_range_completion(); - - VL53LX_Error VL53L3CX_wait_for_test_completion(); - - VL53LX_Error VL53L3CX_is_boot_complete(uint8_t *pready); - - VL53LX_Error VL53L3CX_is_firmware_ready(uint8_t *pready); - - VL53LX_Error VL53L3CX_is_new_data_ready(uint8_t *pready); - - VL53LX_Error VL53L3CX_poll_for_boot_completion(uint32_t timeout_ms); - - VL53LX_Error VL53L3CX_poll_for_firmware_ready(uint32_t timeout_ms); - - VL53LX_Error VL53L3CX_poll_for_range_completion(uint32_t timeout_ms); - - - /* vl53lx_zone_presets.h */ - - VL53LX_Error VL53L3CX_init_zone_config_structure( - uint8_t x_off, - uint8_t x_inc, - uint8_t x_zones, - uint8_t y_off, - uint8_t y_inc, - uint8_t y_zones, - uint8_t width, - uint8_t height, - VL53LX_zone_config_t *pdata); - - - VL53LX_Error VL53L3CX_init_zone_config_histogram_bins( - VL53LX_zone_config_t *pdata); - - - /* vl53lx_api_preset_modes.h */ - - VL53LX_Error VL53L3CX_init_refspadchar_config_struct( - VL53LX_refspadchar_config_t *pdata); - - VL53LX_Error VL53L3CX_init_ssc_config_struct( - VL53LX_ssc_config_t *pdata); - - VL53LX_Error VL53L3CX_init_xtalk_config_struct( - VL53LX_customer_nvm_managed_t *pnvm, - VL53LX_xtalk_config_t *pdata); - - VL53LX_Error VL53L3CX_init_xtalk_extract_config_struct( - VL53LX_xtalkextract_config_t *pdata); - - VL53LX_Error VL53L3CX_init_offset_cal_config_struct( - VL53LX_offsetcal_config_t *pdata); - - VL53LX_Error VL53L3CX_init_zone_cal_config_struct( - VL53LX_zonecal_config_t *pdata); - - VL53LX_Error VL53L3CX_init_hist_post_process_config_struct( - uint8_t xtalk_compensation_enable, - VL53LX_hist_post_process_config_t *pdata); - - VL53LX_Error VL53L3CX_init_dmax_calibration_data_struct( - VL53LX_dmax_calibration_data_t *pdata); - - VL53LX_Error VL53L3CX_init_tuning_parm_storage_struct( - VL53LX_tuning_parm_storage_t *pdata); - - VL53LX_Error VL53L3CX_init_hist_gen3_dmax_config_struct( - VL53LX_hist_gen3_dmax_config_t *pdata); - - VL53LX_Error VL53L3CX_preset_mode_standard_ranging( - VL53LX_static_config_t *pstatic, - VL53LX_histogram_config_t *phistogram, - VL53LX_general_config_t *pgeneral, - VL53LX_timing_config_t *ptiming, - VL53LX_dynamic_config_t *pdynamic, - VL53LX_system_control_t *psystem, - VL53LX_tuning_parm_storage_t *ptuning_parms, - VL53LX_zone_config_t *pzone_cfg); - - - - VL53LX_Error VL53L3CX_preset_mode_histogram_ranging( - VL53LX_hist_post_process_config_t *phistpostprocess, - VL53LX_static_config_t *pstatic, - VL53LX_histogram_config_t *phistogram, - VL53LX_general_config_t *pgeneral, - VL53LX_timing_config_t *ptiming, - VL53LX_dynamic_config_t *pdynamic, - VL53LX_system_control_t *psystem, - VL53LX_tuning_parm_storage_t *ptuning_parms, - VL53LX_zone_config_t *pzone_cfg); - - - VL53LX_Error VL53L3CX_preset_mode_histogram_characterisation( - VL53LX_hist_post_process_config_t *phistpostprocess, - VL53LX_static_config_t *pstatic, - VL53LX_histogram_config_t *phistogram, - VL53LX_general_config_t *pgeneral, - VL53LX_timing_config_t *ptiming, - VL53LX_dynamic_config_t *pdynamic, - VL53LX_system_control_t *psystem, - VL53LX_tuning_parm_storage_t *ptuning_parms, - VL53LX_zone_config_t *pzone_cfg); - - VL53LX_Error VL53L3CX_preset_mode_histogram_xtalk_planar( - VL53LX_hist_post_process_config_t *phistpostprocess, - VL53LX_static_config_t *pstatic, - VL53LX_histogram_config_t *phistogram, - VL53LX_general_config_t *pgeneral, - VL53LX_timing_config_t *ptiming, - VL53LX_dynamic_config_t *pdynamic, - VL53LX_system_control_t *psystem, - VL53LX_tuning_parm_storage_t *ptuning_parms, - VL53LX_zone_config_t *pzone_cfg); - - - VL53LX_Error VL53L3CX_preset_mode_histogram_long_range( - VL53LX_hist_post_process_config_t *phistpostprocess, - VL53LX_static_config_t *pstatic, - VL53LX_histogram_config_t *phistogram, - VL53LX_general_config_t *pgeneral, - VL53LX_timing_config_t *ptiming, - VL53LX_dynamic_config_t *pdynamic, - VL53LX_system_control_t *psystem, - VL53LX_tuning_parm_storage_t *ptuning_parms, - VL53LX_zone_config_t *pzone_cfg); - - VL53LX_Error VL53L3CX_preset_mode_histogram_medium_range( - VL53LX_hist_post_process_config_t *phistpostprocess, - VL53LX_static_config_t *pstatic, - VL53LX_histogram_config_t *phistogram, - VL53LX_general_config_t *pgeneral, - VL53LX_timing_config_t *ptiming, - VL53LX_dynamic_config_t *pdynamic, - VL53LX_system_control_t *psystem, - VL53LX_tuning_parm_storage_t *ptuning_parms, - VL53LX_zone_config_t *pzone_cfg); - - VL53LX_Error VL53L3CX_preset_mode_histogram_short_range( - VL53LX_hist_post_process_config_t *phistpostprocess, - VL53LX_static_config_t *pstatic, - VL53LX_histogram_config_t *phistogram, - VL53LX_general_config_t *pgeneral, - VL53LX_timing_config_t *ptiming, - VL53LX_dynamic_config_t *pdynamic, - VL53LX_system_control_t *psystem, - VL53LX_tuning_parm_storage_t *ptuning_parms, - VL53LX_zone_config_t *pzone_cfg); - - - - - void VL53L3CX_copy_hist_cfg_to_static_cfg( - VL53LX_histogram_config_t *phistogram, - VL53LX_static_config_t *pstatic, - VL53LX_general_config_t *pgeneral, - VL53LX_timing_config_t *ptiming, - VL53LX_dynamic_config_t *pdynamic); - - void VL53L3CX_copy_hist_bins_to_static_cfg( - VL53LX_histogram_config_t *phistogram, - VL53LX_static_config_t *pstatic, - VL53LX_timing_config_t *ptiming); - - - /* vl53lx_silicon_core.h */ - VL53LX_Error VL53L3CX_is_firmware_ready_silicon( - uint8_t *pready); - - - - - /* vl53lx_xtalk.h */ - - VL53LX_Error VL53L3CX_xtalk_calibration_process_data( - VL53LX_xtalk_range_results_t *pxtalk_ranges, - VL53LX_xtalk_histogram_data_t *pxtalk_shape, - VL53LX_xtalk_calibration_results_t *pxtalk_cal); - - - - /* vl53lx_api_calibration.h */ - - VL53LX_Error VL53L3CX_run_ref_spad_char( - VL53LX_Error *pcal_status); - - - - - VL53LX_Error VL53L3CX_run_device_test( - VL53LX_DeviceTestMode device_test_mode); - - - - VL53LX_Error VL53L3CX_run_xtalk_extraction( - VL53LX_Error *pcal_status); - - - - VL53LX_Error VL53L3CX_get_and_avg_xtalk_samples( - uint8_t num_of_samples, - uint8_t measurement_mode, - int16_t xtalk_filter_thresh_max_mm, - int16_t xtalk_filter_thresh_min_mm, - uint16_t xtalk_max_valid_rate_kcps, - uint8_t xtalk_result_id, - uint8_t xtalk_histo_id, - VL53LX_xtalk_range_results_t *pxtalk_results, - VL53LX_histogram_bin_data_t *psum_histo, - VL53LX_histogram_bin_data_t *pavg_histo); - - - - VL53LX_Error VL53L3CX__run_phasecal_average( - uint8_t measurement_mode, - uint8_t phasecal_result__vcsel_start, - uint16_t phasecal_num_of_samples, - VL53LX_range_results_t *prange_results, - uint16_t *pphasecal_result__reference_phase, - uint16_t *pzero_distance_phase); - - - void VL53L3CX_hist_xtalk_extract_data_init( - VL53LX_hist_xtalk_extract_data_t *pxtalk_data); - - - - VL53LX_Error VL53L3CX_hist_xtalk_extract_update( - int16_t target_distance_mm, - uint16_t target_width_oversize, - VL53LX_histogram_bin_data_t *phist_bins, - VL53LX_hist_xtalk_extract_data_t *pxtalk_data); - - - - VL53LX_Error VL53L3CX_hist_xtalk_extract_fini( - VL53LX_histogram_bin_data_t *phist_bins, - VL53LX_hist_xtalk_extract_data_t *pxtalk_data, - VL53LX_xtalk_calibration_results_t *pxtalk_cal, - VL53LX_xtalk_histogram_shape_t *pxtalk_shape); - - - - - VL53LX_Error VL53L3CX_run_hist_xtalk_extraction( - int16_t cal_distance_mm, - VL53LX_Error *pcal_status); - - /* vl53lx_api_core.c static functions */ - void VL53L3CX_histo_merge(VL53LX_histogram_bin_data_t *pdata); - - /* vl53lx_api.c static functions */ - - int BDTable[11]; - - - - /* Write and read functions from I2C */ - - VL53LX_Error VL53L3CX_WrByte(VL53LX_DEV Dev, uint16_t index, uint8_t data); - VL53LX_Error VL53L3CX_WrWord(VL53LX_DEV Dev, uint16_t index, uint16_t data); - VL53LX_Error VL53L3CX_WrDWord(VL53LX_DEV Dev, uint16_t index, uint32_t data); - VL53LX_Error VL53L3CX_RdByte(VL53LX_DEV Dev, uint16_t index, uint8_t *data); - // VL53LX_Error VL53L3CX_RdWord(VL53LX_DEV Dev, uint16_t index, uint16_t *data); - VL53LX_Error VL53L3CX_RdDWord(VL53LX_DEV Dev, uint16_t index, uint32_t *data); - VL53LX_Error VL53L3CX_UpdateByte(VL53LX_DEV Dev, uint16_t index, uint8_t AndData, uint8_t OrData); - - VL53LX_Error VL53L3CX_WriteMulti(VL53LX_DEV Dev, uint16_t index, uint8_t *pdata, uint32_t count); - VL53LX_Error VL53L3CX_ReadMulti(VL53LX_DEV Dev, uint16_t index, uint8_t *pdata, uint32_t count); - - VL53LX_Error VL53L3CX_I2CWrite(uint8_t DeviceAddr, uint16_t RegisterAddr, uint8_t *pBuffer, uint16_t NumByteToWrite); - VL53LX_Error VL53L3CX_I2CRead(uint8_t DeviceAddr, uint16_t RegisterAddr, uint8_t *pBuffer, uint16_t NumByteToRead); - VL53LX_Error VL53L3CX_GetTickCount(uint32_t *ptick_count_ms); - VL53LX_Error VL53L3CX_WaitUs(VL53LX_Dev_t *pdev, int32_t wait_us); - VL53LX_Error VL53L3CX_WaitMs(VL53LX_DEV Dev, int32_t wait_ms); - - VL53LX_Error VL53L3CX_WaitValueMaskEx(VL53LX_DEV dev, uint32_t timeout_ms, uint16_t index, uint8_t value, uint8_t mask, uint32_t poll_delay_ms); - - // dummy routines needed for inherited functions - int read_id(uint8_t *id) - { - printf("dwwdji"); - return 26; - } - - - - int get_distance(uint32_t *pi_data) - { - return 43; - } - - - //protected: - - /* IO Device */ - vl53L3_DevI2C *dev_i2c; - /* Digital out pin */ - int gpio0; - - /* Device data */ - VL53LX_Dev_t MyDevice; - VL53LX_DEV Dev; - - vl53L3_DevI2C *i2c_inst; - - /* Digital out pin */ - DigitalOut *_gpio0; - /* GPIO expander */ - Stmpe1600DigiOut *_expgpio0; - /* Measure detection IRQ */ - InterruptIn *_gpio1Int; - int I2cDevAddr; -}; - -#endif /* _VL53LX_CLASS_H_ */ -