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 /**
kenjiArai 5:ac6604b75d50 3 * @brief Start the measure indicated by operating mode
kenjiArai 5:ac6604b75d50 4 * @param[in] operating_mode specifies requested measure
kenjiArai 5:ac6604b75d50 5 * @param[in] fptr specifies call back function must be !NULL in case of interrupt measure
kenjiArai 5:ac6604b75d50 6 * @return "0" on success
kenjiArai 5:ac6604b75d50 7 */
kenjiArai 5:ac6604b75d50 8 int start_measurement(OperatingMode operating_mode, void (*fptr)(void));
kenjiArai 5:ac6604b75d50 9
kenjiArai 5:ac6604b75d50 10 /**
kenjiArai 5:ac6604b75d50 11 * @brief Get results for the measure indicated by operating mode
kenjiArai 5:ac6604b75d50 12 * @param[in] operating_mode specifies requested measure results
kenjiArai 5:ac6604b75d50 13 * @param[out] p_data pointer to the MeasureData_t structure to read data in to
kenjiArai 5:ac6604b75d50 14 * @return "0" on success
kenjiArai 5:ac6604b75d50 15 */
kenjiArai 5:ac6604b75d50 16 int get_measurement(OperatingMode operating_mode, VL53L0X_RangingMeasurementData_t *p_data);
kenjiArai 5:ac6604b75d50 17
kenjiArai 5:ac6604b75d50 18 /**
kenjiArai 5:ac6604b75d50 19 * @brief Stop the currently running measure indicate by operating_mode
kenjiArai 5:ac6604b75d50 20 * @param[in] operating_mode specifies requested measure to stop
kenjiArai 5:ac6604b75d50 21 * @return "0" on success
kenjiArai 5:ac6604b75d50 22 */
kenjiArai 5:ac6604b75d50 23 int stop_measurement(OperatingMode operating_mode);
kenjiArai 5:ac6604b75d50 24
kenjiArai 5:ac6604b75d50 25 /**
kenjiArai 5:ac6604b75d50 26 * @brief Interrupt handling func to be called by user after an INT is occourred
kenjiArai 5:ac6604b75d50 27 * @param[in] opeating_mode indicating the in progress measure
kenjiArai 5:ac6604b75d50 28 * @param[out] Data pointer to the MeasureData_t structure to read data in to
kenjiArai 5:ac6604b75d50 29 * @return "0" on success
kenjiArai 5:ac6604b75d50 30 */
kenjiArai 5:ac6604b75d50 31 int handle_irq(OperatingMode operating_mode, VL53L0X_RangingMeasurementData_t *data);
kenjiArai 5:ac6604b75d50 32
kenjiArai 5:ac6604b75d50 33 /**
kenjiArai 5:ac6604b75d50 34 * @brief Enable interrupt measure IRQ
kenjiArai 5:ac6604b75d50 35 * @return "0" on success
kenjiArai 5:ac6604b75d50 36 */
kenjiArai 5:ac6604b75d50 37 void enable_interrupt_measure_detection_irq(void)
kenjiArai 5:ac6604b75d50 38 {
kenjiArai 5:ac6604b75d50 39 if (_gpio1Int != NULL) {
kenjiArai 5:ac6604b75d50 40 _gpio1Int->enable_irq();
kenjiArai 5:ac6604b75d50 41 }
kenjiArai 5:ac6604b75d50 42 }
kenjiArai 5:ac6604b75d50 43
kenjiArai 5:ac6604b75d50 44 /**
kenjiArai 5:ac6604b75d50 45 * @brief Disable interrupt measure IRQ
kenjiArai 5:ac6604b75d50 46 * @return "0" on success
kenjiArai 5:ac6604b75d50 47 */
kenjiArai 5:ac6604b75d50 48 void disable_interrupt_measure_detection_irq(void)
kenjiArai 5:ac6604b75d50 49 {
kenjiArai 5:ac6604b75d50 50 if (_gpio1Int != NULL) {
kenjiArai 5:ac6604b75d50 51 _gpio1Int->disable_irq();
kenjiArai 5:ac6604b75d50 52 }
kenjiArai 5:ac6604b75d50 53 }
kenjiArai 5:ac6604b75d50 54
kenjiArai 5:ac6604b75d50 55 /**
kenjiArai 5:ac6604b75d50 56 * @brief Attach a function to call when an interrupt is detected, i.e. measurement is ready
kenjiArai 5:ac6604b75d50 57 * @param[in] fptr pointer to call back function to be called whenever an interrupt occours
kenjiArai 5:ac6604b75d50 58 * @return "0" on success
kenjiArai 5:ac6604b75d50 59 */
kenjiArai 5:ac6604b75d50 60 void attach_interrupt_measure_detection_irq(void (*fptr)(void))
kenjiArai 5:ac6604b75d50 61 {
kenjiArai 5:ac6604b75d50 62 if (_gpio1Int != NULL) {
kenjiArai 5:ac6604b75d50 63 _gpio1Int->rise(fptr);
kenjiArai 5:ac6604b75d50 64 }
kenjiArai 5:ac6604b75d50 65 }
kenjiArai 5:ac6604b75d50 66
kenjiArai 5:ac6604b75d50 67
kenjiArai 5:ac6604b75d50 68 /** Wrapper functions */
kenjiArai 5:ac6604b75d50 69 /** @defgroup api_init Init functions
kenjiArai 5:ac6604b75d50 70 * @brief API init functions
kenjiArai 5:ac6604b75d50 71 * @ingroup api_hl
kenjiArai 5:ac6604b75d50 72 * @{
kenjiArai 5:ac6604b75d50 73 */
kenjiArai 5:ac6604b75d50 74
kenjiArai 5:ac6604b75d50 75 /**
kenjiArai 5:ac6604b75d50 76 *
kenjiArai 5:ac6604b75d50 77 * @brief One time device initialization
kenjiArai 5:ac6604b75d50 78 *
kenjiArai 5:ac6604b75d50 79 * To be called once and only once after device is brought out of reset (Chip enable) and booted.
kenjiArai 5:ac6604b75d50 80 *
kenjiArai 5:ac6604b75d50 81 * @par Function Description
kenjiArai 5:ac6604b75d50 82 * When not used after a fresh device "power up" or reset, it may return @a #CALIBRATION_WARNING
kenjiArai 5:ac6604b75d50 83 * meaning wrong calibration data may have been fetched from device that can result in ranging offset error\n
kenjiArai 5:ac6604b75d50 84 * If application cannot execute device reset or need to run VL53L0X_data_init multiple time
kenjiArai 5:ac6604b75d50 85 * then it must ensure proper offset calibration saving and restore on its own
kenjiArai 5:ac6604b75d50 86 * by using @a VL53L0X_get_offset_calibration_data_micro_meter() on first power up and then @a VL53L0X_set_offset_calibration_data_micro_meter() all all subsequent init
kenjiArai 5:ac6604b75d50 87 *
kenjiArai 5:ac6604b75d50 88 * @param void
kenjiArai 5:ac6604b75d50 89 * @return "0" on success, @a #CALIBRATION_WARNING if failed
kenjiArai 5:ac6604b75d50 90 */
kenjiArai 5:ac6604b75d50 91 virtual int init(void *init)
kenjiArai 5:ac6604b75d50 92 {
kenjiArai 5:ac6604b75d50 93 return VL53L0X_data_init(_device);
kenjiArai 5:ac6604b75d50 94 }
kenjiArai 5:ac6604b75d50 95
kenjiArai 5:ac6604b75d50 96 /**
kenjiArai 5:ac6604b75d50 97 * @brief Prepare device for operation
kenjiArai 5:ac6604b75d50 98 * @par Function Description
kenjiArai 5:ac6604b75d50 99 * Does static initialization and reprogram common default settings \n
kenjiArai 5:ac6604b75d50 100 * Device is prepared for new measure, ready single shot ranging or ALS typical polling operation\n
kenjiArai 5:ac6604b75d50 101 * After prepare user can : \n
kenjiArai 5:ac6604b75d50 102 * @li Call other API function to set other settings\n
kenjiArai 5:ac6604b75d50 103 * @li Configure the interrupt pins, etc... \n
kenjiArai 5:ac6604b75d50 104 * @li Then start ranging or ALS operations in single shot or continuous mode
kenjiArai 5:ac6604b75d50 105 *
kenjiArai 5:ac6604b75d50 106 * @param void
kenjiArai 5:ac6604b75d50 107 * @return "0" on success
kenjiArai 5:ac6604b75d50 108 */
kenjiArai 5:ac6604b75d50 109 int prepare()
kenjiArai 5:ac6604b75d50 110 {
kenjiArai 5:ac6604b75d50 111 VL53L0X_Error status = VL53L0X_ERROR_NONE;
kenjiArai 5:ac6604b75d50 112 uint32_t ref_spad_count;
kenjiArai 5:ac6604b75d50 113 uint8_t is_aperture_spads;
kenjiArai 5:ac6604b75d50 114 uint8_t vhv_settings;
kenjiArai 5:ac6604b75d50 115 uint8_t phase_cal;
kenjiArai 5:ac6604b75d50 116
kenjiArai 5:ac6604b75d50 117 if (status == VL53L0X_ERROR_NONE) {
kenjiArai 5:ac6604b75d50 118 //printf("Call of VL53L0X_StaticInit\r\n");
kenjiArai 5:ac6604b75d50 119 status = VL53L0X_static_init(_device); // Device Initialization
kenjiArai 5:ac6604b75d50 120 }
kenjiArai 5:ac6604b75d50 121
kenjiArai 5:ac6604b75d50 122 if (status == VL53L0X_ERROR_NONE) {
kenjiArai 5:ac6604b75d50 123 //printf("Call of VL53L0X_PerformRefCalibration\r\n");
kenjiArai 5:ac6604b75d50 124 status = VL53L0X_perform_ref_calibration(_device,
kenjiArai 5:ac6604b75d50 125 &vhv_settings, &phase_cal); // Device Initialization
kenjiArai 5:ac6604b75d50 126 }
kenjiArai 5:ac6604b75d50 127
kenjiArai 5:ac6604b75d50 128 if (status == VL53L0X_ERROR_NONE) {
kenjiArai 5:ac6604b75d50 129 //printf("Call of VL53L0X_PerformRefSpadManagement\r\n");
kenjiArai 5:ac6604b75d50 130 status = VL53L0X_perform_ref_spad_management(_device,
kenjiArai 5:ac6604b75d50 131 &ref_spad_count, &is_aperture_spads); // Device Initialization
kenjiArai 5:ac6604b75d50 132 // printf ("refSpadCount = %d, isApertureSpads = %d\r\n", refSpadCount, isApertureSpads);
kenjiArai 5:ac6604b75d50 133 }
kenjiArai 5:ac6604b75d50 134
kenjiArai 5:ac6604b75d50 135 return status;
kenjiArai 5:ac6604b75d50 136 }
kenjiArai 5:ac6604b75d50 137
kenjiArai 5:ac6604b75d50 138 /**
kenjiArai 5:ac6604b75d50 139 * @brief Start continuous ranging mode
kenjiArai 5:ac6604b75d50 140 *
kenjiArai 5:ac6604b75d50 141 * @details End user should ensure device is in idle state and not already running
kenjiArai 5:ac6604b75d50 142 * @return "0" on success
kenjiArai 5:ac6604b75d50 143 */
kenjiArai 5:ac6604b75d50 144 int range_start_continuous_mode()
kenjiArai 5:ac6604b75d50 145 {
kenjiArai 5:ac6604b75d50 146 int status;
kenjiArai 5:ac6604b75d50 147 status = VL53L0X_set_device_mode(_device, VL53L0X_DEVICEMODE_CONTINUOUS_RANGING);
kenjiArai 5:ac6604b75d50 148
kenjiArai 5:ac6604b75d50 149 if (status == VL53L0X_ERROR_NONE) {
kenjiArai 5:ac6604b75d50 150 //printf ("Call of VL53L0X_StartMeasurement\r\n");
kenjiArai 5:ac6604b75d50 151 status = VL53L0X_start_measurement(_device);
kenjiArai 5:ac6604b75d50 152 }
kenjiArai 5:ac6604b75d50 153
kenjiArai 5:ac6604b75d50 154 return status;
kenjiArai 5:ac6604b75d50 155 }
kenjiArai 5:ac6604b75d50 156
kenjiArai 5:ac6604b75d50 157 //------- Feburary 4th, 2018 by JH1PJL / K.Arai --------------------------------
kenjiArai 5:ac6604b75d50 158 #if ORIGINAL
kenjiArai 5:ac6604b75d50 159 /**
kenjiArai 5:ac6604b75d50 160 * @brief Get ranging result and only that
kenjiArai 5:ac6604b75d50 161 *
kenjiArai 5:ac6604b75d50 162 * @par Function Description
kenjiArai 5:ac6604b75d50 163 * Unlike @a VL53L0X_get_ranging_measurement_data() this function only retrieves the range in millimeter \n
kenjiArai 5:ac6604b75d50 164 * It does any required up-scale translation\n
kenjiArai 5:ac6604b75d50 165 * It can be called after success status polling or in interrupt mode \n
kenjiArai 5:ac6604b75d50 166 * @warning these function is not doing wrap around filtering \n
kenjiArai 5:ac6604b75d50 167 * This function doesn't perform any data ready check!
kenjiArai 5:ac6604b75d50 168 *
kenjiArai 5:ac6604b75d50 169 * @param p_data Pointer to range distance
kenjiArai 5:ac6604b75d50 170 * @return "0" on success
kenjiArai 5:ac6604b75d50 171 */
kenjiArai 5:ac6604b75d50 172 virtual int get_distance(uint32_t *p_data)
kenjiArai 5:ac6604b75d50 173 {
kenjiArai 5:ac6604b75d50 174 int status = 0;
kenjiArai 5:ac6604b75d50 175 VL53L0X_RangingMeasurementData_t p_ranging_measurement_data;
kenjiArai 5:ac6604b75d50 176
kenjiArai 5:ac6604b75d50 177 status = start_measurement(range_single_shot_polling, NULL);
kenjiArai 5:ac6604b75d50 178 if (!status) {
kenjiArai 5:ac6604b75d50 179 status = get_measurement(range_single_shot_polling, &p_ranging_measurement_data);
kenjiArai 5:ac6604b75d50 180 }
kenjiArai 5:ac6604b75d50 181 if (p_ranging_measurement_data.RangeStatus == 0) {
kenjiArai 5:ac6604b75d50 182 // we have a valid range.
kenjiArai 5:ac6604b75d50 183 *p_data = p_ranging_measurement_data.RangeMilliMeter;
kenjiArai 5:ac6604b75d50 184 } else {
kenjiArai 5:ac6604b75d50 185 *p_data = 0;
kenjiArai 5:ac6604b75d50 186 status = VL53L0X_ERROR_RANGE_ERROR;
kenjiArai 5:ac6604b75d50 187 }
kenjiArai 5:ac6604b75d50 188 stop_measurement(range_single_shot_polling);
kenjiArai 5:ac6604b75d50 189 return status;
kenjiArai 5:ac6604b75d50 190 }
kenjiArai 5:ac6604b75d50 191 #endif
kenjiArai 5:ac6604b75d50 192
kenjiArai 5:ac6604b75d50 193 /** @} */
kenjiArai 5:ac6604b75d50 194
kenjiArai 5:ac6604b75d50 195 /**
kenjiArai 5:ac6604b75d50 196 * @brief Set new device i2c address
kenjiArai 5:ac6604b75d50 197 *
kenjiArai 5:ac6604b75d50 198 * After completion the device will answer to the new address programmed.
kenjiArai 5:ac6604b75d50 199 *
kenjiArai 5:ac6604b75d50 200 * @param new_addr The new i2c address (7bit)
kenjiArai 5:ac6604b75d50 201 * @return "0" on success
kenjiArai 5:ac6604b75d50 202 */
kenjiArai 5:ac6604b75d50 203 int set_device_address(int new_addr)
kenjiArai 5:ac6604b75d50 204 {
kenjiArai 5:ac6604b75d50 205 int status;
kenjiArai 5:ac6604b75d50 206
kenjiArai 5:ac6604b75d50 207 status = VL53L0X_set_device_address(_device, new_addr);
kenjiArai 5:ac6604b75d50 208 if (!status) {
kenjiArai 5:ac6604b75d50 209 _device->I2cDevAddr = new_addr;
kenjiArai 5:ac6604b75d50 210 }
kenjiArai 5:ac6604b75d50 211 return status;
kenjiArai 5:ac6604b75d50 212
kenjiArai 5:ac6604b75d50 213 }
kenjiArai 5:ac6604b75d50 214
kenjiArai 5:ac6604b75d50 215 /**
kenjiArai 5:ac6604b75d50 216 * @brief Clear given system interrupt condition
kenjiArai 5:ac6604b75d50 217 *
kenjiArai 5:ac6604b75d50 218 * @par Function Description
kenjiArai 5:ac6604b75d50 219 * Clear given interrupt cause by writing into register #SYSTEM_INTERRUPT_CLEAR register.
kenjiArai 5:ac6604b75d50 220 * @param dev The device
kenjiArai 5:ac6604b75d50 221 * @param int_clear Which interrupt source to clear. Use any combinations of #INTERRUPT_CLEAR_RANGING , #INTERRUPT_CLEAR_ALS , #INTERRUPT_CLEAR_ERROR.
kenjiArai 5:ac6604b75d50 222 * @return "0" on success
kenjiArai 5:ac6604b75d50 223 */
kenjiArai 5:ac6604b75d50 224 int clear_interrupt(uint8_t int_clear)
kenjiArai 5:ac6604b75d50 225 {
kenjiArai 5:ac6604b75d50 226 return VL53L0X_clear_interrupt_mask(_device, int_clear);
kenjiArai 5:ac6604b75d50 227 }
kenjiArai 5:ac6604b75d50 228
kenjiArai 5:ac6604b75d50 229 /**
kenjiArai 5:ac6604b75d50 230 *
kenjiArai 5:ac6604b75d50 231 * @brief Get the 53L0 device
kenjiArai 5:ac6604b75d50 232 *
kenjiArai 5:ac6604b75d50 233 * To be called to retrive the internal device descriptor to allow usage of
kenjiArai 5:ac6604b75d50 234 * low level API having device as parameter. To be called after set_device_address()
kenjiArai 5:ac6604b75d50 235 * (if any).
kenjiArai 5:ac6604b75d50 236 *
kenjiArai 5:ac6604b75d50 237 * @par Function Description
kenjiArai 5:ac6604b75d50 238 * To be called if low level API usage is needed as those functions requires
kenjiArai 5:ac6604b75d50 239 * device as a parameter.TICINIT.
kenjiArai 5:ac6604b75d50 240 *
kenjiArai 5:ac6604b75d50 241 * @note This function return a pointer to an object internal structure
kenjiArai 5:ac6604b75d50 242 *
kenjiArai 5:ac6604b75d50 243 * @param dev ptr to ptr to Device Handle
kenjiArai 5:ac6604b75d50 244 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 245 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 246 */
kenjiArai 5:ac6604b75d50 247 VL53L0X_Error vl53l0x_get_device(VL53L0X_DEV *dev)
kenjiArai 5:ac6604b75d50 248 {
kenjiArai 5:ac6604b75d50 249 *dev = _device;
kenjiArai 5:ac6604b75d50 250 return VL53L0X_ERROR_NONE;
kenjiArai 5:ac6604b75d50 251 }
kenjiArai 5:ac6604b75d50 252
kenjiArai 5:ac6604b75d50 253 /**
kenjiArai 5:ac6604b75d50 254 *
kenjiArai 5:ac6604b75d50 255 * @brief One time device initialization
kenjiArai 5:ac6604b75d50 256 *
kenjiArai 5:ac6604b75d50 257 * To be called once and only once after device is brought out of reset
kenjiArai 5:ac6604b75d50 258 * (Chip enable) and booted see @a VL53L0X_WaitDeviceBooted()
kenjiArai 5:ac6604b75d50 259 *
kenjiArai 5:ac6604b75d50 260 * @par Function Description
kenjiArai 5:ac6604b75d50 261 * When not used after a fresh device "power up" or reset, it may return
kenjiArai 5:ac6604b75d50 262 * @a #VL53L0X_ERROR_CALIBRATION_WARNING meaning wrong calibration data
kenjiArai 5:ac6604b75d50 263 * may have been fetched from device that can result in ranging offset error\n
kenjiArai 5:ac6604b75d50 264 * If application cannot execute device reset or need to run VL53L0X_DataInit
kenjiArai 5:ac6604b75d50 265 * multiple time then it must ensure proper offset calibration saving and
kenjiArai 5:ac6604b75d50 266 * restore on its own by using @a VL53L0X_GetOffsetCalibrationData() on first
kenjiArai 5:ac6604b75d50 267 * power up and then @a VL53L0X_SetOffsetCalibrationData() in all subsequent init
kenjiArai 5:ac6604b75d50 268 * This function will change the VL53L0X_State from VL53L0X_STATE_POWERDOWN to
kenjiArai 5:ac6604b75d50 269 * VL53L0X_STATE_WAIT_STATICINIT.
kenjiArai 5:ac6604b75d50 270 *
kenjiArai 5:ac6604b75d50 271 * @note This function accesses to the device
kenjiArai 5:ac6604b75d50 272 *
kenjiArai 5:ac6604b75d50 273 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 274 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 275 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 276 */
kenjiArai 5:ac6604b75d50 277 VL53L0X_Error VL53L0X_data_init(VL53L0X_DEV dev);
kenjiArai 5:ac6604b75d50 278
kenjiArai 5:ac6604b75d50 279 /**
kenjiArai 5:ac6604b75d50 280 * @brief Do basic device init (and eventually patch loading)
kenjiArai 5:ac6604b75d50 281 * This function will change the VL53L0X_State from
kenjiArai 5:ac6604b75d50 282 * VL53L0X_STATE_WAIT_STATICINIT to VL53L0X_STATE_IDLE.
kenjiArai 5:ac6604b75d50 283 * In this stage all default setting will be applied.
kenjiArai 5:ac6604b75d50 284 *
kenjiArai 5:ac6604b75d50 285 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 286 *
kenjiArai 5:ac6604b75d50 287 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 288 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 289 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 290 */
kenjiArai 5:ac6604b75d50 291 VL53L0X_Error VL53L0X_static_init(VL53L0X_DEV dev);
kenjiArai 5:ac6604b75d50 292
kenjiArai 5:ac6604b75d50 293 /**
kenjiArai 5:ac6604b75d50 294 * @brief Perform Reference Calibration
kenjiArai 5:ac6604b75d50 295 *
kenjiArai 5:ac6604b75d50 296 * @details Perform a reference calibration of the Device.
kenjiArai 5:ac6604b75d50 297 * This function should be run from time to time before doing
kenjiArai 5:ac6604b75d50 298 * a ranging measurement.
kenjiArai 5:ac6604b75d50 299 * This function will launch a special ranging measurement, so
kenjiArai 5:ac6604b75d50 300 * if interrupt are enable an interrupt will be done.
kenjiArai 5:ac6604b75d50 301 * This function will clear the interrupt generated automatically.
kenjiArai 5:ac6604b75d50 302 *
kenjiArai 5:ac6604b75d50 303 * @warning This function is a blocking function
kenjiArai 5:ac6604b75d50 304 *
kenjiArai 5:ac6604b75d50 305 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 306 *
kenjiArai 5:ac6604b75d50 307 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 308 * @param p_vhv_settings Pointer to vhv settings parameter.
kenjiArai 5:ac6604b75d50 309 * @param p_phase_cal Pointer to PhaseCal parameter.
kenjiArai 5:ac6604b75d50 310 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 311 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 312 */
kenjiArai 5:ac6604b75d50 313 VL53L0X_Error VL53L0X_perform_ref_calibration(VL53L0X_DEV dev, uint8_t *p_vhv_settings,
kenjiArai 5:ac6604b75d50 314 uint8_t *p_phase_cal);
kenjiArai 5:ac6604b75d50 315
kenjiArai 5:ac6604b75d50 316 /**
kenjiArai 5:ac6604b75d50 317 * @brief Get Reference Calibration Parameters
kenjiArai 5:ac6604b75d50 318 *
kenjiArai 5:ac6604b75d50 319 * @par Function Description
kenjiArai 5:ac6604b75d50 320 * Get Reference Calibration Parameters.
kenjiArai 5:ac6604b75d50 321 *
kenjiArai 5:ac6604b75d50 322 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 323 *
kenjiArai 5:ac6604b75d50 324 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 325 * @param p_vhv_settings Pointer to VHV parameter
kenjiArai 5:ac6604b75d50 326 * @param p_phase_cal Pointer to PhaseCal Parameter
kenjiArai 5:ac6604b75d50 327 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 328 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 329 */
kenjiArai 5:ac6604b75d50 330 VL53L0X_Error VL53L0X_get_ref_calibration(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 331 uint8_t *p_vhv_settings, uint8_t *p_phase_cal);
kenjiArai 5:ac6604b75d50 332
kenjiArai 5:ac6604b75d50 333 VL53L0X_Error VL53L0X_set_ref_calibration(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 334 uint8_t vhv_settings, uint8_t phase_cal);
kenjiArai 5:ac6604b75d50 335
kenjiArai 5:ac6604b75d50 336 /**
kenjiArai 5:ac6604b75d50 337 * @brief Performs Reference Spad Management
kenjiArai 5:ac6604b75d50 338 *
kenjiArai 5:ac6604b75d50 339 * @par Function Description
kenjiArai 5:ac6604b75d50 340 * The reference SPAD initialization procedure determines the minimum amount
kenjiArai 5:ac6604b75d50 341 * of reference spads to be enables to achieve a target reference signal rate
kenjiArai 5:ac6604b75d50 342 * and should be performed once during initialization.
kenjiArai 5:ac6604b75d50 343 *
kenjiArai 5:ac6604b75d50 344 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 345 *
kenjiArai 5:ac6604b75d50 346 * @note This function change the device mode to
kenjiArai 5:ac6604b75d50 347 * VL53L0X_DEVICEMODE_SINGLE_RANGING
kenjiArai 5:ac6604b75d50 348 *
kenjiArai 5:ac6604b75d50 349 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 350 * @param ref_spad_count Reports ref Spad Count
kenjiArai 5:ac6604b75d50 351 * @param is_aperture_spads Reports if spads are of type
kenjiArai 5:ac6604b75d50 352 * aperture or non-aperture.
kenjiArai 5:ac6604b75d50 353 * 1:=aperture, 0:=Non-Aperture
kenjiArai 5:ac6604b75d50 354 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 355 * @return VL53L0X_ERROR_REF_SPAD_INIT Error in the Ref Spad procedure.
kenjiArai 5:ac6604b75d50 356 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 357 */
kenjiArai 5:ac6604b75d50 358 VL53L0X_Error VL53L0X_perform_ref_spad_management(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 359 uint32_t *ref_spad_count, uint8_t *is_aperture_spads);
kenjiArai 5:ac6604b75d50 360
kenjiArai 5:ac6604b75d50 361 /**
kenjiArai 5:ac6604b75d50 362 * @brief Applies Reference SPAD configuration
kenjiArai 5:ac6604b75d50 363 *
kenjiArai 5:ac6604b75d50 364 * @par Function Description
kenjiArai 5:ac6604b75d50 365 * This function applies a given number of reference spads, identified as
kenjiArai 5:ac6604b75d50 366 * either Aperture or Non-Aperture.
kenjiArai 5:ac6604b75d50 367 * The requested spad count and type are stored within the device specific
kenjiArai 5:ac6604b75d50 368 * parameters data for access by the host.
kenjiArai 5:ac6604b75d50 369 *
kenjiArai 5:ac6604b75d50 370 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 371 *
kenjiArai 5:ac6604b75d50 372 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 373 * @param refSpadCount Number of ref spads.
kenjiArai 5:ac6604b75d50 374 * @param is_aperture_spads Defines if spads are of type
kenjiArai 5:ac6604b75d50 375 * aperture or non-aperture.
kenjiArai 5:ac6604b75d50 376 * 1:=aperture, 0:=Non-Aperture
kenjiArai 5:ac6604b75d50 377 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 378 * @return VL53L0X_ERROR_REF_SPAD_INIT Error in the in the reference
kenjiArai 5:ac6604b75d50 379 * spad configuration.
kenjiArai 5:ac6604b75d50 380 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 381 */
kenjiArai 5:ac6604b75d50 382 VL53L0X_Error VL53L0X_set_reference_spads(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 383 uint32_t refSpadCount, uint8_t is_aperture_spads);
kenjiArai 5:ac6604b75d50 384
kenjiArai 5:ac6604b75d50 385 /**
kenjiArai 5:ac6604b75d50 386 * @brief Retrieves SPAD configuration
kenjiArai 5:ac6604b75d50 387 *
kenjiArai 5:ac6604b75d50 388 * @par Function Description
kenjiArai 5:ac6604b75d50 389 * This function retrieves the current number of applied reference spads
kenjiArai 5:ac6604b75d50 390 * and also their type : Aperture or Non-Aperture.
kenjiArai 5:ac6604b75d50 391 *
kenjiArai 5:ac6604b75d50 392 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 393 *
kenjiArai 5:ac6604b75d50 394 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 395 * @param p_spad_count Number ref Spad Count
kenjiArai 5:ac6604b75d50 396 * @param p_is_aperture_spads Reports if spads are of type
kenjiArai 5:ac6604b75d50 397 * aperture or non-aperture.
kenjiArai 5:ac6604b75d50 398 * 1:=aperture, 0:=Non-Aperture
kenjiArai 5:ac6604b75d50 399 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 400 * @return VL53L0X_ERROR_REF_SPAD_INIT Error in the in the reference
kenjiArai 5:ac6604b75d50 401 * spad configuration.
kenjiArai 5:ac6604b75d50 402 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 403 */
kenjiArai 5:ac6604b75d50 404 VL53L0X_Error VL53L0X_get_reference_spads(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 405 uint32_t *p_spad_count, uint8_t *p_is_aperture_spads);
kenjiArai 5:ac6604b75d50 406
kenjiArai 5:ac6604b75d50 407 /**
kenjiArai 5:ac6604b75d50 408 * @brief Get part to part calibration offset
kenjiArai 5:ac6604b75d50 409 *
kenjiArai 5:ac6604b75d50 410 * @par Function Description
kenjiArai 5:ac6604b75d50 411 * Should only be used after a successful call to @a VL53L0X_DataInit to backup
kenjiArai 5:ac6604b75d50 412 * device NVM value
kenjiArai 5:ac6604b75d50 413 *
kenjiArai 5:ac6604b75d50 414 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 415 *
kenjiArai 5:ac6604b75d50 416 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 417 * @param p_offset_calibration_data_micro_meter Return part to part
kenjiArai 5:ac6604b75d50 418 * calibration offset from device (microns)
kenjiArai 5:ac6604b75d50 419 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 420 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 421 */
kenjiArai 5:ac6604b75d50 422 VL53L0X_Error VL53L0X_get_offset_calibration_data_micro_meter(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 423 int32_t *p_offset_calibration_data_micro_meter);
kenjiArai 5:ac6604b75d50 424 /**
kenjiArai 5:ac6604b75d50 425 * Set or over-hide part to part calibration offset
kenjiArai 5:ac6604b75d50 426 * \sa VL53L0X_DataInit() VL53L0X_GetOffsetCalibrationDataMicroMeter()
kenjiArai 5:ac6604b75d50 427 *
kenjiArai 5:ac6604b75d50 428 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 429 *
kenjiArai 5:ac6604b75d50 430 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 431 * @param p_offset_calibration_data_micro_meter Offset (microns)
kenjiArai 5:ac6604b75d50 432 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 433 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 434 */
kenjiArai 5:ac6604b75d50 435 VL53L0X_Error VL53L0X_set_offset_calibration_data_micro_meter(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 436 int32_t offset_calibration_data_micro_meter);
kenjiArai 5:ac6604b75d50 437
kenjiArai 5:ac6604b75d50 438 VL53L0X_Error VL53L0X_perform_offset_calibration(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 439 FixPoint1616_t cal_distance_milli_meter,
kenjiArai 5:ac6604b75d50 440 int32_t *p_offset_micro_meter);
kenjiArai 5:ac6604b75d50 441
kenjiArai 5:ac6604b75d50 442 VL53L0X_Error VL53L0X_perform_xtalk_calibration(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 443 FixPoint1616_t xtalk_cal_distance,
kenjiArai 5:ac6604b75d50 444 FixPoint1616_t *p_xtalk_compensation_rate_mega_cps);
kenjiArai 5:ac6604b75d50 445
kenjiArai 5:ac6604b75d50 446 /**
kenjiArai 5:ac6604b75d50 447 * @brief Perform XTalk Measurement
kenjiArai 5:ac6604b75d50 448 *
kenjiArai 5:ac6604b75d50 449 * @details Measures the current cross talk from glass in front
kenjiArai 5:ac6604b75d50 450 * of the sensor.
kenjiArai 5:ac6604b75d50 451 * This functions performs a histogram measurement and uses the results
kenjiArai 5:ac6604b75d50 452 * to measure the crosstalk. For the function to be successful, there
kenjiArai 5:ac6604b75d50 453 * must be no target in front of the sensor.
kenjiArai 5:ac6604b75d50 454 *
kenjiArai 5:ac6604b75d50 455 * @warning This function is a blocking function
kenjiArai 5:ac6604b75d50 456 *
kenjiArai 5:ac6604b75d50 457 * @warning This function is not supported when the final range
kenjiArai 5:ac6604b75d50 458 * vcsel clock period is set below 10 PCLKS.
kenjiArai 5:ac6604b75d50 459 *
kenjiArai 5:ac6604b75d50 460 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 461 *
kenjiArai 5:ac6604b75d50 462 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 463 * @param timeout_ms Histogram measurement duration.
kenjiArai 5:ac6604b75d50 464 * @param p_xtalk_per_spad Output parameter containing the crosstalk
kenjiArai 5:ac6604b75d50 465 * measurement result, in MCPS/Spad.
kenjiArai 5:ac6604b75d50 466 * Format fixpoint 16:16.
kenjiArai 5:ac6604b75d50 467 * @param p_ambient_too_high Output parameter which indicate that
kenjiArai 5:ac6604b75d50 468 * pXtalkPerSpad is not good if the Ambient
kenjiArai 5:ac6604b75d50 469 * is too high.
kenjiArai 5:ac6604b75d50 470 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 471 * @return VL53L0X_ERROR_INVALID_PARAMS vcsel clock period not supported
kenjiArai 5:ac6604b75d50 472 * for this operation.
kenjiArai 5:ac6604b75d50 473 * Must not be less than 10PCLKS.
kenjiArai 5:ac6604b75d50 474 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 475 */
kenjiArai 5:ac6604b75d50 476 VL53L0X_Error VL53L0X_perform_xtalk_measurement(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 477 uint32_t timeout_ms, FixPoint1616_t *p_xtalk_per_spad,
kenjiArai 5:ac6604b75d50 478 uint8_t *p_ambient_too_high);
kenjiArai 5:ac6604b75d50 479
kenjiArai 5:ac6604b75d50 480 /**
kenjiArai 5:ac6604b75d50 481 * @brief Enable/Disable Cross talk compensation feature
kenjiArai 5:ac6604b75d50 482 *
kenjiArai 5:ac6604b75d50 483 * @note This function is not Implemented.
kenjiArai 5:ac6604b75d50 484 * Enable/Disable Cross Talk by set to zero the Cross Talk value
kenjiArai 5:ac6604b75d50 485 * by using @a VL53L0X_SetXTalkCompensationRateMegaCps().
kenjiArai 5:ac6604b75d50 486 *
kenjiArai 5:ac6604b75d50 487 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 488 * @param x_talk_compensation_enable Cross talk compensation
kenjiArai 5:ac6604b75d50 489 * to be set 0=disabled else = enabled
kenjiArai 5:ac6604b75d50 490 * @return VL53L0X_ERROR_NOT_IMPLEMENTED Not implemented
kenjiArai 5:ac6604b75d50 491 */
kenjiArai 5:ac6604b75d50 492 VL53L0X_Error VL53L0X_set_x_talk_compensation_enable(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 493 uint8_t x_talk_compensation_enable);
kenjiArai 5:ac6604b75d50 494
kenjiArai 5:ac6604b75d50 495 /**
kenjiArai 5:ac6604b75d50 496 * @brief Get Cross talk compensation rate
kenjiArai 5:ac6604b75d50 497 *
kenjiArai 5:ac6604b75d50 498 * @note This function is not Implemented.
kenjiArai 5:ac6604b75d50 499 * Enable/Disable Cross Talk by set to zero the Cross Talk value by
kenjiArai 5:ac6604b75d50 500 * using @a VL53L0X_SetXTalkCompensationRateMegaCps().
kenjiArai 5:ac6604b75d50 501 *
kenjiArai 5:ac6604b75d50 502 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 503 * @param p_x_talk_compensation_enable Pointer to the Cross talk compensation
kenjiArai 5:ac6604b75d50 504 * state 0=disabled or 1 = enabled
kenjiArai 5:ac6604b75d50 505 * @return VL53L0X_ERROR_NOT_IMPLEMENTED Not implemented
kenjiArai 5:ac6604b75d50 506 */
kenjiArai 5:ac6604b75d50 507 VL53L0X_Error VL53L0X_get_x_talk_compensation_enable(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 508 uint8_t *p_x_talk_compensation_enable);
kenjiArai 5:ac6604b75d50 509 /**
kenjiArai 5:ac6604b75d50 510 * @brief Set Cross talk compensation rate
kenjiArai 5:ac6604b75d50 511 *
kenjiArai 5:ac6604b75d50 512 * @par Function Description
kenjiArai 5:ac6604b75d50 513 * Set Cross talk compensation rate.
kenjiArai 5:ac6604b75d50 514 *
kenjiArai 5:ac6604b75d50 515 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 516 *
kenjiArai 5:ac6604b75d50 517 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 518 * @param x_talk_compensation_rate_mega_cps Compensation rate in
kenjiArai 5:ac6604b75d50 519 * Mega counts per second
kenjiArai 5:ac6604b75d50 520 * (16.16 fix point) see
kenjiArai 5:ac6604b75d50 521 * datasheet for details
kenjiArai 5:ac6604b75d50 522 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 523 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 524 */
kenjiArai 5:ac6604b75d50 525 VL53L0X_Error VL53L0X_set_x_talk_compensation_rate_mega_cps(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 526 FixPoint1616_t x_talk_compensation_rate_mega_cps);
kenjiArai 5:ac6604b75d50 527
kenjiArai 5:ac6604b75d50 528 /**
kenjiArai 5:ac6604b75d50 529 * @brief Get Cross talk compensation rate
kenjiArai 5:ac6604b75d50 530 *
kenjiArai 5:ac6604b75d50 531 * @par Function Description
kenjiArai 5:ac6604b75d50 532 * Get Cross talk compensation rate.
kenjiArai 5:ac6604b75d50 533 *
kenjiArai 5:ac6604b75d50 534 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 535 *
kenjiArai 5:ac6604b75d50 536 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 537 * @param p_xtalk_compensation_rate_mega_cps Pointer to Compensation rate
kenjiArai 5:ac6604b75d50 538 * in Mega counts per second
kenjiArai 5:ac6604b75d50 539 * (16.16 fix point) see
kenjiArai 5:ac6604b75d50 540 * datasheet for details
kenjiArai 5:ac6604b75d50 541 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 542 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 543 */
kenjiArai 5:ac6604b75d50 544 VL53L0X_Error VL53L0X_get_x_talk_compensation_rate_mega_cps(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 545 FixPoint1616_t *p_xtalk_compensation_rate_mega_cps);
kenjiArai 5:ac6604b75d50 546
kenjiArai 5:ac6604b75d50 547 /**
kenjiArai 5:ac6604b75d50 548 * @brief Set a new device mode
kenjiArai 5:ac6604b75d50 549 * @par Function Description
kenjiArai 5:ac6604b75d50 550 * Set device to a new mode (ranging, histogram ...)
kenjiArai 5:ac6604b75d50 551 *
kenjiArai 5:ac6604b75d50 552 * @note This function doesn't Access to the device
kenjiArai 5:ac6604b75d50 553 *
kenjiArai 5:ac6604b75d50 554 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 555 * @param device_mode New device mode to apply
kenjiArai 5:ac6604b75d50 556 * Valid values are:
kenjiArai 5:ac6604b75d50 557 * VL53L0X_DEVICEMODE_SINGLE_RANGING
kenjiArai 5:ac6604b75d50 558 * VL53L0X_DEVICEMODE_CONTINUOUS_RANGING
kenjiArai 5:ac6604b75d50 559 * VL53L0X_DEVICEMODE_CONTINUOUS_TIMED_RANGING
kenjiArai 5:ac6604b75d50 560 * VL53L0X_DEVICEMODE_SINGLE_HISTOGRAM
kenjiArai 5:ac6604b75d50 561 * VL53L0X_HISTOGRAMMODE_REFERENCE_ONLY
kenjiArai 5:ac6604b75d50 562 * VL53L0X_HISTOGRAMMODE_RETURN_ONLY
kenjiArai 5:ac6604b75d50 563 * VL53L0X_HISTOGRAMMODE_BOTH
kenjiArai 5:ac6604b75d50 564 *
kenjiArai 5:ac6604b75d50 565 *
kenjiArai 5:ac6604b75d50 566 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 567 * @return VL53L0X_ERROR_MODE_NOT_SUPPORTED This error occurs when
kenjiArai 5:ac6604b75d50 568 * DeviceMode is not in the
kenjiArai 5:ac6604b75d50 569 * supported list
kenjiArai 5:ac6604b75d50 570 */
kenjiArai 5:ac6604b75d50 571 VL53L0X_Error VL53L0X_set_device_mode(VL53L0X_DEV dev, VL53L0X_DeviceModes device_mode);
kenjiArai 5:ac6604b75d50 572
kenjiArai 5:ac6604b75d50 573 /**
kenjiArai 5:ac6604b75d50 574 * @brief Get current new device mode
kenjiArai 5:ac6604b75d50 575 * @par Function Description
kenjiArai 5:ac6604b75d50 576 * Get actual mode of the device(ranging, histogram ...)
kenjiArai 5:ac6604b75d50 577 *
kenjiArai 5:ac6604b75d50 578 * @note This function doesn't Access to the device
kenjiArai 5:ac6604b75d50 579 *
kenjiArai 5:ac6604b75d50 580 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 581 * @param p_device_mode Pointer to current apply mode value
kenjiArai 5:ac6604b75d50 582 * Valid values are:
kenjiArai 5:ac6604b75d50 583 * VL53L0X_DEVICEMODE_SINGLE_RANGING
kenjiArai 5:ac6604b75d50 584 * VL53L0X_DEVICEMODE_CONTINUOUS_RANGING
kenjiArai 5:ac6604b75d50 585 * VL53L0X_DEVICEMODE_CONTINUOUS_TIMED_RANGING
kenjiArai 5:ac6604b75d50 586 * VL53L0X_DEVICEMODE_SINGLE_HISTOGRAM
kenjiArai 5:ac6604b75d50 587 * VL53L0X_HISTOGRAMMODE_REFERENCE_ONLY
kenjiArai 5:ac6604b75d50 588 * VL53L0X_HISTOGRAMMODE_RETURN_ONLY
kenjiArai 5:ac6604b75d50 589 * VL53L0X_HISTOGRAMMODE_BOTH
kenjiArai 5:ac6604b75d50 590 *
kenjiArai 5:ac6604b75d50 591 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 592 * @return VL53L0X_ERROR_MODE_NOT_SUPPORTED This error occurs when
kenjiArai 5:ac6604b75d50 593 * DeviceMode is not in the
kenjiArai 5:ac6604b75d50 594 * supported list
kenjiArai 5:ac6604b75d50 595 */
kenjiArai 5:ac6604b75d50 596 VL53L0X_Error VL53L0X_get_device_mode(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 597 VL53L0X_DeviceModes *p_device_mode);
kenjiArai 5:ac6604b75d50 598
kenjiArai 5:ac6604b75d50 599 /**
kenjiArai 5:ac6604b75d50 600 * @brief Get current configuration for GPIO pin for a given device
kenjiArai 5:ac6604b75d50 601 *
kenjiArai 5:ac6604b75d50 602 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 603 *
kenjiArai 5:ac6604b75d50 604 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 605 * @param pin ID of the GPIO Pin
kenjiArai 5:ac6604b75d50 606 * @param p_device_mode Pointer to Device Mode associated to the Gpio.
kenjiArai 5:ac6604b75d50 607 * @param p_functionality Pointer to Pin functionality.
kenjiArai 5:ac6604b75d50 608 * Refer to ::VL53L0X_GpioFunctionality
kenjiArai 5:ac6604b75d50 609 * @param p_polarity Pointer to interrupt polarity.
kenjiArai 5:ac6604b75d50 610 * Active high or active low see
kenjiArai 5:ac6604b75d50 611 * ::VL53L0X_InterruptPolarity
kenjiArai 5:ac6604b75d50 612 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 613 * @return VL53L0X_ERROR_GPIO_NOT_EXISTING Only Pin=0 is accepted.
kenjiArai 5:ac6604b75d50 614 * @return VL53L0X_ERROR_GPIO_FUNCTIONALITY_NOT_SUPPORTED
kenjiArai 5:ac6604b75d50 615 * This error occurs
kenjiArai 5:ac6604b75d50 616 * when Funcionality programmed is not in the supported list:
kenjiArai 5:ac6604b75d50 617 * Supported value are:
kenjiArai 5:ac6604b75d50 618 * VL53L0X_GPIOFUNCTIONALITY_OFF,
kenjiArai 5:ac6604b75d50 619 * VL53L0X_GPIOFUNCTIONALITY_THRESHOLD_CROSSED_LOW,
kenjiArai 5:ac6604b75d50 620 * VL53L0X_GPIOFUNCTIONALITY_THRESHOLD_CROSSED_HIGH,
kenjiArai 5:ac6604b75d50 621 * VL53L0X_GPIOFUNCTIONALITY_THRESHOLD_CROSSED_OUT,
kenjiArai 5:ac6604b75d50 622 * VL53L0X_GPIOFUNCTIONALITY_NEW_MEASURE_READY
kenjiArai 5:ac6604b75d50 623 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 624 */
kenjiArai 5:ac6604b75d50 625 VL53L0X_Error VL53L0X_get_gpio_config(VL53L0X_DEV dev, uint8_t pin,
kenjiArai 5:ac6604b75d50 626 VL53L0X_DeviceModes *p_device_mode,
kenjiArai 5:ac6604b75d50 627 VL53L0X_GpioFunctionality *p_functionality,
kenjiArai 5:ac6604b75d50 628 VL53L0X_InterruptPolarity *p_polarity);
kenjiArai 5:ac6604b75d50 629
kenjiArai 5:ac6604b75d50 630 /**
kenjiArai 5:ac6604b75d50 631 * @brief Set the configuration of GPIO pin for a given device
kenjiArai 5:ac6604b75d50 632 *
kenjiArai 5:ac6604b75d50 633 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 634 *
kenjiArai 5:ac6604b75d50 635 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 636 * @param pin ID of the GPIO Pin
kenjiArai 5:ac6604b75d50 637 * @param functionality Select Pin functionality.
kenjiArai 5:ac6604b75d50 638 * Refer to ::VL53L0X_GpioFunctionality
kenjiArai 5:ac6604b75d50 639 * @param device_mode Device Mode associated to the Gpio.
kenjiArai 5:ac6604b75d50 640 * @param polarity Set interrupt polarity. Active high
kenjiArai 5:ac6604b75d50 641 * or active low see ::VL53L0X_InterruptPolarity
kenjiArai 5:ac6604b75d50 642 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 643 * @return VL53L0X_ERROR_GPIO_NOT_EXISTING Only Pin=0 is accepted.
kenjiArai 5:ac6604b75d50 644 * @return VL53L0X_ERROR_GPIO_FUNCTIONALITY_NOT_SUPPORTED This error occurs
kenjiArai 5:ac6604b75d50 645 * when Functionality programmed is not in the supported list:
kenjiArai 5:ac6604b75d50 646 * Supported value are:
kenjiArai 5:ac6604b75d50 647 * VL53L0X_GPIOFUNCTIONALITY_OFF,
kenjiArai 5:ac6604b75d50 648 * VL53L0X_GPIOFUNCTIONALITY_THRESHOLD_CROSSED_LOW,
kenjiArai 5:ac6604b75d50 649 * VL53L0X_GPIOFUNCTIONALITY_THRESHOLD_CROSSED_HIGH,
kenjiArai 5:ac6604b75d50 650 VL53L0X_GPIOFUNCTIONALITY_THRESHOLD_CROSSED_OUT,
kenjiArai 5:ac6604b75d50 651 * VL53L0X_GPIOFUNCTIONALITY_NEW_MEASURE_READY
kenjiArai 5:ac6604b75d50 652 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 653 */
kenjiArai 5:ac6604b75d50 654 VL53L0X_Error VL53L0X_set_gpio_config(VL53L0X_DEV dev, uint8_t pin,
kenjiArai 5:ac6604b75d50 655 VL53L0X_DeviceModes device_mode, VL53L0X_GpioFunctionality functionality,
kenjiArai 5:ac6604b75d50 656 VL53L0X_InterruptPolarity polarity);
kenjiArai 5:ac6604b75d50 657
kenjiArai 5:ac6604b75d50 658 /**
kenjiArai 5:ac6604b75d50 659 * @brief Start device measurement
kenjiArai 5:ac6604b75d50 660 *
kenjiArai 5:ac6604b75d50 661 * @details Started measurement will depend on device parameters set through
kenjiArai 5:ac6604b75d50 662 * @a VL53L0X_SetParameters()
kenjiArai 5:ac6604b75d50 663 * This is a non-blocking function.
kenjiArai 5:ac6604b75d50 664 * This function will change the VL53L0X_State from VL53L0X_STATE_IDLE to
kenjiArai 5:ac6604b75d50 665 * VL53L0X_STATE_RUNNING.
kenjiArai 5:ac6604b75d50 666 *
kenjiArai 5:ac6604b75d50 667 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 668 *
kenjiArai 5:ac6604b75d50 669
kenjiArai 5:ac6604b75d50 670 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 671 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 672 * @return VL53L0X_ERROR_MODE_NOT_SUPPORTED This error occurs when
kenjiArai 5:ac6604b75d50 673 * DeviceMode programmed with @a VL53L0X_SetDeviceMode is not in the supported
kenjiArai 5:ac6604b75d50 674 * list:
kenjiArai 5:ac6604b75d50 675 * Supported mode are:
kenjiArai 5:ac6604b75d50 676 * VL53L0X_DEVICEMODE_SINGLE_RANGING,
kenjiArai 5:ac6604b75d50 677 * VL53L0X_DEVICEMODE_CONTINUOUS_RANGING,
kenjiArai 5:ac6604b75d50 678 * VL53L0X_DEVICEMODE_CONTINUOUS_TIMED_RANGING
kenjiArai 5:ac6604b75d50 679 * @return VL53L0X_ERROR_TIME_OUT Time out on start measurement
kenjiArai 5:ac6604b75d50 680 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 681 */
kenjiArai 5:ac6604b75d50 682 VL53L0X_Error VL53L0X_start_measurement(VL53L0X_DEV dev);
kenjiArai 5:ac6604b75d50 683
kenjiArai 5:ac6604b75d50 684 /**
kenjiArai 5:ac6604b75d50 685 * @brief Stop device measurement
kenjiArai 5:ac6604b75d50 686 *
kenjiArai 5:ac6604b75d50 687 * @details Will set the device in standby mode at end of current measurement\n
kenjiArai 5:ac6604b75d50 688 * Not necessary in single mode as device shall return automatically
kenjiArai 5:ac6604b75d50 689 * in standby mode at end of measurement.
kenjiArai 5:ac6604b75d50 690 * This function will change the VL53L0X_State from VL53L0X_STATE_RUNNING
kenjiArai 5:ac6604b75d50 691 * to VL53L0X_STATE_IDLE.
kenjiArai 5:ac6604b75d50 692 *
kenjiArai 5:ac6604b75d50 693 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 694 *
kenjiArai 5:ac6604b75d50 695 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 696 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 697 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 698 */
kenjiArai 5:ac6604b75d50 699 VL53L0X_Error VL53L0X_stop_measurement(VL53L0X_DEV dev);
kenjiArai 5:ac6604b75d50 700
kenjiArai 5:ac6604b75d50 701 /**
kenjiArai 5:ac6604b75d50 702 * @brief Return device stop completion status
kenjiArai 5:ac6604b75d50 703 *
kenjiArai 5:ac6604b75d50 704 * @par Function Description
kenjiArai 5:ac6604b75d50 705 * Returns stop completiob status.
kenjiArai 5:ac6604b75d50 706 * User shall call this function after a stop command
kenjiArai 5:ac6604b75d50 707 *
kenjiArai 5:ac6604b75d50 708 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 709 *
kenjiArai 5:ac6604b75d50 710 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 711 * @param p_stop_status Pointer to status variable to update
kenjiArai 5:ac6604b75d50 712 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 713 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 714 */
kenjiArai 5:ac6604b75d50 715 VL53L0X_Error VL53L0X_get_stop_completed_status(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 716 uint32_t *p_stop_status);
kenjiArai 5:ac6604b75d50 717
kenjiArai 5:ac6604b75d50 718 /**
kenjiArai 5:ac6604b75d50 719 * @brief Return Measurement Data Ready
kenjiArai 5:ac6604b75d50 720 *
kenjiArai 5:ac6604b75d50 721 * @par Function Description
kenjiArai 5:ac6604b75d50 722 * This function indicate that a measurement data is ready.
kenjiArai 5:ac6604b75d50 723 * This function check if interrupt mode is used then check is done accordingly.
kenjiArai 5:ac6604b75d50 724 * If perform function clear the interrupt, this function will not work,
kenjiArai 5:ac6604b75d50 725 * like in case of @a VL53L0X_PerformSingleRangingMeasurement().
kenjiArai 5:ac6604b75d50 726 * The previous function is blocking function, VL53L0X_GetMeasurementDataReady
kenjiArai 5:ac6604b75d50 727 * is used for non-blocking capture.
kenjiArai 5:ac6604b75d50 728 *
kenjiArai 5:ac6604b75d50 729 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 730 *
kenjiArai 5:ac6604b75d50 731 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 732 * @param p_measurement_data_ready Pointer to Measurement Data Ready.
kenjiArai 5:ac6604b75d50 733 * 0=data not ready, 1 = data ready
kenjiArai 5:ac6604b75d50 734 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 735 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 736 */
kenjiArai 5:ac6604b75d50 737 VL53L0X_Error VL53L0X_get_measurement_data_ready(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 738 uint8_t *p_measurement_data_ready);
kenjiArai 5:ac6604b75d50 739
kenjiArai 5:ac6604b75d50 740 /**
kenjiArai 5:ac6604b75d50 741 * @brief Retrieve the measurements from device for a given setup
kenjiArai 5:ac6604b75d50 742 *
kenjiArai 5:ac6604b75d50 743 * @par Function Description
kenjiArai 5:ac6604b75d50 744 * Get data from last successful Ranging measurement
kenjiArai 5:ac6604b75d50 745 * @warning USER should take care about @a VL53L0X_GetNumberOfROIZones()
kenjiArai 5:ac6604b75d50 746 * before get data.
kenjiArai 5:ac6604b75d50 747 * PAL will fill a NumberOfROIZones times the corresponding data
kenjiArai 5:ac6604b75d50 748 * structure used in the measurement function.
kenjiArai 5:ac6604b75d50 749 *
kenjiArai 5:ac6604b75d50 750 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 751 *
kenjiArai 5:ac6604b75d50 752 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 753 * @param p_ranging_measurement_data Pointer to the data structure to fill up.
kenjiArai 5:ac6604b75d50 754 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 755 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 756 */
kenjiArai 5:ac6604b75d50 757 VL53L0X_Error VL53L0X_get_ranging_measurement_data(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 758 VL53L0X_RangingMeasurementData_t *p_ranging_measurement_data);
kenjiArai 5:ac6604b75d50 759
kenjiArai 5:ac6604b75d50 760 /**
kenjiArai 5:ac6604b75d50 761 * @brief Clear given system interrupt condition
kenjiArai 5:ac6604b75d50 762 *
kenjiArai 5:ac6604b75d50 763 * @par Function Description
kenjiArai 5:ac6604b75d50 764 * Clear given interrupt(s).
kenjiArai 5:ac6604b75d50 765 *
kenjiArai 5:ac6604b75d50 766 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 767 *
kenjiArai 5:ac6604b75d50 768 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 769 * @param interrupt_mask Mask of interrupts to clear
kenjiArai 5:ac6604b75d50 770 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 771 * @return VL53L0X_ERROR_INTERRUPT_NOT_CLEARED Cannot clear interrupts
kenjiArai 5:ac6604b75d50 772 *
kenjiArai 5:ac6604b75d50 773 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 774 */
kenjiArai 5:ac6604b75d50 775 VL53L0X_Error VL53L0X_clear_interrupt_mask(VL53L0X_DEV dev, uint32_t interrupt_mask);
kenjiArai 5:ac6604b75d50 776
kenjiArai 5:ac6604b75d50 777 /**
kenjiArai 5:ac6604b75d50 778 * @brief Return device interrupt status
kenjiArai 5:ac6604b75d50 779 *
kenjiArai 5:ac6604b75d50 780 * @par Function Description
kenjiArai 5:ac6604b75d50 781 * Returns currently raised interrupts by the device.
kenjiArai 5:ac6604b75d50 782 * User shall be able to activate/deactivate interrupts through
kenjiArai 5:ac6604b75d50 783 * @a VL53L0X_SetGpioConfig()
kenjiArai 5:ac6604b75d50 784 *
kenjiArai 5:ac6604b75d50 785 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 786 *
kenjiArai 5:ac6604b75d50 787 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 788 * @param p_interrupt_mask_status Pointer to status variable to update
kenjiArai 5:ac6604b75d50 789 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 790 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 791 */
kenjiArai 5:ac6604b75d50 792 VL53L0X_Error VL53L0X_get_interrupt_mask_status(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 793 uint32_t *p_interrupt_mask_status);
kenjiArai 5:ac6604b75d50 794
kenjiArai 5:ac6604b75d50 795 /**
kenjiArai 5:ac6604b75d50 796 * @brief Performs a single ranging measurement and retrieve the ranging
kenjiArai 5:ac6604b75d50 797 * measurement data
kenjiArai 5:ac6604b75d50 798 *
kenjiArai 5:ac6604b75d50 799 * @par Function Description
kenjiArai 5:ac6604b75d50 800 * This function will change the device mode to VL53L0X_DEVICEMODE_SINGLE_RANGING
kenjiArai 5:ac6604b75d50 801 * with @a VL53L0X_SetDeviceMode(),
kenjiArai 5:ac6604b75d50 802 * It performs measurement with @a VL53L0X_PerformSingleMeasurement()
kenjiArai 5:ac6604b75d50 803 * It get data from last successful Ranging measurement with
kenjiArai 5:ac6604b75d50 804 * @a VL53L0X_GetRangingMeasurementData.
kenjiArai 5:ac6604b75d50 805 * Finally it clear the interrupt with @a VL53L0X_ClearInterruptMask().
kenjiArai 5:ac6604b75d50 806 *
kenjiArai 5:ac6604b75d50 807 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 808 *
kenjiArai 5:ac6604b75d50 809 * @note This function change the device mode to
kenjiArai 5:ac6604b75d50 810 * VL53L0X_DEVICEMODE_SINGLE_RANGING
kenjiArai 5:ac6604b75d50 811 *
kenjiArai 5:ac6604b75d50 812 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 813 * @param p_ranging_measurement_data Pointer to the data structure to fill up.
kenjiArai 5:ac6604b75d50 814 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 815 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 816 */
kenjiArai 5:ac6604b75d50 817 VL53L0X_Error VL53L0X_perform_single_ranging_measurement(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 818 VL53L0X_RangingMeasurementData_t *p_ranging_measurement_data);
kenjiArai 5:ac6604b75d50 819
kenjiArai 5:ac6604b75d50 820 /**
kenjiArai 5:ac6604b75d50 821 * @brief Single shot measurement.
kenjiArai 5:ac6604b75d50 822 *
kenjiArai 5:ac6604b75d50 823 * @par Function Description
kenjiArai 5:ac6604b75d50 824 * Perform simple measurement sequence (Start measure, Wait measure to end,
kenjiArai 5:ac6604b75d50 825 * and returns when measurement is done).
kenjiArai 5:ac6604b75d50 826 * Once function returns, user can get valid data by calling
kenjiArai 5:ac6604b75d50 827 * VL53L0X_GetRangingMeasurement or VL53L0X_GetHistogramMeasurement
kenjiArai 5:ac6604b75d50 828 * depending on defined measurement mode
kenjiArai 5:ac6604b75d50 829 * User should Clear the interrupt in case this are enabled by using the
kenjiArai 5:ac6604b75d50 830 * function VL53L0X_ClearInterruptMask().
kenjiArai 5:ac6604b75d50 831 *
kenjiArai 5:ac6604b75d50 832 * @warning This function is a blocking function
kenjiArai 5:ac6604b75d50 833 *
kenjiArai 5:ac6604b75d50 834 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 835 *
kenjiArai 5:ac6604b75d50 836 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 837 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 838 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 839 */
kenjiArai 5:ac6604b75d50 840 VL53L0X_Error VL53L0X_perform_single_measurement(VL53L0X_DEV dev);
kenjiArai 5:ac6604b75d50 841
kenjiArai 5:ac6604b75d50 842 /**
kenjiArai 5:ac6604b75d50 843 * @brief Read current status of the error register for the selected device
kenjiArai 5:ac6604b75d50 844 *
kenjiArai 5:ac6604b75d50 845 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 846 *
kenjiArai 5:ac6604b75d50 847 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 848 * @param p_device_error_status Pointer to current error code of the device
kenjiArai 5:ac6604b75d50 849 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 850 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 851 */
kenjiArai 5:ac6604b75d50 852 VL53L0X_Error VL53L0X_get_device_error_status(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 853 VL53L0X_DeviceError *p_device_error_status);
kenjiArai 5:ac6604b75d50 854
kenjiArai 5:ac6604b75d50 855 /**
kenjiArai 5:ac6604b75d50 856 * @brief Human readable error string for a given Error Code
kenjiArai 5:ac6604b75d50 857 *
kenjiArai 5:ac6604b75d50 858 * @note This function doesn't access to the device
kenjiArai 5:ac6604b75d50 859 *
kenjiArai 5:ac6604b75d50 860 * @param error_code The error code as stored on ::VL53L0X_DeviceError
kenjiArai 5:ac6604b75d50 861 * @param p_device_error_string The error string corresponding to the ErrorCode
kenjiArai 5:ac6604b75d50 862 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 863 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 864 */
kenjiArai 5:ac6604b75d50 865 VL53L0X_Error VL53L0X_get_device_error_string(
kenjiArai 5:ac6604b75d50 866 VL53L0X_DeviceError error_code, char *p_device_error_string);
kenjiArai 5:ac6604b75d50 867
kenjiArai 5:ac6604b75d50 868 /**
kenjiArai 5:ac6604b75d50 869 * @brief Human readable Range Status string for a given RangeStatus
kenjiArai 5:ac6604b75d50 870 *
kenjiArai 5:ac6604b75d50 871 * @note This function doesn't access to the device
kenjiArai 5:ac6604b75d50 872 *
kenjiArai 5:ac6604b75d50 873 * @param range_status The RangeStatus code as stored on
kenjiArai 5:ac6604b75d50 874 * @a VL53L0X_RangingMeasurementData_t
kenjiArai 5:ac6604b75d50 875 * @param p_range_status_string The returned RangeStatus string.
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_get_range_status_string(uint8_t range_status,
kenjiArai 5:ac6604b75d50 880 char *p_range_status_string);
kenjiArai 5:ac6604b75d50 881
kenjiArai 5:ac6604b75d50 882 VL53L0X_Error VL53L0X_get_total_signal_rate(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 883 VL53L0X_RangingMeasurementData_t *p_ranging_measurement_data,
kenjiArai 5:ac6604b75d50 884 FixPoint1616_t *p_total_signal_rate_mcps);
kenjiArai 5:ac6604b75d50 885
kenjiArai 5:ac6604b75d50 886 VL53L0X_Error VL53L0X_get_total_xtalk_rate(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 887 VL53L0X_RangingMeasurementData_t *p_ranging_measurement_data,
kenjiArai 5:ac6604b75d50 888 FixPoint1616_t *p_total_xtalk_rate_mcps);
kenjiArai 5:ac6604b75d50 889
kenjiArai 5:ac6604b75d50 890 /**
kenjiArai 5:ac6604b75d50 891 * @brief Get Ranging Timing Budget in microseconds
kenjiArai 5:ac6604b75d50 892 *
kenjiArai 5:ac6604b75d50 893 * @par Function Description
kenjiArai 5:ac6604b75d50 894 * Returns the programmed the maximum time allowed by the user to the
kenjiArai 5:ac6604b75d50 895 * device to run a full ranging sequence for the current mode
kenjiArai 5:ac6604b75d50 896 * (ranging, histogram, ASL ...)
kenjiArai 5:ac6604b75d50 897 *
kenjiArai 5:ac6604b75d50 898 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 899 *
kenjiArai 5:ac6604b75d50 900 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 901 * @param p_measurement_timing_budget_micro_seconds Max measurement time in
kenjiArai 5:ac6604b75d50 902 * microseconds.
kenjiArai 5:ac6604b75d50 903 * Valid values are:
kenjiArai 5:ac6604b75d50 904 * >= 17000 microsecs when wraparound enabled
kenjiArai 5:ac6604b75d50 905 * >= 12000 microsecs when wraparound disabled
kenjiArai 5:ac6604b75d50 906 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 907 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 908 */
kenjiArai 5:ac6604b75d50 909 VL53L0X_Error VL53L0X_get_measurement_timing_budget_micro_seconds(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 910 uint32_t *p_measurement_timing_budget_micro_seconds);
kenjiArai 5:ac6604b75d50 911
kenjiArai 5:ac6604b75d50 912 /**
kenjiArai 5:ac6604b75d50 913 * @brief Set Ranging Timing Budget in microseconds
kenjiArai 5:ac6604b75d50 914 *
kenjiArai 5:ac6604b75d50 915 * @par Function Description
kenjiArai 5:ac6604b75d50 916 * Defines the maximum time allowed by the user to the device to run a
kenjiArai 5:ac6604b75d50 917 * full ranging sequence for the current mode (ranging, histogram, ASL ...)
kenjiArai 5:ac6604b75d50 918 *
kenjiArai 5:ac6604b75d50 919 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 920 *
kenjiArai 5:ac6604b75d50 921 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 922 * @param measurement_timing_budget_micro_seconds Max measurement time in
kenjiArai 5:ac6604b75d50 923 * microseconds.
kenjiArai 5:ac6604b75d50 924 * Valid values are:
kenjiArai 5:ac6604b75d50 925 * >= 17000 microsecs when wraparound enabled
kenjiArai 5:ac6604b75d50 926 * >= 12000 microsecs when wraparound disabled
kenjiArai 5:ac6604b75d50 927 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 928 * @return VL53L0X_ERROR_INVALID_PARAMS This error is returned if
kenjiArai 5:ac6604b75d50 929 MeasurementTimingBudgetMicroSeconds out of range
kenjiArai 5:ac6604b75d50 930 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 931 */
kenjiArai 5:ac6604b75d50 932 VL53L0X_Error VL53L0X_set_measurement_timing_budget_micro_seconds(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 933 uint32_t measurement_timing_budget_micro_seconds);
kenjiArai 5:ac6604b75d50 934
kenjiArai 5:ac6604b75d50 935 /**
kenjiArai 5:ac6604b75d50 936 * @brief Get specific limit check enable state
kenjiArai 5:ac6604b75d50 937 *
kenjiArai 5:ac6604b75d50 938 * @par Function Description
kenjiArai 5:ac6604b75d50 939 * This function get the enable state of a specific limit check.
kenjiArai 5:ac6604b75d50 940 * The limit check is identified with the LimitCheckId.
kenjiArai 5:ac6604b75d50 941 *
kenjiArai 5:ac6604b75d50 942 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 943 *
kenjiArai 5:ac6604b75d50 944 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 945 * @param limit_check_id Limit Check ID
kenjiArai 5:ac6604b75d50 946 * (0<= LimitCheckId < VL53L0X_GetNumberOfLimitCheck() ).
kenjiArai 5:ac6604b75d50 947 * @param p_limit_check_enable Pointer to the check limit enable
kenjiArai 5:ac6604b75d50 948 * value.
kenjiArai 5:ac6604b75d50 949 * if 1 the check limit
kenjiArai 5:ac6604b75d50 950 * corresponding to LimitCheckId is Enabled
kenjiArai 5:ac6604b75d50 951 * if 0 the check limit
kenjiArai 5:ac6604b75d50 952 * corresponding to LimitCheckId is disabled
kenjiArai 5:ac6604b75d50 953 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 954 * @return VL53L0X_ERROR_INVALID_PARAMS This error is returned
kenjiArai 5:ac6604b75d50 955 * when LimitCheckId value is out of range.
kenjiArai 5:ac6604b75d50 956 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 957 */
kenjiArai 5:ac6604b75d50 958 VL53L0X_Error VL53L0X_get_limit_check_enable(VL53L0X_DEV dev, uint16_t limit_check_id,
kenjiArai 5:ac6604b75d50 959 uint8_t *p_limit_check_enable);
kenjiArai 5:ac6604b75d50 960
kenjiArai 5:ac6604b75d50 961 /**
kenjiArai 5:ac6604b75d50 962 * @brief Enable/Disable a specific limit check
kenjiArai 5:ac6604b75d50 963 *
kenjiArai 5:ac6604b75d50 964 * @par Function Description
kenjiArai 5:ac6604b75d50 965 * This function Enable/Disable a specific limit check.
kenjiArai 5:ac6604b75d50 966 * The limit check is identified with the LimitCheckId.
kenjiArai 5:ac6604b75d50 967 *
kenjiArai 5:ac6604b75d50 968 * @note This function doesn't Access to the device
kenjiArai 5:ac6604b75d50 969 *
kenjiArai 5:ac6604b75d50 970 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 971 * @param limit_check_id Limit Check ID
kenjiArai 5:ac6604b75d50 972 * (0<= LimitCheckId < VL53L0X_GetNumberOfLimitCheck() ).
kenjiArai 5:ac6604b75d50 973 * @param limit_check_enable if 1 the check limit
kenjiArai 5:ac6604b75d50 974 * corresponding to LimitCheckId is Enabled
kenjiArai 5:ac6604b75d50 975 * if 0 the check limit
kenjiArai 5:ac6604b75d50 976 * corresponding to LimitCheckId is disabled
kenjiArai 5:ac6604b75d50 977 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 978 * @return VL53L0X_ERROR_INVALID_PARAMS This error is returned
kenjiArai 5:ac6604b75d50 979 * when LimitCheckId value is out of range.
kenjiArai 5:ac6604b75d50 980 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 981 */
kenjiArai 5:ac6604b75d50 982 VL53L0X_Error VL53L0X_set_limit_check_enable(VL53L0X_DEV dev, uint16_t limit_check_id,
kenjiArai 5:ac6604b75d50 983 uint8_t limit_check_enable);
kenjiArai 5:ac6604b75d50 984
kenjiArai 5:ac6604b75d50 985 /**
kenjiArai 5:ac6604b75d50 986 * @brief Get a specific limit check value
kenjiArai 5:ac6604b75d50 987 *
kenjiArai 5:ac6604b75d50 988 * @par Function Description
kenjiArai 5:ac6604b75d50 989 * This function get a specific limit check value from device then it updates
kenjiArai 5:ac6604b75d50 990 * internal values and check enables.
kenjiArai 5:ac6604b75d50 991 * The limit check is identified with the LimitCheckId.
kenjiArai 5:ac6604b75d50 992 *
kenjiArai 5:ac6604b75d50 993 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 994 *
kenjiArai 5:ac6604b75d50 995 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 996 * @param limit_check_id Limit Check ID
kenjiArai 5:ac6604b75d50 997 * (0<= LimitCheckId < VL53L0X_GetNumberOfLimitCheck() ).
kenjiArai 5:ac6604b75d50 998 * @param p_limit_check_value Pointer to Limit
kenjiArai 5:ac6604b75d50 999 * check Value for a given LimitCheckId.
kenjiArai 5:ac6604b75d50 1000 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 1001 * @return VL53L0X_ERROR_INVALID_PARAMS This error is returned
kenjiArai 5:ac6604b75d50 1002 * when LimitCheckId value is out of range.
kenjiArai 5:ac6604b75d50 1003 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 1004 */
kenjiArai 5:ac6604b75d50 1005 VL53L0X_Error VL53L0X_get_limit_check_value(VL53L0X_DEV dev, uint16_t limit_check_id,
kenjiArai 5:ac6604b75d50 1006 FixPoint1616_t *p_limit_check_value);
kenjiArai 5:ac6604b75d50 1007
kenjiArai 5:ac6604b75d50 1008 /**
kenjiArai 5:ac6604b75d50 1009 * @brief Set a specific limit check value
kenjiArai 5:ac6604b75d50 1010 *
kenjiArai 5:ac6604b75d50 1011 * @par Function Description
kenjiArai 5:ac6604b75d50 1012 * This function set a specific limit check value.
kenjiArai 5:ac6604b75d50 1013 * The limit check is identified with the LimitCheckId.
kenjiArai 5:ac6604b75d50 1014 *
kenjiArai 5:ac6604b75d50 1015 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 1016 *
kenjiArai 5:ac6604b75d50 1017 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 1018 * @param limit_check_id Limit Check ID
kenjiArai 5:ac6604b75d50 1019 * (0<= LimitCheckId < VL53L0X_GetNumberOfLimitCheck() ).
kenjiArai 5:ac6604b75d50 1020 * @param limit_check_value Limit check Value for a given
kenjiArai 5:ac6604b75d50 1021 * LimitCheckId
kenjiArai 5:ac6604b75d50 1022 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 1023 * @return VL53L0X_ERROR_INVALID_PARAMS This error is returned when either
kenjiArai 5:ac6604b75d50 1024 * LimitCheckId or LimitCheckValue value is out of range.
kenjiArai 5:ac6604b75d50 1025 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 1026 */
kenjiArai 5:ac6604b75d50 1027 VL53L0X_Error VL53L0X_set_limit_check_value(VL53L0X_DEV dev, uint16_t limit_check_id,
kenjiArai 5:ac6604b75d50 1028 FixPoint1616_t limit_check_value);
kenjiArai 5:ac6604b75d50 1029
kenjiArai 5:ac6604b75d50 1030 /**
kenjiArai 5:ac6604b75d50 1031 * @brief Get the current value of the signal used for the limit check
kenjiArai 5:ac6604b75d50 1032 *
kenjiArai 5:ac6604b75d50 1033 * @par Function Description
kenjiArai 5:ac6604b75d50 1034 * This function get a the current value of the signal used for the limit check.
kenjiArai 5:ac6604b75d50 1035 * To obtain the latest value you should run a ranging before.
kenjiArai 5:ac6604b75d50 1036 * The value reported is linked to the limit check identified with the
kenjiArai 5:ac6604b75d50 1037 * LimitCheckId.
kenjiArai 5:ac6604b75d50 1038 *
kenjiArai 5:ac6604b75d50 1039 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 1040 *
kenjiArai 5:ac6604b75d50 1041 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 1042 * @param limit_check_id Limit Check ID
kenjiArai 5:ac6604b75d50 1043 * (0<= LimitCheckId < VL53L0X_GetNumberOfLimitCheck() ).
kenjiArai 5:ac6604b75d50 1044 * @param p_limit_check_current Pointer to current Value for a
kenjiArai 5:ac6604b75d50 1045 * given LimitCheckId.
kenjiArai 5:ac6604b75d50 1046 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 1047 * @return VL53L0X_ERROR_INVALID_PARAMS This error is returned when
kenjiArai 5:ac6604b75d50 1048 * LimitCheckId value is out of range.
kenjiArai 5:ac6604b75d50 1049 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 1050 */
kenjiArai 5:ac6604b75d50 1051 VL53L0X_Error VL53L0X_get_limit_check_current(VL53L0X_DEV dev, uint16_t limit_check_id,
kenjiArai 5:ac6604b75d50 1052 FixPoint1616_t *p_limit_check_current);
kenjiArai 5:ac6604b75d50 1053
kenjiArai 5:ac6604b75d50 1054 /**
kenjiArai 5:ac6604b75d50 1055 * @brief Return a the Status of the specified check limit
kenjiArai 5:ac6604b75d50 1056 *
kenjiArai 5:ac6604b75d50 1057 * @par Function Description
kenjiArai 5:ac6604b75d50 1058 * This function returns the Status of the specified check limit.
kenjiArai 5:ac6604b75d50 1059 * The value indicate if the check is fail or not.
kenjiArai 5:ac6604b75d50 1060 * The limit check is identified with the LimitCheckId.
kenjiArai 5:ac6604b75d50 1061 *
kenjiArai 5:ac6604b75d50 1062 * @note This function doesn't Access to the device
kenjiArai 5:ac6604b75d50 1063 *
kenjiArai 5:ac6604b75d50 1064 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 1065 * @param limit_check_id Limit Check ID
kenjiArai 5:ac6604b75d50 1066 (0<= LimitCheckId < VL53L0X_GetNumberOfLimitCheck() ).
kenjiArai 5:ac6604b75d50 1067 * @param p_limit_check_status Pointer to the
kenjiArai 5:ac6604b75d50 1068 Limit Check Status of the given check limit.
kenjiArai 5:ac6604b75d50 1069 * LimitCheckStatus :
kenjiArai 5:ac6604b75d50 1070 * 0 the check is not fail
kenjiArai 5:ac6604b75d50 1071 * 1 the check if fail or not enabled
kenjiArai 5:ac6604b75d50 1072 *
kenjiArai 5:ac6604b75d50 1073 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 1074 * @return VL53L0X_ERROR_INVALID_PARAMS This error is
kenjiArai 5:ac6604b75d50 1075 returned when LimitCheckId value is out of range.
kenjiArai 5:ac6604b75d50 1076 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 1077 */
kenjiArai 5:ac6604b75d50 1078 VL53L0X_Error VL53L0X_get_limit_check_status(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 1079 uint16_t limit_check_id, uint8_t *p_limit_check_status);
kenjiArai 5:ac6604b75d50 1080
kenjiArai 5:ac6604b75d50 1081 /**
kenjiArai 5:ac6604b75d50 1082 * Get continuous mode Inter-Measurement period in milliseconds
kenjiArai 5:ac6604b75d50 1083 *
kenjiArai 5:ac6604b75d50 1084 * @par Function Description
kenjiArai 5:ac6604b75d50 1085 * When trying to set too short time return INVALID_PARAMS minimal value
kenjiArai 5:ac6604b75d50 1086 *
kenjiArai 5:ac6604b75d50 1087 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 1088 *
kenjiArai 5:ac6604b75d50 1089 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 1090 * @param p_inter_measurement_period_milli_seconds Pointer to programmed
kenjiArai 5:ac6604b75d50 1091 * Inter-Measurement Period in milliseconds.
kenjiArai 5:ac6604b75d50 1092 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 1093 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 1094 */
kenjiArai 5:ac6604b75d50 1095 VL53L0X_Error VL53L0X_get_inter_measurement_period_milli_seconds(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 1096 uint32_t *p_inter_measurement_period_milli_seconds);
kenjiArai 5:ac6604b75d50 1097
kenjiArai 5:ac6604b75d50 1098 /**
kenjiArai 5:ac6604b75d50 1099 * Program continuous mode Inter-Measurement period in milliseconds
kenjiArai 5:ac6604b75d50 1100 *
kenjiArai 5:ac6604b75d50 1101 * @par Function Description
kenjiArai 5:ac6604b75d50 1102 * When trying to set too short time return INVALID_PARAMS minimal value
kenjiArai 5:ac6604b75d50 1103 *
kenjiArai 5:ac6604b75d50 1104 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 1105 *
kenjiArai 5:ac6604b75d50 1106 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 1107 * @param inter_measurement_period_milli_seconds Inter-Measurement Period in ms.
kenjiArai 5:ac6604b75d50 1108 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 1109 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 1110 */
kenjiArai 5:ac6604b75d50 1111 VL53L0X_Error VL53L0X_set_inter_measurement_period_milli_seconds(
kenjiArai 5:ac6604b75d50 1112 VL53L0X_DEV dev, uint32_t inter_measurement_period_milli_seconds);
kenjiArai 5:ac6604b75d50 1113
kenjiArai 5:ac6604b75d50 1114 /**
kenjiArai 5:ac6604b75d50 1115 * @brief Set new device address
kenjiArai 5:ac6604b75d50 1116 *
kenjiArai 5:ac6604b75d50 1117 * After completion the device will answer to the new address programmed.
kenjiArai 5:ac6604b75d50 1118 * This function should be called when several devices are used in parallel
kenjiArai 5:ac6604b75d50 1119 * before start programming the sensor.
kenjiArai 5:ac6604b75d50 1120 * When a single device us used, there is no need to call this function.
kenjiArai 5:ac6604b75d50 1121 *
kenjiArai 5:ac6604b75d50 1122 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 1123 *
kenjiArai 5:ac6604b75d50 1124 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 1125 * @param device_address The new Device address
kenjiArai 5:ac6604b75d50 1126 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 1127 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 1128 */
kenjiArai 5:ac6604b75d50 1129 VL53L0X_Error VL53L0X_set_device_address(VL53L0X_DEV dev, uint8_t device_address);
kenjiArai 5:ac6604b75d50 1130
kenjiArai 5:ac6604b75d50 1131 /**
kenjiArai 5:ac6604b75d50 1132 * @brief Do an hard reset or soft reset (depending on implementation) of the
kenjiArai 5:ac6604b75d50 1133 * device \nAfter call of this function, device must be in same state as right
kenjiArai 5:ac6604b75d50 1134 * after a power-up sequence.This function will change the VL53L0X_State to
kenjiArai 5:ac6604b75d50 1135 * VL53L0X_STATE_POWERDOWN.
kenjiArai 5:ac6604b75d50 1136 *
kenjiArai 5:ac6604b75d50 1137 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 1138 *
kenjiArai 5:ac6604b75d50 1139 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 1140 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 1141 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 1142 */
kenjiArai 5:ac6604b75d50 1143 VL53L0X_Error VL53L0X_reset_device(VL53L0X_DEV dev);
kenjiArai 5:ac6604b75d50 1144
kenjiArai 5:ac6604b75d50 1145 /**
kenjiArai 5:ac6604b75d50 1146 * @brief Get setup of Wrap around Check
kenjiArai 5:ac6604b75d50 1147 *
kenjiArai 5:ac6604b75d50 1148 * @par Function Description
kenjiArai 5:ac6604b75d50 1149 * This function get the wrapAround check enable parameters
kenjiArai 5:ac6604b75d50 1150 *
kenjiArai 5:ac6604b75d50 1151 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 1152 *
kenjiArai 5:ac6604b75d50 1153 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 1154 * @param p_wrap_around_check_enable Pointer to the Wrap around Check state
kenjiArai 5:ac6604b75d50 1155 * 0=disabled or 1 = enabled
kenjiArai 5:ac6604b75d50 1156 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 1157 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 1158 */
kenjiArai 5:ac6604b75d50 1159 VL53L0X_Error VL53L0X_get_wrap_around_check_enable(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 1160 uint8_t *p_wrap_around_check_enable);
kenjiArai 5:ac6604b75d50 1161
kenjiArai 5:ac6604b75d50 1162 /**
kenjiArai 5:ac6604b75d50 1163 * @brief Enable (or disable) Wrap around Check
kenjiArai 5:ac6604b75d50 1164 *
kenjiArai 5:ac6604b75d50 1165 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 1166 *
kenjiArai 5:ac6604b75d50 1167 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 1168 * @param wrap_around_check_enable Wrap around Check to be set
kenjiArai 5:ac6604b75d50 1169 * 0=disabled, other = enabled
kenjiArai 5:ac6604b75d50 1170 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 1171 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 1172 */
kenjiArai 5:ac6604b75d50 1173 VL53L0X_Error VL53L0X_set_wrap_around_check_enable(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 1174 uint8_t wrap_around_check_enable);
kenjiArai 5:ac6604b75d50 1175
kenjiArai 5:ac6604b75d50 1176 /**
kenjiArai 5:ac6604b75d50 1177 * @brief Gets the VCSEL pulse period.
kenjiArai 5:ac6604b75d50 1178 *
kenjiArai 5:ac6604b75d50 1179 * @par Function Description
kenjiArai 5:ac6604b75d50 1180 * This function retrieves the VCSEL pulse period for the given period type.
kenjiArai 5:ac6604b75d50 1181 *
kenjiArai 5:ac6604b75d50 1182 * @note This function Accesses the device
kenjiArai 5:ac6604b75d50 1183 *
kenjiArai 5:ac6604b75d50 1184 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 1185 * @param vcsel_period_type VCSEL period identifier (pre-range|final).
kenjiArai 5:ac6604b75d50 1186 * @param p_vcsel_pulse_period_pclk Pointer to VCSEL period value.
kenjiArai 5:ac6604b75d50 1187 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 1188 * @return VL53L0X_ERROR_INVALID_PARAMS Error VcselPeriodType parameter not
kenjiArai 5:ac6604b75d50 1189 * supported.
kenjiArai 5:ac6604b75d50 1190 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 1191 */
kenjiArai 5:ac6604b75d50 1192 VL53L0X_Error VL53L0X_get_vcsel_pulse_period(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 1193 VL53L0X_VcselPeriod vcsel_period_type, uint8_t *p_vcsel_pulse_period_pclk);
kenjiArai 5:ac6604b75d50 1194
kenjiArai 5:ac6604b75d50 1195 /**
kenjiArai 5:ac6604b75d50 1196 * @brief Sets the VCSEL pulse period.
kenjiArai 5:ac6604b75d50 1197 *
kenjiArai 5:ac6604b75d50 1198 * @par Function Description
kenjiArai 5:ac6604b75d50 1199 * This function retrieves the VCSEL pulse period for the given period type.
kenjiArai 5:ac6604b75d50 1200 *
kenjiArai 5:ac6604b75d50 1201 * @note This function Accesses the device
kenjiArai 5:ac6604b75d50 1202 *
kenjiArai 5:ac6604b75d50 1203 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 1204 * @param vcsel_period_type VCSEL period identifier (pre-range|final).
kenjiArai 5:ac6604b75d50 1205 * @param vcsel_pulse_period VCSEL period value
kenjiArai 5:ac6604b75d50 1206 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 1207 * @return VL53L0X_ERROR_INVALID_PARAMS Error VcselPeriodType parameter not
kenjiArai 5:ac6604b75d50 1208 * supported.
kenjiArai 5:ac6604b75d50 1209 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 1210 */
kenjiArai 5:ac6604b75d50 1211 VL53L0X_Error VL53L0X_set_vcsel_pulse_period(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 1212 VL53L0X_VcselPeriod vcsel_period_type, uint8_t vcsel_pulse_period);
kenjiArai 5:ac6604b75d50 1213
kenjiArai 5:ac6604b75d50 1214 /**
kenjiArai 5:ac6604b75d50 1215 * @brief Set low and high Interrupt thresholds for a given mode
kenjiArai 5:ac6604b75d50 1216 * (ranging, ALS, ...) for a given device
kenjiArai 5:ac6604b75d50 1217 *
kenjiArai 5:ac6604b75d50 1218 * @par Function Description
kenjiArai 5:ac6604b75d50 1219 * Set low and high Interrupt thresholds for a given mode (ranging, ALS, ...)
kenjiArai 5:ac6604b75d50 1220 * for a given device
kenjiArai 5:ac6604b75d50 1221 *
kenjiArai 5:ac6604b75d50 1222 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 1223 *
kenjiArai 5:ac6604b75d50 1224 * @note DeviceMode is ignored for the current device
kenjiArai 5:ac6604b75d50 1225 *
kenjiArai 5:ac6604b75d50 1226 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 1227 * @param device_mode Device Mode for which change thresholds
kenjiArai 5:ac6604b75d50 1228 * @param threshold_low Low threshold (mm, lux ..., depending on the mode)
kenjiArai 5:ac6604b75d50 1229 * @param threshold_high High threshold (mm, lux ..., depending on the mode)
kenjiArai 5:ac6604b75d50 1230 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 1231 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 1232 */
kenjiArai 5:ac6604b75d50 1233 VL53L0X_Error VL53L0X_set_interrupt_thresholds(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 1234 VL53L0X_DeviceModes device_mode, FixPoint1616_t threshold_low,
kenjiArai 5:ac6604b75d50 1235 FixPoint1616_t threshold_high);
kenjiArai 5:ac6604b75d50 1236
kenjiArai 5:ac6604b75d50 1237 /**
kenjiArai 5:ac6604b75d50 1238 * @brief Get high and low Interrupt thresholds for a given mode
kenjiArai 5:ac6604b75d50 1239 * (ranging, ALS, ...) for a given device
kenjiArai 5:ac6604b75d50 1240 *
kenjiArai 5:ac6604b75d50 1241 * @par Function Description
kenjiArai 5:ac6604b75d50 1242 * Get high and low Interrupt thresholds for a given mode (ranging, ALS, ...)
kenjiArai 5:ac6604b75d50 1243 * for a given device
kenjiArai 5:ac6604b75d50 1244 *
kenjiArai 5:ac6604b75d50 1245 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 1246 *
kenjiArai 5:ac6604b75d50 1247 * @note DeviceMode is ignored for the current device
kenjiArai 5:ac6604b75d50 1248 *
kenjiArai 5:ac6604b75d50 1249 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 1250 * @param device_mode Device Mode from which read thresholds
kenjiArai 5:ac6604b75d50 1251 * @param p_threshold_low Low threshold (mm, lux ..., depending on the mode)
kenjiArai 5:ac6604b75d50 1252 * @param p_threshold_high High threshold (mm, lux ..., depending on the mode)
kenjiArai 5:ac6604b75d50 1253 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 1254 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 1255 */
kenjiArai 5:ac6604b75d50 1256 VL53L0X_Error VL53L0X_get_interrupt_thresholds(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 1257 VL53L0X_DeviceModes device_mode, FixPoint1616_t *p_threshold_low,
kenjiArai 5:ac6604b75d50 1258 FixPoint1616_t *p_threshold_high);
kenjiArai 5:ac6604b75d50 1259
kenjiArai 5:ac6604b75d50 1260 /**
kenjiArai 5:ac6604b75d50 1261 * @brief Reads the Device information for given Device
kenjiArai 5:ac6604b75d50 1262 *
kenjiArai 5:ac6604b75d50 1263 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 1264 *
kenjiArai 5:ac6604b75d50 1265 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 1266 * @param p_VL53L0X_device_info Pointer to current device info for a given
kenjiArai 5:ac6604b75d50 1267 * Device
kenjiArai 5:ac6604b75d50 1268 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 1269 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 1270 */
kenjiArai 5:ac6604b75d50 1271 VL53L0X_Error VL53L0X_get_device_info(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 1272 VL53L0X_DeviceInfo_t *p_VL53L0X_device_info);
kenjiArai 5:ac6604b75d50 1273
kenjiArai 5:ac6604b75d50 1274 /**
kenjiArai 5:ac6604b75d50 1275 * @brief Gets the (on/off) state of all sequence steps.
kenjiArai 5:ac6604b75d50 1276 *
kenjiArai 5:ac6604b75d50 1277 * @par Function Description
kenjiArai 5:ac6604b75d50 1278 * This function retrieves the state of all sequence step in the scheduler.
kenjiArai 5:ac6604b75d50 1279 *
kenjiArai 5:ac6604b75d50 1280 * @note This function Accesses the device
kenjiArai 5:ac6604b75d50 1281 *
kenjiArai 5:ac6604b75d50 1282 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 1283 * @param p_scheduler_sequence_steps Pointer to struct containing result.
kenjiArai 5:ac6604b75d50 1284 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 1285 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 1286 */
kenjiArai 5:ac6604b75d50 1287 VL53L0X_Error VL53L0X_get_sequence_step_enables(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 1288 VL53L0X_SchedulerSequenceSteps_t *p_scheduler_sequence_steps);
kenjiArai 5:ac6604b75d50 1289
kenjiArai 5:ac6604b75d50 1290 /**
kenjiArai 5:ac6604b75d50 1291 * @brief Sets the (on/off) state of a requested sequence step.
kenjiArai 5:ac6604b75d50 1292 *
kenjiArai 5:ac6604b75d50 1293 * @par Function Description
kenjiArai 5:ac6604b75d50 1294 * This function enables/disables a requested sequence step.
kenjiArai 5:ac6604b75d50 1295 *
kenjiArai 5:ac6604b75d50 1296 * @note This function Accesses the device
kenjiArai 5:ac6604b75d50 1297 *
kenjiArai 5:ac6604b75d50 1298 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 1299 * @param sequence_step_id Sequence step identifier.
kenjiArai 5:ac6604b75d50 1300 * @param sequence_step_enabled Demanded state {0=Off,1=On}
kenjiArai 5:ac6604b75d50 1301 * is enabled.
kenjiArai 5:ac6604b75d50 1302 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 1303 * @return VL53L0X_ERROR_INVALID_PARAMS Error SequenceStepId parameter not
kenjiArai 5:ac6604b75d50 1304 * supported.
kenjiArai 5:ac6604b75d50 1305 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 1306 */
kenjiArai 5:ac6604b75d50 1307 VL53L0X_Error VL53L0X_set_sequence_step_enable(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 1308 VL53L0X_SequenceStepId sequence_step_id, uint8_t sequence_step_enabled);
kenjiArai 5:ac6604b75d50 1309
kenjiArai 5:ac6604b75d50 1310 /**
kenjiArai 5:ac6604b75d50 1311 * @brief Gets the fraction enable parameter indicating the resolution of
kenjiArai 5:ac6604b75d50 1312 * range measurements.
kenjiArai 5:ac6604b75d50 1313 *
kenjiArai 5:ac6604b75d50 1314 * @par Function Description
kenjiArai 5:ac6604b75d50 1315 * Gets the fraction enable state, which translates to the resolution of
kenjiArai 5:ac6604b75d50 1316 * range measurements as follows :Enabled:=0.25mm resolution,
kenjiArai 5:ac6604b75d50 1317 * Not Enabled:=1mm resolution.
kenjiArai 5:ac6604b75d50 1318 *
kenjiArai 5:ac6604b75d50 1319 * @note This function Accesses the device
kenjiArai 5:ac6604b75d50 1320 *
kenjiArai 5:ac6604b75d50 1321 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 1322 * @param p_enabled Output Parameter reporting the fraction enable state.
kenjiArai 5:ac6604b75d50 1323 *
kenjiArai 5:ac6604b75d50 1324 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 1325 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 1326 */
kenjiArai 5:ac6604b75d50 1327 VL53L0X_Error VL53L0X_get_fraction_enable(VL53L0X_DEV dev, uint8_t *p_enabled);
kenjiArai 5:ac6604b75d50 1328
kenjiArai 5:ac6604b75d50 1329 /**
kenjiArai 5:ac6604b75d50 1330 * @brief Sets the resolution of range measurements.
kenjiArai 5:ac6604b75d50 1331 * @par Function Description
kenjiArai 5:ac6604b75d50 1332 * Set resolution of range measurements to either 0.25mm if
kenjiArai 5:ac6604b75d50 1333 * fraction enabled or 1mm if not enabled.
kenjiArai 5:ac6604b75d50 1334 *
kenjiArai 5:ac6604b75d50 1335 * @note This function Accesses the device
kenjiArai 5:ac6604b75d50 1336 *
kenjiArai 5:ac6604b75d50 1337 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 1338 * @param enable Enable high resolution
kenjiArai 5:ac6604b75d50 1339 *
kenjiArai 5:ac6604b75d50 1340 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 1341 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 1342 */
kenjiArai 5:ac6604b75d50 1343 VL53L0X_Error VL53L0X_set_range_fraction_enable(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 1344 uint8_t enable);
kenjiArai 5:ac6604b75d50 1345
kenjiArai 5:ac6604b75d50 1346 /**
kenjiArai 5:ac6604b75d50 1347 * @brief Return the VL53L0X PAL Implementation Version
kenjiArai 5:ac6604b75d50 1348 *
kenjiArai 5:ac6604b75d50 1349 * @note This function doesn't access to the device
kenjiArai 5:ac6604b75d50 1350 *
kenjiArai 5:ac6604b75d50 1351 * @param p_version Pointer to current PAL Implementation Version
kenjiArai 5:ac6604b75d50 1352 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 1353 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 1354 */
kenjiArai 5:ac6604b75d50 1355 VL53L0X_Error VL53L0X_get_version(VL53L0X_Version_t *p_version);
kenjiArai 5:ac6604b75d50 1356
kenjiArai 5:ac6604b75d50 1357 /**
kenjiArai 5:ac6604b75d50 1358 * @brief Reads the Product Revision for a for given Device
kenjiArai 5:ac6604b75d50 1359 * This function can be used to distinguish cut1.0 from cut1.1.
kenjiArai 5:ac6604b75d50 1360 *
kenjiArai 5:ac6604b75d50 1361 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 1362 *
kenjiArai 5:ac6604b75d50 1363 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 1364 * @param p_product_revision_major Pointer to Product Revision Major
kenjiArai 5:ac6604b75d50 1365 * for a given Device
kenjiArai 5:ac6604b75d50 1366 * @param p_product_revision_minor Pointer to Product Revision Minor
kenjiArai 5:ac6604b75d50 1367 * for a given Device
kenjiArai 5:ac6604b75d50 1368 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 1369 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 1370 */
kenjiArai 5:ac6604b75d50 1371 VL53L0X_Error VL53L0X_get_product_revision(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 1372 uint8_t *p_product_revision_major, uint8_t *p_product_revision_minor);
kenjiArai 5:ac6604b75d50 1373
kenjiArai 5:ac6604b75d50 1374 /**
kenjiArai 5:ac6604b75d50 1375 * @brief Retrieve current device parameters
kenjiArai 5:ac6604b75d50 1376 * @par Function Description
kenjiArai 5:ac6604b75d50 1377 * Get actual parameters of the device
kenjiArai 5:ac6604b75d50 1378 * @li Then start ranging operation.
kenjiArai 5:ac6604b75d50 1379 *
kenjiArai 5:ac6604b75d50 1380 * @note This function Access to the device
kenjiArai 5:ac6604b75d50 1381 *
kenjiArai 5:ac6604b75d50 1382 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 1383 * @param p_device_parameters Pointer to store current device parameters.
kenjiArai 5:ac6604b75d50 1384 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 1385 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 1386 */
kenjiArai 5:ac6604b75d50 1387 VL53L0X_Error VL53L0X_get_device_parameters(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 1388 VL53L0X_DeviceParameters_t *p_device_parameters);
kenjiArai 5:ac6604b75d50 1389
kenjiArai 5:ac6604b75d50 1390 /**
kenjiArai 5:ac6604b75d50 1391 * @brief Human readable error string for current PAL error status
kenjiArai 5:ac6604b75d50 1392 *
kenjiArai 5:ac6604b75d50 1393 * @note This function doesn't access to the device
kenjiArai 5:ac6604b75d50 1394 *
kenjiArai 5:ac6604b75d50 1395 * @param pal_error_code The error code as stored on @a VL53L0X_Error
kenjiArai 5:ac6604b75d50 1396 * @param p_pal_error_string The error string corresponding to the
kenjiArai 5:ac6604b75d50 1397 * PalErrorCode
kenjiArai 5:ac6604b75d50 1398 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 1399 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 1400 */
kenjiArai 5:ac6604b75d50 1401 VL53L0X_Error VL53L0X_get_pal_error_string(VL53L0X_Error pal_error_code,
kenjiArai 5:ac6604b75d50 1402 char *p_pal_error_string);
kenjiArai 5:ac6604b75d50 1403
kenjiArai 5:ac6604b75d50 1404 /**
kenjiArai 5:ac6604b75d50 1405 * @brief Return the PAL Specification Version used for the current
kenjiArai 5:ac6604b75d50 1406 * implementation.
kenjiArai 5:ac6604b75d50 1407 *
kenjiArai 5:ac6604b75d50 1408 * @note This function doesn't access to the device
kenjiArai 5:ac6604b75d50 1409 *
kenjiArai 5:ac6604b75d50 1410 * @param p_pal_spec_version Pointer to current PAL Specification Version
kenjiArai 5:ac6604b75d50 1411 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 1412 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 1413 */
kenjiArai 5:ac6604b75d50 1414 VL53L0X_Error VL53L0X_get_pal_spec_version(
kenjiArai 5:ac6604b75d50 1415 VL53L0X_Version_t *p_pal_spec_version);
kenjiArai 5:ac6604b75d50 1416
kenjiArai 5:ac6604b75d50 1417 /**
kenjiArai 5:ac6604b75d50 1418 * @brief Reads the internal state of the PAL for a given Device
kenjiArai 5:ac6604b75d50 1419 *
kenjiArai 5:ac6604b75d50 1420 * @note This function doesn't access to the device
kenjiArai 5:ac6604b75d50 1421 *
kenjiArai 5:ac6604b75d50 1422 * @param dev Device Handle
kenjiArai 5:ac6604b75d50 1423 * @param p_pal_state Pointer to current state of the PAL for a
kenjiArai 5:ac6604b75d50 1424 * given Device
kenjiArai 5:ac6604b75d50 1425 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 1426 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 1427 */
kenjiArai 5:ac6604b75d50 1428 VL53L0X_Error VL53L0X_get_pal_state(VL53L0X_DEV dev,
kenjiArai 5:ac6604b75d50 1429 VL53L0X_State *p_pal_state);
kenjiArai 5:ac6604b75d50 1430
kenjiArai 5:ac6604b75d50 1431 /**
kenjiArai 5:ac6604b75d50 1432 * @brief Human readable PAL State string
kenjiArai 5:ac6604b75d50 1433 *
kenjiArai 5:ac6604b75d50 1434 * @note This function doesn't access to the device
kenjiArai 5:ac6604b75d50 1435 *
kenjiArai 5:ac6604b75d50 1436 * @param pal_state_code The State code as stored on @a VL53L0X_State
kenjiArai 5:ac6604b75d50 1437 * @param p_pal_state_string The State string corresponding to the
kenjiArai 5:ac6604b75d50 1438 * PalStateCode
kenjiArai 5:ac6604b75d50 1439 * @return VL53L0X_ERROR_NONE Success
kenjiArai 5:ac6604b75d50 1440 * @return "Other error code" See ::VL53L0X_Error
kenjiArai 5:ac6604b75d50 1441 */
kenjiArai 5:ac6604b75d50 1442 VL53L0X_Error VL53L0X_get_pal_state_string(VL53L0X_State pal_state_code,
kenjiArai 5:ac6604b75d50 1443 char *p_pal_state_string);
kenjiArai 5:ac6604b75d50 1444
kenjiArai 5:ac6604b75d50 1445 /*** End High level API ***/
kenjiArai 5:ac6604b75d50 1446