Fork of X-NUCLEO-53L0A1 Library and deleted the board related files. Just use a VL53L0X chip as a ToF sensor.

Dependents:   Check_VL53L0X_simple_with_three_ToF Check_VL53L0X_simple_ToF_Sensor lidarproj Check_VL53L0X_simple_with_three_ToF ... more

Fork of VL53L0X by ST

Please refer below page.
/users/kenjiArai/notebook/vl53l0x-tof-sensor/

Committer:
kenjiArai
Date:
Wed Feb 26 09:34:31 2020 +0000
Revision:
10:c9181a97a64f
Parent:
5:ac6604b75d50
bug fix for XSHUT=NC

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kenjiArai 5:ac6604b75d50 1
kenjiArai 5:ac6604b75d50 2 /* api.h functions */
kenjiArai 5:ac6604b75d50 3
kenjiArai 5:ac6604b75d50 4 /**
kenjiArai 5:ac6604b75d50 5 * @brief Wait for device booted after chip enable (hardware standby)
kenjiArai 5:ac6604b75d50 6 * This function can be run only when VL53L0X_State is VL53L0X_STATE_POWERDOWN.
kenjiArai 5:ac6604b75d50 7 *
kenjiArai 5:ac6604b75d50 8 * @note This function is not Implemented
kenjiArai 5:ac6604b75d50 9 *
kenjiArai 5:ac6604b75d50 10 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 11 * @return VL53L0X_ERROR_NOT_IMPLEMENTED Not implemented
kenjiArai 5:ac6604b75d50 12 *
kenjiArai 5:ac6604b75d50 13 */
kenjiArai 5:ac6604b75d50 14 VL53L0X_Error VL53L0X_wait_device_booted(VL53L0X_DEV dev);
kenjiArai 5:ac6604b75d50 15
kenjiArai 5:ac6604b75d50 16
kenjiArai 5:ac6604b75d50 17 VL53L0X_Error sequence_step_enabled(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 18 VL53L0X_SequenceStepId sequence_step_id, uint8_t sequence_config,
kenjiArai 5:ac6604b75d50 19 uint8_t *p_sequence_step_enabled);
kenjiArai 5:ac6604b75d50 20
kenjiArai 5:ac6604b75d50 21 VL53L0X_Error VL53L0X_check_and_load_interrupt_settings(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 22 uint8_t start_not_stopflag);
kenjiArai 5:ac6604b75d50 23
kenjiArai 5:ac6604b75d50 24
kenjiArai 5:ac6604b75d50 25 /* api_core.h functions */
kenjiArai 5:ac6604b75d50 26
kenjiArai 5:ac6604b75d50 27 VL53L0X_Error VL53L0X_get_info_from_device(VL53L0X_DEV dev, uint8_t option);
kenjiArai 5:ac6604b75d50 28
kenjiArai 5:ac6604b75d50 29 VL53L0X_Error VL53L0X_device_read_strobe(VL53L0X_DEV dev);
kenjiArai 5:ac6604b75d50 30
kenjiArai 5:ac6604b75d50 31 VL53L0X_Error wrapped_VL53L0X_get_measurement_timing_budget_micro_seconds(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 32 uint32_t *p_measurement_timing_budget_micro_seconds);
kenjiArai 5:ac6604b75d50 33
kenjiArai 5:ac6604b75d50 34 VL53L0X_Error wrapped_VL53L0X_get_vcsel_pulse_period(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 35 VL53L0X_VcselPeriod vcsel_period_type, uint8_t *p_vcsel_pulse_period_pclk);
kenjiArai 5:ac6604b75d50 36
kenjiArai 5:ac6604b75d50 37 uint8_t VL53L0X_decode_vcsel_period(uint8_t vcsel_period_reg);
kenjiArai 5:ac6604b75d50 38
kenjiArai 5:ac6604b75d50 39 uint32_t VL53L0X_decode_timeout(uint16_t encoded_timeout);
kenjiArai 5:ac6604b75d50 40
kenjiArai 5:ac6604b75d50 41 uint32_t VL53L0X_calc_timeout_us(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 42 uint16_t timeout_period_mclks,
kenjiArai 5:ac6604b75d50 43 uint8_t vcsel_period_pclks);
kenjiArai 5:ac6604b75d50 44
kenjiArai 5:ac6604b75d50 45 uint32_t VL53L0X_calc_macro_period_ps(VL53L0X_DEV dev, uint8_t vcsel_period_pclks);
kenjiArai 5:ac6604b75d50 46
kenjiArai 5:ac6604b75d50 47 VL53L0X_Error VL53L0X_measurement_poll_for_completion(VL53L0X_DEV dev);
kenjiArai 5:ac6604b75d50 48
kenjiArai 5:ac6604b75d50 49 VL53L0X_Error VL53L0X_load_tuning_settings(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 50 uint8_t *p_tuning_setting_buffer);
kenjiArai 5:ac6604b75d50 51
kenjiArai 5:ac6604b75d50 52 VL53L0X_Error VL53L0X_get_pal_range_status(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 53 uint8_t device_range_status,
kenjiArai 5:ac6604b75d50 54 FixPoint1616_t signal_rate,
kenjiArai 5:ac6604b75d50 55 uint16_t effective_spad_rtn_count,
kenjiArai 5:ac6604b75d50 56 VL53L0X_RangingMeasurementData_t *p_ranging_measurement_data,
kenjiArai 5:ac6604b75d50 57 uint8_t *p_pal_range_status);
kenjiArai 5:ac6604b75d50 58 VL53L0X_Error VL53L0X_calc_sigma_estimate(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 59 VL53L0X_RangingMeasurementData_t *p_ranging_measurement_data,
kenjiArai 5:ac6604b75d50 60 FixPoint1616_t *p_sigma_estimate,
kenjiArai 5:ac6604b75d50 61 uint32_t *p_dmax_mm);
kenjiArai 5:ac6604b75d50 62 uint32_t VL53L0X_calc_timeout_mclks(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 63 uint32_t timeout_period_us,
kenjiArai 5:ac6604b75d50 64 uint8_t vcsel_period_pclks);
kenjiArai 5:ac6604b75d50 65 uint32_t VL53L0X_isqrt(uint32_t num);
kenjiArai 5:ac6604b75d50 66
kenjiArai 5:ac6604b75d50 67 uint32_t VL53L0X_quadrature_sum(uint32_t a, uint32_t b);
kenjiArai 5:ac6604b75d50 68
kenjiArai 5:ac6604b75d50 69 VL53L0X_Error VL53L0X_calc_dmax(
kenjiArai 5:ac6604b75d50 70 VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 71 FixPoint1616_t total_signal_rate_mcps,
kenjiArai 5:ac6604b75d50 72 FixPoint1616_t total_corr_signal_rate_mcps,
kenjiArai 5:ac6604b75d50 73 FixPoint1616_t pw_mult,
kenjiArai 5:ac6604b75d50 74 uint32_t sigma_estimate_p1,
kenjiArai 5:ac6604b75d50 75 FixPoint1616_t sigma_estimate_p2,
kenjiArai 5:ac6604b75d50 76 uint32_t peak_vcsel_duration_us,
kenjiArai 5:ac6604b75d50 77 uint32_t *pd_max_mm);
kenjiArai 5:ac6604b75d50 78 VL53L0X_Error wrapped_VL53L0X_set_measurement_timing_budget_micro_seconds(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 79 uint32_t measurement_timing_budget_micro_seconds);
kenjiArai 5:ac6604b75d50 80 VL53L0X_Error get_sequence_step_timeout(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 81 VL53L0X_SequenceStepId sequence_step_id,
kenjiArai 5:ac6604b75d50 82 uint32_t *p_time_out_micro_secs);
kenjiArai 5:ac6604b75d50 83 VL53L0X_Error set_sequence_step_timeout(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 84 VL53L0X_SequenceStepId sequence_step_id,
kenjiArai 5:ac6604b75d50 85 uint32_t timeout_micro_secs);
kenjiArai 5:ac6604b75d50 86 uint16_t VL53L0X_encode_timeout(uint32_t timeout_macro_clks);
kenjiArai 5:ac6604b75d50 87 VL53L0X_Error wrapped_VL53L0X_set_vcsel_pulse_period(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 88 VL53L0X_VcselPeriod vcsel_period_type, uint8_t vcsel_pulse_period_pclk);
kenjiArai 5:ac6604b75d50 89 uint8_t lv53l0x_encode_vcsel_period(uint8_t vcsel_period_pclks);
kenjiArai 5:ac6604b75d50 90
kenjiArai 5:ac6604b75d50 91 /* api_calibration.h functions */
kenjiArai 5:ac6604b75d50 92 VL53L0X_Error VL53L0X_apply_offset_adjustment(VL53L0X_DEV dev);
kenjiArai 5:ac6604b75d50 93 VL53L0X_Error wrapped_VL53L0X_get_offset_calibration_data_micro_meter(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 94 int32_t *p_offset_calibration_data_micro_meter);
kenjiArai 5:ac6604b75d50 95 VL53L0X_Error wrapped_VL53L0X_set_offset_calibration_data_micro_meter(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 96 int32_t offset_calibration_data_micro_meter);
kenjiArai 5:ac6604b75d50 97 VL53L0X_Error wrapped_VL53L0X_perform_ref_spad_management(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 98 uint32_t *ref_spad_count,
kenjiArai 5:ac6604b75d50 99 uint8_t *is_aperture_spads);
kenjiArai 5:ac6604b75d50 100 VL53L0X_Error VL53L0X_perform_ref_calibration(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 101 uint8_t *p_vhv_settings, uint8_t *p_phase_cal, uint8_t get_data_enable);
kenjiArai 5:ac6604b75d50 102 VL53L0X_Error VL53L0X_perform_vhv_calibration(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 103 uint8_t *p_vhv_settings, const uint8_t get_data_enable,
kenjiArai 5:ac6604b75d50 104 const uint8_t restore_config);
kenjiArai 5:ac6604b75d50 105 VL53L0X_Error VL53L0X_perform_single_ref_calibration(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 106 uint8_t vhv_init_byte);
kenjiArai 5:ac6604b75d50 107 VL53L0X_Error VL53L0X_ref_calibration_io(VL53L0X_DEV dev, uint8_t read_not_write,
kenjiArai 5:ac6604b75d50 108 uint8_t vhv_settings, uint8_t phase_cal,
kenjiArai 5:ac6604b75d50 109 uint8_t *p_vhv_settings, uint8_t *p_phase_cal,
kenjiArai 5:ac6604b75d50 110 const uint8_t vhv_enable, const uint8_t phase_enable);
kenjiArai 5:ac6604b75d50 111 VL53L0X_Error VL53L0X_perform_phase_calibration(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 112 uint8_t *p_phase_cal, const uint8_t get_data_enable,
kenjiArai 5:ac6604b75d50 113 const uint8_t restore_config);
kenjiArai 5:ac6604b75d50 114 VL53L0X_Error enable_ref_spads(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 115 uint8_t aperture_spads,
kenjiArai 5:ac6604b75d50 116 uint8_t good_spad_array[],
kenjiArai 5:ac6604b75d50 117 uint8_t spad_array[],
kenjiArai 5:ac6604b75d50 118 uint32_t size,
kenjiArai 5:ac6604b75d50 119 uint32_t start,
kenjiArai 5:ac6604b75d50 120 uint32_t offset,
kenjiArai 5:ac6604b75d50 121 uint32_t spad_count,
kenjiArai 5:ac6604b75d50 122 uint32_t *p_last_spad);
kenjiArai 5:ac6604b75d50 123 void get_next_good_spad(uint8_t good_spad_array[], uint32_t size,
kenjiArai 5:ac6604b75d50 124 uint32_t curr, int32_t *p_next);
kenjiArai 5:ac6604b75d50 125 uint8_t is_aperture(uint32_t spad_index);
kenjiArai 5:ac6604b75d50 126 VL53L0X_Error enable_spad_bit(uint8_t spad_array[], uint32_t size,
kenjiArai 5:ac6604b75d50 127 uint32_t spad_index);
kenjiArai 5:ac6604b75d50 128 VL53L0X_Error set_ref_spad_map(VL53L0X_DEV dev, uint8_t *p_ref_spad_array);
kenjiArai 5:ac6604b75d50 129 VL53L0X_Error get_ref_spad_map(VL53L0X_DEV dev, uint8_t *p_ref_spad_array);
kenjiArai 5:ac6604b75d50 130 VL53L0X_Error perform_ref_signal_measurement(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 131 uint16_t *p_ref_signal_rate);
kenjiArai 5:ac6604b75d50 132 VL53L0X_Error wrapped_VL53L0X_set_reference_spads(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 133 uint32_t count, uint8_t is_aperture_spads);
kenjiArai 5:ac6604b75d50 134
kenjiArai 5:ac6604b75d50 135 /* api_strings.h functions */
kenjiArai 5:ac6604b75d50 136 VL53L0X_Error wrapped_VL53L0X_get_device_info(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 137 VL53L0X_DeviceInfo_t *p_VL53L0X_device_info);
kenjiArai 5:ac6604b75d50 138 VL53L0X_Error VL53L0X_check_part_used(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 139 uint8_t *revision,
kenjiArai 5:ac6604b75d50 140 VL53L0X_DeviceInfo_t *p_VL53L0X_device_info);
kenjiArai 5:ac6604b75d50 141
kenjiArai 5:ac6604b75d50 142 /* Read function of the ID device */
kenjiArai 5:ac6604b75d50 143 // virtual int read_id();
kenjiArai 5:ac6604b75d50 144 virtual int read_id(uint8_t *id);
kenjiArai 5:ac6604b75d50 145
kenjiArai 5:ac6604b75d50 146 VL53L0X_Error wait_measurement_data_ready(VL53L0X_DEV dev);
kenjiArai 5:ac6604b75d50 147
kenjiArai 5:ac6604b75d50 148 VL53L0X_Error wait_stop_completed(VL53L0X_DEV dev);
kenjiArai 5:ac6604b75d50 149
kenjiArai 5:ac6604b75d50 150 /* Write and read functions from I2C */
kenjiArai 5:ac6604b75d50 151 /**
kenjiArai 5:ac6604b75d50 152 * Write single byte register
kenjiArai 5:ac6604b75d50 153 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 154 * @param index The register index
kenjiArai 5:ac6604b75d50 155 * @param data 8 bit register data
kenjiArai 5:ac6604b75d50 156 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 157 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 158 */
kenjiArai 5:ac6604b75d50 159 VL53L0X_Error VL53L0X_write_byte(VL53L0X_DEV dev, uint8_t index, uint8_t data);
kenjiArai 5:ac6604b75d50 160 /**
kenjiArai 5:ac6604b75d50 161 * Write word register
kenjiArai 5:ac6604b75d50 162 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 163 * @param index The register index
kenjiArai 5:ac6604b75d50 164 * @param data 16 bit register data
kenjiArai 5:ac6604b75d50 165 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 166 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 167 */
kenjiArai 5:ac6604b75d50 168 VL53L0X_Error VL53L0X_write_word(VL53L0X_DEV dev, uint8_t index, uint16_t data);
kenjiArai 5:ac6604b75d50 169 /**
kenjiArai 5:ac6604b75d50 170 * Write double word (4 byte) register
kenjiArai 5:ac6604b75d50 171 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 172 * @param index The register index
kenjiArai 5:ac6604b75d50 173 * @param data 32 bit register data
kenjiArai 5:ac6604b75d50 174 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 175 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 176 */
kenjiArai 5:ac6604b75d50 177 VL53L0X_Error VL53L0X_write_dword(VL53L0X_DEV dev, uint8_t index, uint32_t data);
kenjiArai 5:ac6604b75d50 178 /**
kenjiArai 5:ac6604b75d50 179 * Read single byte register
kenjiArai 5:ac6604b75d50 180 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 181 * @param index The register index
kenjiArai 5:ac6604b75d50 182 * @param data pointer to 8 bit data
kenjiArai 5:ac6604b75d50 183 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 184 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 185 */
kenjiArai 5:ac6604b75d50 186 VL53L0X_Error VL53L0X_read_byte(VL53L0X_DEV dev, uint8_t index, uint8_t *p_data);
kenjiArai 5:ac6604b75d50 187 /**
kenjiArai 5:ac6604b75d50 188 * Read word (2byte) register
kenjiArai 5:ac6604b75d50 189 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 190 * @param index The register index
kenjiArai 5:ac6604b75d50 191 * @param data pointer to 16 bit data
kenjiArai 5:ac6604b75d50 192 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 193 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 194 */
kenjiArai 5:ac6604b75d50 195 VL53L0X_Error VL53L0X_read_word(VL53L0X_DEV dev, uint8_t index, uint16_t *p_data);
kenjiArai 5:ac6604b75d50 196 /**
kenjiArai 5:ac6604b75d50 197 * Read dword (4byte) register
kenjiArai 5:ac6604b75d50 198 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 199 * @param index The register index
kenjiArai 5:ac6604b75d50 200 * @param data pointer to 32 bit data
kenjiArai 5:ac6604b75d50 201 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 202 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 203 */
kenjiArai 5:ac6604b75d50 204 VL53L0X_Error VL53L0X_read_dword(VL53L0X_DEV dev, uint8_t index, uint32_t *p_data);
kenjiArai 5:ac6604b75d50 205 /**
kenjiArai 5:ac6604b75d50 206 * Threat safe Update (read/modify/write) single byte register
kenjiArai 5:ac6604b75d50 207 *
kenjiArai 5:ac6604b75d50 208 * Final_reg = (Initial_reg & and_data) |or_data
kenjiArai 5:ac6604b75d50 209 *
kenjiArai 5:ac6604b75d50 210 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 211 * @param index The register index
kenjiArai 5:ac6604b75d50 212 * @param and_data 8 bit and data
kenjiArai 5:ac6604b75d50 213 * @param or_data 8 bit or data
kenjiArai 5:ac6604b75d50 214 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 215 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 216 */
kenjiArai 5:ac6604b75d50 217 VL53L0X_Error VL53L0X_update_byte(VL53L0X_DEV dev, uint8_t index, uint8_t and_data, uint8_t or_data);
kenjiArai 5:ac6604b75d50 218 /**
kenjiArai 5:ac6604b75d50 219 * Writes the supplied byte buffer to the device
kenjiArai 5:ac6604b75d50 220 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 221 * @param index The register index
kenjiArai 5:ac6604b75d50 222 * @param p_data Pointer to uint8_t buffer containing the data to be written
kenjiArai 5:ac6604b75d50 223 * @param count Number of bytes in the supplied byte buffer
kenjiArai 5:ac6604b75d50 224 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 225 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 226 */
kenjiArai 5:ac6604b75d50 227 VL53L0X_Error VL53L0X_write_multi(VL53L0X_DEV dev, uint8_t index, uint8_t *p_data, uint32_t count);
kenjiArai 5:ac6604b75d50 228 /**
kenjiArai 5:ac6604b75d50 229 * Reads the requested number of bytes from the device
kenjiArai 5:ac6604b75d50 230 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 231 * @param index The register index
kenjiArai 5:ac6604b75d50 232 * @param p_data Pointer to the uint8_t buffer to store read data
kenjiArai 5:ac6604b75d50 233 * @param count Number of uint8_t's to read
kenjiArai 5:ac6604b75d50 234 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 235 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 236 */
kenjiArai 5:ac6604b75d50 237 VL53L0X_Error VL53L0X_read_multi(VL53L0X_DEV dev, uint8_t index, uint8_t *p_data, uint32_t count);
kenjiArai 5:ac6604b75d50 238
kenjiArai 5:ac6604b75d50 239 /**
kenjiArai 5:ac6604b75d50 240 * @brief Writes a buffer towards the I2C peripheral device.
kenjiArai 5:ac6604b75d50 241 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 242 * @param p_data pointer to the byte-array data to send
kenjiArai 5:ac6604b75d50 243 * @param number_of_bytes number of bytes to be written.
kenjiArai 5:ac6604b75d50 244 * @retval 0 if ok,
kenjiArai 5:ac6604b75d50 245 * @retval -1 if an I2C error has occured
kenjiArai 5:ac6604b75d50 246 * @note On some devices if NumByteToWrite is greater
kenjiArai 5:ac6604b75d50 247 * than one, the RegisterAddr must be masked correctly!
kenjiArai 5:ac6604b75d50 248 */
kenjiArai 5:ac6604b75d50 249 VL53L0X_Error VL53L0X_i2c_write(uint8_t dev, uint8_t index, uint8_t *p_data, uint16_t number_of_bytes);
kenjiArai 5:ac6604b75d50 250
kenjiArai 5:ac6604b75d50 251 /**
kenjiArai 5:ac6604b75d50 252 * @brief Reads a buffer from the I2C peripheral device.
kenjiArai 5:ac6604b75d50 253 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 254 * @param p_data pointer to the byte-array to read data in to
kenjiArai 5:ac6604b75d50 255 * @param number_of_bytes number of bytes to be read.
kenjiArai 5:ac6604b75d50 256 * @retval 0 if ok,
kenjiArai 5:ac6604b75d50 257 * @retval -1 if an I2C error has occured
kenjiArai 5:ac6604b75d50 258 * @note On some devices if NumByteToWrite is greater
kenjiArai 5:ac6604b75d50 259 * than one, the RegisterAddr must be masked correctly!
kenjiArai 5:ac6604b75d50 260 */
kenjiArai 5:ac6604b75d50 261 VL53L0X_Error VL53L0X_i2c_read(uint8_t dev, uint8_t index, uint8_t *p_data, uint16_t number_of_bytes);
kenjiArai 5:ac6604b75d50 262
kenjiArai 5:ac6604b75d50 263 /**
kenjiArai 5:ac6604b75d50 264 * @brief execute delay in all polling API call
kenjiArai 5:ac6604b75d50 265 *
kenjiArai 5:ac6604b75d50 266 * A typical multi-thread or RTOs implementation is to sleep the task for some 5ms (with 100Hz max rate faster polling is not needed)
kenjiArai 5:ac6604b75d50 267 * if nothing specific is need you can define it as an empty/void macro
kenjiArai 5:ac6604b75d50 268 * @code
kenjiArai 5:ac6604b75d50 269 * #define VL53L0X_PollingDelay(...) (void)0
kenjiArai 5:ac6604b75d50 270 * @endcode
kenjiArai 5:ac6604b75d50 271 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 272 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 273 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 274 */
kenjiArai 5:ac6604b75d50 275 VL53L0X_Error VL53L0X_polling_delay(VL53L0X_DEV dev); /* usually best implemented as a real function */
kenjiArai 5:ac6604b75d50 276
kenjiArai 5:ac6604b75d50 277 int is_present()
kenjiArai 5:ac6604b75d50 278 {
kenjiArai 5:ac6604b75d50 279 int status;
kenjiArai 5:ac6604b75d50 280 uint8_t id = 0;
kenjiArai 5:ac6604b75d50 281
kenjiArai 5:ac6604b75d50 282 status = read_id(&id);
kenjiArai 5:ac6604b75d50 283 if (status) {
kenjiArai 5:ac6604b75d50 284 VL53L0X_ErrLog("Failed to read ID device. Device not present!\n\r");
kenjiArai 5:ac6604b75d50 285 }
kenjiArai 5:ac6604b75d50 286 return status;
kenjiArai 5:ac6604b75d50 287 }
kenjiArai 5:ac6604b75d50 288
kenjiArai 5:ac6604b75d50 289 ///////////////////////////////////////////////////////////////////////////////////////////////////////
kenjiArai 5:ac6604b75d50 290 //Added functions //
kenjiArai 5:ac6604b75d50 291 ///////////////////////////////////////////////////////////////////////////////////////////////////////
kenjiArai 5:ac6604b75d50 292
kenjiArai 5:ac6604b75d50 293 /**
kenjiArai 5:ac6604b75d50 294 * @brief Cycle Power to Device
kenjiArai 5:ac6604b75d50 295 *
kenjiArai 5:ac6604b75d50 296 * @return status - status 0 = ok, 1 = error
kenjiArai 5:ac6604b75d50 297 *
kenjiArai 5:ac6604b75d50 298 */
kenjiArai 5:ac6604b75d50 299 int32_t VL53L0X_cycle_power(void);
kenjiArai 5:ac6604b75d50 300
kenjiArai 5:ac6604b75d50 301 uint8_t VL53L0X_encode_vcsel_period(uint8_t vcsel_period_pclks);
kenjiArai 5:ac6604b75d50 302
kenjiArai 5:ac6604b75d50 303 VL53L0X_Error wrapped_VL53L0X_get_device_error_string(VL53L0X_DeviceError error_code,
kenjiArai 5:ac6604b75d50 304 char *p_device_error_string);
kenjiArai 5:ac6604b75d50 305
kenjiArai 5:ac6604b75d50 306 VL53L0X_Error wrapped_VL53L0X_get_limit_check_info(VL53L0X_DEV dev, uint16_t limit_check_id,
kenjiArai 5:ac6604b75d50 307 char *p_limit_check_string);
kenjiArai 5:ac6604b75d50 308
kenjiArai 5:ac6604b75d50 309 VL53L0X_Error wrapped_VL53L0X_get_pal_error_string(VL53L0X_Error pal_error_code,
kenjiArai 5:ac6604b75d50 310 char *p_pal_error_string);
kenjiArai 5:ac6604b75d50 311
kenjiArai 5:ac6604b75d50 312 VL53L0X_Error wrapped_VL53L0X_get_pal_state_string(VL53L0X_State pal_state_code,
kenjiArai 5:ac6604b75d50 313 char *p_pal_state_string);
kenjiArai 5:ac6604b75d50 314
kenjiArai 5:ac6604b75d50 315 VL53L0X_Error wrapped_VL53L0X_get_range_status_string(uint8_t range_status,
kenjiArai 5:ac6604b75d50 316 char *p_range_status_string);
kenjiArai 5:ac6604b75d50 317
kenjiArai 5:ac6604b75d50 318 VL53L0X_Error wrapped_VL53L0X_get_ref_calibration(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 319 uint8_t *p_vhv_settings, uint8_t *p_phase_cal);
kenjiArai 5:ac6604b75d50 320
kenjiArai 5:ac6604b75d50 321
kenjiArai 5:ac6604b75d50 322 VL53L0X_Error count_enabled_spads(uint8_t spad_array[],
kenjiArai 5:ac6604b75d50 323 uint32_t byte_count, uint32_t max_spads,
kenjiArai 5:ac6604b75d50 324 uint32_t *p_total_spads_enabled, uint8_t *p_is_aperture);
kenjiArai 5:ac6604b75d50 325
kenjiArai 5:ac6604b75d50 326 VL53L0X_Error wrapped_VL53L0X_get_sequence_steps_info(VL53L0X_SequenceStepId sequence_step_id,
kenjiArai 5:ac6604b75d50 327 char *p_sequence_steps_string);
kenjiArai 5:ac6604b75d50 328
kenjiArai 5:ac6604b75d50 329
kenjiArai 5:ac6604b75d50 330 /**
kenjiArai 5:ac6604b75d50 331 * @brief Gets the name of a given sequence step.
kenjiArai 5:ac6604b75d50 332 *
kenjiArai 5:ac6604b75d50 333 * @par Function Description
kenjiArai 5:ac6604b75d50 334 * This function retrieves the name of sequence steps corresponding to
kenjiArai 5:ac6604b75d50 335 * SequenceStepId.
kenjiArai 5:ac6604b75d50 336 *
kenjiArai 5:ac6604b75d50 337 * @note This function doesn't Accesses the device
kenjiArai 5:ac6604b75d50 338 *
kenjiArai 5:ac6604b75d50 339 * @param sequence_step_id Sequence step identifier.
kenjiArai 5:ac6604b75d50 340 * @param p_sequence_steps_string Pointer to Info string
kenjiArai 5:ac6604b75d50 341 *
kenjiArai 5:ac6604b75d50 342 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 343 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 344 */
kenjiArai 5:ac6604b75d50 345 VL53L0X_Error VL53L0X_get_sequence_steps_info(VL53L0X_SequenceStepId sequence_step_id,
kenjiArai 5:ac6604b75d50 346 char *p_sequence_steps_string);
kenjiArai 5:ac6604b75d50 347
kenjiArai 5:ac6604b75d50 348 /**
kenjiArai 5:ac6604b75d50 349 * @brief Get the frequency of the timer used for ranging results time stamps
kenjiArai 5:ac6604b75d50 350 *
kenjiArai 5:ac6604b75d50 351 * @param[out] p_timer_freq_hz : pointer for timer frequency
kenjiArai 5:ac6604b75d50 352 *
kenjiArai 5:ac6604b75d50 353 * @return status : 0 = ok, 1 = error
kenjiArai 5:ac6604b75d50 354 *
kenjiArai 5:ac6604b75d50 355 */
kenjiArai 5:ac6604b75d50 356 int32_t VL53L0X_get_timer_frequency(int32_t *p_timer_freq_hz);
kenjiArai 5:ac6604b75d50 357
kenjiArai 5:ac6604b75d50 358 /**
kenjiArai 5:ac6604b75d50 359 * @brief Get the timer value in units of timer_freq_hz (see VL53L0X_get_timestamp_frequency())
kenjiArai 5:ac6604b75d50 360 *
kenjiArai 5:ac6604b75d50 361 * @param[out] p_timer_count : pointer for timer count value
kenjiArai 5:ac6604b75d50 362 *
kenjiArai 5:ac6604b75d50 363 * @return status : 0 = ok, 1 = error
kenjiArai 5:ac6604b75d50 364 *
kenjiArai 5:ac6604b75d50 365 */
kenjiArai 5:ac6604b75d50 366 int32_t VL53L0X_get_timer_value(int32_t *p_timer_count);
kenjiArai 5:ac6604b75d50 367
kenjiArai 5:ac6604b75d50 368 /**
kenjiArai 5:ac6604b75d50 369 * @brief Configure ranging interrupt reported to system
kenjiArai 5:ac6604b75d50 370 *
kenjiArai 5:ac6604b75d50 371 * @note This function is not Implemented
kenjiArai 5:ac6604b75d50 372 *
kenjiArai 5:ac6604b75d50 373 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 374 * @param interrupt_mask Mask of interrupt to Enable/disable
kenjiArai 5:ac6604b75d50 375 * (0:interrupt disabled or 1: interrupt enabled)
kenjiArai 5:ac6604b75d50 376 * @return VL53L0X_ERROR_NOT_IMPLEMENTED Not implemented
kenjiArai 5:ac6604b75d50 377 */
kenjiArai 5:ac6604b75d50 378 VL53L0X_Error VL53L0X_enable_interrupt_mask(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 379 uint32_t interrupt_mask);
kenjiArai 5:ac6604b75d50 380
kenjiArai 5:ac6604b75d50 381 /**
kenjiArai 5:ac6604b75d50 382 * @brief Get Dmax Calibration Parameters for a given device
kenjiArai 5:ac6604b75d50 383 *
kenjiArai 5:ac6604b75d50 384 *
kenjiArai 5:ac6604b75d50 385 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 386 *
kenjiArai 5:ac6604b75d50 387 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 388 * @param p_range_milli_meter Pointer to Calibration Distance
kenjiArai 5:ac6604b75d50 389 * @param p_signal_rate_rtn_mega_cps Pointer to Signal rate return
kenjiArai 5:ac6604b75d50 390 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 391 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 392 */
kenjiArai 5:ac6604b75d50 393 VL53L0X_Error VL53L0X_get_dmax_cal_parameters(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 394 uint16_t *p_range_milli_meter, FixPoint1616_t *p_signal_rate_rtn_mega_cps);
kenjiArai 5:ac6604b75d50 395
kenjiArai 5:ac6604b75d50 396 /**
kenjiArai 5:ac6604b75d50 397 * @brief Set Dmax Calibration Parameters for a given device
kenjiArai 5:ac6604b75d50 398 * When one of the parameter is zero, this function will get parameter
kenjiArai 5:ac6604b75d50 399 * from NVM.
kenjiArai 5:ac6604b75d50 400 * @note This function doesn't Access to the device
kenjiArai 5:ac6604b75d50 401 *
kenjiArai 5:ac6604b75d50 402 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 403 * @param range_milli_meter Calibration Distance
kenjiArai 5:ac6604b75d50 404 * @param signal_rate_rtn_mega_cps Signal rate return read at CalDistance
kenjiArai 5:ac6604b75d50 405 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 406 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 407 */
kenjiArai 5:ac6604b75d50 408 VL53L0X_Error VL53L0X_get_dmax_cal_parameters(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 409 uint16_t range_milli_meter, FixPoint1616_t signal_rate_rtn_mega_cps);
kenjiArai 5:ac6604b75d50 410
kenjiArai 5:ac6604b75d50 411 /**
kenjiArai 5:ac6604b75d50 412 * @brief Retrieve the measurements from device for a given setup
kenjiArai 5:ac6604b75d50 413 *
kenjiArai 5:ac6604b75d50 414 * @par Function Description
kenjiArai 5:ac6604b75d50 415 * Get data from last successful Histogram measurement
kenjiArai 5:ac6604b75d50 416 * @warning USER should take care about @a VL53L0X_GetNumberOfROIZones()
kenjiArai 5:ac6604b75d50 417 * before get data.
kenjiArai 5:ac6604b75d50 418 * PAL will fill a NumberOfROIZones times the corresponding data structure
kenjiArai 5:ac6604b75d50 419 * used in the measurement function.
kenjiArai 5:ac6604b75d50 420 *
kenjiArai 5:ac6604b75d50 421 * @note This function is not Implemented
kenjiArai 5:ac6604b75d50 422 *
kenjiArai 5:ac6604b75d50 423 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 424 * @param p_histogram_measurement_data Pointer to the histogram data structure.
kenjiArai 5:ac6604b75d50 425 * @return VL53L0X_ERROR_NOT_IMPLEMENTED Not implemented
kenjiArai 5:ac6604b75d50 426 */
kenjiArai 5:ac6604b75d50 427 VL53L0X_Error VL53L0X_get_histogram_measurement_data(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 428 VL53L0X_HistogramMeasurementData_t *p_histogram_measurement_data);
kenjiArai 5:ac6604b75d50 429
kenjiArai 5:ac6604b75d50 430 /**
kenjiArai 5:ac6604b75d50 431 * @brief Get current new device mode
kenjiArai 5:ac6604b75d50 432 * @par Function Description
kenjiArai 5:ac6604b75d50 433 * Get current Histogram mode of a Device
kenjiArai 5:ac6604b75d50 434 *
kenjiArai 5:ac6604b75d50 435 * @note This function doesn't Access to the device
kenjiArai 5:ac6604b75d50 436 *
kenjiArai 5:ac6604b75d50 437 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 438 * @param p_histogram_mode Pointer to current Histogram Mode value
kenjiArai 5:ac6604b75d50 439 * Valid values are:
kenjiArai 5:ac6604b75d50 440 * VL53L0X_HISTOGRAMMODE_DISABLED
kenjiArai 5:ac6604b75d50 441 * VL53L0X_DEVICEMODE_SINGLE_HISTOGRAM
kenjiArai 5:ac6604b75d50 442 * VL53L0X_HISTOGRAMMODE_REFERENCE_ONLY
kenjiArai 5:ac6604b75d50 443 * VL53L0X_HISTOGRAMMODE_RETURN_ONLY
kenjiArai 5:ac6604b75d50 444 * VL53L0X_HISTOGRAMMODE_BOTH
kenjiArai 5:ac6604b75d50 445 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 446 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 447 */
kenjiArai 5:ac6604b75d50 448 VL53L0X_Error VL53L0X_get_histogram_mode(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 449 VL53L0X_HistogramModes *p_histogram_mode);
kenjiArai 5:ac6604b75d50 450
kenjiArai 5:ac6604b75d50 451 /**
kenjiArai 5:ac6604b75d50 452 * @brief Set a new Histogram mode
kenjiArai 5:ac6604b75d50 453 * @par Function Description
kenjiArai 5:ac6604b75d50 454 * Set device to a new Histogram mode
kenjiArai 5:ac6604b75d50 455 *
kenjiArai 5:ac6604b75d50 456 * @note This function doesn't Access to the device
kenjiArai 5:ac6604b75d50 457 *
kenjiArai 5:ac6604b75d50 458 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 459 * @param histogram_mode New device mode to apply
kenjiArai 5:ac6604b75d50 460 * Valid values are:
kenjiArai 5:ac6604b75d50 461 * VL53L0X_HISTOGRAMMODE_DISABLED
kenjiArai 5:ac6604b75d50 462 * VL53L0X_DEVICEMODE_SINGLE_HISTOGRAM
kenjiArai 5:ac6604b75d50 463 * VL53L0X_HISTOGRAMMODE_REFERENCE_ONLY
kenjiArai 5:ac6604b75d50 464 * VL53L0X_HISTOGRAMMODE_RETURN_ONLY
kenjiArai 5:ac6604b75d50 465 * VL53L0X_HISTOGRAMMODE_BOTH
kenjiArai 5:ac6604b75d50 466 *
kenjiArai 5:ac6604b75d50 467 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 468 * @return VL53L0X_ERROR_MODE_NOT_SUPPORTED This error occurs when
kenjiArai 5:ac6604b75d50 469 * HistogramMode is not in the supported list
kenjiArai 5:ac6604b75d50 470 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 471 */
kenjiArai 5:ac6604b75d50 472 VL53L0X_Error VL53L0X_set_histogram_mode(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 473 VL53L0X_HistogramModes histogram_mode);
kenjiArai 5:ac6604b75d50 474
kenjiArai 5:ac6604b75d50 475 /**
kenjiArai 5:ac6604b75d50 476 * @brief Return a description string for a given limit check number
kenjiArai 5:ac6604b75d50 477 *
kenjiArai 5:ac6604b75d50 478 * @par Function Description
kenjiArai 5:ac6604b75d50 479 * This function returns a description string for a given limit check number.
kenjiArai 5:ac6604b75d50 480 * The limit check is identified with the LimitCheckId.
kenjiArai 5:ac6604b75d50 481 *
kenjiArai 5:ac6604b75d50 482 * @note This function doesn't Access to the device
kenjiArai 5:ac6604b75d50 483 *
kenjiArai 5:ac6604b75d50 484 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 485 * @param limit_check_id Limit Check ID
kenjiArai 5:ac6604b75d50 486 (0<= LimitCheckId < VL53L0X_GetNumberOfLimitCheck() ).
kenjiArai 5:ac6604b75d50 487 * @param p_limit_check_string Pointer to the
kenjiArai 5:ac6604b75d50 488 description string of the given check limit.
kenjiArai 5:ac6604b75d50 489 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 490 * @return VL53L0X_ERROR_INVALID_PARAMS This error is
kenjiArai 5:ac6604b75d50 491 returned when LimitCheckId value is out of range.
kenjiArai 5:ac6604b75d50 492 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 493 */
kenjiArai 5:ac6604b75d50 494 VL53L0X_Error VL53L0X_get_limit_check_info(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 495 uint16_t limit_check_id, char *p_limit_check_string);
kenjiArai 5:ac6604b75d50 496
kenjiArai 5:ac6604b75d50 497 /**
kenjiArai 5:ac6604b75d50 498 * @brief Get the linearity corrective gain
kenjiArai 5:ac6604b75d50 499 *
kenjiArai 5:ac6604b75d50 500 * @par Function Description
kenjiArai 5:ac6604b75d50 501 * Should only be used after a successful call to @a VL53L0X_DataInit to backup
kenjiArai 5:ac6604b75d50 502 * device NVM value
kenjiArai 5:ac6604b75d50 503 *
kenjiArai 5:ac6604b75d50 504 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 505 *
kenjiArai 5:ac6604b75d50 506 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 507 * @param p_linearity_corrective_gain Pointer to the linearity
kenjiArai 5:ac6604b75d50 508 * corrective gain in x1000
kenjiArai 5:ac6604b75d50 509 * if value is 1000 then no modification is applied.
kenjiArai 5:ac6604b75d50 510 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 511 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 512 */
kenjiArai 5:ac6604b75d50 513 VL53L0X_Error VL53L0X_get_linearity_corrective_gain(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 514 uint16_t *p_linearity_corrective_gain);
kenjiArai 5:ac6604b75d50 515
kenjiArai 5:ac6604b75d50 516 /**
kenjiArai 5:ac6604b75d50 517 * Set the linearity corrective gain
kenjiArai 5:ac6604b75d50 518 *
kenjiArai 5:ac6604b75d50 519 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 520 *
kenjiArai 5:ac6604b75d50 521 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 522 * @param linearity_corrective_gain Linearity corrective
kenjiArai 5:ac6604b75d50 523 * gain in x1000
kenjiArai 5:ac6604b75d50 524 * if value is 1000 then no modification is applied.
kenjiArai 5:ac6604b75d50 525 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 526 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 527 */
kenjiArai 5:ac6604b75d50 528 VL53L0X_Error VL53L0X_set_linearity_corrective_gain(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 529 int16_t linearity_corrective_gain);
kenjiArai 5:ac6604b75d50 530
kenjiArai 5:ac6604b75d50 531 /**
kenjiArai 5:ac6604b75d50 532 * @brief Get the Maximum number of ROI Zones managed by the Device
kenjiArai 5:ac6604b75d50 533 *
kenjiArai 5:ac6604b75d50 534 * @par Function Description
kenjiArai 5:ac6604b75d50 535 * Get Maximum number of ROI Zones managed by the Device.
kenjiArai 5:ac6604b75d50 536 *
kenjiArai 5:ac6604b75d50 537 * @note This function doesn't Access to the device
kenjiArai 5:ac6604b75d50 538 *
kenjiArai 5:ac6604b75d50 539 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 540 * @param p_max_number_of_roi_zones Pointer to the Maximum Number
kenjiArai 5:ac6604b75d50 541 * of ROI Zones value.
kenjiArai 5:ac6604b75d50 542 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 543 */
kenjiArai 5:ac6604b75d50 544 VL53L0X_Error VL53L0X_get_max_number_of_roi_zones(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 545 uint8_t *p_max_number_of_roi_zones);
kenjiArai 5:ac6604b75d50 546
kenjiArai 5:ac6604b75d50 547 /**
kenjiArai 5:ac6604b75d50 548 * @brief Retrieve the Reference Signal after a measurements
kenjiArai 5:ac6604b75d50 549 *
kenjiArai 5:ac6604b75d50 550 * @par Function Description
kenjiArai 5:ac6604b75d50 551 * Get Reference Signal from last successful Ranging measurement
kenjiArai 5:ac6604b75d50 552 * This function return a valid value after that you call the
kenjiArai 5:ac6604b75d50 553 * @a VL53L0X_GetRangingMeasurementData().
kenjiArai 5:ac6604b75d50 554 *
kenjiArai 5:ac6604b75d50 555 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 556 *
kenjiArai 5:ac6604b75d50 557 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 558 * @param p_measurement_ref_signal Pointer to the Ref Signal to fill up.
kenjiArai 5:ac6604b75d50 559 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 560 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 561 */
kenjiArai 5:ac6604b75d50 562 VL53L0X_Error VL53L0X_get_measurement_ref_signal(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 563 FixPoint1616_t *p_measurement_ref_signal);
kenjiArai 5:ac6604b75d50 564
kenjiArai 5:ac6604b75d50 565 /**
kenjiArai 5:ac6604b75d50 566 * @brief Get the number of the check limit managed by a given Device
kenjiArai 5:ac6604b75d50 567 *
kenjiArai 5:ac6604b75d50 568 * @par Function Description
kenjiArai 5:ac6604b75d50 569 * This function give the number of the check limit managed by the Device
kenjiArai 5:ac6604b75d50 570 *
kenjiArai 5:ac6604b75d50 571 * @note This function doesn't Access to the device
kenjiArai 5:ac6604b75d50 572 *
kenjiArai 5:ac6604b75d50 573 * @param p_number_of_limit_check Pointer to the number of check limit.
kenjiArai 5:ac6604b75d50 574 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 575 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 576 */
kenjiArai 5:ac6604b75d50 577 VL53L0X_Error VL53L0X_get_number_of_limit_check(
kenjiArai 5:ac6604b75d50 578 uint16_t *p_number_of_limit_check);
kenjiArai 5:ac6604b75d50 579
kenjiArai 5:ac6604b75d50 580 /**
kenjiArai 5:ac6604b75d50 581 * @brief Get the number of ROI Zones managed by the Device
kenjiArai 5:ac6604b75d50 582 *
kenjiArai 5:ac6604b75d50 583 * @par Function Description
kenjiArai 5:ac6604b75d50 584 * Get number of ROI Zones managed by the Device
kenjiArai 5:ac6604b75d50 585 * USER should take care about @a VL53L0X_GetNumberOfROIZones()
kenjiArai 5:ac6604b75d50 586 * before get data after a perform measurement.
kenjiArai 5:ac6604b75d50 587 * PAL will fill a NumberOfROIZones times the corresponding data
kenjiArai 5:ac6604b75d50 588 * structure used in the measurement function.
kenjiArai 5:ac6604b75d50 589 *
kenjiArai 5:ac6604b75d50 590 * @note This function doesn't Access to the device
kenjiArai 5:ac6604b75d50 591 *
kenjiArai 5:ac6604b75d50 592 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 593 * @param p_number_of_roi_zones Pointer to the Number of ROI Zones value.
kenjiArai 5:ac6604b75d50 594 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 595 */
kenjiArai 5:ac6604b75d50 596 VL53L0X_Error VL53L0X_get_number_of_roi_zones(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 597 uint8_t *p_number_of_roi_zones);
kenjiArai 5:ac6604b75d50 598
kenjiArai 5:ac6604b75d50 599 /**
kenjiArai 5:ac6604b75d50 600 * @brief Set the number of ROI Zones to be used for a specific Device
kenjiArai 5:ac6604b75d50 601 *
kenjiArai 5:ac6604b75d50 602 * @par Function Description
kenjiArai 5:ac6604b75d50 603 * Set the number of ROI Zones to be used for a specific Device.
kenjiArai 5:ac6604b75d50 604 * The programmed value should be less than the max number of ROI Zones given
kenjiArai 5:ac6604b75d50 605 * with @a VL53L0X_GetMaxNumberOfROIZones().
kenjiArai 5:ac6604b75d50 606 * This version of API manage only one zone.
kenjiArai 5:ac6604b75d50 607 *
kenjiArai 5:ac6604b75d50 608 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 609 * @param number_of_roi_zones Number of ROI Zones to be used for a
kenjiArai 5:ac6604b75d50 610 * specific Device.
kenjiArai 5:ac6604b75d50 611 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 612 * @return VL53L0X_ERROR_INVALID_PARAMS This error is returned if
kenjiArai 5:ac6604b75d50 613 * NumberOfROIZones != 1
kenjiArai 5:ac6604b75d50 614 */
kenjiArai 5:ac6604b75d50 615 VL53L0X_Error VL53L0X_set_number_of_roi_zones(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 616 uint8_t number_of_roi_zones);
kenjiArai 5:ac6604b75d50 617
kenjiArai 5:ac6604b75d50 618 /**
kenjiArai 5:ac6604b75d50 619 * @brief Gets number of sequence steps managed by the API.
kenjiArai 5:ac6604b75d50 620 *
kenjiArai 5:ac6604b75d50 621 * @par Function Description
kenjiArai 5:ac6604b75d50 622 * This function retrieves the number of sequence steps currently managed
kenjiArai 5:ac6604b75d50 623 * by the API
kenjiArai 5:ac6604b75d50 624 *
kenjiArai 5:ac6604b75d50 625 * @note This function Accesses the device
kenjiArai 5:ac6604b75d50 626 *
kenjiArai 5:ac6604b75d50 627 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 628 * @param p_number_of_sequence_steps Out parameter reporting the number of
kenjiArai 5:ac6604b75d50 629 * sequence steps.
kenjiArai 5:ac6604b75d50 630 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 631 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 632 */
kenjiArai 5:ac6604b75d50 633 VL53L0X_Error VL53L0X_get_number_of_sequence_steps(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 634 uint8_t *p_number_of_sequence_steps);
kenjiArai 5:ac6604b75d50 635 /**
kenjiArai 5:ac6604b75d50 636 * @brief Get the power mode for a given Device
kenjiArai 5:ac6604b75d50 637 *
kenjiArai 5:ac6604b75d50 638 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 639 *
kenjiArai 5:ac6604b75d50 640 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 641 * @param p_power_mode Pointer to the current value of the power
kenjiArai 5:ac6604b75d50 642 * mode. see ::VL53L0X_PowerModes
kenjiArai 5:ac6604b75d50 643 * Valid values are:
kenjiArai 5:ac6604b75d50 644 * VL53L0X_POWERMODE_STANDBY_LEVEL1,
kenjiArai 5:ac6604b75d50 645 * VL53L0X_POWERMODE_IDLE_LEVEL1
kenjiArai 5:ac6604b75d50 646 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 647 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 648 */
kenjiArai 5:ac6604b75d50 649 VL53L0X_Error VL53L0X_get_power_mode(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 650 VL53L0X_PowerModes *p_power_mode);
kenjiArai 5:ac6604b75d50 651
kenjiArai 5:ac6604b75d50 652 /**
kenjiArai 5:ac6604b75d50 653 * @brief Set the power mode for a given Device
kenjiArai 5:ac6604b75d50 654 * The power mode can be Standby or Idle. Different level of both Standby and
kenjiArai 5:ac6604b75d50 655 * Idle can exists.
kenjiArai 5:ac6604b75d50 656 * This function should not be used when device is in Ranging state.
kenjiArai 5:ac6604b75d50 657 *
kenjiArai 5:ac6604b75d50 658 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 659 *
kenjiArai 5:ac6604b75d50 660 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 661 * @param power_mode The value of the power mode to set.
kenjiArai 5:ac6604b75d50 662 * see ::VL53L0X_PowerModes
kenjiArai 5:ac6604b75d50 663 * Valid values are:
kenjiArai 5:ac6604b75d50 664 * VL53L0X_POWERMODE_STANDBY_LEVEL1,
kenjiArai 5:ac6604b75d50 665 * VL53L0X_POWERMODE_IDLE_LEVEL1
kenjiArai 5:ac6604b75d50 666 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 667 * @return VL53L0X_ERROR_MODE_NOT_SUPPORTED This error occurs when PowerMode
kenjiArai 5:ac6604b75d50 668 * is not in the supported list
kenjiArai 5:ac6604b75d50 669 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 670 */
kenjiArai 5:ac6604b75d50 671 VL53L0X_Error VL53L0X_set_power_mode(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 672 VL53L0X_PowerModes power_mode);
kenjiArai 5:ac6604b75d50 673
kenjiArai 5:ac6604b75d50 674 /**
kenjiArai 5:ac6604b75d50 675 * @brief Retrieves SPAD configuration
kenjiArai 5:ac6604b75d50 676 *
kenjiArai 5:ac6604b75d50 677 * @par Function Description
kenjiArai 5:ac6604b75d50 678 * This function retrieves the current number of applied reference spads
kenjiArai 5:ac6604b75d50 679 * and also their type : Aperture or Non-Aperture.
kenjiArai 5:ac6604b75d50 680 *
kenjiArai 5:ac6604b75d50 681 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 682 *
kenjiArai 5:ac6604b75d50 683 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 684 * @param p_spad_count Number ref Spad Count
kenjiArai 5:ac6604b75d50 685 * @param p_is_aperture_spads Reports if spads are of type
kenjiArai 5:ac6604b75d50 686 * aperture or non-aperture.
kenjiArai 5:ac6604b75d50 687 * 1:=aperture, 0:=Non-Aperture
kenjiArai 5:ac6604b75d50 688 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 689 * @return VL53L0X_ERROR_REF_SPAD_INIT Error in the in the reference
kenjiArai 5:ac6604b75d50 690 * spad configuration.
kenjiArai 5:ac6604b75d50 691 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 692 */
kenjiArai 5:ac6604b75d50 693 VL53L0X_Error wrapped_VL53L0X_get_reference_spads(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 694 uint32_t *p_spad_count, uint8_t *p_is_aperture_spads);
kenjiArai 5:ac6604b75d50 695
kenjiArai 5:ac6604b75d50 696 /**
kenjiArai 5:ac6604b75d50 697 * @brief Gets the (on/off) state of a requested sequence step.
kenjiArai 5:ac6604b75d50 698 *
kenjiArai 5:ac6604b75d50 699 * @par Function Description
kenjiArai 5:ac6604b75d50 700 * This function retrieves the state of a requested sequence step, i.e. on/off.
kenjiArai 5:ac6604b75d50 701 *
kenjiArai 5:ac6604b75d50 702 * @note This function Accesses the device
kenjiArai 5:ac6604b75d50 703 *
kenjiArai 5:ac6604b75d50 704 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 705 * @param sequence_step_id Sequence step identifier.
kenjiArai 5:ac6604b75d50 706 * @param p_sequence_step_enabled Out parameter reporting if the sequence step
kenjiArai 5:ac6604b75d50 707 * is enabled {0=Off,1=On}.
kenjiArai 5:ac6604b75d50 708 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 709 * @return VL53L0X_ERROR_INVALID_PARAMS Error SequenceStepId parameter not
kenjiArai 5:ac6604b75d50 710 * supported.
kenjiArai 5:ac6604b75d50 711 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 712 */
kenjiArai 5:ac6604b75d50 713 VL53L0X_Error VL53L0X_get_sequence_step_enable(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 714 VL53L0X_SequenceStepId sequence_step_id, uint8_t *p_sequence_step_enabled);
kenjiArai 5:ac6604b75d50 715
kenjiArai 5:ac6604b75d50 716
kenjiArai 5:ac6604b75d50 717 /**
kenjiArai 5:ac6604b75d50 718 * @brief Gets the timeout of a requested sequence step.
kenjiArai 5:ac6604b75d50 719 *
kenjiArai 5:ac6604b75d50 720 * @par Function Description
kenjiArai 5:ac6604b75d50 721 * This function retrieves the timeout of a requested sequence step.
kenjiArai 5:ac6604b75d50 722 *
kenjiArai 5:ac6604b75d50 723 * @note This function Accesses the device
kenjiArai 5:ac6604b75d50 724 *
kenjiArai 5:ac6604b75d50 725 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 726 * @param sequence_step_id Sequence step identifier.
kenjiArai 5:ac6604b75d50 727 * @param p_time_out_milli_secs Timeout value.
kenjiArai 5:ac6604b75d50 728 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 729 * @return VL53L0X_ERROR_INVALID_PARAMS Error SequenceStepId parameter not
kenjiArai 5:ac6604b75d50 730 * supported.
kenjiArai 5:ac6604b75d50 731 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 732 */
kenjiArai 5:ac6604b75d50 733 VL53L0X_Error VL53L0X_get_sequence_step_timeout(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 734 VL53L0X_SequenceStepId sequence_step_id,
kenjiArai 5:ac6604b75d50 735 FixPoint1616_t *p_time_out_milli_secs);
kenjiArai 5:ac6604b75d50 736
kenjiArai 5:ac6604b75d50 737 /**
kenjiArai 5:ac6604b75d50 738 * @brief Sets the timeout of a requested sequence step.
kenjiArai 5:ac6604b75d50 739 *
kenjiArai 5:ac6604b75d50 740 * @par Function Description
kenjiArai 5:ac6604b75d50 741 * This function sets the timeout of a requested sequence step.
kenjiArai 5:ac6604b75d50 742 *
kenjiArai 5:ac6604b75d50 743 * @note This function Accesses the device
kenjiArai 5:ac6604b75d50 744 *
kenjiArai 5:ac6604b75d50 745 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 746 * @param sequence_step_id Sequence step identifier.
kenjiArai 5:ac6604b75d50 747 * @param time_out_milli_secs Demanded timeout
kenjiArai 5:ac6604b75d50 748 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 749 * @return VL53L0X_ERROR_INVALID_PARAMS Error SequenceStepId parameter not
kenjiArai 5:ac6604b75d50 750 * supported.
kenjiArai 5:ac6604b75d50 751 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 752 */
kenjiArai 5:ac6604b75d50 753 VL53L0X_Error VL53L0X_set_sequence_step_timeout(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 754 VL53L0X_SequenceStepId sequence_step_id, FixPoint1616_t time_out_milli_secs);
kenjiArai 5:ac6604b75d50 755
kenjiArai 5:ac6604b75d50 756 /**
kenjiArai 5:ac6604b75d50 757 * @brief Get the current SPAD Ambient Damper Factor value
kenjiArai 5:ac6604b75d50 758 *
kenjiArai 5:ac6604b75d50 759 * @par Function Description
kenjiArai 5:ac6604b75d50 760 * This function get the SPAD Ambient Damper Factor value
kenjiArai 5:ac6604b75d50 761 *
kenjiArai 5:ac6604b75d50 762 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 763 *
kenjiArai 5:ac6604b75d50 764 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 765 * @param p_spad_ambient_damper_factor Pointer to programmed SPAD Ambient
kenjiArai 5:ac6604b75d50 766 * Damper Factor value
kenjiArai 5:ac6604b75d50 767 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 768 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 769 */
kenjiArai 5:ac6604b75d50 770 VL53L0X_Error VL53L0X_get_spad_ambient_damper_factor(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 771 uint16_t *p_spad_ambient_damper_factor);
kenjiArai 5:ac6604b75d50 772 /**
kenjiArai 5:ac6604b75d50 773 * @brief Set the SPAD Ambient Damper Factor value
kenjiArai 5:ac6604b75d50 774 *
kenjiArai 5:ac6604b75d50 775 * @par Function Description
kenjiArai 5:ac6604b75d50 776 * This function set the SPAD Ambient Damper Factor value
kenjiArai 5:ac6604b75d50 777 *
kenjiArai 5:ac6604b75d50 778 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 779 *
kenjiArai 5:ac6604b75d50 780 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 781 * @param spad_ambient_damper_factor SPAD Ambient Damper Factor value
kenjiArai 5:ac6604b75d50 782 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 783 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 784 */
kenjiArai 5:ac6604b75d50 785 VL53L0X_Error VL53L0X_set_spad_ambient_damper_factor(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 786 uint16_t spad_ambient_damper_factor);
kenjiArai 5:ac6604b75d50 787
kenjiArai 5:ac6604b75d50 788 /**
kenjiArai 5:ac6604b75d50 789 * @brief Get the current SPAD Ambient Damper Threshold value
kenjiArai 5:ac6604b75d50 790 *
kenjiArai 5:ac6604b75d50 791 * @par Function Description
kenjiArai 5:ac6604b75d50 792 * This function get the SPAD Ambient Damper Threshold value
kenjiArai 5:ac6604b75d50 793 *
kenjiArai 5:ac6604b75d50 794 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 795 *
kenjiArai 5:ac6604b75d50 796 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 797 * @param p_spad_ambient_damper_threshold Pointer to programmed
kenjiArai 5:ac6604b75d50 798 * SPAD Ambient Damper Threshold value
kenjiArai 5:ac6604b75d50 799 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 800 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 801 */
kenjiArai 5:ac6604b75d50 802 VL53L0X_Error VL53L0X_get_spad_ambient_damper_threshold(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 803 uint16_t *p_spad_ambient_damper_threshold);
kenjiArai 5:ac6604b75d50 804
kenjiArai 5:ac6604b75d50 805 /**
kenjiArai 5:ac6604b75d50 806 * @brief Set the SPAD Ambient Damper Threshold value
kenjiArai 5:ac6604b75d50 807 *
kenjiArai 5:ac6604b75d50 808 * @par Function Description
kenjiArai 5:ac6604b75d50 809 * This function set the SPAD Ambient Damper Threshold value
kenjiArai 5:ac6604b75d50 810 *
kenjiArai 5:ac6604b75d50 811 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 812 *
kenjiArai 5:ac6604b75d50 813 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 814 * @param spad_ambient_damper_threshold SPAD Ambient Damper Threshold value
kenjiArai 5:ac6604b75d50 815 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 816 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 817 */
kenjiArai 5:ac6604b75d50 818 VL53L0X_Error VL53L0X_set_spad_ambient_damper_threshold(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 819 uint16_t spad_ambient_damper_threshold);
kenjiArai 5:ac6604b75d50 820
kenjiArai 5:ac6604b75d50 821 /**
kenjiArai 5:ac6604b75d50 822 * @brief Get the maximal distance for actual setup
kenjiArai 5:ac6604b75d50 823 * @par Function Description
kenjiArai 5:ac6604b75d50 824 * Device must be initialized through @a VL53L0X_SetParameters() prior calling
kenjiArai 5:ac6604b75d50 825 * this function.
kenjiArai 5:ac6604b75d50 826 *
kenjiArai 5:ac6604b75d50 827 * Any range value more than the value returned is to be considered as
kenjiArai 5:ac6604b75d50 828 * "no target detected" or
kenjiArai 5:ac6604b75d50 829 * "no target in detectable range"\n
kenjiArai 5:ac6604b75d50 830 * @warning The maximal distance depends on the setup
kenjiArai 5:ac6604b75d50 831 *
kenjiArai 5:ac6604b75d50 832 * @note This function is not Implemented
kenjiArai 5:ac6604b75d50 833 *
kenjiArai 5:ac6604b75d50 834 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 835 * @param p_upper_limit_milli_meter The maximal range limit for actual setup
kenjiArai 5:ac6604b75d50 836 * (in millimeter)
kenjiArai 5:ac6604b75d50 837 * @return VL53L0X_ERROR_NOT_IMPLEMENTED Not implemented
kenjiArai 5:ac6604b75d50 838 */
kenjiArai 5:ac6604b75d50 839 VL53L0X_Error VL53L0X_get_upper_limit_milli_meter(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 840 uint16_t *p_upper_limit_milli_meter);
kenjiArai 5:ac6604b75d50 841
kenjiArai 5:ac6604b75d50 842 /**
kenjiArai 5:ac6604b75d50 843 * @brief Get the tuning settings pointer and the internal external switch
kenjiArai 5:ac6604b75d50 844 * value.
kenjiArai 5:ac6604b75d50 845 *
kenjiArai 5:ac6604b75d50 846 * This function is used to get the Tuning settings buffer pointer and the
kenjiArai 5:ac6604b75d50 847 * value.
kenjiArai 5:ac6604b75d50 848 * of the switch to select either external or internal tuning settings.
kenjiArai 5:ac6604b75d50 849 *
kenjiArai 5:ac6604b75d50 850 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 851 *
kenjiArai 5:ac6604b75d50 852 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 853 * @param pp_tuning_setting_buffer Pointer to tuning settings buffer.
kenjiArai 5:ac6604b75d50 854 * @param p_use_internal_tuning_settings Pointer to store Use internal tuning
kenjiArai 5:ac6604b75d50 855 * settings value.
kenjiArai 5:ac6604b75d50 856 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 857 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 858 */
kenjiArai 5:ac6604b75d50 859 VL53L0X_Error VL53L0X_get_tuning_setting_buffer(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 860 uint8_t **pp_tuning_setting_buffer, uint8_t *p_use_internal_tuning_settings);
kenjiArai 5:ac6604b75d50 861
kenjiArai 5:ac6604b75d50 862 /**
kenjiArai 5:ac6604b75d50 863 * @brief Set the tuning settings pointer
kenjiArai 5:ac6604b75d50 864 *
kenjiArai 5:ac6604b75d50 865 * This function is used to specify the Tuning settings buffer to be used
kenjiArai 5:ac6604b75d50 866 * for a given device. The buffer contains all the necessary data to permit
kenjiArai 5:ac6604b75d50 867 * the API to write tuning settings.
kenjiArai 5:ac6604b75d50 868 * This function permit to force the usage of either external or internal
kenjiArai 5:ac6604b75d50 869 * tuning settings.
kenjiArai 5:ac6604b75d50 870 *
kenjiArai 5:ac6604b75d50 871 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 872 *
kenjiArai 5:ac6604b75d50 873 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 874 * @param p_tuning_setting_buffer Pointer to tuning settings buffer.
kenjiArai 5:ac6604b75d50 875 * @param use_internal_tuning_settings Use internal tuning settings value.
kenjiArai 5:ac6604b75d50 876 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 877 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 878 */
kenjiArai 5:ac6604b75d50 879 VL53L0X_Error VL53L0X_set_tuning_setting_buffer(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 880 uint8_t *p_tuning_setting_buffer, uint8_t use_internal_tuning_settings);
kenjiArai 5:ac6604b75d50 881
kenjiArai 5:ac6604b75d50 882 /**
kenjiArai 5:ac6604b75d50 883 * @defgroup VL53L0X_registerAccess_group PAL Register Access Functions
kenjiArai 5:ac6604b75d50 884 * @brief PAL Register Access Functions
kenjiArai 5:ac6604b75d50 885 * @{
kenjiArai 5:ac6604b75d50 886 */
kenjiArai 5:ac6604b75d50 887
kenjiArai 5:ac6604b75d50 888 /**
kenjiArai 5:ac6604b75d50 889 * Lock comms interface to serialize all commands to a shared I2C interface for a specific device
kenjiArai 5:ac6604b75d50 890 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 891 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 892 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 893 */
kenjiArai 5:ac6604b75d50 894 VL53L0X_Error VL53L0X_lock_sequence_access(VL53L0X_DEV dev);
kenjiArai 5:ac6604b75d50 895
kenjiArai 5:ac6604b75d50 896 /**
kenjiArai 5:ac6604b75d50 897 * Unlock comms interface to serialize all commands to a shared I2C interface for a specific device
kenjiArai 5:ac6604b75d50 898 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 899 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 900 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 901 */
kenjiArai 5:ac6604b75d50 902 VL53L0X_Error VL53L0X_unlock_sequence_access(VL53L0X_DEV dev);
kenjiArai 5:ac6604b75d50 903
kenjiArai 5:ac6604b75d50 904 /**
kenjiArai 5:ac6604b75d50 905 * @brief Prepare device for operation
kenjiArai 5:ac6604b75d50 906 * @par Function Description
kenjiArai 5:ac6604b75d50 907 * Update device with provided parameters
kenjiArai 5:ac6604b75d50 908 * @li Then start ranging operation.
kenjiArai 5:ac6604b75d50 909 *
kenjiArai 5:ac6604b75d50 910 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 911 *
kenjiArai 5:ac6604b75d50 912 * @param Dev Device Handle
kenjiArai 5:ac6604b75d50 913 * @param pDeviceParameters Pointer to store current device parameters.
kenjiArai 5:ac6604b75d50 914 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 915 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 916 */
kenjiArai 5:ac6604b75d50 917 VL53L0X_Error vl53L0x_set_device_parameters(VL53L0X_DEV Dev,
kenjiArai 5:ac6604b75d50 918 const VL53L0X_DeviceParameters_t *pDeviceParameters);
kenjiArai 5:ac6604b75d50 919
kenjiArai 5:ac6604b75d50 920 /**
kenjiArai 5:ac6604b75d50 921 * Set Group parameter Hold state
kenjiArai 5:ac6604b75d50 922 *
kenjiArai 5:ac6604b75d50 923 * @par Function Description
kenjiArai 5:ac6604b75d50 924 * Set or remove device internal group parameter hold
kenjiArai 5:ac6604b75d50 925 *
kenjiArai 5:ac6604b75d50 926 * @note This function is not Implemented
kenjiArai 5:ac6604b75d50 927 *
kenjiArai 5:ac6604b75d50 928 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 929 * @param group_param_hold Group parameter Hold state to be set (on/off)
kenjiArai 5:ac6604b75d50 930 * @return VL53L0X_ERROR_NOT_IMPLEMENTED Not implemented
kenjiArai 5:ac6604b75d50 931 */
kenjiArai 5:ac6604b75d50 932 VL53L0X_Error VL53L0X_set_group_param_hold(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 933 uint8_t group_param_hold);
kenjiArai 5:ac6604b75d50 934
kenjiArai 5:ac6604b75d50 935
kenjiArai 5:ac6604b75d50 936 /**
kenjiArai 5:ac6604b75d50 937 * @brief Wait for device ready for a new measurement command.
kenjiArai 5:ac6604b75d50 938 * Blocking function.
kenjiArai 5:ac6604b75d50 939 *
kenjiArai 5:ac6604b75d50 940 * @note This function is not Implemented
kenjiArai 5:ac6604b75d50 941 *
kenjiArai 5:ac6604b75d50 942 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 943 * @param max_loop Max Number of polling loop (timeout).
kenjiArai 5:ac6604b75d50 944 * @return VL53L0X_ERROR_NOT_IMPLEMENTED Not implemented
kenjiArai 5:ac6604b75d50 945 */
kenjiArai 5:ac6604b75d50 946 VL53L0X_Error VL53L0X_wait_device_ready_for_new_measurement(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 947 uint32_t max_loop);
kenjiArai 5:ac6604b75d50 948
kenjiArai 5:ac6604b75d50 949 VL53L0X_Error VL53L0X_reverse_bytes(uint8_t *data, uint32_t size);
kenjiArai 5:ac6604b75d50 950
kenjiArai 5:ac6604b75d50 951 int range_meas_int_continuous_mode(void (*fptr)(void));
kenjiArai 5:ac6604b75d50 952