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:
5:89031b2f5316
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/modules/vl53lx_core.h	Wed Jul 14 12:45:49 2021 +0100
@@ -0,0 +1,748 @@
+
+/* SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause */
+/******************************************************************************
+ * Copyright (c) 2020, STMicroelectronics - All Rights Reserved
+
+ This file is part of VL53LX and is dual licensed,
+ either GPL-2.0+
+ or 'BSD 3-clause "New" or "Revised" License' , at your option.
+ ******************************************************************************
+ */
+
+
+
+
+#ifndef _VL53LX_CORE_H_
+#define _VL53LX_CORE_H_
+
+#include "vl53lx_platform.h"
+#include "vl53lx_core_support.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+
+
+void VL53LX_init_version(
+	VL53LX_DEV         Dev);
+
+
+
+
+void VL53LX_init_ll_driver_state(
+	VL53LX_DEV         Dev,
+	VL53LX_DeviceState ll_state);
+
+
+
+
+VL53LX_Error VL53LX_update_ll_driver_rd_state(
+	VL53LX_DEV         Dev);
+
+
+
+
+VL53LX_Error VL53LX_check_ll_driver_rd_state(
+	VL53LX_DEV         Dev);
+
+
+
+
+VL53LX_Error VL53LX_update_ll_driver_cfg_state(
+	VL53LX_DEV         Dev);
+
+
+
+
+void VL53LX_copy_rtn_good_spads_to_buffer(
+	VL53LX_nvm_copy_data_t  *pdata,
+	uint8_t                 *pbuffer);
+
+
+
+
+void VL53LX_init_system_results(
+	VL53LX_system_results_t      *pdata);
+
+
+
+
+void V53L1_init_zone_results_structure(
+	uint8_t                 active_zones,
+	VL53LX_zone_results_t  *pdata);
+
+
+
+
+void V53L1_init_zone_dss_configs(
+	VL53LX_DEV              Dev);
+
+
+
+
+void VL53LX_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 VL53LX_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 VL53LX_init_xtalk_bin_data_struct(
+	uint32_t                        bin_value,
+	uint16_t                        VL53LX_p_021,
+	VL53LX_xtalk_histogram_shape_t *pdata);
+
+
+
+
+void VL53LX_i2c_encode_uint16_t(
+	uint16_t    ip_value,
+	uint16_t    count,
+	uint8_t    *pbuffer);
+
+
+
+
+uint16_t VL53LX_i2c_decode_uint16_t(
+	uint16_t    count,
+	uint8_t    *pbuffer);
+
+
+
+
+void VL53LX_i2c_encode_int16_t(
+	int16_t     ip_value,
+	uint16_t    count,
+	uint8_t    *pbuffer);
+
+
+
+
+int16_t VL53LX_i2c_decode_int16_t(
+	uint16_t    count,
+	uint8_t    *pbuffer);
+
+
+
+
+void VL53LX_i2c_encode_uint32_t(
+	uint32_t    ip_value,
+	uint16_t    count,
+	uint8_t    *pbuffer);
+
+
+
+
+uint32_t VL53LX_i2c_decode_uint32_t(
+	uint16_t    count,
+	uint8_t    *pbuffer);
+
+
+
+
+uint32_t VL53LX_i2c_decode_with_mask(
+	uint16_t    count,
+	uint8_t    *pbuffer,
+	uint32_t    bit_mask,
+	uint32_t    down_shift,
+	uint32_t    offset);
+
+
+
+
+void VL53LX_i2c_encode_int32_t(
+	int32_t     ip_value,
+	uint16_t    count,
+	uint8_t    *pbuffer);
+
+
+
+
+int32_t VL53LX_i2c_decode_int32_t(
+	uint16_t    count,
+	uint8_t    *pbuffer);
+
+
+
+
+VL53LX_Error VL53LX_start_test(
+	VL53LX_DEV     Dev,
+	uint8_t        test_mode__ctrl);
+
+
+
+
+VL53LX_Error VL53LX_set_firmware_enable_register(
+	VL53LX_DEV         Dev,
+	uint8_t            value);
+
+
+
+
+VL53LX_Error VL53LX_enable_firmware(
+	VL53LX_DEV         Dev);
+
+
+
+
+VL53LX_Error VL53LX_disable_firmware(
+	VL53LX_DEV         Dev);
+
+
+
+
+VL53LX_Error VL53LX_set_powerforce_register(
+	VL53LX_DEV         Dev,
+	uint8_t            value);
+
+
+
+
+
+VL53LX_Error VL53LX_enable_powerforce(
+	VL53LX_DEV         Dev);
+
+
+
+VL53LX_Error VL53LX_disable_powerforce(
+	VL53LX_DEV         Dev);
+
+
+
+
+
+VL53LX_Error VL53LX_clear_interrupt(
+	VL53LX_DEV         Dev);
+
+
+
+
+
+VL53LX_Error VL53LX_force_shadow_stream_count_to_zero(
+	VL53LX_DEV         Dev);
+
+
+
+
+uint32_t VL53LX_calc_macro_period_us(
+	uint16_t fast_osc_frequency,
+	uint8_t  VL53LX_p_005);
+
+
+
+
+uint16_t VL53LX_calc_range_ignore_threshold(
+	uint32_t central_rate,
+	int16_t  x_gradient,
+	int16_t  y_gradient,
+	uint8_t  rate_mult);
+
+
+
+
+uint32_t VL53LX_calc_timeout_mclks(
+	uint32_t  timeout_us,
+	uint32_t  macro_period_us);
+
+
+
+uint16_t VL53LX_calc_encoded_timeout(
+	uint32_t  timeout_us,
+	uint32_t  macro_period_us);
+
+
+
+
+uint32_t VL53LX_calc_timeout_us(
+	uint32_t  timeout_mclks,
+	uint32_t  macro_period_us);
+
+
+
+uint32_t VL53LX_calc_decoded_timeout_us(
+	uint16_t  timeout_encoded,
+	uint32_t  macro_period_us);
+
+
+
+
+uint16_t VL53LX_encode_timeout(
+	uint32_t timeout_mclks);
+
+
+
+
+uint32_t VL53LX_decode_timeout(
+	uint16_t encoded_timeout);
+
+
+
+
+VL53LX_Error  VL53LX_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 VL53LX_encode_vcsel_period(
+	uint8_t VL53LX_p_030);
+
+
+
+
+uint32_t VL53LX_decode_unsigned_integer(
+	uint8_t  *pbuffer,
+	uint8_t   no_of_bytes);
+
+
+
+
+void   VL53LX_encode_unsigned_integer(
+	uint32_t  ip_value,
+	uint8_t   no_of_bytes,
+	uint8_t  *pbuffer);
+
+
+
+
+VL53LX_Error VL53LX_hist_copy_and_scale_ambient_info(
+	VL53LX_zone_hist_info_t        *pidata,
+	VL53LX_histogram_bin_data_t    *podata);
+
+
+
+
+void  VL53LX_hist_get_bin_sequence_config(
+	VL53LX_DEV                     Dev,
+	VL53LX_histogram_bin_data_t   *pdata);
+
+
+
+
+VL53LX_Error  VL53LX_hist_phase_consistency_check(
+	VL53LX_DEV                   Dev,
+	VL53LX_zone_hist_info_t     *phist_prev,
+	VL53LX_zone_objects_t       *prange_prev,
+	VL53LX_range_results_t      *prange_curr);
+
+
+
+
+
+
+
+VL53LX_Error  VL53LX_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  VL53LX_hist_merged_pulse_check(
+	int16_t                      min_max_tolerance_mm,
+	VL53LX_range_data_t         *pdata,
+	VL53LX_DeviceError          *prange_status);
+
+
+
+
+
+
+VL53LX_Error  VL53LX_hist_xmonitor_consistency_check(
+	VL53LX_DEV                   Dev,
+	VL53LX_zone_hist_info_t     *phist_prev,
+	VL53LX_zone_objects_t       *prange_prev,
+	VL53LX_range_data_t         *prange_curr);
+
+
+
+
+
+
+VL53LX_Error  VL53LX_hist_wrap_dmax(
+	VL53LX_hist_post_process_config_t *phistpostprocess,
+	VL53LX_histogram_bin_data_t       *pcurrent,
+	int16_t                           *pwrap_dmax_mm);
+
+
+
+
+void VL53LX_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 VL53LX_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 VL53LX_hist_xtalk_extract_calc_event_sums(
+	VL53LX_histogram_bin_data_t        *phist_bins,
+	VL53LX_hist_xtalk_extract_data_t   *pxtalk_data);
+
+
+
+
+VL53LX_Error VL53LX_hist_xtalk_extract_calc_rate_per_spad(
+	VL53LX_hist_xtalk_extract_data_t   *pxtalk_data);
+
+
+
+VL53LX_Error VL53LX_hist_xtalk_extract_calc_shape(
+	VL53LX_hist_xtalk_extract_data_t  *pxtalk_data,
+	VL53LX_xtalk_histogram_shape_t    *pxtalk_shape);
+
+
+
+VL53LX_Error VL53LX_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 VL53LX_hist_xtalk_shape_model_interp(
+	uint16_t      events_per_bin,
+	uint32_t      phase_delta);
+
+
+
+
+void VL53LX_spad_number_to_byte_bit_index(
+	uint8_t  spad_number,
+	uint8_t *pbyte_index,
+	uint8_t *pbit_index,
+	uint8_t *pbit_mask);
+
+
+
+
+void VL53LX_encode_row_col(
+	uint8_t  row,
+	uint8_t  col,
+	uint8_t *pspad_number);
+
+
+
+
+void VL53LX_decode_zone_size(
+	uint8_t   encoded_xy_size,
+	uint8_t  *pwidth,
+	uint8_t  *pheight);
+
+
+
+
+void VL53LX_encode_zone_size(
+	uint8_t  width,
+	uint8_t  height,
+	uint8_t *pencoded_xy_size);
+
+
+
+
+void VL53LX_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 VL53LX_is_aperture_location(
+	uint8_t   row,
+	uint8_t   col);
+
+
+
+
+void VL53LX_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 VL53LX_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 VL53LX_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 VL53LX_sum_histogram_data(
+		VL53LX_histogram_bin_data_t *phist_input,
+		VL53LX_histogram_bin_data_t *phist_output);
+
+
+
+
+VL53LX_Error VL53LX_avg_histogram_data(
+		uint8_t no_of_samples,
+		VL53LX_histogram_bin_data_t *phist_sum,
+		VL53LX_histogram_bin_data_t *phist_avg);
+
+
+
+
+VL53LX_Error VL53LX_save_cfg_data(
+	VL53LX_DEV  Dev);
+
+
+
+
+VL53LX_Error VL53LX_dynamic_zone_update(
+	VL53LX_DEV  Dev,
+	VL53LX_range_results_t *presults);
+
+
+
+
+VL53LX_Error VL53LX_update_internal_stream_counters(
+	VL53LX_DEV  Dev,
+	uint8_t     external_stream_count,
+	uint8_t     *pinternal_stream_count,
+	uint8_t     *pinternal_stream_count_val
+	);
+
+
+
+VL53LX_Error VL53LX_multizone_hist_bins_update(
+	VL53LX_DEV  Dev);
+
+
+
+VL53LX_Error VL53LX_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	VL53LX_encode_GPIO_interrupt_config(
+	VL53LX_GPIO_interrupt_config_t	*pintconf);
+
+
+
+VL53LX_GPIO_interrupt_config_t VL53LX_decode_GPIO_interrupt_config(
+	uint8_t		system__interrupt_config);
+
+
+
+VL53LX_Error VL53LX_set_GPIO_distance_threshold(
+	VL53LX_DEV                      Dev,
+	uint16_t			threshold_high,
+	uint16_t			threshold_low);
+
+
+
+VL53LX_Error VL53LX_set_GPIO_rate_threshold(
+	VL53LX_DEV                      Dev,
+	uint16_t			threshold_high,
+	uint16_t			threshold_low);
+
+
+
+VL53LX_Error VL53LX_set_GPIO_thresholds_from_struct(
+	VL53LX_DEV                      Dev,
+	VL53LX_GPIO_interrupt_config_t *pintconf);
+
+
+
+
+
+VL53LX_Error VL53LX_set_ref_spad_char_config(
+	VL53LX_DEV    Dev,
+	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 VL53LX_set_ssc_config(
+	VL53LX_DEV           Dev,
+	VL53LX_ssc_config_t *pssc_cfg,
+	uint16_t             fast_osc_frequency);
+
+
+
+
+VL53LX_Error VL53LX_get_spad_rate_data(
+	VL53LX_DEV                Dev,
+	VL53LX_spad_rate_data_t  *pspad_rates);
+
+
+
+uint32_t VL53LX_calc_crosstalk_plane_offset_with_margin(
+		uint32_t     plane_offset_kcps,
+		int16_t      margin_offset_kcps);
+
+
+
+VL53LX_Error VL53LX_low_power_auto_data_init(
+	VL53LX_DEV                     Dev
+	);
+
+
+
+VL53LX_Error VL53LX_low_power_auto_data_stop_range(
+	VL53LX_DEV                     Dev
+	);
+
+
+
+
+VL53LX_Error VL53LX_dynamic_xtalk_correction_calc_required_samples(
+	VL53LX_DEV                     Dev
+	);
+
+
+
+VL53LX_Error VL53LX_dynamic_xtalk_correction_calc_new_xtalk(
+	VL53LX_DEV				Dev,
+	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 VL53LX_dynamic_xtalk_correction_corrector(
+	VL53LX_DEV                     Dev
+	);
+
+
+
+VL53LX_Error VL53LX_dynamic_xtalk_correction_data_init(
+	VL53LX_DEV                     Dev
+	);
+
+
+
+VL53LX_Error VL53LX_dynamic_xtalk_correction_output_init(
+	VL53LX_LLDriverResults_t *pres
+	);
+
+
+
+VL53LX_Error VL53LX_xtalk_cal_data_init(
+	VL53LX_DEV                          Dev
+	);
+
+
+
+VL53LX_Error VL53LX_config_low_power_auto_mode(
+	VL53LX_general_config_t   *pgeneral,
+	VL53LX_dynamic_config_t   *pdynamic,
+	VL53LX_low_power_auto_data_t *plpadata
+	);
+
+
+
+VL53LX_Error VL53LX_low_power_auto_setup_manual_calibration(
+	VL53LX_DEV        Dev);
+
+
+
+VL53LX_Error VL53LX_low_power_auto_update_DSS(
+	VL53LX_DEV        Dev);
+
+
+VL53LX_Error VL53LX_compute_histo_merge_nb(
+	VL53LX_DEV        Dev,	uint8_t *histo_merge_nb);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+