Greatly simplified Architecture, Identical Functions Removed: Platform Interfaces, STP6001 interface

Committer:
sepp_nepp
Date:
Thu Jun 20 12:00:59 2019 +0000
Revision:
6:fb11b746ceb5
Child:
7:3a1115c2556b
Greatly simplified version of the library.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sepp_nepp 6:fb11b746ceb5 1 /*******************************************************************************
sepp_nepp 6:fb11b746ceb5 2 Copyright © 2016, STMicroelectronics International N.V.
sepp_nepp 6:fb11b746ceb5 3 All rights reserved.
sepp_nepp 6:fb11b746ceb5 4
sepp_nepp 6:fb11b746ceb5 5 Redistribution and use in source and binary forms, with or without
sepp_nepp 6:fb11b746ceb5 6 modification, are permitted provided that the following conditions are met:
sepp_nepp 6:fb11b746ceb5 7 * Redistributions of source code must retain the above copyright
sepp_nepp 6:fb11b746ceb5 8 notice, this list of conditions and the following disclaimer.
sepp_nepp 6:fb11b746ceb5 9 * Redistributions in binary form must reproduce the above copyright
sepp_nepp 6:fb11b746ceb5 10 notice, this list of conditions and the following disclaimer in the
sepp_nepp 6:fb11b746ceb5 11 documentation and/or other materials provided with the distribution.
sepp_nepp 6:fb11b746ceb5 12 * Neither the name of STMicroelectronics nor the
sepp_nepp 6:fb11b746ceb5 13 names of its contributors may be used to endorse or promote products
sepp_nepp 6:fb11b746ceb5 14 derived from this software without specific prior written permission.
sepp_nepp 6:fb11b746ceb5 15
sepp_nepp 6:fb11b746ceb5 16 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
sepp_nepp 6:fb11b746ceb5 17 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
sepp_nepp 6:fb11b746ceb5 18 WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND
sepp_nepp 6:fb11b746ceb5 19 NON-INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS ARE DISCLAIMED.
sepp_nepp 6:fb11b746ceb5 20 IN NO EVENT SHALL STMICROELECTRONICS INTERNATIONAL N.V. BE LIABLE FOR ANY
sepp_nepp 6:fb11b746ceb5 21 DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
sepp_nepp 6:fb11b746ceb5 22 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
sepp_nepp 6:fb11b746ceb5 23 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
sepp_nepp 6:fb11b746ceb5 24 ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
sepp_nepp 6:fb11b746ceb5 25 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
sepp_nepp 6:fb11b746ceb5 26 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
sepp_nepp 6:fb11b746ceb5 27 *****************************************************************************/
sepp_nepp 6:fb11b746ceb5 28
sepp_nepp 6:fb11b746ceb5 29 #ifndef __VL53L0X_CLASS_H
sepp_nepp 6:fb11b746ceb5 30 #define __VL53L0X_CLASS_H
sepp_nepp 6:fb11b746ceb5 31
sepp_nepp 6:fb11b746ceb5 32
sepp_nepp 6:fb11b746ceb5 33 /* Includes ------------------------------------------------------------------*/
sepp_nepp 6:fb11b746ceb5 34 #include "mbed.h"
sepp_nepp 6:fb11b746ceb5 35 #include "pinmap.h"
sepp_nepp 6:fb11b746ceb5 36 #include "PinNames.h"
sepp_nepp 6:fb11b746ceb5 37 #include "VL53L0X_def.h"
sepp_nepp 6:fb11b746ceb5 38 #include "VL53L0X_tuning.h"
sepp_nepp 6:fb11b746ceb5 39
sepp_nepp 6:fb11b746ceb5 40 /* Classes -------------------------------------------------------------------*/
sepp_nepp 6:fb11b746ceb5 41 /** Class representing a VL53L0 sensor component
sepp_nepp 6:fb11b746ceb5 42 */
sepp_nepp 6:fb11b746ceb5 43 class VL53L0X
sepp_nepp 6:fb11b746ceb5 44 {
sepp_nepp 6:fb11b746ceb5 45 public:
sepp_nepp 6:fb11b746ceb5 46 /** Constructor
sepp_nepp 6:fb11b746ceb5 47 * @param[in] &i2c device I2C to be used for communication
sepp_nepp 6:fb11b746ceb5 48 * @param[in] &pin_gpio1 pin Mbed InterruptIn PinName to be used as component GPIO_1 INT
sepp_nepp 6:fb11b746ceb5 49 * @param[in] dev_addr device address, 0x29 by default
sepp_nepp 6:fb11b746ceb5 50 */
sepp_nepp 6:fb11b746ceb5 51 VL53L0X(I2C *i2c, DigitalOut *pin, PinName pin_gpio1, uint8_t dev_addr = VL53L0X_DEFAULT_ADDRESS) : _dev_i2c(i2c),
sepp_nepp 6:fb11b746ceb5 52 _gpio0(pin)
sepp_nepp 6:fb11b746ceb5 53 {
sepp_nepp 6:fb11b746ceb5 54 _my_device.I2cDevAddr = dev_addr;
sepp_nepp 6:fb11b746ceb5 55 _my_device.comms_type = 1; // VL53L0X_COMMS_I2C
sepp_nepp 6:fb11b746ceb5 56 _my_device.comms_speed_khz = 400;
sepp_nepp 6:fb11b746ceb5 57 _device = &_my_device;
sepp_nepp 6:fb11b746ceb5 58 if (pin_gpio1 != NC) {
sepp_nepp 6:fb11b746ceb5 59 _gpio1Int = new InterruptIn(pin_gpio1);
sepp_nepp 6:fb11b746ceb5 60 } else {
sepp_nepp 6:fb11b746ceb5 61 _gpio1Int = NULL;
sepp_nepp 6:fb11b746ceb5 62 }
sepp_nepp 6:fb11b746ceb5 63 }
sepp_nepp 6:fb11b746ceb5 64
sepp_nepp 6:fb11b746ceb5 65 /** Destructor
sepp_nepp 6:fb11b746ceb5 66 */
sepp_nepp 6:fb11b746ceb5 67 virtual ~VL53L0X()
sepp_nepp 6:fb11b746ceb5 68 {
sepp_nepp 6:fb11b746ceb5 69 if (_gpio1Int != NULL) { delete _gpio1Int; }
sepp_nepp 6:fb11b746ceb5 70 }
sepp_nepp 6:fb11b746ceb5 71
sepp_nepp 6:fb11b746ceb5 72 /*** Interface Methods ***/
sepp_nepp 6:fb11b746ceb5 73 /*** High level API ***/
sepp_nepp 6:fb11b746ceb5 74 /**
sepp_nepp 6:fb11b746ceb5 75 * @brief PowerOn the sensor
sepp_nepp 6:fb11b746ceb5 76 * @return void
sepp_nepp 6:fb11b746ceb5 77 */
sepp_nepp 6:fb11b746ceb5 78 /* turns on the sensor */
sepp_nepp 6:fb11b746ceb5 79 void VL53L0X_on(void)
sepp_nepp 6:fb11b746ceb5 80 {
sepp_nepp 6:fb11b746ceb5 81 if (_gpio0) { *_gpio0 = 1; }
sepp_nepp 6:fb11b746ceb5 82 wait_ms(10);
sepp_nepp 6:fb11b746ceb5 83 }
sepp_nepp 6:fb11b746ceb5 84
sepp_nepp 6:fb11b746ceb5 85 /**
sepp_nepp 6:fb11b746ceb5 86 * @brief PowerOff the sensor
sepp_nepp 6:fb11b746ceb5 87 * @return void
sepp_nepp 6:fb11b746ceb5 88 */
sepp_nepp 6:fb11b746ceb5 89 /* turns off the sensor */
sepp_nepp 6:fb11b746ceb5 90 void VL53L0X_off(void)
sepp_nepp 6:fb11b746ceb5 91 {
sepp_nepp 6:fb11b746ceb5 92 if (_gpio0) { *_gpio0 = 0; }
sepp_nepp 6:fb11b746ceb5 93 wait_ms(10);
sepp_nepp 6:fb11b746ceb5 94 }
sepp_nepp 6:fb11b746ceb5 95
sepp_nepp 6:fb11b746ceb5 96
sepp_nepp 6:fb11b746ceb5 97 /**
sepp_nepp 6:fb11b746ceb5 98 * @brief Initialize the sensor with default values
sepp_nepp 6:fb11b746ceb5 99 * @return "0" on success
sepp_nepp 6:fb11b746ceb5 100 */
sepp_nepp 6:fb11b746ceb5 101 int init_sensor(uint8_t new_addr = VL53L0X_DEFAULT_ADDRESS);
sepp_nepp 6:fb11b746ceb5 102
sepp_nepp 6:fb11b746ceb5 103 /**
sepp_nepp 6:fb11b746ceb5 104 * @brief Start the measure indicated by operating mode
sepp_nepp 6:fb11b746ceb5 105 * @param[in] operating_mode specifies requested measure
sepp_nepp 6:fb11b746ceb5 106 * @param[in] fptr specifies call back function must be !NULL in case of interrupt measure
sepp_nepp 6:fb11b746ceb5 107 * @return "0" on success
sepp_nepp 6:fb11b746ceb5 108 */
sepp_nepp 6:fb11b746ceb5 109 int start_measurement(OperatingMode operating_mode, void (*fptr)(void),
sepp_nepp 6:fb11b746ceb5 110 VL53L0X_RangingConfig rangingConfig = Range_Config_DEFAULT);
sepp_nepp 6:fb11b746ceb5 111
sepp_nepp 6:fb11b746ceb5 112 /**
sepp_nepp 6:fb11b746ceb5 113 * @brief Get results for the measure indicated by operating mode
sepp_nepp 6:fb11b746ceb5 114 * @param[in] operating_mode specifies requested measure results
sepp_nepp 6:fb11b746ceb5 115 * @param[out] p_data pointer to the MeasureData_t structure to read data in to
sepp_nepp 6:fb11b746ceb5 116 * @return "0" on success
sepp_nepp 6:fb11b746ceb5 117 */
sepp_nepp 6:fb11b746ceb5 118 int get_measurement(OperatingMode operating_mode, VL53L0X_RangingMeasurementData_t *p_data);
sepp_nepp 6:fb11b746ceb5 119
sepp_nepp 6:fb11b746ceb5 120 /**
sepp_nepp 6:fb11b746ceb5 121 * @brief Stop the currently running measure indicate by operating_mode
sepp_nepp 6:fb11b746ceb5 122 * @param[in] operating_mode specifies requested measure to stop
sepp_nepp 6:fb11b746ceb5 123 * @return "0" on success
sepp_nepp 6:fb11b746ceb5 124 */
sepp_nepp 6:fb11b746ceb5 125 int stop_measurement(OperatingMode operating_mode);
sepp_nepp 6:fb11b746ceb5 126
sepp_nepp 6:fb11b746ceb5 127 /**
sepp_nepp 6:fb11b746ceb5 128 * @brief Interrupt handling func to be called by user after an INT is occourred
sepp_nepp 6:fb11b746ceb5 129 * @param[in] opeating_mode indicating the in progress measure
sepp_nepp 6:fb11b746ceb5 130 * @param[out] Data pointer to the MeasureData_t structure to read data in to
sepp_nepp 6:fb11b746ceb5 131 * @return "0" on success
sepp_nepp 6:fb11b746ceb5 132 */
sepp_nepp 6:fb11b746ceb5 133 int handle_irq(OperatingMode operating_mode, VL53L0X_RangingMeasurementData_t *data);
sepp_nepp 6:fb11b746ceb5 134
sepp_nepp 6:fb11b746ceb5 135 /**
sepp_nepp 6:fb11b746ceb5 136 * @brief Enable interrupt measure IRQ
sepp_nepp 6:fb11b746ceb5 137 * @return "0" on success
sepp_nepp 6:fb11b746ceb5 138 */
sepp_nepp 6:fb11b746ceb5 139 void enable_interrupt_measure_detection_irq(void)
sepp_nepp 6:fb11b746ceb5 140 {
sepp_nepp 6:fb11b746ceb5 141 if (_gpio1Int != NULL) { _gpio1Int->enable_irq();}
sepp_nepp 6:fb11b746ceb5 142 }
sepp_nepp 6:fb11b746ceb5 143
sepp_nepp 6:fb11b746ceb5 144 /**
sepp_nepp 6:fb11b746ceb5 145 * @brief Disable interrupt measure IRQ
sepp_nepp 6:fb11b746ceb5 146 * @return "0" on success
sepp_nepp 6:fb11b746ceb5 147 */
sepp_nepp 6:fb11b746ceb5 148 void disable_interrupt_measure_detection_irq(void)
sepp_nepp 6:fb11b746ceb5 149 {
sepp_nepp 6:fb11b746ceb5 150 if (_gpio1Int != NULL) { _gpio1Int->disable_irq(); }
sepp_nepp 6:fb11b746ceb5 151 }
sepp_nepp 6:fb11b746ceb5 152
sepp_nepp 6:fb11b746ceb5 153 /**
sepp_nepp 6:fb11b746ceb5 154 * @brief Attach a function to call when an interrupt is detected, i.e. measurement is ready
sepp_nepp 6:fb11b746ceb5 155 * @param[in] fptr pointer to call back function to be called whenever an interrupt occours
sepp_nepp 6:fb11b746ceb5 156 * @return "0" on success
sepp_nepp 6:fb11b746ceb5 157 */
sepp_nepp 6:fb11b746ceb5 158 void attach_interrupt_measure_detection_irq(void (*fptr)(void))
sepp_nepp 6:fb11b746ceb5 159 {
sepp_nepp 6:fb11b746ceb5 160 if (_gpio1Int != NULL) { _gpio1Int->rise(fptr); }
sepp_nepp 6:fb11b746ceb5 161 }
sepp_nepp 6:fb11b746ceb5 162
sepp_nepp 6:fb11b746ceb5 163 /** Wrapper functions */
sepp_nepp 6:fb11b746ceb5 164 /** @defgroup api_init Init functions
sepp_nepp 6:fb11b746ceb5 165 * @brief API init functions
sepp_nepp 6:fb11b746ceb5 166 * @ingroup api_hl
sepp_nepp 6:fb11b746ceb5 167 * @{
sepp_nepp 6:fb11b746ceb5 168 */
sepp_nepp 6:fb11b746ceb5 169
sepp_nepp 6:fb11b746ceb5 170 /**
sepp_nepp 6:fb11b746ceb5 171 *
sepp_nepp 6:fb11b746ceb5 172 * @brief One time device initialization
sepp_nepp 6:fb11b746ceb5 173 *
sepp_nepp 6:fb11b746ceb5 174 * To be called once and only once after device is brought out of reset (Chip enable) and booted.
sepp_nepp 6:fb11b746ceb5 175 *
sepp_nepp 6:fb11b746ceb5 176 * @par Function Description
sepp_nepp 6:fb11b746ceb5 177 * When not used after a fresh device "power up" or reset, it may return @a #CALIBRATION_WARNING
sepp_nepp 6:fb11b746ceb5 178 * meaning wrong calibration data may have been fetched from device that can result in ranging offset error\n
sepp_nepp 6:fb11b746ceb5 179 * If application cannot execute device reset or need to run VL53L0X_data_init multiple time
sepp_nepp 6:fb11b746ceb5 180 * then it must ensure proper offset calibration saving and restore on its own
sepp_nepp 6:fb11b746ceb5 181 * 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
sepp_nepp 6:fb11b746ceb5 182 *
sepp_nepp 6:fb11b746ceb5 183 * @param void
sepp_nepp 6:fb11b746ceb5 184 * @return "0" on success, @a #CALIBRATION_WARNING if failed
sepp_nepp 6:fb11b746ceb5 185 */
sepp_nepp 6:fb11b746ceb5 186 virtual int init(void *init)
sepp_nepp 6:fb11b746ceb5 187 {
sepp_nepp 6:fb11b746ceb5 188 return VL53L0X_data_init(_device);
sepp_nepp 6:fb11b746ceb5 189 }
sepp_nepp 6:fb11b746ceb5 190
sepp_nepp 6:fb11b746ceb5 191 /**
sepp_nepp 6:fb11b746ceb5 192 * @brief Prepare device for operation
sepp_nepp 6:fb11b746ceb5 193 * @par Function Description
sepp_nepp 6:fb11b746ceb5 194 * Does static initialization and reprogram common default settings \n
sepp_nepp 6:fb11b746ceb5 195 * Device is prepared for new measure, ready single shot ranging or ALS typical polling operation\n
sepp_nepp 6:fb11b746ceb5 196 * After prepare user can : \n
sepp_nepp 6:fb11b746ceb5 197 * @li Call other API function to set other settings\n
sepp_nepp 6:fb11b746ceb5 198 * @li Configure the interrupt pins, etc... \n
sepp_nepp 6:fb11b746ceb5 199 * @li Then start ranging or ALS operations in single shot or continuous mode
sepp_nepp 6:fb11b746ceb5 200 *
sepp_nepp 6:fb11b746ceb5 201 * @param void
sepp_nepp 6:fb11b746ceb5 202 * @return "0" on success
sepp_nepp 6:fb11b746ceb5 203 */
sepp_nepp 6:fb11b746ceb5 204 int prepare();
sepp_nepp 6:fb11b746ceb5 205
sepp_nepp 6:fb11b746ceb5 206 /**
sepp_nepp 6:fb11b746ceb5 207 * @brief Start continuous ranging mode
sepp_nepp 6:fb11b746ceb5 208 *
sepp_nepp 6:fb11b746ceb5 209 * @details End user should ensure device is in idle state and not already running
sepp_nepp 6:fb11b746ceb5 210 * @return "0" on success
sepp_nepp 6:fb11b746ceb5 211 */
sepp_nepp 6:fb11b746ceb5 212 int range_start_continuous_mode();
sepp_nepp 6:fb11b746ceb5 213
sepp_nepp 6:fb11b746ceb5 214 /**
sepp_nepp 6:fb11b746ceb5 215 * @brief Get ranging result and only that
sepp_nepp 6:fb11b746ceb5 216 *
sepp_nepp 6:fb11b746ceb5 217 * @par Function Description
sepp_nepp 6:fb11b746ceb5 218 * Unlike @a VL53L0X_get_ranging_measurement_data() this function only retrieves the range in millimeter \n
sepp_nepp 6:fb11b746ceb5 219 * It does any required up-scale translation\n
sepp_nepp 6:fb11b746ceb5 220 * It can be called after success status polling or in interrupt mode \n
sepp_nepp 6:fb11b746ceb5 221 * @warning these function is not doing wrap around filtering \n
sepp_nepp 6:fb11b746ceb5 222 * This function doesn't perform any data ready check!
sepp_nepp 6:fb11b746ceb5 223 *
sepp_nepp 6:fb11b746ceb5 224 * @param p_data Pointer to range distance
sepp_nepp 6:fb11b746ceb5 225 * @return "0" on success
sepp_nepp 6:fb11b746ceb5 226 */
sepp_nepp 6:fb11b746ceb5 227 virtual int get_distance(uint32_t *p_data)
sepp_nepp 6:fb11b746ceb5 228 {
sepp_nepp 6:fb11b746ceb5 229 int status = 0;
sepp_nepp 6:fb11b746ceb5 230 VL53L0X_RangingMeasurementData_t p_ranging_measurement_data;
sepp_nepp 6:fb11b746ceb5 231
sepp_nepp 6:fb11b746ceb5 232 status = start_measurement(range_single_shot_polling, NULL);
sepp_nepp 6:fb11b746ceb5 233 if (!status) {
sepp_nepp 6:fb11b746ceb5 234 status = get_measurement(range_single_shot_polling, &p_ranging_measurement_data);
sepp_nepp 6:fb11b746ceb5 235 }
sepp_nepp 6:fb11b746ceb5 236 if (p_ranging_measurement_data.RangeStatus == 0) {
sepp_nepp 6:fb11b746ceb5 237 // we have a valid range.
sepp_nepp 6:fb11b746ceb5 238 *p_data = p_ranging_measurement_data.RangeMilliMeter;
sepp_nepp 6:fb11b746ceb5 239 } else {
sepp_nepp 6:fb11b746ceb5 240 *p_data = 0;
sepp_nepp 6:fb11b746ceb5 241 status = VL53L0X_ERROR_RANGE_ERROR;
sepp_nepp 6:fb11b746ceb5 242 }
sepp_nepp 6:fb11b746ceb5 243 stop_measurement(range_single_shot_polling);
sepp_nepp 6:fb11b746ceb5 244 return status;
sepp_nepp 6:fb11b746ceb5 245 }
sepp_nepp 6:fb11b746ceb5 246
sepp_nepp 6:fb11b746ceb5 247 /** @} */
sepp_nepp 6:fb11b746ceb5 248
sepp_nepp 6:fb11b746ceb5 249 /**
sepp_nepp 6:fb11b746ceb5 250 * @brief Set new device i2c address
sepp_nepp 6:fb11b746ceb5 251 *
sepp_nepp 6:fb11b746ceb5 252 * After completion the device will answer to the new address programmed.
sepp_nepp 6:fb11b746ceb5 253 *
sepp_nepp 6:fb11b746ceb5 254 * @param new_addr The new i2c address (7bit)
sepp_nepp 6:fb11b746ceb5 255 * @return "0" on success
sepp_nepp 6:fb11b746ceb5 256 */
sepp_nepp 6:fb11b746ceb5 257 int set_device_address(int new_addr)
sepp_nepp 6:fb11b746ceb5 258 {
sepp_nepp 6:fb11b746ceb5 259 int status;
sepp_nepp 6:fb11b746ceb5 260
sepp_nepp 6:fb11b746ceb5 261 status = VL53L0X_set_device_address(_device, new_addr);
sepp_nepp 6:fb11b746ceb5 262 if (!status) {
sepp_nepp 6:fb11b746ceb5 263 _device->I2cDevAddr = new_addr;
sepp_nepp 6:fb11b746ceb5 264 }
sepp_nepp 6:fb11b746ceb5 265 return status;
sepp_nepp 6:fb11b746ceb5 266
sepp_nepp 6:fb11b746ceb5 267 }
sepp_nepp 6:fb11b746ceb5 268
sepp_nepp 6:fb11b746ceb5 269 /**
sepp_nepp 6:fb11b746ceb5 270 * @brief Clear given system interrupt condition
sepp_nepp 6:fb11b746ceb5 271 *
sepp_nepp 6:fb11b746ceb5 272 * @par Function Description
sepp_nepp 6:fb11b746ceb5 273 * Clear given interrupt cause by writing into register #SYSTEM_INTERRUPT_CLEAR register.
sepp_nepp 6:fb11b746ceb5 274 * @param dev The device
sepp_nepp 6:fb11b746ceb5 275 * @param int_clear Which interrupt source to clear. Use any combinations of #INTERRUPT_CLEAR_RANGING , #INTERRUPT_CLEAR_ALS , #INTERRUPT_CLEAR_ERROR.
sepp_nepp 6:fb11b746ceb5 276 * @return "0" on success
sepp_nepp 6:fb11b746ceb5 277 */
sepp_nepp 6:fb11b746ceb5 278 int clear_interrupt(uint8_t int_clear)
sepp_nepp 6:fb11b746ceb5 279 {
sepp_nepp 6:fb11b746ceb5 280 return VL53L0X_clear_interrupt_mask(_device, int_clear);
sepp_nepp 6:fb11b746ceb5 281 }
sepp_nepp 6:fb11b746ceb5 282
sepp_nepp 6:fb11b746ceb5 283 /**
sepp_nepp 6:fb11b746ceb5 284 *
sepp_nepp 6:fb11b746ceb5 285 * @brief Get the 53L0 device
sepp_nepp 6:fb11b746ceb5 286 *
sepp_nepp 6:fb11b746ceb5 287 * To be called to retrive the internal device descriptor to allow usage of
sepp_nepp 6:fb11b746ceb5 288 * low level API having device as parameter. To be called after set_device_address()
sepp_nepp 6:fb11b746ceb5 289 * (if any).
sepp_nepp 6:fb11b746ceb5 290 *
sepp_nepp 6:fb11b746ceb5 291 * @par Function Description
sepp_nepp 6:fb11b746ceb5 292 * To be called if low level API usage is needed as those functions requires
sepp_nepp 6:fb11b746ceb5 293 * device as a parameter.TICINIT.
sepp_nepp 6:fb11b746ceb5 294 *
sepp_nepp 6:fb11b746ceb5 295 * @note This function return a pointer to an object internal structure
sepp_nepp 6:fb11b746ceb5 296 *
sepp_nepp 6:fb11b746ceb5 297 * @param dev ptr to ptr to Device Handle
sepp_nepp 6:fb11b746ceb5 298 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 299 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 300 */
sepp_nepp 6:fb11b746ceb5 301 VL53L0X_Error vl53l0x_get_device(VL53L0X_DEV *dev)
sepp_nepp 6:fb11b746ceb5 302 {
sepp_nepp 6:fb11b746ceb5 303 *dev = _device;
sepp_nepp 6:fb11b746ceb5 304 return VL53L0X_ERROR_NONE;
sepp_nepp 6:fb11b746ceb5 305 }
sepp_nepp 6:fb11b746ceb5 306
sepp_nepp 6:fb11b746ceb5 307 /**
sepp_nepp 6:fb11b746ceb5 308 *
sepp_nepp 6:fb11b746ceb5 309 * @brief One time device initialization
sepp_nepp 6:fb11b746ceb5 310 *
sepp_nepp 6:fb11b746ceb5 311 * To be called once and only once after device is brought out of reset
sepp_nepp 6:fb11b746ceb5 312 * (Chip enable) and booted see @a VL53L0X_WaitDeviceBooted()
sepp_nepp 6:fb11b746ceb5 313 *
sepp_nepp 6:fb11b746ceb5 314 * @par Function Description
sepp_nepp 6:fb11b746ceb5 315 * When not used after a fresh device "power up" or reset, it may return
sepp_nepp 6:fb11b746ceb5 316 * @a #VL53L0X_ERROR_CALIBRATION_WARNING meaning wrong calibration data
sepp_nepp 6:fb11b746ceb5 317 * may have been fetched from device that can result in ranging offset error\n
sepp_nepp 6:fb11b746ceb5 318 * If application cannot execute device reset or need to run VL53L0X_DataInit
sepp_nepp 6:fb11b746ceb5 319 * multiple time then it must ensure proper offset calibration saving and
sepp_nepp 6:fb11b746ceb5 320 * restore on its own by using @a VL53L0X_GetOffsetCalibrationData() on first
sepp_nepp 6:fb11b746ceb5 321 * power up and then @a VL53L0X_SetOffsetCalibrationData() in all subsequent init
sepp_nepp 6:fb11b746ceb5 322 * This function will change the VL53L0X_State from VL53L0X_STATE_POWERDOWN to
sepp_nepp 6:fb11b746ceb5 323 * VL53L0X_STATE_WAIT_STATICINIT.
sepp_nepp 6:fb11b746ceb5 324 *
sepp_nepp 6:fb11b746ceb5 325 * @note This function accesses to the device
sepp_nepp 6:fb11b746ceb5 326 *
sepp_nepp 6:fb11b746ceb5 327 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 328 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 329 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 330 */
sepp_nepp 6:fb11b746ceb5 331 VL53L0X_Error VL53L0X_data_init(VL53L0X_DEV dev);
sepp_nepp 6:fb11b746ceb5 332
sepp_nepp 6:fb11b746ceb5 333 /**
sepp_nepp 6:fb11b746ceb5 334 * @brief Do basic device init (and eventually patch loading)
sepp_nepp 6:fb11b746ceb5 335 * This function will change the VL53L0X_State from
sepp_nepp 6:fb11b746ceb5 336 * VL53L0X_STATE_WAIT_STATICINIT to VL53L0X_STATE_IDLE.
sepp_nepp 6:fb11b746ceb5 337 * In this stage all default setting will be applied.
sepp_nepp 6:fb11b746ceb5 338 *
sepp_nepp 6:fb11b746ceb5 339 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 340 *
sepp_nepp 6:fb11b746ceb5 341 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 342 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 343 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 344 */
sepp_nepp 6:fb11b746ceb5 345 VL53L0X_Error VL53L0X_static_init(VL53L0X_DEV dev);
sepp_nepp 6:fb11b746ceb5 346
sepp_nepp 6:fb11b746ceb5 347 /**
sepp_nepp 6:fb11b746ceb5 348 * @brief Perform Reference Calibration
sepp_nepp 6:fb11b746ceb5 349 *
sepp_nepp 6:fb11b746ceb5 350 * @details Perform a reference calibration of the Device.
sepp_nepp 6:fb11b746ceb5 351 * This function should be run from time to time before doing
sepp_nepp 6:fb11b746ceb5 352 * a ranging measurement.
sepp_nepp 6:fb11b746ceb5 353 * This function will launch a special ranging measurement, so
sepp_nepp 6:fb11b746ceb5 354 * if interrupt are enable an interrupt will be done.
sepp_nepp 6:fb11b746ceb5 355 * This function will clear the interrupt generated automatically.
sepp_nepp 6:fb11b746ceb5 356 *
sepp_nepp 6:fb11b746ceb5 357 * @warning This function is a blocking function
sepp_nepp 6:fb11b746ceb5 358 *
sepp_nepp 6:fb11b746ceb5 359 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 360 *
sepp_nepp 6:fb11b746ceb5 361 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 362 * @param p_vhv_settings Pointer to vhv settings parameter.
sepp_nepp 6:fb11b746ceb5 363 * @param p_phase_cal Pointer to PhaseCal parameter.
sepp_nepp 6:fb11b746ceb5 364 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 365 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 366 */
sepp_nepp 6:fb11b746ceb5 367 VL53L0X_Error VL53L0X_perform_ref_calibration(VL53L0X_DEV dev, uint8_t *p_vhv_settings,
sepp_nepp 6:fb11b746ceb5 368 uint8_t *p_phase_cal);
sepp_nepp 6:fb11b746ceb5 369
sepp_nepp 6:fb11b746ceb5 370 /**
sepp_nepp 6:fb11b746ceb5 371 * @brief Get Reference Calibration Parameters
sepp_nepp 6:fb11b746ceb5 372 *
sepp_nepp 6:fb11b746ceb5 373 * @par Function Description
sepp_nepp 6:fb11b746ceb5 374 * Get Reference Calibration Parameters.
sepp_nepp 6:fb11b746ceb5 375 *
sepp_nepp 6:fb11b746ceb5 376 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 377 *
sepp_nepp 6:fb11b746ceb5 378 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 379 * @param p_vhv_settings Pointer to VHV parameter
sepp_nepp 6:fb11b746ceb5 380 * @param p_phase_cal Pointer to PhaseCal Parameter
sepp_nepp 6:fb11b746ceb5 381 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 382 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 383 */
sepp_nepp 6:fb11b746ceb5 384 VL53L0X_Error VL53L0X_get_ref_calibration(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 385 uint8_t *p_vhv_settings, uint8_t *p_phase_cal);
sepp_nepp 6:fb11b746ceb5 386
sepp_nepp 6:fb11b746ceb5 387 VL53L0X_Error VL53L0X_set_ref_calibration(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 388 uint8_t vhv_settings, uint8_t phase_cal);
sepp_nepp 6:fb11b746ceb5 389
sepp_nepp 6:fb11b746ceb5 390 /**
sepp_nepp 6:fb11b746ceb5 391 * @brief Performs Reference Spad Management
sepp_nepp 6:fb11b746ceb5 392 *
sepp_nepp 6:fb11b746ceb5 393 * @par Function Description
sepp_nepp 6:fb11b746ceb5 394 * The reference SPAD initialization procedure determines the minimum amount
sepp_nepp 6:fb11b746ceb5 395 * of reference spads to be enables to achieve a target reference signal rate
sepp_nepp 6:fb11b746ceb5 396 * and should be performed once during initialization.
sepp_nepp 6:fb11b746ceb5 397 *
sepp_nepp 6:fb11b746ceb5 398 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 399 *
sepp_nepp 6:fb11b746ceb5 400 * @note This function change the device mode to
sepp_nepp 6:fb11b746ceb5 401 * VL53L0X_DEVICEMODE_SINGLE_RANGING
sepp_nepp 6:fb11b746ceb5 402 *
sepp_nepp 6:fb11b746ceb5 403 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 404 * @param ref_spad_count Reports ref Spad Count
sepp_nepp 6:fb11b746ceb5 405 * @param is_aperture_spads Reports if spads are of type
sepp_nepp 6:fb11b746ceb5 406 * aperture or non-aperture.
sepp_nepp 6:fb11b746ceb5 407 * 1:=aperture, 0:=Non-Aperture
sepp_nepp 6:fb11b746ceb5 408 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 409 * @return VL53L0X_ERROR_REF_SPAD_INIT Error in the Ref Spad procedure.
sepp_nepp 6:fb11b746ceb5 410 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 411 */
sepp_nepp 6:fb11b746ceb5 412 VL53L0X_Error VL53L0X_perform_ref_spad_management(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 413 uint32_t *ref_spad_count, uint8_t *is_aperture_spads);
sepp_nepp 6:fb11b746ceb5 414
sepp_nepp 6:fb11b746ceb5 415 /**
sepp_nepp 6:fb11b746ceb5 416 * @brief Applies Reference SPAD configuration
sepp_nepp 6:fb11b746ceb5 417 *
sepp_nepp 6:fb11b746ceb5 418 * @par Function Description
sepp_nepp 6:fb11b746ceb5 419 * This function applies a given number of reference spads, identified as
sepp_nepp 6:fb11b746ceb5 420 * either Aperture or Non-Aperture.
sepp_nepp 6:fb11b746ceb5 421 * The requested spad count and type are stored within the device specific
sepp_nepp 6:fb11b746ceb5 422 * parameters data for access by the host.
sepp_nepp 6:fb11b746ceb5 423 *
sepp_nepp 6:fb11b746ceb5 424 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 425 *
sepp_nepp 6:fb11b746ceb5 426 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 427 * @param refSpadCount Number of ref spads.
sepp_nepp 6:fb11b746ceb5 428 * @param is_aperture_spads Defines if spads are of type
sepp_nepp 6:fb11b746ceb5 429 * aperture or non-aperture.
sepp_nepp 6:fb11b746ceb5 430 * 1:=aperture, 0:=Non-Aperture
sepp_nepp 6:fb11b746ceb5 431 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 432 * @return VL53L0X_ERROR_REF_SPAD_INIT Error in the in the reference
sepp_nepp 6:fb11b746ceb5 433 * spad configuration.
sepp_nepp 6:fb11b746ceb5 434 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 435 */
sepp_nepp 6:fb11b746ceb5 436 VL53L0X_Error VL53L0X_set_reference_spads(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 437 uint32_t refSpadCount, uint8_t is_aperture_spads);
sepp_nepp 6:fb11b746ceb5 438
sepp_nepp 6:fb11b746ceb5 439 /**
sepp_nepp 6:fb11b746ceb5 440 * @brief Retrieves SPAD configuration
sepp_nepp 6:fb11b746ceb5 441 *
sepp_nepp 6:fb11b746ceb5 442 * @par Function Description
sepp_nepp 6:fb11b746ceb5 443 * This function retrieves the current number of applied reference spads
sepp_nepp 6:fb11b746ceb5 444 * and also their type : Aperture or Non-Aperture.
sepp_nepp 6:fb11b746ceb5 445 *
sepp_nepp 6:fb11b746ceb5 446 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 447 *
sepp_nepp 6:fb11b746ceb5 448 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 449 * @param p_spad_count Number ref Spad Count
sepp_nepp 6:fb11b746ceb5 450 * @param p_is_aperture_spads Reports if spads are of type
sepp_nepp 6:fb11b746ceb5 451 * aperture or non-aperture.
sepp_nepp 6:fb11b746ceb5 452 * 1:=aperture, 0:=Non-Aperture
sepp_nepp 6:fb11b746ceb5 453 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 454 * @return VL53L0X_ERROR_REF_SPAD_INIT Error in the in the reference
sepp_nepp 6:fb11b746ceb5 455 * spad configuration.
sepp_nepp 6:fb11b746ceb5 456 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 457 */
sepp_nepp 6:fb11b746ceb5 458 VL53L0X_Error VL53L0X_get_reference_spads(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 459 uint32_t *p_spad_count, uint8_t *p_is_aperture_spads);
sepp_nepp 6:fb11b746ceb5 460
sepp_nepp 6:fb11b746ceb5 461 /**
sepp_nepp 6:fb11b746ceb5 462 * @brief Get part to part calibration offset
sepp_nepp 6:fb11b746ceb5 463 *
sepp_nepp 6:fb11b746ceb5 464 * @par Function Description
sepp_nepp 6:fb11b746ceb5 465 * Should only be used after a successful call to @a VL53L0X_DataInit to backup
sepp_nepp 6:fb11b746ceb5 466 * device NVM value
sepp_nepp 6:fb11b746ceb5 467 *
sepp_nepp 6:fb11b746ceb5 468 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 469 *
sepp_nepp 6:fb11b746ceb5 470 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 471 * @param p_offset_calibration_data_micro_meter Return part to part
sepp_nepp 6:fb11b746ceb5 472 * calibration offset from device (microns)
sepp_nepp 6:fb11b746ceb5 473 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 474 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 475 */
sepp_nepp 6:fb11b746ceb5 476 VL53L0X_Error VL53L0X_get_offset_calibration_data_micro_meter(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 477 int32_t *p_offset_calibration_data_micro_meter);
sepp_nepp 6:fb11b746ceb5 478 /**
sepp_nepp 6:fb11b746ceb5 479 * Set or over-hide part to part calibration offset
sepp_nepp 6:fb11b746ceb5 480 * \sa VL53L0X_DataInit() VL53L0X_GetOffsetCalibrationDataMicroMeter()
sepp_nepp 6:fb11b746ceb5 481 *
sepp_nepp 6:fb11b746ceb5 482 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 483 *
sepp_nepp 6:fb11b746ceb5 484 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 485 * @param p_offset_calibration_data_micro_meter Offset (microns)
sepp_nepp 6:fb11b746ceb5 486 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 487 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 488 */
sepp_nepp 6:fb11b746ceb5 489 VL53L0X_Error VL53L0X_set_offset_calibration_data_micro_meter(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 490 int32_t offset_calibration_data_micro_meter);
sepp_nepp 6:fb11b746ceb5 491
sepp_nepp 6:fb11b746ceb5 492 VL53L0X_Error VL53L0X_perform_offset_calibration(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 493 FixPoint1616_t cal_distance_milli_meter,
sepp_nepp 6:fb11b746ceb5 494 int32_t *p_offset_micro_meter);
sepp_nepp 6:fb11b746ceb5 495
sepp_nepp 6:fb11b746ceb5 496 VL53L0X_Error VL53L0X_perform_xtalk_calibration(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 497 FixPoint1616_t xtalk_cal_distance,
sepp_nepp 6:fb11b746ceb5 498 FixPoint1616_t *p_xtalk_compensation_rate_mega_cps);
sepp_nepp 6:fb11b746ceb5 499
sepp_nepp 6:fb11b746ceb5 500 /**
sepp_nepp 6:fb11b746ceb5 501 * @brief Perform XTalk Measurement
sepp_nepp 6:fb11b746ceb5 502 *
sepp_nepp 6:fb11b746ceb5 503 * @details Measures the current cross talk from glass in front
sepp_nepp 6:fb11b746ceb5 504 * of the sensor.
sepp_nepp 6:fb11b746ceb5 505 * This functions performs a histogram measurement and uses the results
sepp_nepp 6:fb11b746ceb5 506 * to measure the crosstalk. For the function to be successful, there
sepp_nepp 6:fb11b746ceb5 507 * must be no target in front of the sensor.
sepp_nepp 6:fb11b746ceb5 508 *
sepp_nepp 6:fb11b746ceb5 509 * @warning This function is a blocking function
sepp_nepp 6:fb11b746ceb5 510 *
sepp_nepp 6:fb11b746ceb5 511 * @warning This function is not supported when the final range
sepp_nepp 6:fb11b746ceb5 512 * vcsel clock period is set below 10 PCLKS.
sepp_nepp 6:fb11b746ceb5 513 *
sepp_nepp 6:fb11b746ceb5 514 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 515 *
sepp_nepp 6:fb11b746ceb5 516 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 517 * @param timeout_ms Histogram measurement duration.
sepp_nepp 6:fb11b746ceb5 518 * @param p_xtalk_per_spad Output parameter containing the crosstalk
sepp_nepp 6:fb11b746ceb5 519 * measurement result, in MCPS/Spad.
sepp_nepp 6:fb11b746ceb5 520 * Format fixpoint 16:16.
sepp_nepp 6:fb11b746ceb5 521 * @param p_ambient_too_high Output parameter which indicate that
sepp_nepp 6:fb11b746ceb5 522 * pXtalkPerSpad is not good if the Ambient
sepp_nepp 6:fb11b746ceb5 523 * is too high.
sepp_nepp 6:fb11b746ceb5 524 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 525 * @return VL53L0X_ERROR_INVALID_PARAMS vcsel clock period not supported
sepp_nepp 6:fb11b746ceb5 526 * for this operation.
sepp_nepp 6:fb11b746ceb5 527 * Must not be less than 10PCLKS.
sepp_nepp 6:fb11b746ceb5 528 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 529 */
sepp_nepp 6:fb11b746ceb5 530 VL53L0X_Error VL53L0X_perform_xtalk_measurement(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 531 uint32_t timeout_ms, FixPoint1616_t *p_xtalk_per_spad,
sepp_nepp 6:fb11b746ceb5 532 uint8_t *p_ambient_too_high);
sepp_nepp 6:fb11b746ceb5 533
sepp_nepp 6:fb11b746ceb5 534 /**
sepp_nepp 6:fb11b746ceb5 535 * @brief Enable/Disable Cross talk compensation feature
sepp_nepp 6:fb11b746ceb5 536 *
sepp_nepp 6:fb11b746ceb5 537 * @note This function is not Implemented.
sepp_nepp 6:fb11b746ceb5 538 * Enable/Disable Cross Talk by set to zero the Cross Talk value
sepp_nepp 6:fb11b746ceb5 539 * by using @a VL53L0X_SetXTalkCompensationRateMegaCps().
sepp_nepp 6:fb11b746ceb5 540 *
sepp_nepp 6:fb11b746ceb5 541 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 542 * @param x_talk_compensation_enable Cross talk compensation
sepp_nepp 6:fb11b746ceb5 543 * to be set 0=disabled else = enabled
sepp_nepp 6:fb11b746ceb5 544 * @return VL53L0X_ERROR_NOT_IMPLEMENTED Not implemented
sepp_nepp 6:fb11b746ceb5 545 */
sepp_nepp 6:fb11b746ceb5 546 VL53L0X_Error VL53L0X_set_x_talk_compensation_enable(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 547 uint8_t x_talk_compensation_enable);
sepp_nepp 6:fb11b746ceb5 548
sepp_nepp 6:fb11b746ceb5 549 /**
sepp_nepp 6:fb11b746ceb5 550 * @brief Get Cross talk compensation rate
sepp_nepp 6:fb11b746ceb5 551 *
sepp_nepp 6:fb11b746ceb5 552 * @note This function is not Implemented.
sepp_nepp 6:fb11b746ceb5 553 * Enable/Disable Cross Talk by set to zero the Cross Talk value by
sepp_nepp 6:fb11b746ceb5 554 * using @a VL53L0X_SetXTalkCompensationRateMegaCps().
sepp_nepp 6:fb11b746ceb5 555 *
sepp_nepp 6:fb11b746ceb5 556 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 557 * @param p_x_talk_compensation_enable Pointer to the Cross talk compensation
sepp_nepp 6:fb11b746ceb5 558 * state 0=disabled or 1 = enabled
sepp_nepp 6:fb11b746ceb5 559 * @return VL53L0X_ERROR_NOT_IMPLEMENTED Not implemented
sepp_nepp 6:fb11b746ceb5 560 */
sepp_nepp 6:fb11b746ceb5 561 VL53L0X_Error VL53L0X_get_x_talk_compensation_enable(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 562 uint8_t *p_x_talk_compensation_enable);
sepp_nepp 6:fb11b746ceb5 563 /**
sepp_nepp 6:fb11b746ceb5 564 * @brief Set Cross talk compensation rate
sepp_nepp 6:fb11b746ceb5 565 *
sepp_nepp 6:fb11b746ceb5 566 * @par Function Description
sepp_nepp 6:fb11b746ceb5 567 * Set Cross talk compensation rate.
sepp_nepp 6:fb11b746ceb5 568 *
sepp_nepp 6:fb11b746ceb5 569 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 570 *
sepp_nepp 6:fb11b746ceb5 571 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 572 * @param x_talk_compensation_rate_mega_cps Compensation rate in
sepp_nepp 6:fb11b746ceb5 573 * Mega counts per second
sepp_nepp 6:fb11b746ceb5 574 * (16.16 fix point) see
sepp_nepp 6:fb11b746ceb5 575 * datasheet for details
sepp_nepp 6:fb11b746ceb5 576 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 577 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 578 */
sepp_nepp 6:fb11b746ceb5 579 VL53L0X_Error VL53L0X_set_x_talk_compensation_rate_mega_cps(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 580 FixPoint1616_t x_talk_compensation_rate_mega_cps);
sepp_nepp 6:fb11b746ceb5 581
sepp_nepp 6:fb11b746ceb5 582 /**
sepp_nepp 6:fb11b746ceb5 583 * @brief Get Cross talk compensation rate
sepp_nepp 6:fb11b746ceb5 584 *
sepp_nepp 6:fb11b746ceb5 585 * @par Function Description
sepp_nepp 6:fb11b746ceb5 586 * Get Cross talk compensation rate.
sepp_nepp 6:fb11b746ceb5 587 *
sepp_nepp 6:fb11b746ceb5 588 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 589 *
sepp_nepp 6:fb11b746ceb5 590 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 591 * @param p_xtalk_compensation_rate_mega_cps Pointer to Compensation rate
sepp_nepp 6:fb11b746ceb5 592 * in Mega counts per second
sepp_nepp 6:fb11b746ceb5 593 * (16.16 fix point) see
sepp_nepp 6:fb11b746ceb5 594 * datasheet for details
sepp_nepp 6:fb11b746ceb5 595 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 596 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 597 */
sepp_nepp 6:fb11b746ceb5 598 VL53L0X_Error VL53L0X_get_x_talk_compensation_rate_mega_cps(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 599 FixPoint1616_t *p_xtalk_compensation_rate_mega_cps);
sepp_nepp 6:fb11b746ceb5 600
sepp_nepp 6:fb11b746ceb5 601 /**
sepp_nepp 6:fb11b746ceb5 602 * @brief Set a new device mode
sepp_nepp 6:fb11b746ceb5 603 * @par Function Description
sepp_nepp 6:fb11b746ceb5 604 * Set device to a new mode (ranging, histogram ...)
sepp_nepp 6:fb11b746ceb5 605 *
sepp_nepp 6:fb11b746ceb5 606 * @note This function doesn't Access to the device
sepp_nepp 6:fb11b746ceb5 607 *
sepp_nepp 6:fb11b746ceb5 608 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 609 * @param device_mode New device mode to apply
sepp_nepp 6:fb11b746ceb5 610 * Valid values are:
sepp_nepp 6:fb11b746ceb5 611 * VL53L0X_DEVICEMODE_SINGLE_RANGING
sepp_nepp 6:fb11b746ceb5 612 * VL53L0X_DEVICEMODE_CONTINUOUS_RANGING
sepp_nepp 6:fb11b746ceb5 613 * VL53L0X_DEVICEMODE_CONTINUOUS_TIMED_RANGING
sepp_nepp 6:fb11b746ceb5 614 * VL53L0X_DEVICEMODE_SINGLE_HISTOGRAM
sepp_nepp 6:fb11b746ceb5 615 * VL53L0X_HISTOGRAMMODE_REFERENCE_ONLY
sepp_nepp 6:fb11b746ceb5 616 * VL53L0X_HISTOGRAMMODE_RETURN_ONLY
sepp_nepp 6:fb11b746ceb5 617 * VL53L0X_HISTOGRAMMODE_BOTH
sepp_nepp 6:fb11b746ceb5 618 *
sepp_nepp 6:fb11b746ceb5 619 *
sepp_nepp 6:fb11b746ceb5 620 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 621 * @return VL53L0X_ERROR_MODE_NOT_SUPPORTED This error occurs when
sepp_nepp 6:fb11b746ceb5 622 * DeviceMode is not in the
sepp_nepp 6:fb11b746ceb5 623 * supported list
sepp_nepp 6:fb11b746ceb5 624 */
sepp_nepp 6:fb11b746ceb5 625 VL53L0X_Error VL53L0X_set_device_mode(VL53L0X_DEV dev, VL53L0X_DeviceModes device_mode);
sepp_nepp 6:fb11b746ceb5 626
sepp_nepp 6:fb11b746ceb5 627 /**
sepp_nepp 6:fb11b746ceb5 628 * @brief Get current new device mode
sepp_nepp 6:fb11b746ceb5 629 * @par Function Description
sepp_nepp 6:fb11b746ceb5 630 * Get actual mode of the device(ranging, histogram ...)
sepp_nepp 6:fb11b746ceb5 631 *
sepp_nepp 6:fb11b746ceb5 632 * @note This function doesn't Access to the device
sepp_nepp 6:fb11b746ceb5 633 *
sepp_nepp 6:fb11b746ceb5 634 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 635 * @param p_device_mode Pointer to current apply mode value
sepp_nepp 6:fb11b746ceb5 636 * Valid values are:
sepp_nepp 6:fb11b746ceb5 637 * VL53L0X_DEVICEMODE_SINGLE_RANGING
sepp_nepp 6:fb11b746ceb5 638 * VL53L0X_DEVICEMODE_CONTINUOUS_RANGING
sepp_nepp 6:fb11b746ceb5 639 * VL53L0X_DEVICEMODE_CONTINUOUS_TIMED_RANGING
sepp_nepp 6:fb11b746ceb5 640 * VL53L0X_DEVICEMODE_SINGLE_HISTOGRAM
sepp_nepp 6:fb11b746ceb5 641 * VL53L0X_HISTOGRAMMODE_REFERENCE_ONLY
sepp_nepp 6:fb11b746ceb5 642 * VL53L0X_HISTOGRAMMODE_RETURN_ONLY
sepp_nepp 6:fb11b746ceb5 643 * VL53L0X_HISTOGRAMMODE_BOTH
sepp_nepp 6:fb11b746ceb5 644 *
sepp_nepp 6:fb11b746ceb5 645 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 646 * @return VL53L0X_ERROR_MODE_NOT_SUPPORTED This error occurs when
sepp_nepp 6:fb11b746ceb5 647 * DeviceMode is not in the
sepp_nepp 6:fb11b746ceb5 648 * supported list
sepp_nepp 6:fb11b746ceb5 649 */
sepp_nepp 6:fb11b746ceb5 650 VL53L0X_Error VL53L0X_get_device_mode(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 651 VL53L0X_DeviceModes *p_device_mode);
sepp_nepp 6:fb11b746ceb5 652
sepp_nepp 6:fb11b746ceb5 653 /**
sepp_nepp 6:fb11b746ceb5 654 * @brief Get current configuration for GPIO pin for a given device
sepp_nepp 6:fb11b746ceb5 655 *
sepp_nepp 6:fb11b746ceb5 656 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 657 *
sepp_nepp 6:fb11b746ceb5 658 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 659 * @param pin ID of the GPIO Pin
sepp_nepp 6:fb11b746ceb5 660 * @param p_device_mode Pointer to Device Mode associated to the Gpio.
sepp_nepp 6:fb11b746ceb5 661 * @param p_functionality Pointer to Pin functionality.
sepp_nepp 6:fb11b746ceb5 662 * Refer to ::VL53L0X_GpioFunctionality
sepp_nepp 6:fb11b746ceb5 663 * @param p_polarity Pointer to interrupt polarity.
sepp_nepp 6:fb11b746ceb5 664 * Active high or active low see
sepp_nepp 6:fb11b746ceb5 665 * ::VL53L0X_InterruptPolarity
sepp_nepp 6:fb11b746ceb5 666 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 667 * @return VL53L0X_ERROR_GPIO_NOT_EXISTING Only Pin=0 is accepted.
sepp_nepp 6:fb11b746ceb5 668 * @return VL53L0X_ERROR_GPIO_FUNCTIONALITY_NOT_SUPPORTED
sepp_nepp 6:fb11b746ceb5 669 * This error occurs
sepp_nepp 6:fb11b746ceb5 670 * when Funcionality programmed is not in the supported list:
sepp_nepp 6:fb11b746ceb5 671 * Supported value are:
sepp_nepp 6:fb11b746ceb5 672 * VL53L0X_GPIOFUNCTIONALITY_OFF,
sepp_nepp 6:fb11b746ceb5 673 * VL53L0X_GPIOFUNCTIONALITY_THRESHOLD_CROSSED_LOW,
sepp_nepp 6:fb11b746ceb5 674 * VL53L0X_GPIOFUNCTIONALITY_THRESHOLD_CROSSED_HIGH,
sepp_nepp 6:fb11b746ceb5 675 * VL53L0X_GPIOFUNCTIONALITY_THRESHOLD_CROSSED_OUT,
sepp_nepp 6:fb11b746ceb5 676 * VL53L0X_GPIOFUNCTIONALITY_NEW_MEASURE_READY
sepp_nepp 6:fb11b746ceb5 677 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 678 */
sepp_nepp 6:fb11b746ceb5 679 VL53L0X_Error VL53L0X_get_gpio_config(VL53L0X_DEV dev, uint8_t pin,
sepp_nepp 6:fb11b746ceb5 680 VL53L0X_DeviceModes *p_device_mode,
sepp_nepp 6:fb11b746ceb5 681 VL53L0X_GpioFunctionality *p_functionality,
sepp_nepp 6:fb11b746ceb5 682 VL53L0X_InterruptPolarity *p_polarity);
sepp_nepp 6:fb11b746ceb5 683
sepp_nepp 6:fb11b746ceb5 684 /**
sepp_nepp 6:fb11b746ceb5 685 * @brief Set the configuration of GPIO pin for a given device
sepp_nepp 6:fb11b746ceb5 686 *
sepp_nepp 6:fb11b746ceb5 687 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 688 *
sepp_nepp 6:fb11b746ceb5 689 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 690 * @param pin ID of the GPIO Pin
sepp_nepp 6:fb11b746ceb5 691 * @param functionality Select Pin functionality.
sepp_nepp 6:fb11b746ceb5 692 * Refer to ::VL53L0X_GpioFunctionality
sepp_nepp 6:fb11b746ceb5 693 * @param device_mode Device Mode associated to the Gpio.
sepp_nepp 6:fb11b746ceb5 694 * @param polarity Set interrupt polarity. Active high
sepp_nepp 6:fb11b746ceb5 695 * or active low see ::VL53L0X_InterruptPolarity
sepp_nepp 6:fb11b746ceb5 696 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 697 * @return VL53L0X_ERROR_GPIO_NOT_EXISTING Only Pin=0 is accepted.
sepp_nepp 6:fb11b746ceb5 698 * @return VL53L0X_ERROR_GPIO_FUNCTIONALITY_NOT_SUPPORTED This error occurs
sepp_nepp 6:fb11b746ceb5 699 * when Functionality programmed is not in the supported list:
sepp_nepp 6:fb11b746ceb5 700 * Supported value are:
sepp_nepp 6:fb11b746ceb5 701 * VL53L0X_GPIOFUNCTIONALITY_OFF,
sepp_nepp 6:fb11b746ceb5 702 * VL53L0X_GPIOFUNCTIONALITY_THRESHOLD_CROSSED_LOW,
sepp_nepp 6:fb11b746ceb5 703 * VL53L0X_GPIOFUNCTIONALITY_THRESHOLD_CROSSED_HIGH,
sepp_nepp 6:fb11b746ceb5 704 VL53L0X_GPIOFUNCTIONALITY_THRESHOLD_CROSSED_OUT,
sepp_nepp 6:fb11b746ceb5 705 * VL53L0X_GPIOFUNCTIONALITY_NEW_MEASURE_READY
sepp_nepp 6:fb11b746ceb5 706 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 707 */
sepp_nepp 6:fb11b746ceb5 708 VL53L0X_Error VL53L0X_set_gpio_config(VL53L0X_DEV dev, uint8_t pin,
sepp_nepp 6:fb11b746ceb5 709 VL53L0X_DeviceModes device_mode, VL53L0X_GpioFunctionality functionality,
sepp_nepp 6:fb11b746ceb5 710 VL53L0X_InterruptPolarity polarity);
sepp_nepp 6:fb11b746ceb5 711
sepp_nepp 6:fb11b746ceb5 712 /**
sepp_nepp 6:fb11b746ceb5 713 * @brief Start device measurement
sepp_nepp 6:fb11b746ceb5 714 *
sepp_nepp 6:fb11b746ceb5 715 * @details Started measurement will depend on device parameters set through
sepp_nepp 6:fb11b746ceb5 716 * @a VL53L0X_SetParameters()
sepp_nepp 6:fb11b746ceb5 717 * This is a non-blocking function.
sepp_nepp 6:fb11b746ceb5 718 * This function will change the VL53L0X_State from VL53L0X_STATE_IDLE to
sepp_nepp 6:fb11b746ceb5 719 * VL53L0X_STATE_RUNNING.
sepp_nepp 6:fb11b746ceb5 720 *
sepp_nepp 6:fb11b746ceb5 721 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 722 *
sepp_nepp 6:fb11b746ceb5 723
sepp_nepp 6:fb11b746ceb5 724 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 725 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 726 * @return VL53L0X_ERROR_MODE_NOT_SUPPORTED This error occurs when
sepp_nepp 6:fb11b746ceb5 727 * DeviceMode programmed with @a VL53L0X_SetDeviceMode is not in the supported
sepp_nepp 6:fb11b746ceb5 728 * list:
sepp_nepp 6:fb11b746ceb5 729 * Supported mode are:
sepp_nepp 6:fb11b746ceb5 730 * VL53L0X_DEVICEMODE_SINGLE_RANGING,
sepp_nepp 6:fb11b746ceb5 731 * VL53L0X_DEVICEMODE_CONTINUOUS_RANGING,
sepp_nepp 6:fb11b746ceb5 732 * VL53L0X_DEVICEMODE_CONTINUOUS_TIMED_RANGING
sepp_nepp 6:fb11b746ceb5 733 * @return VL53L0X_ERROR_TIME_OUT Time out on start measurement
sepp_nepp 6:fb11b746ceb5 734 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 735 */
sepp_nepp 6:fb11b746ceb5 736 VL53L0X_Error VL53L0X_start_measurement(VL53L0X_DEV dev);
sepp_nepp 6:fb11b746ceb5 737
sepp_nepp 6:fb11b746ceb5 738 /**
sepp_nepp 6:fb11b746ceb5 739 * @brief Stop device measurement
sepp_nepp 6:fb11b746ceb5 740 *
sepp_nepp 6:fb11b746ceb5 741 * @details Will set the device in standby mode at end of current measurement\n
sepp_nepp 6:fb11b746ceb5 742 * Not necessary in single mode as device shall return automatically
sepp_nepp 6:fb11b746ceb5 743 * in standby mode at end of measurement.
sepp_nepp 6:fb11b746ceb5 744 * This function will change the VL53L0X_State from VL53L0X_STATE_RUNNING
sepp_nepp 6:fb11b746ceb5 745 * to VL53L0X_STATE_IDLE.
sepp_nepp 6:fb11b746ceb5 746 *
sepp_nepp 6:fb11b746ceb5 747 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 748 *
sepp_nepp 6:fb11b746ceb5 749 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 750 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 751 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 752 */
sepp_nepp 6:fb11b746ceb5 753 VL53L0X_Error VL53L0X_stop_measurement(VL53L0X_DEV dev);
sepp_nepp 6:fb11b746ceb5 754
sepp_nepp 6:fb11b746ceb5 755 /**
sepp_nepp 6:fb11b746ceb5 756 * @brief Return device stop completion status
sepp_nepp 6:fb11b746ceb5 757 *
sepp_nepp 6:fb11b746ceb5 758 * @par Function Description
sepp_nepp 6:fb11b746ceb5 759 * Returns stop completiob status.
sepp_nepp 6:fb11b746ceb5 760 * User shall call this function after a stop command
sepp_nepp 6:fb11b746ceb5 761 *
sepp_nepp 6:fb11b746ceb5 762 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 763 *
sepp_nepp 6:fb11b746ceb5 764 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 765 * @param p_stop_status Pointer to status variable to update
sepp_nepp 6:fb11b746ceb5 766 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 767 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 768 */
sepp_nepp 6:fb11b746ceb5 769 VL53L0X_Error VL53L0X_get_stop_completed_status(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 770 uint32_t *p_stop_status);
sepp_nepp 6:fb11b746ceb5 771
sepp_nepp 6:fb11b746ceb5 772 /**
sepp_nepp 6:fb11b746ceb5 773 * @brief Return Measurement Data Ready
sepp_nepp 6:fb11b746ceb5 774 *
sepp_nepp 6:fb11b746ceb5 775 * @par Function Description
sepp_nepp 6:fb11b746ceb5 776 * This function indicate that a measurement data is ready.
sepp_nepp 6:fb11b746ceb5 777 * This function check if interrupt mode is used then check is done accordingly.
sepp_nepp 6:fb11b746ceb5 778 * If perform function clear the interrupt, this function will not work,
sepp_nepp 6:fb11b746ceb5 779 * like in case of @a VL53L0X_PerformSingleRangingMeasurement().
sepp_nepp 6:fb11b746ceb5 780 * The previous function is blocking function, VL53L0X_GetMeasurementDataReady
sepp_nepp 6:fb11b746ceb5 781 * is used for non-blocking capture.
sepp_nepp 6:fb11b746ceb5 782 *
sepp_nepp 6:fb11b746ceb5 783 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 784 *
sepp_nepp 6:fb11b746ceb5 785 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 786 * @param p_measurement_data_ready Pointer to Measurement Data Ready.
sepp_nepp 6:fb11b746ceb5 787 * 0=data not ready, 1 = data ready
sepp_nepp 6:fb11b746ceb5 788 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 789 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 790 */
sepp_nepp 6:fb11b746ceb5 791 VL53L0X_Error VL53L0X_get_measurement_data_ready(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 792 uint8_t *p_measurement_data_ready);
sepp_nepp 6:fb11b746ceb5 793
sepp_nepp 6:fb11b746ceb5 794 /**
sepp_nepp 6:fb11b746ceb5 795 * @brief Retrieve the measurements from device for a given setup
sepp_nepp 6:fb11b746ceb5 796 *
sepp_nepp 6:fb11b746ceb5 797 * @par Function Description
sepp_nepp 6:fb11b746ceb5 798 * Get data from last successful Ranging measurement
sepp_nepp 6:fb11b746ceb5 799 * @warning USER should take care about @a VL53L0X_GetNumberOfROIZones()
sepp_nepp 6:fb11b746ceb5 800 * before get data.
sepp_nepp 6:fb11b746ceb5 801 * PAL will fill a NumberOfROIZones times the corresponding data
sepp_nepp 6:fb11b746ceb5 802 * structure used in the measurement function.
sepp_nepp 6:fb11b746ceb5 803 *
sepp_nepp 6:fb11b746ceb5 804 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 805 *
sepp_nepp 6:fb11b746ceb5 806 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 807 * @param p_ranging_measurement_data Pointer to the data structure to fill up.
sepp_nepp 6:fb11b746ceb5 808 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 809 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 810 */
sepp_nepp 6:fb11b746ceb5 811 VL53L0X_Error VL53L0X_get_ranging_measurement_data(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 812 VL53L0X_RangingMeasurementData_t *p_ranging_measurement_data);
sepp_nepp 6:fb11b746ceb5 813
sepp_nepp 6:fb11b746ceb5 814 /**
sepp_nepp 6:fb11b746ceb5 815 * @brief Clear given system interrupt condition
sepp_nepp 6:fb11b746ceb5 816 *
sepp_nepp 6:fb11b746ceb5 817 * @par Function Description
sepp_nepp 6:fb11b746ceb5 818 * Clear given interrupt(s).
sepp_nepp 6:fb11b746ceb5 819 *
sepp_nepp 6:fb11b746ceb5 820 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 821 *
sepp_nepp 6:fb11b746ceb5 822 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 823 * @param interrupt_mask Mask of interrupts to clear
sepp_nepp 6:fb11b746ceb5 824 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 825 * @return VL53L0X_ERROR_INTERRUPT_NOT_CLEARED Cannot clear interrupts
sepp_nepp 6:fb11b746ceb5 826 *
sepp_nepp 6:fb11b746ceb5 827 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 828 */
sepp_nepp 6:fb11b746ceb5 829 VL53L0X_Error VL53L0X_clear_interrupt_mask(VL53L0X_DEV dev, uint32_t interrupt_mask);
sepp_nepp 6:fb11b746ceb5 830
sepp_nepp 6:fb11b746ceb5 831 /**
sepp_nepp 6:fb11b746ceb5 832 * @brief Return device interrupt status
sepp_nepp 6:fb11b746ceb5 833 *
sepp_nepp 6:fb11b746ceb5 834 * @par Function Description
sepp_nepp 6:fb11b746ceb5 835 * Returns currently raised interrupts by the device.
sepp_nepp 6:fb11b746ceb5 836 * User shall be able to activate/deactivate interrupts through
sepp_nepp 6:fb11b746ceb5 837 * @a VL53L0X_SetGpioConfig()
sepp_nepp 6:fb11b746ceb5 838 *
sepp_nepp 6:fb11b746ceb5 839 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 840 *
sepp_nepp 6:fb11b746ceb5 841 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 842 * @param p_interrupt_mask_status Pointer to status variable to update
sepp_nepp 6:fb11b746ceb5 843 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 844 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 845 */
sepp_nepp 6:fb11b746ceb5 846 VL53L0X_Error VL53L0X_get_interrupt_mask_status(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 847 uint32_t *p_interrupt_mask_status);
sepp_nepp 6:fb11b746ceb5 848
sepp_nepp 6:fb11b746ceb5 849 /**
sepp_nepp 6:fb11b746ceb5 850 * @brief Performs a single ranging measurement and retrieve the ranging
sepp_nepp 6:fb11b746ceb5 851 * measurement data
sepp_nepp 6:fb11b746ceb5 852 *
sepp_nepp 6:fb11b746ceb5 853 * @par Function Description
sepp_nepp 6:fb11b746ceb5 854 * This function will change the device mode to VL53L0X_DEVICEMODE_SINGLE_RANGING
sepp_nepp 6:fb11b746ceb5 855 * with @a VL53L0X_SetDeviceMode(),
sepp_nepp 6:fb11b746ceb5 856 * It performs measurement with @a VL53L0X_PerformSingleMeasurement()
sepp_nepp 6:fb11b746ceb5 857 * It get data from last successful Ranging measurement with
sepp_nepp 6:fb11b746ceb5 858 * @a VL53L0X_GetRangingMeasurementData.
sepp_nepp 6:fb11b746ceb5 859 * Finally it clear the interrupt with @a VL53L0X_ClearInterruptMask().
sepp_nepp 6:fb11b746ceb5 860 *
sepp_nepp 6:fb11b746ceb5 861 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 862 *
sepp_nepp 6:fb11b746ceb5 863 * @note This function change the device mode to
sepp_nepp 6:fb11b746ceb5 864 * VL53L0X_DEVICEMODE_SINGLE_RANGING
sepp_nepp 6:fb11b746ceb5 865 *
sepp_nepp 6:fb11b746ceb5 866 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 867 * @param p_ranging_measurement_data Pointer to the data structure to fill up.
sepp_nepp 6:fb11b746ceb5 868 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 869 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 870 */
sepp_nepp 6:fb11b746ceb5 871 VL53L0X_Error VL53L0X_perform_single_ranging_measurement(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 872 VL53L0X_RangingMeasurementData_t *p_ranging_measurement_data);
sepp_nepp 6:fb11b746ceb5 873
sepp_nepp 6:fb11b746ceb5 874 /**
sepp_nepp 6:fb11b746ceb5 875 * @brief Single shot measurement.
sepp_nepp 6:fb11b746ceb5 876 *
sepp_nepp 6:fb11b746ceb5 877 * @par Function Description
sepp_nepp 6:fb11b746ceb5 878 * Perform simple measurement sequence (Start measure, Wait measure to end,
sepp_nepp 6:fb11b746ceb5 879 * and returns when measurement is done).
sepp_nepp 6:fb11b746ceb5 880 * Once function returns, user can get valid data by calling
sepp_nepp 6:fb11b746ceb5 881 * VL53L0X_GetRangingMeasurement or VL53L0X_GetHistogramMeasurement
sepp_nepp 6:fb11b746ceb5 882 * depending on defined measurement mode
sepp_nepp 6:fb11b746ceb5 883 * User should Clear the interrupt in case this are enabled by using the
sepp_nepp 6:fb11b746ceb5 884 * function VL53L0X_ClearInterruptMask().
sepp_nepp 6:fb11b746ceb5 885 *
sepp_nepp 6:fb11b746ceb5 886 * @warning This function is a blocking function
sepp_nepp 6:fb11b746ceb5 887 *
sepp_nepp 6:fb11b746ceb5 888 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 889 *
sepp_nepp 6:fb11b746ceb5 890 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 891 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 892 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 893 */
sepp_nepp 6:fb11b746ceb5 894 VL53L0X_Error VL53L0X_perform_single_measurement(VL53L0X_DEV dev);
sepp_nepp 6:fb11b746ceb5 895
sepp_nepp 6:fb11b746ceb5 896 /**
sepp_nepp 6:fb11b746ceb5 897 * @brief Read current status of the error register for the selected device
sepp_nepp 6:fb11b746ceb5 898 *
sepp_nepp 6:fb11b746ceb5 899 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 900 *
sepp_nepp 6:fb11b746ceb5 901 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 902 * @param p_device_error_status Pointer to current error code of the device
sepp_nepp 6:fb11b746ceb5 903 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 904 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 905 */
sepp_nepp 6:fb11b746ceb5 906 VL53L0X_Error VL53L0X_get_device_error_status(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 907 VL53L0X_DeviceError *p_device_error_status);
sepp_nepp 6:fb11b746ceb5 908
sepp_nepp 6:fb11b746ceb5 909 /**
sepp_nepp 6:fb11b746ceb5 910 * @brief Human readable error string for a given Error Code
sepp_nepp 6:fb11b746ceb5 911 *
sepp_nepp 6:fb11b746ceb5 912 * @note This function doesn't access to the device
sepp_nepp 6:fb11b746ceb5 913 *
sepp_nepp 6:fb11b746ceb5 914 * @param error_code The error code as stored on ::VL53L0X_DeviceError
sepp_nepp 6:fb11b746ceb5 915 * @param p_device_error_string The error string corresponding to the ErrorCode
sepp_nepp 6:fb11b746ceb5 916 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 917 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 918 */
sepp_nepp 6:fb11b746ceb5 919 VL53L0X_Error VL53L0X_get_device_error_string(
sepp_nepp 6:fb11b746ceb5 920 VL53L0X_DeviceError error_code, char *p_device_error_string);
sepp_nepp 6:fb11b746ceb5 921
sepp_nepp 6:fb11b746ceb5 922 /**
sepp_nepp 6:fb11b746ceb5 923 * @brief Human readable Range Status string for a given RangeStatus
sepp_nepp 6:fb11b746ceb5 924 *
sepp_nepp 6:fb11b746ceb5 925 * @note This function doesn't access to the device
sepp_nepp 6:fb11b746ceb5 926 *
sepp_nepp 6:fb11b746ceb5 927 * @param range_status The RangeStatus code as stored on
sepp_nepp 6:fb11b746ceb5 928 * @a VL53L0X_RangingMeasurementData_t
sepp_nepp 6:fb11b746ceb5 929 * @param p_range_status_string The returned RangeStatus string.
sepp_nepp 6:fb11b746ceb5 930 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 931 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 932 */
sepp_nepp 6:fb11b746ceb5 933 VL53L0X_Error VL53L0X_get_range_status_string(uint8_t range_status,
sepp_nepp 6:fb11b746ceb5 934 char *p_range_status_string);
sepp_nepp 6:fb11b746ceb5 935
sepp_nepp 6:fb11b746ceb5 936 VL53L0X_Error VL53L0X_get_total_signal_rate(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 937 VL53L0X_RangingMeasurementData_t *p_ranging_measurement_data,
sepp_nepp 6:fb11b746ceb5 938 FixPoint1616_t *p_total_signal_rate_mcps);
sepp_nepp 6:fb11b746ceb5 939
sepp_nepp 6:fb11b746ceb5 940 VL53L0X_Error VL53L0X_get_total_xtalk_rate(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 941 VL53L0X_RangingMeasurementData_t *p_ranging_measurement_data,
sepp_nepp 6:fb11b746ceb5 942 FixPoint1616_t *p_total_xtalk_rate_mcps);
sepp_nepp 6:fb11b746ceb5 943
sepp_nepp 6:fb11b746ceb5 944 /**
sepp_nepp 6:fb11b746ceb5 945 * @brief Get Ranging Timing Budget in microseconds
sepp_nepp 6:fb11b746ceb5 946 *
sepp_nepp 6:fb11b746ceb5 947 * @par Function Description
sepp_nepp 6:fb11b746ceb5 948 * Returns the programmed the maximum time allowed by the user to the
sepp_nepp 6:fb11b746ceb5 949 * device to run a full ranging sequence for the current mode
sepp_nepp 6:fb11b746ceb5 950 * (ranging, histogram, ASL ...)
sepp_nepp 6:fb11b746ceb5 951 *
sepp_nepp 6:fb11b746ceb5 952 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 953 *
sepp_nepp 6:fb11b746ceb5 954 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 955 * @param p_measurement_timing_budget_micro_seconds Max measurement time in
sepp_nepp 6:fb11b746ceb5 956 * microseconds.
sepp_nepp 6:fb11b746ceb5 957 * Valid values are:
sepp_nepp 6:fb11b746ceb5 958 * >= 17000 microsecs when wraparound enabled
sepp_nepp 6:fb11b746ceb5 959 * >= 12000 microsecs when wraparound disabled
sepp_nepp 6:fb11b746ceb5 960 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 961 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 962 */
sepp_nepp 6:fb11b746ceb5 963 VL53L0X_Error VL53L0X_get_measurement_timing_budget_micro_seconds(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 964 uint32_t *p_measurement_timing_budget_micro_seconds);
sepp_nepp 6:fb11b746ceb5 965
sepp_nepp 6:fb11b746ceb5 966 /**
sepp_nepp 6:fb11b746ceb5 967 * @brief Set Ranging Timing Budget in microseconds
sepp_nepp 6:fb11b746ceb5 968 *
sepp_nepp 6:fb11b746ceb5 969 * @par Function Description
sepp_nepp 6:fb11b746ceb5 970 * Defines the maximum time allowed by the user to the device to run a
sepp_nepp 6:fb11b746ceb5 971 * full ranging sequence for the current mode (ranging, histogram, ASL ...)
sepp_nepp 6:fb11b746ceb5 972 *
sepp_nepp 6:fb11b746ceb5 973 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 974 *
sepp_nepp 6:fb11b746ceb5 975 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 976 * @param measurement_timing_budget_micro_seconds Max measurement time in
sepp_nepp 6:fb11b746ceb5 977 * microseconds.
sepp_nepp 6:fb11b746ceb5 978 * Valid values are:
sepp_nepp 6:fb11b746ceb5 979 * >= 17000 microsecs when wraparound enabled
sepp_nepp 6:fb11b746ceb5 980 * >= 12000 microsecs when wraparound disabled
sepp_nepp 6:fb11b746ceb5 981 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 982 * @return VL53L0X_ERROR_INVALID_PARAMS This error is returned if
sepp_nepp 6:fb11b746ceb5 983 MeasurementTimingBudgetMicroSeconds out of range
sepp_nepp 6:fb11b746ceb5 984 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 985 */
sepp_nepp 6:fb11b746ceb5 986 VL53L0X_Error VL53L0X_set_measurement_timing_budget_micro_seconds(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 987 uint32_t measurement_timing_budget_micro_seconds);
sepp_nepp 6:fb11b746ceb5 988
sepp_nepp 6:fb11b746ceb5 989 /**
sepp_nepp 6:fb11b746ceb5 990 * @brief Get specific limit check enable state
sepp_nepp 6:fb11b746ceb5 991 *
sepp_nepp 6:fb11b746ceb5 992 * @par Function Description
sepp_nepp 6:fb11b746ceb5 993 * This function get the enable state of a specific limit check.
sepp_nepp 6:fb11b746ceb5 994 * The limit check is identified with the LimitCheckId.
sepp_nepp 6:fb11b746ceb5 995 *
sepp_nepp 6:fb11b746ceb5 996 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 997 *
sepp_nepp 6:fb11b746ceb5 998 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 999 * @param limit_check_id Limit Check ID
sepp_nepp 6:fb11b746ceb5 1000 * (0<= LimitCheckId < VL53L0X_GetNumberOfLimitCheck() ).
sepp_nepp 6:fb11b746ceb5 1001 * @param p_limit_check_enable Pointer to the check limit enable
sepp_nepp 6:fb11b746ceb5 1002 * value.
sepp_nepp 6:fb11b746ceb5 1003 * if 1 the check limit
sepp_nepp 6:fb11b746ceb5 1004 * corresponding to LimitCheckId is Enabled
sepp_nepp 6:fb11b746ceb5 1005 * if 0 the check limit
sepp_nepp 6:fb11b746ceb5 1006 * corresponding to LimitCheckId is disabled
sepp_nepp 6:fb11b746ceb5 1007 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 1008 * @return VL53L0X_ERROR_INVALID_PARAMS This error is returned
sepp_nepp 6:fb11b746ceb5 1009 * when LimitCheckId value is out of range.
sepp_nepp 6:fb11b746ceb5 1010 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 1011 */
sepp_nepp 6:fb11b746ceb5 1012 VL53L0X_Error VL53L0X_get_limit_check_enable(VL53L0X_DEV dev, uint16_t limit_check_id,
sepp_nepp 6:fb11b746ceb5 1013 uint8_t *p_limit_check_enable);
sepp_nepp 6:fb11b746ceb5 1014
sepp_nepp 6:fb11b746ceb5 1015 /**
sepp_nepp 6:fb11b746ceb5 1016 * @brief Enable/Disable a specific limit check
sepp_nepp 6:fb11b746ceb5 1017 *
sepp_nepp 6:fb11b746ceb5 1018 * @par Function Description
sepp_nepp 6:fb11b746ceb5 1019 * This function Enable/Disable a specific limit check.
sepp_nepp 6:fb11b746ceb5 1020 * The limit check is identified with the LimitCheckId.
sepp_nepp 6:fb11b746ceb5 1021 *
sepp_nepp 6:fb11b746ceb5 1022 * @note This function doesn't Access to the device
sepp_nepp 6:fb11b746ceb5 1023 *
sepp_nepp 6:fb11b746ceb5 1024 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 1025 * @param limit_check_id Limit Check ID
sepp_nepp 6:fb11b746ceb5 1026 * (0<= LimitCheckId < VL53L0X_GetNumberOfLimitCheck() ).
sepp_nepp 6:fb11b746ceb5 1027 * @param limit_check_enable if 1 the check limit
sepp_nepp 6:fb11b746ceb5 1028 * corresponding to LimitCheckId is Enabled
sepp_nepp 6:fb11b746ceb5 1029 * if 0 the check limit
sepp_nepp 6:fb11b746ceb5 1030 * corresponding to LimitCheckId is disabled
sepp_nepp 6:fb11b746ceb5 1031 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 1032 * @return VL53L0X_ERROR_INVALID_PARAMS This error is returned
sepp_nepp 6:fb11b746ceb5 1033 * when LimitCheckId value is out of range.
sepp_nepp 6:fb11b746ceb5 1034 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 1035 */
sepp_nepp 6:fb11b746ceb5 1036 VL53L0X_Error VL53L0X_set_limit_check_enable(VL53L0X_DEV dev, uint16_t limit_check_id,
sepp_nepp 6:fb11b746ceb5 1037 uint8_t limit_check_enable);
sepp_nepp 6:fb11b746ceb5 1038
sepp_nepp 6:fb11b746ceb5 1039 /**
sepp_nepp 6:fb11b746ceb5 1040 * @brief Get a specific limit check value
sepp_nepp 6:fb11b746ceb5 1041 *
sepp_nepp 6:fb11b746ceb5 1042 * @par Function Description
sepp_nepp 6:fb11b746ceb5 1043 * This function get a specific limit check value from device then it updates
sepp_nepp 6:fb11b746ceb5 1044 * internal values and check enables.
sepp_nepp 6:fb11b746ceb5 1045 * The limit check is identified with the LimitCheckId.
sepp_nepp 6:fb11b746ceb5 1046 *
sepp_nepp 6:fb11b746ceb5 1047 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 1048 *
sepp_nepp 6:fb11b746ceb5 1049 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 1050 * @param limit_check_id Limit Check ID
sepp_nepp 6:fb11b746ceb5 1051 * (0<= LimitCheckId < VL53L0X_GetNumberOfLimitCheck() ).
sepp_nepp 6:fb11b746ceb5 1052 * @param p_limit_check_value Pointer to Limit
sepp_nepp 6:fb11b746ceb5 1053 * check Value for a given LimitCheckId.
sepp_nepp 6:fb11b746ceb5 1054 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 1055 * @return VL53L0X_ERROR_INVALID_PARAMS This error is returned
sepp_nepp 6:fb11b746ceb5 1056 * when LimitCheckId value is out of range.
sepp_nepp 6:fb11b746ceb5 1057 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 1058 */
sepp_nepp 6:fb11b746ceb5 1059 VL53L0X_Error VL53L0X_get_limit_check_value(VL53L0X_DEV dev, uint16_t limit_check_id,
sepp_nepp 6:fb11b746ceb5 1060 FixPoint1616_t *p_limit_check_value);
sepp_nepp 6:fb11b746ceb5 1061
sepp_nepp 6:fb11b746ceb5 1062 /**
sepp_nepp 6:fb11b746ceb5 1063 * @brief Set a specific limit check value
sepp_nepp 6:fb11b746ceb5 1064 *
sepp_nepp 6:fb11b746ceb5 1065 * @par Function Description
sepp_nepp 6:fb11b746ceb5 1066 * This function set a specific limit check value.
sepp_nepp 6:fb11b746ceb5 1067 * The limit check is identified with the LimitCheckId.
sepp_nepp 6:fb11b746ceb5 1068 *
sepp_nepp 6:fb11b746ceb5 1069 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 1070 *
sepp_nepp 6:fb11b746ceb5 1071 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 1072 * @param limit_check_id Limit Check ID
sepp_nepp 6:fb11b746ceb5 1073 * (0<= LimitCheckId < VL53L0X_GetNumberOfLimitCheck() ).
sepp_nepp 6:fb11b746ceb5 1074 * @param limit_check_value Limit check Value for a given
sepp_nepp 6:fb11b746ceb5 1075 * LimitCheckId
sepp_nepp 6:fb11b746ceb5 1076 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 1077 * @return VL53L0X_ERROR_INVALID_PARAMS This error is returned when either
sepp_nepp 6:fb11b746ceb5 1078 * LimitCheckId or LimitCheckValue value is out of range.
sepp_nepp 6:fb11b746ceb5 1079 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 1080 */
sepp_nepp 6:fb11b746ceb5 1081 VL53L0X_Error VL53L0X_set_limit_check_value(VL53L0X_DEV dev, uint16_t limit_check_id,
sepp_nepp 6:fb11b746ceb5 1082 FixPoint1616_t limit_check_value);
sepp_nepp 6:fb11b746ceb5 1083
sepp_nepp 6:fb11b746ceb5 1084 /**
sepp_nepp 6:fb11b746ceb5 1085 * @brief Get the current value of the signal used for the limit check
sepp_nepp 6:fb11b746ceb5 1086 *
sepp_nepp 6:fb11b746ceb5 1087 * @par Function Description
sepp_nepp 6:fb11b746ceb5 1088 * This function get a the current value of the signal used for the limit check.
sepp_nepp 6:fb11b746ceb5 1089 * To obtain the latest value you should run a ranging before.
sepp_nepp 6:fb11b746ceb5 1090 * The value reported is linked to the limit check identified with the
sepp_nepp 6:fb11b746ceb5 1091 * LimitCheckId.
sepp_nepp 6:fb11b746ceb5 1092 *
sepp_nepp 6:fb11b746ceb5 1093 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 1094 *
sepp_nepp 6:fb11b746ceb5 1095 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 1096 * @param limit_check_id Limit Check ID
sepp_nepp 6:fb11b746ceb5 1097 * (0<= LimitCheckId < VL53L0X_GetNumberOfLimitCheck() ).
sepp_nepp 6:fb11b746ceb5 1098 * @param p_limit_check_current Pointer to current Value for a
sepp_nepp 6:fb11b746ceb5 1099 * given LimitCheckId.
sepp_nepp 6:fb11b746ceb5 1100 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 1101 * @return VL53L0X_ERROR_INVALID_PARAMS This error is returned when
sepp_nepp 6:fb11b746ceb5 1102 * LimitCheckId value is out of range.
sepp_nepp 6:fb11b746ceb5 1103 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 1104 */
sepp_nepp 6:fb11b746ceb5 1105 VL53L0X_Error VL53L0X_get_limit_check_current(VL53L0X_DEV dev, uint16_t limit_check_id,
sepp_nepp 6:fb11b746ceb5 1106 FixPoint1616_t *p_limit_check_current);
sepp_nepp 6:fb11b746ceb5 1107
sepp_nepp 6:fb11b746ceb5 1108 /**
sepp_nepp 6:fb11b746ceb5 1109 * @brief Return a the Status of the specified check limit
sepp_nepp 6:fb11b746ceb5 1110 *
sepp_nepp 6:fb11b746ceb5 1111 * @par Function Description
sepp_nepp 6:fb11b746ceb5 1112 * This function returns the Status of the specified check limit.
sepp_nepp 6:fb11b746ceb5 1113 * The value indicate if the check is fail or not.
sepp_nepp 6:fb11b746ceb5 1114 * The limit check is identified with the LimitCheckId.
sepp_nepp 6:fb11b746ceb5 1115 *
sepp_nepp 6:fb11b746ceb5 1116 * @note This function doesn't Access to the device
sepp_nepp 6:fb11b746ceb5 1117 *
sepp_nepp 6:fb11b746ceb5 1118 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 1119 * @param limit_check_id Limit Check ID
sepp_nepp 6:fb11b746ceb5 1120 (0<= LimitCheckId < VL53L0X_GetNumberOfLimitCheck() ).
sepp_nepp 6:fb11b746ceb5 1121 * @param p_limit_check_status Pointer to the
sepp_nepp 6:fb11b746ceb5 1122 Limit Check Status of the given check limit.
sepp_nepp 6:fb11b746ceb5 1123 * LimitCheckStatus :
sepp_nepp 6:fb11b746ceb5 1124 * 0 the check is not fail
sepp_nepp 6:fb11b746ceb5 1125 * 1 the check if fail or not enabled
sepp_nepp 6:fb11b746ceb5 1126 *
sepp_nepp 6:fb11b746ceb5 1127 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 1128 * @return VL53L0X_ERROR_INVALID_PARAMS This error is
sepp_nepp 6:fb11b746ceb5 1129 returned when LimitCheckId value is out of range.
sepp_nepp 6:fb11b746ceb5 1130 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 1131 */
sepp_nepp 6:fb11b746ceb5 1132 VL53L0X_Error VL53L0X_get_limit_check_status(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 1133 uint16_t limit_check_id, uint8_t *p_limit_check_status);
sepp_nepp 6:fb11b746ceb5 1134
sepp_nepp 6:fb11b746ceb5 1135 /**
sepp_nepp 6:fb11b746ceb5 1136 * Get continuous mode Inter-Measurement period in milliseconds
sepp_nepp 6:fb11b746ceb5 1137 *
sepp_nepp 6:fb11b746ceb5 1138 * @par Function Description
sepp_nepp 6:fb11b746ceb5 1139 * When trying to set too short time return INVALID_PARAMS minimal value
sepp_nepp 6:fb11b746ceb5 1140 *
sepp_nepp 6:fb11b746ceb5 1141 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 1142 *
sepp_nepp 6:fb11b746ceb5 1143 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 1144 * @param p_inter_measurement_period_milli_seconds Pointer to programmed
sepp_nepp 6:fb11b746ceb5 1145 * Inter-Measurement Period in milliseconds.
sepp_nepp 6:fb11b746ceb5 1146 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 1147 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 1148 */
sepp_nepp 6:fb11b746ceb5 1149 VL53L0X_Error VL53L0X_get_inter_measurement_period_milli_seconds(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 1150 uint32_t *p_inter_measurement_period_milli_seconds);
sepp_nepp 6:fb11b746ceb5 1151
sepp_nepp 6:fb11b746ceb5 1152 /**
sepp_nepp 6:fb11b746ceb5 1153 * Program continuous mode Inter-Measurement period in milliseconds
sepp_nepp 6:fb11b746ceb5 1154 *
sepp_nepp 6:fb11b746ceb5 1155 * @par Function Description
sepp_nepp 6:fb11b746ceb5 1156 * When trying to set too short time return INVALID_PARAMS minimal value
sepp_nepp 6:fb11b746ceb5 1157 *
sepp_nepp 6:fb11b746ceb5 1158 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 1159 *
sepp_nepp 6:fb11b746ceb5 1160 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 1161 * @param inter_measurement_period_milli_seconds Inter-Measurement Period in ms.
sepp_nepp 6:fb11b746ceb5 1162 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 1163 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 1164 */
sepp_nepp 6:fb11b746ceb5 1165 VL53L0X_Error VL53L0X_set_inter_measurement_period_milli_seconds(
sepp_nepp 6:fb11b746ceb5 1166 VL53L0X_DEV dev, uint32_t inter_measurement_period_milli_seconds);
sepp_nepp 6:fb11b746ceb5 1167
sepp_nepp 6:fb11b746ceb5 1168 /**
sepp_nepp 6:fb11b746ceb5 1169 * @brief Set new device address
sepp_nepp 6:fb11b746ceb5 1170 *
sepp_nepp 6:fb11b746ceb5 1171 * After completion the device will answer to the new address programmed.
sepp_nepp 6:fb11b746ceb5 1172 * This function should be called when several devices are used in parallel
sepp_nepp 6:fb11b746ceb5 1173 * before start programming the sensor.
sepp_nepp 6:fb11b746ceb5 1174 * When a single device us used, there is no need to call this function.
sepp_nepp 6:fb11b746ceb5 1175 *
sepp_nepp 6:fb11b746ceb5 1176 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 1177 *
sepp_nepp 6:fb11b746ceb5 1178 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 1179 * @param device_address The new Device address
sepp_nepp 6:fb11b746ceb5 1180 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 1181 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 1182 */
sepp_nepp 6:fb11b746ceb5 1183 VL53L0X_Error VL53L0X_set_device_address(VL53L0X_DEV dev, uint8_t device_address);
sepp_nepp 6:fb11b746ceb5 1184
sepp_nepp 6:fb11b746ceb5 1185 /**
sepp_nepp 6:fb11b746ceb5 1186 * @brief Do an hard reset or soft reset (depending on implementation) of the
sepp_nepp 6:fb11b746ceb5 1187 * device \nAfter call of this function, device must be in same state as right
sepp_nepp 6:fb11b746ceb5 1188 * after a power-up sequence.This function will change the VL53L0X_State to
sepp_nepp 6:fb11b746ceb5 1189 * VL53L0X_STATE_POWERDOWN.
sepp_nepp 6:fb11b746ceb5 1190 *
sepp_nepp 6:fb11b746ceb5 1191 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 1192 *
sepp_nepp 6:fb11b746ceb5 1193 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 1194 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 1195 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 1196 */
sepp_nepp 6:fb11b746ceb5 1197 VL53L0X_Error VL53L0X_reset_device(VL53L0X_DEV dev);
sepp_nepp 6:fb11b746ceb5 1198
sepp_nepp 6:fb11b746ceb5 1199 /**
sepp_nepp 6:fb11b746ceb5 1200 * @brief Get setup of Wrap around Check
sepp_nepp 6:fb11b746ceb5 1201 *
sepp_nepp 6:fb11b746ceb5 1202 * @par Function Description
sepp_nepp 6:fb11b746ceb5 1203 * This function get the wrapAround check enable parameters
sepp_nepp 6:fb11b746ceb5 1204 *
sepp_nepp 6:fb11b746ceb5 1205 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 1206 *
sepp_nepp 6:fb11b746ceb5 1207 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 1208 * @param p_wrap_around_check_enable Pointer to the Wrap around Check state
sepp_nepp 6:fb11b746ceb5 1209 * 0=disabled or 1 = enabled
sepp_nepp 6:fb11b746ceb5 1210 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 1211 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 1212 */
sepp_nepp 6:fb11b746ceb5 1213 VL53L0X_Error VL53L0X_get_wrap_around_check_enable(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 1214 uint8_t *p_wrap_around_check_enable);
sepp_nepp 6:fb11b746ceb5 1215
sepp_nepp 6:fb11b746ceb5 1216 /**
sepp_nepp 6:fb11b746ceb5 1217 * @brief Enable (or disable) Wrap around Check
sepp_nepp 6:fb11b746ceb5 1218 *
sepp_nepp 6:fb11b746ceb5 1219 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 1220 *
sepp_nepp 6:fb11b746ceb5 1221 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 1222 * @param wrap_around_check_enable Wrap around Check to be set
sepp_nepp 6:fb11b746ceb5 1223 * 0=disabled, other = enabled
sepp_nepp 6:fb11b746ceb5 1224 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 1225 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 1226 */
sepp_nepp 6:fb11b746ceb5 1227 VL53L0X_Error VL53L0X_set_wrap_around_check_enable(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 1228 uint8_t wrap_around_check_enable);
sepp_nepp 6:fb11b746ceb5 1229
sepp_nepp 6:fb11b746ceb5 1230 /**
sepp_nepp 6:fb11b746ceb5 1231 * @brief Gets the VCSEL pulse period.
sepp_nepp 6:fb11b746ceb5 1232 *
sepp_nepp 6:fb11b746ceb5 1233 * @par Function Description
sepp_nepp 6:fb11b746ceb5 1234 * This function retrieves the VCSEL pulse period for the given period type.
sepp_nepp 6:fb11b746ceb5 1235 *
sepp_nepp 6:fb11b746ceb5 1236 * @note This function Accesses the device
sepp_nepp 6:fb11b746ceb5 1237 *
sepp_nepp 6:fb11b746ceb5 1238 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 1239 * @param vcsel_period_type VCSEL period identifier (pre-range|final).
sepp_nepp 6:fb11b746ceb5 1240 * @param p_vcsel_pulse_period_pclk Pointer to VCSEL period value.
sepp_nepp 6:fb11b746ceb5 1241 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 1242 * @return VL53L0X_ERROR_INVALID_PARAMS Error VcselPeriodType parameter not
sepp_nepp 6:fb11b746ceb5 1243 * supported.
sepp_nepp 6:fb11b746ceb5 1244 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 1245 */
sepp_nepp 6:fb11b746ceb5 1246 VL53L0X_Error VL53L0X_get_vcsel_pulse_period(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 1247 VL53L0X_VcselPeriod vcsel_period_type, uint8_t *p_vcsel_pulse_period_pclk);
sepp_nepp 6:fb11b746ceb5 1248
sepp_nepp 6:fb11b746ceb5 1249 /**
sepp_nepp 6:fb11b746ceb5 1250 * @brief Sets the VCSEL pulse period.
sepp_nepp 6:fb11b746ceb5 1251 *
sepp_nepp 6:fb11b746ceb5 1252 * @par Function Description
sepp_nepp 6:fb11b746ceb5 1253 * This function retrieves the VCSEL pulse period for the given period type.
sepp_nepp 6:fb11b746ceb5 1254 *
sepp_nepp 6:fb11b746ceb5 1255 * @note This function Accesses the device
sepp_nepp 6:fb11b746ceb5 1256 *
sepp_nepp 6:fb11b746ceb5 1257 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 1258 * @param vcsel_period_type VCSEL period identifier (pre-range|final).
sepp_nepp 6:fb11b746ceb5 1259 * @param vcsel_pulse_period VCSEL period value
sepp_nepp 6:fb11b746ceb5 1260 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 1261 * @return VL53L0X_ERROR_INVALID_PARAMS Error VcselPeriodType parameter not
sepp_nepp 6:fb11b746ceb5 1262 * supported.
sepp_nepp 6:fb11b746ceb5 1263 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 1264 */
sepp_nepp 6:fb11b746ceb5 1265 VL53L0X_Error VL53L0X_set_vcsel_pulse_period(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 1266 VL53L0X_VcselPeriod vcsel_period_type, uint8_t vcsel_pulse_period);
sepp_nepp 6:fb11b746ceb5 1267
sepp_nepp 6:fb11b746ceb5 1268 /**
sepp_nepp 6:fb11b746ceb5 1269 * @brief Set low and high Interrupt thresholds for a given mode
sepp_nepp 6:fb11b746ceb5 1270 * (ranging, ALS, ...) for a given device
sepp_nepp 6:fb11b746ceb5 1271 *
sepp_nepp 6:fb11b746ceb5 1272 * @par Function Description
sepp_nepp 6:fb11b746ceb5 1273 * Set low and high Interrupt thresholds for a given mode (ranging, ALS, ...)
sepp_nepp 6:fb11b746ceb5 1274 * for a given device
sepp_nepp 6:fb11b746ceb5 1275 *
sepp_nepp 6:fb11b746ceb5 1276 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 1277 *
sepp_nepp 6:fb11b746ceb5 1278 * @note DeviceMode is ignored for the current device
sepp_nepp 6:fb11b746ceb5 1279 *
sepp_nepp 6:fb11b746ceb5 1280 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 1281 * @param device_mode Device Mode for which change thresholds
sepp_nepp 6:fb11b746ceb5 1282 * @param threshold_low Low threshold (mm, lux ..., depending on the mode)
sepp_nepp 6:fb11b746ceb5 1283 * @param threshold_high High threshold (mm, lux ..., depending on the mode)
sepp_nepp 6:fb11b746ceb5 1284 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 1285 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 1286 */
sepp_nepp 6:fb11b746ceb5 1287 VL53L0X_Error VL53L0X_set_interrupt_thresholds(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 1288 VL53L0X_DeviceModes device_mode, FixPoint1616_t threshold_low,
sepp_nepp 6:fb11b746ceb5 1289 FixPoint1616_t threshold_high);
sepp_nepp 6:fb11b746ceb5 1290
sepp_nepp 6:fb11b746ceb5 1291 /**
sepp_nepp 6:fb11b746ceb5 1292 * @brief Get high and low Interrupt thresholds for a given mode
sepp_nepp 6:fb11b746ceb5 1293 * (ranging, ALS, ...) for a given device
sepp_nepp 6:fb11b746ceb5 1294 *
sepp_nepp 6:fb11b746ceb5 1295 * @par Function Description
sepp_nepp 6:fb11b746ceb5 1296 * Get high and low Interrupt thresholds for a given mode (ranging, ALS, ...)
sepp_nepp 6:fb11b746ceb5 1297 * for a given device
sepp_nepp 6:fb11b746ceb5 1298 *
sepp_nepp 6:fb11b746ceb5 1299 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 1300 *
sepp_nepp 6:fb11b746ceb5 1301 * @note DeviceMode is ignored for the current device
sepp_nepp 6:fb11b746ceb5 1302 *
sepp_nepp 6:fb11b746ceb5 1303 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 1304 * @param device_mode Device Mode from which read thresholds
sepp_nepp 6:fb11b746ceb5 1305 * @param p_threshold_low Low threshold (mm, lux ..., depending on the mode)
sepp_nepp 6:fb11b746ceb5 1306 * @param p_threshold_high High threshold (mm, lux ..., depending on the mode)
sepp_nepp 6:fb11b746ceb5 1307 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 1308 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 1309 */
sepp_nepp 6:fb11b746ceb5 1310 VL53L0X_Error VL53L0X_get_interrupt_thresholds(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 1311 VL53L0X_DeviceModes device_mode, FixPoint1616_t *p_threshold_low,
sepp_nepp 6:fb11b746ceb5 1312 FixPoint1616_t *p_threshold_high);
sepp_nepp 6:fb11b746ceb5 1313
sepp_nepp 6:fb11b746ceb5 1314 /**
sepp_nepp 6:fb11b746ceb5 1315 * @brief Reads the Device information for given Device
sepp_nepp 6:fb11b746ceb5 1316 *
sepp_nepp 6:fb11b746ceb5 1317 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 1318 *
sepp_nepp 6:fb11b746ceb5 1319 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 1320 * @param p_VL53L0X_device_info Pointer to current device info for a given
sepp_nepp 6:fb11b746ceb5 1321 * Device
sepp_nepp 6:fb11b746ceb5 1322 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 1323 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 1324 */
sepp_nepp 6:fb11b746ceb5 1325 VL53L0X_Error VL53L0X_get_device_info(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 1326 VL53L0X_DeviceInfo_t *p_VL53L0X_device_info);
sepp_nepp 6:fb11b746ceb5 1327
sepp_nepp 6:fb11b746ceb5 1328 /**
sepp_nepp 6:fb11b746ceb5 1329 * @brief Gets the (on/off) state of all sequence steps.
sepp_nepp 6:fb11b746ceb5 1330 *
sepp_nepp 6:fb11b746ceb5 1331 * @par Function Description
sepp_nepp 6:fb11b746ceb5 1332 * This function retrieves the state of all sequence step in the scheduler.
sepp_nepp 6:fb11b746ceb5 1333 *
sepp_nepp 6:fb11b746ceb5 1334 * @note This function Accesses the device
sepp_nepp 6:fb11b746ceb5 1335 *
sepp_nepp 6:fb11b746ceb5 1336 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 1337 * @param p_scheduler_sequence_steps Pointer to struct containing result.
sepp_nepp 6:fb11b746ceb5 1338 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 1339 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 1340 */
sepp_nepp 6:fb11b746ceb5 1341 VL53L0X_Error VL53L0X_get_sequence_step_enables(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 1342 VL53L0X_SchedulerSequenceSteps_t *p_scheduler_sequence_steps);
sepp_nepp 6:fb11b746ceb5 1343
sepp_nepp 6:fb11b746ceb5 1344 /**
sepp_nepp 6:fb11b746ceb5 1345 * @brief Sets the (on/off) state of a requested sequence step.
sepp_nepp 6:fb11b746ceb5 1346 *
sepp_nepp 6:fb11b746ceb5 1347 * @par Function Description
sepp_nepp 6:fb11b746ceb5 1348 * This function enables/disables a requested sequence step.
sepp_nepp 6:fb11b746ceb5 1349 *
sepp_nepp 6:fb11b746ceb5 1350 * @note This function Accesses the device
sepp_nepp 6:fb11b746ceb5 1351 *
sepp_nepp 6:fb11b746ceb5 1352 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 1353 * @param sequence_step_id Sequence step identifier.
sepp_nepp 6:fb11b746ceb5 1354 * @param sequence_step_enabled Demanded state {0=Off,1=On}
sepp_nepp 6:fb11b746ceb5 1355 * is enabled.
sepp_nepp 6:fb11b746ceb5 1356 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 1357 * @return VL53L0X_ERROR_INVALID_PARAMS Error SequenceStepId parameter not
sepp_nepp 6:fb11b746ceb5 1358 * supported.
sepp_nepp 6:fb11b746ceb5 1359 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 1360 */
sepp_nepp 6:fb11b746ceb5 1361 VL53L0X_Error VL53L0X_set_sequence_step_enable(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 1362 VL53L0X_SequenceStepId sequence_step_id, uint8_t sequence_step_enabled);
sepp_nepp 6:fb11b746ceb5 1363
sepp_nepp 6:fb11b746ceb5 1364 /**
sepp_nepp 6:fb11b746ceb5 1365 * @brief Gets the fraction enable parameter indicating the resolution of
sepp_nepp 6:fb11b746ceb5 1366 * range measurements.
sepp_nepp 6:fb11b746ceb5 1367 *
sepp_nepp 6:fb11b746ceb5 1368 * @par Function Description
sepp_nepp 6:fb11b746ceb5 1369 * Gets the fraction enable state, which translates to the resolution of
sepp_nepp 6:fb11b746ceb5 1370 * range measurements as follows :Enabled:=0.25mm resolution,
sepp_nepp 6:fb11b746ceb5 1371 * Not Enabled:=1mm resolution.
sepp_nepp 6:fb11b746ceb5 1372 *
sepp_nepp 6:fb11b746ceb5 1373 * @note This function Accesses the device
sepp_nepp 6:fb11b746ceb5 1374 *
sepp_nepp 6:fb11b746ceb5 1375 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 1376 * @param p_enabled Output Parameter reporting the fraction enable state.
sepp_nepp 6:fb11b746ceb5 1377 *
sepp_nepp 6:fb11b746ceb5 1378 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 1379 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 1380 */
sepp_nepp 6:fb11b746ceb5 1381 VL53L0X_Error VL53L0X_get_fraction_enable(VL53L0X_DEV dev, uint8_t *p_enabled);
sepp_nepp 6:fb11b746ceb5 1382
sepp_nepp 6:fb11b746ceb5 1383 /**
sepp_nepp 6:fb11b746ceb5 1384 * @brief Sets the resolution of range measurements.
sepp_nepp 6:fb11b746ceb5 1385 * @par Function Description
sepp_nepp 6:fb11b746ceb5 1386 * Set resolution of range measurements to either 0.25mm if
sepp_nepp 6:fb11b746ceb5 1387 * fraction enabled or 1mm if not enabled.
sepp_nepp 6:fb11b746ceb5 1388 *
sepp_nepp 6:fb11b746ceb5 1389 * @note This function Accesses the device
sepp_nepp 6:fb11b746ceb5 1390 *
sepp_nepp 6:fb11b746ceb5 1391 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 1392 * @param enable Enable high resolution
sepp_nepp 6:fb11b746ceb5 1393 *
sepp_nepp 6:fb11b746ceb5 1394 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 1395 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 1396 */
sepp_nepp 6:fb11b746ceb5 1397 VL53L0X_Error VL53L0X_set_range_fraction_enable(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 1398 uint8_t enable);
sepp_nepp 6:fb11b746ceb5 1399
sepp_nepp 6:fb11b746ceb5 1400 /**
sepp_nepp 6:fb11b746ceb5 1401 * @brief Return the VL53L0X PAL Implementation Version
sepp_nepp 6:fb11b746ceb5 1402 *
sepp_nepp 6:fb11b746ceb5 1403 * @note This function doesn't access to the device
sepp_nepp 6:fb11b746ceb5 1404 *
sepp_nepp 6:fb11b746ceb5 1405 * @param p_version Pointer to current PAL Implementation Version
sepp_nepp 6:fb11b746ceb5 1406 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 1407 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 1408 */
sepp_nepp 6:fb11b746ceb5 1409 VL53L0X_Error VL53L0X_get_version(VL53L0X_Version_t *p_version);
sepp_nepp 6:fb11b746ceb5 1410
sepp_nepp 6:fb11b746ceb5 1411 /**
sepp_nepp 6:fb11b746ceb5 1412 * @brief Reads the Product Revision for a for given Device
sepp_nepp 6:fb11b746ceb5 1413 * This function can be used to distinguish cut1.0 from cut1.1.
sepp_nepp 6:fb11b746ceb5 1414 *
sepp_nepp 6:fb11b746ceb5 1415 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 1416 *
sepp_nepp 6:fb11b746ceb5 1417 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 1418 * @param p_product_revision_major Pointer to Product Revision Major
sepp_nepp 6:fb11b746ceb5 1419 * for a given Device
sepp_nepp 6:fb11b746ceb5 1420 * @param p_product_revision_minor Pointer to Product Revision Minor
sepp_nepp 6:fb11b746ceb5 1421 * for a given Device
sepp_nepp 6:fb11b746ceb5 1422 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 1423 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 1424 */
sepp_nepp 6:fb11b746ceb5 1425 VL53L0X_Error VL53L0X_get_product_revision(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 1426 uint8_t *p_product_revision_major, uint8_t *p_product_revision_minor);
sepp_nepp 6:fb11b746ceb5 1427
sepp_nepp 6:fb11b746ceb5 1428 /**
sepp_nepp 6:fb11b746ceb5 1429 * @brief Retrieve current device parameters
sepp_nepp 6:fb11b746ceb5 1430 * @par Function Description
sepp_nepp 6:fb11b746ceb5 1431 * Get actual parameters of the device
sepp_nepp 6:fb11b746ceb5 1432 * @li Then start ranging operation.
sepp_nepp 6:fb11b746ceb5 1433 *
sepp_nepp 6:fb11b746ceb5 1434 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 1435 *
sepp_nepp 6:fb11b746ceb5 1436 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 1437 * @param p_device_parameters Pointer to store current device parameters.
sepp_nepp 6:fb11b746ceb5 1438 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 1439 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 1440 */
sepp_nepp 6:fb11b746ceb5 1441 VL53L0X_Error VL53L0X_get_device_parameters(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 1442 VL53L0X_DeviceParameters_t *p_device_parameters);
sepp_nepp 6:fb11b746ceb5 1443
sepp_nepp 6:fb11b746ceb5 1444 /**
sepp_nepp 6:fb11b746ceb5 1445 * @brief Human readable error string for current PAL error status
sepp_nepp 6:fb11b746ceb5 1446 *
sepp_nepp 6:fb11b746ceb5 1447 * @note This function doesn't access to the device
sepp_nepp 6:fb11b746ceb5 1448 *
sepp_nepp 6:fb11b746ceb5 1449 * @param pal_error_code The error code as stored on @a VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 1450 * @param p_pal_error_string The error string corresponding to the
sepp_nepp 6:fb11b746ceb5 1451 * PalErrorCode
sepp_nepp 6:fb11b746ceb5 1452 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 1453 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 1454 */
sepp_nepp 6:fb11b746ceb5 1455 VL53L0X_Error VL53L0X_get_pal_error_string(VL53L0X_Error pal_error_code,
sepp_nepp 6:fb11b746ceb5 1456 char *p_pal_error_string);
sepp_nepp 6:fb11b746ceb5 1457
sepp_nepp 6:fb11b746ceb5 1458 /**
sepp_nepp 6:fb11b746ceb5 1459 * @brief Return the PAL Specification Version used for the current
sepp_nepp 6:fb11b746ceb5 1460 * implementation.
sepp_nepp 6:fb11b746ceb5 1461 *
sepp_nepp 6:fb11b746ceb5 1462 * @note This function doesn't access to the device
sepp_nepp 6:fb11b746ceb5 1463 *
sepp_nepp 6:fb11b746ceb5 1464 * @param p_pal_spec_version Pointer to current PAL Specification Version
sepp_nepp 6:fb11b746ceb5 1465 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 1466 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 1467 */
sepp_nepp 6:fb11b746ceb5 1468 VL53L0X_Error VL53L0X_get_pal_spec_version(
sepp_nepp 6:fb11b746ceb5 1469 VL53L0X_Version_t *p_pal_spec_version);
sepp_nepp 6:fb11b746ceb5 1470
sepp_nepp 6:fb11b746ceb5 1471 /**
sepp_nepp 6:fb11b746ceb5 1472 * @brief Reads the internal state of the PAL for a given Device
sepp_nepp 6:fb11b746ceb5 1473 *
sepp_nepp 6:fb11b746ceb5 1474 * @note This function doesn't access to the device
sepp_nepp 6:fb11b746ceb5 1475 *
sepp_nepp 6:fb11b746ceb5 1476 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 1477 * @param p_pal_state Pointer to current state of the PAL for a
sepp_nepp 6:fb11b746ceb5 1478 * given Device
sepp_nepp 6:fb11b746ceb5 1479 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 1480 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 1481 */
sepp_nepp 6:fb11b746ceb5 1482 VL53L0X_Error VL53L0X_get_pal_state(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 1483 VL53L0X_State *p_pal_state);
sepp_nepp 6:fb11b746ceb5 1484
sepp_nepp 6:fb11b746ceb5 1485 /**
sepp_nepp 6:fb11b746ceb5 1486 * @brief Human readable PAL State string
sepp_nepp 6:fb11b746ceb5 1487 *
sepp_nepp 6:fb11b746ceb5 1488 * @note This function doesn't access to the device
sepp_nepp 6:fb11b746ceb5 1489 *
sepp_nepp 6:fb11b746ceb5 1490 * @param pal_state_code The State code as stored on @a VL53L0X_State
sepp_nepp 6:fb11b746ceb5 1491 * @param p_pal_state_string The State string corresponding to the
sepp_nepp 6:fb11b746ceb5 1492 * PalStateCode
sepp_nepp 6:fb11b746ceb5 1493 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 1494 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 1495 */
sepp_nepp 6:fb11b746ceb5 1496 VL53L0X_Error VL53L0X_get_pal_state_string(VL53L0X_State pal_state_code,
sepp_nepp 6:fb11b746ceb5 1497 char *p_pal_state_string);
sepp_nepp 6:fb11b746ceb5 1498
sepp_nepp 6:fb11b746ceb5 1499 /*** End High level API ***/
sepp_nepp 6:fb11b746ceb5 1500 public:
sepp_nepp 6:fb11b746ceb5 1501 /* api.h functions */
sepp_nepp 6:fb11b746ceb5 1502
sepp_nepp 6:fb11b746ceb5 1503 /**
sepp_nepp 6:fb11b746ceb5 1504 * @brief Wait for device booted after chip enable (hardware standby)
sepp_nepp 6:fb11b746ceb5 1505 * This function can be run only when VL53L0X_State is VL53L0X_STATE_POWERDOWN.
sepp_nepp 6:fb11b746ceb5 1506 *
sepp_nepp 6:fb11b746ceb5 1507 * @note This function is not Implemented
sepp_nepp 6:fb11b746ceb5 1508 *
sepp_nepp 6:fb11b746ceb5 1509 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 1510 * @return VL53L0X_ERROR_NOT_IMPLEMENTED Not implemented
sepp_nepp 6:fb11b746ceb5 1511 *
sepp_nepp 6:fb11b746ceb5 1512 */
sepp_nepp 6:fb11b746ceb5 1513 VL53L0X_Error VL53L0X_wait_device_booted(VL53L0X_DEV dev);
sepp_nepp 6:fb11b746ceb5 1514
sepp_nepp 6:fb11b746ceb5 1515
sepp_nepp 6:fb11b746ceb5 1516 VL53L0X_Error sequence_step_enabled(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 1517 VL53L0X_SequenceStepId sequence_step_id, uint8_t sequence_config,
sepp_nepp 6:fb11b746ceb5 1518 uint8_t *p_sequence_step_enabled);
sepp_nepp 6:fb11b746ceb5 1519
sepp_nepp 6:fb11b746ceb5 1520 VL53L0X_Error VL53L0X_check_and_load_interrupt_settings(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 1521 uint8_t start_not_stopflag);
sepp_nepp 6:fb11b746ceb5 1522
sepp_nepp 6:fb11b746ceb5 1523
sepp_nepp 6:fb11b746ceb5 1524 /* api_core.h functions */
sepp_nepp 6:fb11b746ceb5 1525
sepp_nepp 6:fb11b746ceb5 1526 VL53L0X_Error VL53L0X_get_info_from_device(VL53L0X_DEV dev, uint8_t option);
sepp_nepp 6:fb11b746ceb5 1527
sepp_nepp 6:fb11b746ceb5 1528 VL53L0X_Error VL53L0X_device_read_strobe(VL53L0X_DEV dev);
sepp_nepp 6:fb11b746ceb5 1529
sepp_nepp 6:fb11b746ceb5 1530 VL53L0X_Error wrapped_VL53L0X_get_measurement_timing_budget_micro_seconds(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 1531 uint32_t *p_measurement_timing_budget_micro_seconds);
sepp_nepp 6:fb11b746ceb5 1532
sepp_nepp 6:fb11b746ceb5 1533 VL53L0X_Error wrapped_VL53L0X_get_vcsel_pulse_period(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 1534 VL53L0X_VcselPeriod vcsel_period_type, uint8_t *p_vcsel_pulse_period_pclk);
sepp_nepp 6:fb11b746ceb5 1535
sepp_nepp 6:fb11b746ceb5 1536 uint8_t VL53L0X_decode_vcsel_period(uint8_t vcsel_period_reg);
sepp_nepp 6:fb11b746ceb5 1537
sepp_nepp 6:fb11b746ceb5 1538 uint32_t VL53L0X_decode_timeout(uint16_t encoded_timeout);
sepp_nepp 6:fb11b746ceb5 1539
sepp_nepp 6:fb11b746ceb5 1540 uint32_t VL53L0X_calc_timeout_us(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 1541 uint16_t timeout_period_mclks,
sepp_nepp 6:fb11b746ceb5 1542 uint8_t vcsel_period_pclks);
sepp_nepp 6:fb11b746ceb5 1543
sepp_nepp 6:fb11b746ceb5 1544 uint32_t VL53L0X_calc_macro_period_ps(VL53L0X_DEV dev, uint8_t vcsel_period_pclks);
sepp_nepp 6:fb11b746ceb5 1545
sepp_nepp 6:fb11b746ceb5 1546 VL53L0X_Error VL53L0X_measurement_poll_for_completion(VL53L0X_DEV dev);
sepp_nepp 6:fb11b746ceb5 1547
sepp_nepp 6:fb11b746ceb5 1548 VL53L0X_Error VL53L0X_load_tuning_settings(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 1549 uint8_t *p_tuning_setting_buffer);
sepp_nepp 6:fb11b746ceb5 1550
sepp_nepp 6:fb11b746ceb5 1551 VL53L0X_Error VL53L0X_get_pal_range_status(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 1552 uint8_t device_range_status,
sepp_nepp 6:fb11b746ceb5 1553 FixPoint1616_t signal_rate,
sepp_nepp 6:fb11b746ceb5 1554 uint16_t effective_spad_rtn_count,
sepp_nepp 6:fb11b746ceb5 1555 VL53L0X_RangingMeasurementData_t *p_ranging_measurement_data,
sepp_nepp 6:fb11b746ceb5 1556 uint8_t *p_pal_range_status);
sepp_nepp 6:fb11b746ceb5 1557 VL53L0X_Error VL53L0X_calc_sigma_estimate(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 1558 VL53L0X_RangingMeasurementData_t *p_ranging_measurement_data,
sepp_nepp 6:fb11b746ceb5 1559 FixPoint1616_t *p_sigma_estimate,
sepp_nepp 6:fb11b746ceb5 1560 uint32_t *p_dmax_mm);
sepp_nepp 6:fb11b746ceb5 1561 uint32_t VL53L0X_calc_timeout_mclks(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 1562 uint32_t timeout_period_us,
sepp_nepp 6:fb11b746ceb5 1563 uint8_t vcsel_period_pclks);
sepp_nepp 6:fb11b746ceb5 1564 uint32_t VL53L0X_isqrt(uint32_t num);
sepp_nepp 6:fb11b746ceb5 1565
sepp_nepp 6:fb11b746ceb5 1566 uint32_t VL53L0X_quadrature_sum(uint32_t a, uint32_t b);
sepp_nepp 6:fb11b746ceb5 1567
sepp_nepp 6:fb11b746ceb5 1568 VL53L0X_Error VL53L0X_calc_dmax(
sepp_nepp 6:fb11b746ceb5 1569 VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 1570 FixPoint1616_t total_signal_rate_mcps,
sepp_nepp 6:fb11b746ceb5 1571 FixPoint1616_t total_corr_signal_rate_mcps,
sepp_nepp 6:fb11b746ceb5 1572 FixPoint1616_t pw_mult,
sepp_nepp 6:fb11b746ceb5 1573 uint32_t sigma_estimate_p1,
sepp_nepp 6:fb11b746ceb5 1574 FixPoint1616_t sigma_estimate_p2,
sepp_nepp 6:fb11b746ceb5 1575 uint32_t peak_vcsel_duration_us,
sepp_nepp 6:fb11b746ceb5 1576 uint32_t *pd_max_mm);
sepp_nepp 6:fb11b746ceb5 1577 VL53L0X_Error wrapped_VL53L0X_set_measurement_timing_budget_micro_seconds(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 1578 uint32_t measurement_timing_budget_micro_seconds);
sepp_nepp 6:fb11b746ceb5 1579 VL53L0X_Error get_sequence_step_timeout(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 1580 VL53L0X_SequenceStepId sequence_step_id,
sepp_nepp 6:fb11b746ceb5 1581 uint32_t *p_time_out_micro_secs);
sepp_nepp 6:fb11b746ceb5 1582 VL53L0X_Error set_sequence_step_timeout(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 1583 VL53L0X_SequenceStepId sequence_step_id,
sepp_nepp 6:fb11b746ceb5 1584 uint32_t timeout_micro_secs);
sepp_nepp 6:fb11b746ceb5 1585 uint16_t VL53L0X_encode_timeout(uint32_t timeout_macro_clks);
sepp_nepp 6:fb11b746ceb5 1586 VL53L0X_Error wrapped_VL53L0X_set_vcsel_pulse_period(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 1587 VL53L0X_VcselPeriod vcsel_period_type, uint8_t vcsel_pulse_period_pclk);
sepp_nepp 6:fb11b746ceb5 1588 uint8_t lv53l0x_encode_vcsel_period(uint8_t vcsel_period_pclks);
sepp_nepp 6:fb11b746ceb5 1589
sepp_nepp 6:fb11b746ceb5 1590 /* api_calibration.h functions */
sepp_nepp 6:fb11b746ceb5 1591 VL53L0X_Error VL53L0X_apply_offset_adjustment(VL53L0X_DEV dev);
sepp_nepp 6:fb11b746ceb5 1592 VL53L0X_Error wrapped_VL53L0X_get_offset_calibration_data_micro_meter(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 1593 int32_t *p_offset_calibration_data_micro_meter);
sepp_nepp 6:fb11b746ceb5 1594 VL53L0X_Error wrapped_VL53L0X_set_offset_calibration_data_micro_meter(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 1595 int32_t offset_calibration_data_micro_meter);
sepp_nepp 6:fb11b746ceb5 1596 VL53L0X_Error wrapped_VL53L0X_perform_ref_spad_management(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 1597 uint32_t *ref_spad_count,
sepp_nepp 6:fb11b746ceb5 1598 uint8_t *is_aperture_spads);
sepp_nepp 6:fb11b746ceb5 1599 VL53L0X_Error VL53L0X_perform_ref_calibration(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 1600 uint8_t *p_vhv_settings, uint8_t *p_phase_cal, uint8_t get_data_enable);
sepp_nepp 6:fb11b746ceb5 1601 VL53L0X_Error VL53L0X_perform_vhv_calibration(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 1602 uint8_t *p_vhv_settings, const uint8_t get_data_enable,
sepp_nepp 6:fb11b746ceb5 1603 const uint8_t restore_config);
sepp_nepp 6:fb11b746ceb5 1604 VL53L0X_Error VL53L0X_perform_single_ref_calibration(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 1605 uint8_t vhv_init_byte);
sepp_nepp 6:fb11b746ceb5 1606 VL53L0X_Error VL53L0X_ref_calibration_io(VL53L0X_DEV dev, uint8_t read_not_write,
sepp_nepp 6:fb11b746ceb5 1607 uint8_t vhv_settings, uint8_t phase_cal,
sepp_nepp 6:fb11b746ceb5 1608 uint8_t *p_vhv_settings, uint8_t *p_phase_cal,
sepp_nepp 6:fb11b746ceb5 1609 const uint8_t vhv_enable, const uint8_t phase_enable);
sepp_nepp 6:fb11b746ceb5 1610 VL53L0X_Error VL53L0X_perform_phase_calibration(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 1611 uint8_t *p_phase_cal, const uint8_t get_data_enable,
sepp_nepp 6:fb11b746ceb5 1612 const uint8_t restore_config);
sepp_nepp 6:fb11b746ceb5 1613 VL53L0X_Error enable_ref_spads(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 1614 uint8_t aperture_spads,
sepp_nepp 6:fb11b746ceb5 1615 uint8_t good_spad_array[],
sepp_nepp 6:fb11b746ceb5 1616 uint8_t spad_array[],
sepp_nepp 6:fb11b746ceb5 1617 uint32_t size,
sepp_nepp 6:fb11b746ceb5 1618 uint32_t start,
sepp_nepp 6:fb11b746ceb5 1619 uint32_t offset,
sepp_nepp 6:fb11b746ceb5 1620 uint32_t spad_count,
sepp_nepp 6:fb11b746ceb5 1621 uint32_t *p_last_spad);
sepp_nepp 6:fb11b746ceb5 1622 void get_next_good_spad(uint8_t good_spad_array[], uint32_t size,
sepp_nepp 6:fb11b746ceb5 1623 uint32_t curr, int32_t *p_next);
sepp_nepp 6:fb11b746ceb5 1624 uint8_t is_aperture(uint32_t spad_index);
sepp_nepp 6:fb11b746ceb5 1625 VL53L0X_Error enable_spad_bit(uint8_t spad_array[], uint32_t size,
sepp_nepp 6:fb11b746ceb5 1626 uint32_t spad_index);
sepp_nepp 6:fb11b746ceb5 1627 VL53L0X_Error set_ref_spad_map(VL53L0X_DEV dev, uint8_t *p_ref_spad_array);
sepp_nepp 6:fb11b746ceb5 1628 VL53L0X_Error get_ref_spad_map(VL53L0X_DEV dev, uint8_t *p_ref_spad_array);
sepp_nepp 6:fb11b746ceb5 1629 VL53L0X_Error perform_ref_signal_measurement(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 1630 uint16_t *p_ref_signal_rate);
sepp_nepp 6:fb11b746ceb5 1631 VL53L0X_Error wrapped_VL53L0X_set_reference_spads(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 1632 uint32_t count, uint8_t is_aperture_spads);
sepp_nepp 6:fb11b746ceb5 1633
sepp_nepp 6:fb11b746ceb5 1634 /* api_strings.h functions */
sepp_nepp 6:fb11b746ceb5 1635 VL53L0X_Error wrapped_VL53L0X_get_device_info(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 1636 VL53L0X_DeviceInfo_t *p_VL53L0X_device_info);
sepp_nepp 6:fb11b746ceb5 1637 VL53L0X_Error VL53L0X_check_part_used(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 1638 uint8_t *revision,
sepp_nepp 6:fb11b746ceb5 1639 VL53L0X_DeviceInfo_t *p_VL53L0X_device_info);
sepp_nepp 6:fb11b746ceb5 1640
sepp_nepp 6:fb11b746ceb5 1641 /* Read function of the ID device */
sepp_nepp 6:fb11b746ceb5 1642 // virtual int read_id();
sepp_nepp 6:fb11b746ceb5 1643 virtual int read_id(uint8_t *id);
sepp_nepp 6:fb11b746ceb5 1644
sepp_nepp 6:fb11b746ceb5 1645 VL53L0X_Error wait_measurement_data_ready(VL53L0X_DEV dev);
sepp_nepp 6:fb11b746ceb5 1646
sepp_nepp 6:fb11b746ceb5 1647 VL53L0X_Error wait_stop_completed(VL53L0X_DEV dev);
sepp_nepp 6:fb11b746ceb5 1648
sepp_nepp 6:fb11b746ceb5 1649 /* Write and read functions from I2C */
sepp_nepp 6:fb11b746ceb5 1650 /**
sepp_nepp 6:fb11b746ceb5 1651 * Write single byte register
sepp_nepp 6:fb11b746ceb5 1652 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 1653 * @param index The register index
sepp_nepp 6:fb11b746ceb5 1654 * @param data 8 bit register data
sepp_nepp 6:fb11b746ceb5 1655 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 1656 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 1657 */
sepp_nepp 6:fb11b746ceb5 1658 VL53L0X_Error VL53L0X_write_byte(VL53L0X_DEV dev, uint8_t index, uint8_t data);
sepp_nepp 6:fb11b746ceb5 1659 /**
sepp_nepp 6:fb11b746ceb5 1660 * Write word register
sepp_nepp 6:fb11b746ceb5 1661 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 1662 * @param index The register index
sepp_nepp 6:fb11b746ceb5 1663 * @param data 16 bit register data
sepp_nepp 6:fb11b746ceb5 1664 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 1665 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 1666 */
sepp_nepp 6:fb11b746ceb5 1667 VL53L0X_Error VL53L0X_write_word(VL53L0X_DEV dev, uint8_t index, uint16_t data);
sepp_nepp 6:fb11b746ceb5 1668 /**
sepp_nepp 6:fb11b746ceb5 1669 * Write double word (4 byte) register
sepp_nepp 6:fb11b746ceb5 1670 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 1671 * @param index The register index
sepp_nepp 6:fb11b746ceb5 1672 * @param data 32 bit register data
sepp_nepp 6:fb11b746ceb5 1673 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 1674 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 1675 */
sepp_nepp 6:fb11b746ceb5 1676 VL53L0X_Error VL53L0X_write_dword(VL53L0X_DEV dev, uint8_t index, uint32_t data);
sepp_nepp 6:fb11b746ceb5 1677 /**
sepp_nepp 6:fb11b746ceb5 1678 * Read single byte register
sepp_nepp 6:fb11b746ceb5 1679 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 1680 * @param index The register index
sepp_nepp 6:fb11b746ceb5 1681 * @param data pointer to 8 bit data
sepp_nepp 6:fb11b746ceb5 1682 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 1683 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 1684 */
sepp_nepp 6:fb11b746ceb5 1685 VL53L0X_Error VL53L0X_read_byte(VL53L0X_DEV dev, uint8_t index, uint8_t *p_data);
sepp_nepp 6:fb11b746ceb5 1686 /**
sepp_nepp 6:fb11b746ceb5 1687 * Read word (2byte) register
sepp_nepp 6:fb11b746ceb5 1688 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 1689 * @param index The register index
sepp_nepp 6:fb11b746ceb5 1690 * @param data pointer to 16 bit data
sepp_nepp 6:fb11b746ceb5 1691 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 1692 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 1693 */
sepp_nepp 6:fb11b746ceb5 1694 VL53L0X_Error VL53L0X_read_word(VL53L0X_DEV dev, uint8_t index, uint16_t *p_data);
sepp_nepp 6:fb11b746ceb5 1695 /**
sepp_nepp 6:fb11b746ceb5 1696 * Read dword (4byte) register
sepp_nepp 6:fb11b746ceb5 1697 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 1698 * @param index The register index
sepp_nepp 6:fb11b746ceb5 1699 * @param data pointer to 32 bit data
sepp_nepp 6:fb11b746ceb5 1700 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 1701 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 1702 */
sepp_nepp 6:fb11b746ceb5 1703 VL53L0X_Error VL53L0X_read_dword(VL53L0X_DEV dev, uint8_t index, uint32_t *p_data);
sepp_nepp 6:fb11b746ceb5 1704 /**
sepp_nepp 6:fb11b746ceb5 1705 * Threat safe Update (read/modify/write) single byte register
sepp_nepp 6:fb11b746ceb5 1706 *
sepp_nepp 6:fb11b746ceb5 1707 * Final_reg = (Initial_reg & and_data) |or_data
sepp_nepp 6:fb11b746ceb5 1708 *
sepp_nepp 6:fb11b746ceb5 1709 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 1710 * @param index The register index
sepp_nepp 6:fb11b746ceb5 1711 * @param and_data 8 bit and data
sepp_nepp 6:fb11b746ceb5 1712 * @param or_data 8 bit or data
sepp_nepp 6:fb11b746ceb5 1713 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 1714 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 1715 */
sepp_nepp 6:fb11b746ceb5 1716 VL53L0X_Error VL53L0X_update_byte(VL53L0X_DEV dev, uint8_t index, uint8_t and_data, uint8_t or_data);
sepp_nepp 6:fb11b746ceb5 1717 /**
sepp_nepp 6:fb11b746ceb5 1718 * Writes the supplied byte buffer to the device
sepp_nepp 6:fb11b746ceb5 1719 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 1720 * @param index The register index
sepp_nepp 6:fb11b746ceb5 1721 * @param p_data Pointer to uint8_t buffer containing the data to be written
sepp_nepp 6:fb11b746ceb5 1722 * @param count Number of bytes in the supplied byte buffer
sepp_nepp 6:fb11b746ceb5 1723 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 1724 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 1725 */
sepp_nepp 6:fb11b746ceb5 1726 VL53L0X_Error VL53L0X_write_multi(VL53L0X_DEV dev, uint8_t index, uint8_t *p_data, uint32_t count);
sepp_nepp 6:fb11b746ceb5 1727 /**
sepp_nepp 6:fb11b746ceb5 1728 * Reads the requested number of bytes from the device
sepp_nepp 6:fb11b746ceb5 1729 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 1730 * @param index The register index
sepp_nepp 6:fb11b746ceb5 1731 * @param p_data Pointer to the uint8_t buffer to store read data
sepp_nepp 6:fb11b746ceb5 1732 * @param count Number of uint8_t's to read
sepp_nepp 6:fb11b746ceb5 1733 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 1734 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 1735 */
sepp_nepp 6:fb11b746ceb5 1736 VL53L0X_Error VL53L0X_read_multi(VL53L0X_DEV dev, uint8_t index, uint8_t *p_data, uint32_t count);
sepp_nepp 6:fb11b746ceb5 1737
sepp_nepp 6:fb11b746ceb5 1738 /**
sepp_nepp 6:fb11b746ceb5 1739 * @brief Writes a buffer towards the I2C peripheral device.
sepp_nepp 6:fb11b746ceb5 1740 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 1741 * @param p_data pointer to the byte-array data to send
sepp_nepp 6:fb11b746ceb5 1742 * @param number_of_bytes number of bytes to be written.
sepp_nepp 6:fb11b746ceb5 1743 * @retval 0 if ok,
sepp_nepp 6:fb11b746ceb5 1744 * @retval -1 if an I2C error has occured
sepp_nepp 6:fb11b746ceb5 1745 * @note On some devices if NumByteToWrite is greater
sepp_nepp 6:fb11b746ceb5 1746 * than one, the RegisterAddr must be masked correctly!
sepp_nepp 6:fb11b746ceb5 1747 */
sepp_nepp 6:fb11b746ceb5 1748 VL53L0X_Error VL53L0X_i2c_write(uint8_t dev, uint8_t index, uint8_t *p_data, uint16_t number_of_bytes);
sepp_nepp 6:fb11b746ceb5 1749
sepp_nepp 6:fb11b746ceb5 1750 /**
sepp_nepp 6:fb11b746ceb5 1751 * @brief Reads a buffer from the I2C peripheral device.
sepp_nepp 6:fb11b746ceb5 1752 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 1753 * @param p_data pointer to the byte-array to read data in to
sepp_nepp 6:fb11b746ceb5 1754 * @param number_of_bytes number of bytes to be read.
sepp_nepp 6:fb11b746ceb5 1755 * @retval 0 if ok,
sepp_nepp 6:fb11b746ceb5 1756 * @retval -1 if an I2C error has occured
sepp_nepp 6:fb11b746ceb5 1757 * @note On some devices if NumByteToWrite is greater
sepp_nepp 6:fb11b746ceb5 1758 * than one, the RegisterAddr must be masked correctly!
sepp_nepp 6:fb11b746ceb5 1759 */
sepp_nepp 6:fb11b746ceb5 1760 VL53L0X_Error VL53L0X_i2c_read(uint8_t dev, uint8_t index, uint8_t *p_data, uint16_t number_of_bytes);
sepp_nepp 6:fb11b746ceb5 1761
sepp_nepp 6:fb11b746ceb5 1762 /**
sepp_nepp 6:fb11b746ceb5 1763 * @brief execute delay in all polling API call
sepp_nepp 6:fb11b746ceb5 1764 *
sepp_nepp 6:fb11b746ceb5 1765 * A typical multi-thread or RTOs implementation is to sleep the task for some 5ms (with 100Hz max rate faster polling is not needed)
sepp_nepp 6:fb11b746ceb5 1766 * if nothing specific is need you can define it as an empty/void macro
sepp_nepp 6:fb11b746ceb5 1767 * @code
sepp_nepp 6:fb11b746ceb5 1768 * #define VL53L0X_PollingDelay(...) (void)0
sepp_nepp 6:fb11b746ceb5 1769 * @endcode
sepp_nepp 6:fb11b746ceb5 1770 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 1771 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 1772 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 1773 */
sepp_nepp 6:fb11b746ceb5 1774 VL53L0X_Error VL53L0X_polling_delay(VL53L0X_DEV dev); /* usually best implemented as a real function */
sepp_nepp 6:fb11b746ceb5 1775
sepp_nepp 6:fb11b746ceb5 1776 ///////////////////////////////////////////////////////////////////////////////////////////////////////
sepp_nepp 6:fb11b746ceb5 1777 //Added functions //
sepp_nepp 6:fb11b746ceb5 1778 ///////////////////////////////////////////////////////////////////////////////////////////////////////
sepp_nepp 6:fb11b746ceb5 1779
sepp_nepp 6:fb11b746ceb5 1780 /**
sepp_nepp 6:fb11b746ceb5 1781 * @brief Cycle Power to Device
sepp_nepp 6:fb11b746ceb5 1782 *
sepp_nepp 6:fb11b746ceb5 1783 * @return status - status 0 = ok, 1 = error
sepp_nepp 6:fb11b746ceb5 1784 *
sepp_nepp 6:fb11b746ceb5 1785 */
sepp_nepp 6:fb11b746ceb5 1786 int32_t VL53L0X_cycle_power(void);
sepp_nepp 6:fb11b746ceb5 1787
sepp_nepp 6:fb11b746ceb5 1788 uint8_t VL53L0X_encode_vcsel_period(uint8_t vcsel_period_pclks);
sepp_nepp 6:fb11b746ceb5 1789
sepp_nepp 6:fb11b746ceb5 1790 VL53L0X_Error wrapped_VL53L0X_get_device_error_string(VL53L0X_DeviceError error_code,
sepp_nepp 6:fb11b746ceb5 1791 char *p_device_error_string);
sepp_nepp 6:fb11b746ceb5 1792
sepp_nepp 6:fb11b746ceb5 1793 VL53L0X_Error wrapped_VL53L0X_get_limit_check_info(VL53L0X_DEV dev, uint16_t limit_check_id,
sepp_nepp 6:fb11b746ceb5 1794 char *p_limit_check_string);
sepp_nepp 6:fb11b746ceb5 1795
sepp_nepp 6:fb11b746ceb5 1796 VL53L0X_Error wrapped_VL53L0X_get_pal_error_string(VL53L0X_Error pal_error_code,
sepp_nepp 6:fb11b746ceb5 1797 char *p_pal_error_string);
sepp_nepp 6:fb11b746ceb5 1798
sepp_nepp 6:fb11b746ceb5 1799 VL53L0X_Error wrapped_VL53L0X_get_pal_state_string(VL53L0X_State pal_state_code,
sepp_nepp 6:fb11b746ceb5 1800 char *p_pal_state_string);
sepp_nepp 6:fb11b746ceb5 1801
sepp_nepp 6:fb11b746ceb5 1802 VL53L0X_Error wrapped_VL53L0X_get_range_status_string(uint8_t range_status,
sepp_nepp 6:fb11b746ceb5 1803 char *p_range_status_string);
sepp_nepp 6:fb11b746ceb5 1804
sepp_nepp 6:fb11b746ceb5 1805 VL53L0X_Error wrapped_VL53L0X_get_ref_calibration(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 1806 uint8_t *p_vhv_settings, uint8_t *p_phase_cal);
sepp_nepp 6:fb11b746ceb5 1807
sepp_nepp 6:fb11b746ceb5 1808
sepp_nepp 6:fb11b746ceb5 1809 VL53L0X_Error count_enabled_spads(uint8_t spad_array[],
sepp_nepp 6:fb11b746ceb5 1810 uint32_t byte_count, uint32_t max_spads,
sepp_nepp 6:fb11b746ceb5 1811 uint32_t *p_total_spads_enabled, uint8_t *p_is_aperture);
sepp_nepp 6:fb11b746ceb5 1812
sepp_nepp 6:fb11b746ceb5 1813 VL53L0X_Error wrapped_VL53L0X_get_sequence_steps_info(VL53L0X_SequenceStepId sequence_step_id,
sepp_nepp 6:fb11b746ceb5 1814 char *p_sequence_steps_string);
sepp_nepp 6:fb11b746ceb5 1815
sepp_nepp 6:fb11b746ceb5 1816
sepp_nepp 6:fb11b746ceb5 1817 /**
sepp_nepp 6:fb11b746ceb5 1818 * @brief Gets the name of a given sequence step.
sepp_nepp 6:fb11b746ceb5 1819 *
sepp_nepp 6:fb11b746ceb5 1820 * @par Function Description
sepp_nepp 6:fb11b746ceb5 1821 * This function retrieves the name of sequence steps corresponding to
sepp_nepp 6:fb11b746ceb5 1822 * SequenceStepId.
sepp_nepp 6:fb11b746ceb5 1823 *
sepp_nepp 6:fb11b746ceb5 1824 * @note This function doesn't Accesses the device
sepp_nepp 6:fb11b746ceb5 1825 *
sepp_nepp 6:fb11b746ceb5 1826 * @param sequence_step_id Sequence step identifier.
sepp_nepp 6:fb11b746ceb5 1827 * @param p_sequence_steps_string Pointer to Info string
sepp_nepp 6:fb11b746ceb5 1828 *
sepp_nepp 6:fb11b746ceb5 1829 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 1830 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 1831 */
sepp_nepp 6:fb11b746ceb5 1832 VL53L0X_Error VL53L0X_get_sequence_steps_info(VL53L0X_SequenceStepId sequence_step_id,
sepp_nepp 6:fb11b746ceb5 1833 char *p_sequence_steps_string);
sepp_nepp 6:fb11b746ceb5 1834
sepp_nepp 6:fb11b746ceb5 1835 /**
sepp_nepp 6:fb11b746ceb5 1836 * @brief Get the frequency of the timer used for ranging results time stamps
sepp_nepp 6:fb11b746ceb5 1837 *
sepp_nepp 6:fb11b746ceb5 1838 * @param[out] p_timer_freq_hz : pointer for timer frequency
sepp_nepp 6:fb11b746ceb5 1839 *
sepp_nepp 6:fb11b746ceb5 1840 * @return status : 0 = ok, 1 = error
sepp_nepp 6:fb11b746ceb5 1841 *
sepp_nepp 6:fb11b746ceb5 1842 */
sepp_nepp 6:fb11b746ceb5 1843 int32_t VL53L0X_get_timer_frequency(int32_t *p_timer_freq_hz);
sepp_nepp 6:fb11b746ceb5 1844
sepp_nepp 6:fb11b746ceb5 1845 /**
sepp_nepp 6:fb11b746ceb5 1846 * @brief Get the timer value in units of timer_freq_hz (see VL53L0X_get_timestamp_frequency())
sepp_nepp 6:fb11b746ceb5 1847 *
sepp_nepp 6:fb11b746ceb5 1848 * @param[out] p_timer_count : pointer for timer count value
sepp_nepp 6:fb11b746ceb5 1849 *
sepp_nepp 6:fb11b746ceb5 1850 * @return status : 0 = ok, 1 = error
sepp_nepp 6:fb11b746ceb5 1851 *
sepp_nepp 6:fb11b746ceb5 1852 */
sepp_nepp 6:fb11b746ceb5 1853 int32_t VL53L0X_get_timer_value(int32_t *p_timer_count);
sepp_nepp 6:fb11b746ceb5 1854
sepp_nepp 6:fb11b746ceb5 1855 /**
sepp_nepp 6:fb11b746ceb5 1856 * @brief Configure ranging interrupt reported to system
sepp_nepp 6:fb11b746ceb5 1857 *
sepp_nepp 6:fb11b746ceb5 1858 * @note This function is not Implemented
sepp_nepp 6:fb11b746ceb5 1859 *
sepp_nepp 6:fb11b746ceb5 1860 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 1861 * @param interrupt_mask Mask of interrupt to Enable/disable
sepp_nepp 6:fb11b746ceb5 1862 * (0:interrupt disabled or 1: interrupt enabled)
sepp_nepp 6:fb11b746ceb5 1863 * @return VL53L0X_ERROR_NOT_IMPLEMENTED Not implemented
sepp_nepp 6:fb11b746ceb5 1864 */
sepp_nepp 6:fb11b746ceb5 1865 VL53L0X_Error VL53L0X_enable_interrupt_mask(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 1866 uint32_t interrupt_mask);
sepp_nepp 6:fb11b746ceb5 1867
sepp_nepp 6:fb11b746ceb5 1868 /**
sepp_nepp 6:fb11b746ceb5 1869 * @brief Get Dmax Calibration Parameters for a given device
sepp_nepp 6:fb11b746ceb5 1870 *
sepp_nepp 6:fb11b746ceb5 1871 *
sepp_nepp 6:fb11b746ceb5 1872 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 1873 *
sepp_nepp 6:fb11b746ceb5 1874 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 1875 * @param p_range_milli_meter Pointer to Calibration Distance
sepp_nepp 6:fb11b746ceb5 1876 * @param p_signal_rate_rtn_mega_cps Pointer to Signal rate return
sepp_nepp 6:fb11b746ceb5 1877 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 1878 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 1879 */
sepp_nepp 6:fb11b746ceb5 1880 VL53L0X_Error VL53L0X_get_dmax_cal_parameters(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 1881 uint16_t *p_range_milli_meter, FixPoint1616_t *p_signal_rate_rtn_mega_cps);
sepp_nepp 6:fb11b746ceb5 1882
sepp_nepp 6:fb11b746ceb5 1883 /**
sepp_nepp 6:fb11b746ceb5 1884 * @brief Set Dmax Calibration Parameters for a given device
sepp_nepp 6:fb11b746ceb5 1885 * When one of the parameter is zero, this function will get parameter
sepp_nepp 6:fb11b746ceb5 1886 * from NVM.
sepp_nepp 6:fb11b746ceb5 1887 * @note This function doesn't Access to the device
sepp_nepp 6:fb11b746ceb5 1888 *
sepp_nepp 6:fb11b746ceb5 1889 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 1890 * @param range_milli_meter Calibration Distance
sepp_nepp 6:fb11b746ceb5 1891 * @param signal_rate_rtn_mega_cps Signal rate return read at CalDistance
sepp_nepp 6:fb11b746ceb5 1892 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 1893 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 1894 */
sepp_nepp 6:fb11b746ceb5 1895 VL53L0X_Error VL53L0X_get_dmax_cal_parameters(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 1896 uint16_t range_milli_meter, FixPoint1616_t signal_rate_rtn_mega_cps);
sepp_nepp 6:fb11b746ceb5 1897
sepp_nepp 6:fb11b746ceb5 1898 /**
sepp_nepp 6:fb11b746ceb5 1899 * @brief Retrieve the measurements from device for a given setup
sepp_nepp 6:fb11b746ceb5 1900 *
sepp_nepp 6:fb11b746ceb5 1901 * @par Function Description
sepp_nepp 6:fb11b746ceb5 1902 * Get data from last successful Histogram measurement
sepp_nepp 6:fb11b746ceb5 1903 * @warning USER should take care about @a VL53L0X_GetNumberOfROIZones()
sepp_nepp 6:fb11b746ceb5 1904 * before get data.
sepp_nepp 6:fb11b746ceb5 1905 * PAL will fill a NumberOfROIZones times the corresponding data structure
sepp_nepp 6:fb11b746ceb5 1906 * used in the measurement function.
sepp_nepp 6:fb11b746ceb5 1907 *
sepp_nepp 6:fb11b746ceb5 1908 * @note This function is not Implemented
sepp_nepp 6:fb11b746ceb5 1909 *
sepp_nepp 6:fb11b746ceb5 1910 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 1911 * @param p_histogram_measurement_data Pointer to the histogram data structure.
sepp_nepp 6:fb11b746ceb5 1912 * @return VL53L0X_ERROR_NOT_IMPLEMENTED Not implemented
sepp_nepp 6:fb11b746ceb5 1913 */
sepp_nepp 6:fb11b746ceb5 1914 VL53L0X_Error VL53L0X_get_histogram_measurement_data(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 1915 VL53L0X_HistogramMeasurementData_t *p_histogram_measurement_data);
sepp_nepp 6:fb11b746ceb5 1916
sepp_nepp 6:fb11b746ceb5 1917 /**
sepp_nepp 6:fb11b746ceb5 1918 * @brief Get current new device mode
sepp_nepp 6:fb11b746ceb5 1919 * @par Function Description
sepp_nepp 6:fb11b746ceb5 1920 * Get current Histogram mode of a Device
sepp_nepp 6:fb11b746ceb5 1921 *
sepp_nepp 6:fb11b746ceb5 1922 * @note This function doesn't Access to the device
sepp_nepp 6:fb11b746ceb5 1923 *
sepp_nepp 6:fb11b746ceb5 1924 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 1925 * @param p_histogram_mode Pointer to current Histogram Mode value
sepp_nepp 6:fb11b746ceb5 1926 * Valid values are:
sepp_nepp 6:fb11b746ceb5 1927 * VL53L0X_HISTOGRAMMODE_DISABLED
sepp_nepp 6:fb11b746ceb5 1928 * VL53L0X_DEVICEMODE_SINGLE_HISTOGRAM
sepp_nepp 6:fb11b746ceb5 1929 * VL53L0X_HISTOGRAMMODE_REFERENCE_ONLY
sepp_nepp 6:fb11b746ceb5 1930 * VL53L0X_HISTOGRAMMODE_RETURN_ONLY
sepp_nepp 6:fb11b746ceb5 1931 * VL53L0X_HISTOGRAMMODE_BOTH
sepp_nepp 6:fb11b746ceb5 1932 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 1933 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 1934 */
sepp_nepp 6:fb11b746ceb5 1935 VL53L0X_Error VL53L0X_get_histogram_mode(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 1936 VL53L0X_HistogramModes *p_histogram_mode);
sepp_nepp 6:fb11b746ceb5 1937
sepp_nepp 6:fb11b746ceb5 1938 /**
sepp_nepp 6:fb11b746ceb5 1939 * @brief Set a new Histogram mode
sepp_nepp 6:fb11b746ceb5 1940 * @par Function Description
sepp_nepp 6:fb11b746ceb5 1941 * Set device to a new Histogram mode
sepp_nepp 6:fb11b746ceb5 1942 *
sepp_nepp 6:fb11b746ceb5 1943 * @note This function doesn't Access to the device
sepp_nepp 6:fb11b746ceb5 1944 *
sepp_nepp 6:fb11b746ceb5 1945 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 1946 * @param histogram_mode New device mode to apply
sepp_nepp 6:fb11b746ceb5 1947 * Valid values are:
sepp_nepp 6:fb11b746ceb5 1948 * VL53L0X_HISTOGRAMMODE_DISABLED
sepp_nepp 6:fb11b746ceb5 1949 * VL53L0X_DEVICEMODE_SINGLE_HISTOGRAM
sepp_nepp 6:fb11b746ceb5 1950 * VL53L0X_HISTOGRAMMODE_REFERENCE_ONLY
sepp_nepp 6:fb11b746ceb5 1951 * VL53L0X_HISTOGRAMMODE_RETURN_ONLY
sepp_nepp 6:fb11b746ceb5 1952 * VL53L0X_HISTOGRAMMODE_BOTH
sepp_nepp 6:fb11b746ceb5 1953 *
sepp_nepp 6:fb11b746ceb5 1954 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 1955 * @return VL53L0X_ERROR_MODE_NOT_SUPPORTED This error occurs when
sepp_nepp 6:fb11b746ceb5 1956 * HistogramMode is not in the supported list
sepp_nepp 6:fb11b746ceb5 1957 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 1958 */
sepp_nepp 6:fb11b746ceb5 1959 VL53L0X_Error VL53L0X_set_histogram_mode(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 1960 VL53L0X_HistogramModes histogram_mode);
sepp_nepp 6:fb11b746ceb5 1961
sepp_nepp 6:fb11b746ceb5 1962 /**
sepp_nepp 6:fb11b746ceb5 1963 * @brief Return a description string for a given limit check number
sepp_nepp 6:fb11b746ceb5 1964 *
sepp_nepp 6:fb11b746ceb5 1965 * @par Function Description
sepp_nepp 6:fb11b746ceb5 1966 * This function returns a description string for a given limit check number.
sepp_nepp 6:fb11b746ceb5 1967 * The limit check is identified with the LimitCheckId.
sepp_nepp 6:fb11b746ceb5 1968 *
sepp_nepp 6:fb11b746ceb5 1969 * @note This function doesn't Access to the device
sepp_nepp 6:fb11b746ceb5 1970 *
sepp_nepp 6:fb11b746ceb5 1971 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 1972 * @param limit_check_id Limit Check ID
sepp_nepp 6:fb11b746ceb5 1973 (0<= LimitCheckId < VL53L0X_GetNumberOfLimitCheck() ).
sepp_nepp 6:fb11b746ceb5 1974 * @param p_limit_check_string Pointer to the
sepp_nepp 6:fb11b746ceb5 1975 description string of the given check limit.
sepp_nepp 6:fb11b746ceb5 1976 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 1977 * @return VL53L0X_ERROR_INVALID_PARAMS This error is
sepp_nepp 6:fb11b746ceb5 1978 returned when LimitCheckId value is out of range.
sepp_nepp 6:fb11b746ceb5 1979 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 1980 */
sepp_nepp 6:fb11b746ceb5 1981 VL53L0X_Error VL53L0X_get_limit_check_info(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 1982 uint16_t limit_check_id, char *p_limit_check_string);
sepp_nepp 6:fb11b746ceb5 1983
sepp_nepp 6:fb11b746ceb5 1984 /**
sepp_nepp 6:fb11b746ceb5 1985 * @brief Get the linearity corrective gain
sepp_nepp 6:fb11b746ceb5 1986 *
sepp_nepp 6:fb11b746ceb5 1987 * @par Function Description
sepp_nepp 6:fb11b746ceb5 1988 * Should only be used after a successful call to @a VL53L0X_DataInit to backup
sepp_nepp 6:fb11b746ceb5 1989 * device NVM value
sepp_nepp 6:fb11b746ceb5 1990 *
sepp_nepp 6:fb11b746ceb5 1991 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 1992 *
sepp_nepp 6:fb11b746ceb5 1993 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 1994 * @param p_linearity_corrective_gain Pointer to the linearity
sepp_nepp 6:fb11b746ceb5 1995 * corrective gain in x1000
sepp_nepp 6:fb11b746ceb5 1996 * if value is 1000 then no modification is applied.
sepp_nepp 6:fb11b746ceb5 1997 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 1998 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 1999 */
sepp_nepp 6:fb11b746ceb5 2000 VL53L0X_Error VL53L0X_get_linearity_corrective_gain(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 2001 uint16_t *p_linearity_corrective_gain);
sepp_nepp 6:fb11b746ceb5 2002
sepp_nepp 6:fb11b746ceb5 2003 /**
sepp_nepp 6:fb11b746ceb5 2004 * Set the linearity corrective gain
sepp_nepp 6:fb11b746ceb5 2005 *
sepp_nepp 6:fb11b746ceb5 2006 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 2007 *
sepp_nepp 6:fb11b746ceb5 2008 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 2009 * @param linearity_corrective_gain Linearity corrective
sepp_nepp 6:fb11b746ceb5 2010 * gain in x1000
sepp_nepp 6:fb11b746ceb5 2011 * if value is 1000 then no modification is applied.
sepp_nepp 6:fb11b746ceb5 2012 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 2013 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 2014 */
sepp_nepp 6:fb11b746ceb5 2015 VL53L0X_Error VL53L0X_set_linearity_corrective_gain(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 2016 int16_t linearity_corrective_gain);
sepp_nepp 6:fb11b746ceb5 2017
sepp_nepp 6:fb11b746ceb5 2018 /**
sepp_nepp 6:fb11b746ceb5 2019 * @brief Get the Maximum number of ROI Zones managed by the Device
sepp_nepp 6:fb11b746ceb5 2020 *
sepp_nepp 6:fb11b746ceb5 2021 * @par Function Description
sepp_nepp 6:fb11b746ceb5 2022 * Get Maximum number of ROI Zones managed by the Device.
sepp_nepp 6:fb11b746ceb5 2023 *
sepp_nepp 6:fb11b746ceb5 2024 * @note This function doesn't Access to the device
sepp_nepp 6:fb11b746ceb5 2025 *
sepp_nepp 6:fb11b746ceb5 2026 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 2027 * @param p_max_number_of_roi_zones Pointer to the Maximum Number
sepp_nepp 6:fb11b746ceb5 2028 * of ROI Zones value.
sepp_nepp 6:fb11b746ceb5 2029 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 2030 */
sepp_nepp 6:fb11b746ceb5 2031 VL53L0X_Error VL53L0X_get_max_number_of_roi_zones(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 2032 uint8_t *p_max_number_of_roi_zones);
sepp_nepp 6:fb11b746ceb5 2033
sepp_nepp 6:fb11b746ceb5 2034 /**
sepp_nepp 6:fb11b746ceb5 2035 * @brief Retrieve the Reference Signal after a measurements
sepp_nepp 6:fb11b746ceb5 2036 *
sepp_nepp 6:fb11b746ceb5 2037 * @par Function Description
sepp_nepp 6:fb11b746ceb5 2038 * Get Reference Signal from last successful Ranging measurement
sepp_nepp 6:fb11b746ceb5 2039 * This function return a valid value after that you call the
sepp_nepp 6:fb11b746ceb5 2040 * @a VL53L0X_GetRangingMeasurementData().
sepp_nepp 6:fb11b746ceb5 2041 *
sepp_nepp 6:fb11b746ceb5 2042 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 2043 *
sepp_nepp 6:fb11b746ceb5 2044 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 2045 * @param p_measurement_ref_signal Pointer to the Ref Signal to fill up.
sepp_nepp 6:fb11b746ceb5 2046 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 2047 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 2048 */
sepp_nepp 6:fb11b746ceb5 2049 VL53L0X_Error VL53L0X_get_measurement_ref_signal(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 2050 FixPoint1616_t *p_measurement_ref_signal);
sepp_nepp 6:fb11b746ceb5 2051
sepp_nepp 6:fb11b746ceb5 2052 /**
sepp_nepp 6:fb11b746ceb5 2053 * @brief Get the number of the check limit managed by a given Device
sepp_nepp 6:fb11b746ceb5 2054 *
sepp_nepp 6:fb11b746ceb5 2055 * @par Function Description
sepp_nepp 6:fb11b746ceb5 2056 * This function give the number of the check limit managed by the Device
sepp_nepp 6:fb11b746ceb5 2057 *
sepp_nepp 6:fb11b746ceb5 2058 * @note This function doesn't Access to the device
sepp_nepp 6:fb11b746ceb5 2059 *
sepp_nepp 6:fb11b746ceb5 2060 * @param p_number_of_limit_check Pointer to the number of check limit.
sepp_nepp 6:fb11b746ceb5 2061 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 2062 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 2063 */
sepp_nepp 6:fb11b746ceb5 2064 VL53L0X_Error VL53L0X_get_number_of_limit_check(
sepp_nepp 6:fb11b746ceb5 2065 uint16_t *p_number_of_limit_check);
sepp_nepp 6:fb11b746ceb5 2066
sepp_nepp 6:fb11b746ceb5 2067 /**
sepp_nepp 6:fb11b746ceb5 2068 * @brief Get the number of ROI Zones managed by the Device
sepp_nepp 6:fb11b746ceb5 2069 *
sepp_nepp 6:fb11b746ceb5 2070 * @par Function Description
sepp_nepp 6:fb11b746ceb5 2071 * Get number of ROI Zones managed by the Device
sepp_nepp 6:fb11b746ceb5 2072 * USER should take care about @a VL53L0X_GetNumberOfROIZones()
sepp_nepp 6:fb11b746ceb5 2073 * before get data after a perform measurement.
sepp_nepp 6:fb11b746ceb5 2074 * PAL will fill a NumberOfROIZones times the corresponding data
sepp_nepp 6:fb11b746ceb5 2075 * structure used in the measurement function.
sepp_nepp 6:fb11b746ceb5 2076 *
sepp_nepp 6:fb11b746ceb5 2077 * @note This function doesn't Access to the device
sepp_nepp 6:fb11b746ceb5 2078 *
sepp_nepp 6:fb11b746ceb5 2079 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 2080 * @param p_number_of_roi_zones Pointer to the Number of ROI Zones value.
sepp_nepp 6:fb11b746ceb5 2081 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 2082 */
sepp_nepp 6:fb11b746ceb5 2083 VL53L0X_Error VL53L0X_get_number_of_roi_zones(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 2084 uint8_t *p_number_of_roi_zones);
sepp_nepp 6:fb11b746ceb5 2085
sepp_nepp 6:fb11b746ceb5 2086 /**
sepp_nepp 6:fb11b746ceb5 2087 * @brief Set the number of ROI Zones to be used for a specific Device
sepp_nepp 6:fb11b746ceb5 2088 *
sepp_nepp 6:fb11b746ceb5 2089 * @par Function Description
sepp_nepp 6:fb11b746ceb5 2090 * Set the number of ROI Zones to be used for a specific Device.
sepp_nepp 6:fb11b746ceb5 2091 * The programmed value should be less than the max number of ROI Zones given
sepp_nepp 6:fb11b746ceb5 2092 * with @a VL53L0X_GetMaxNumberOfROIZones().
sepp_nepp 6:fb11b746ceb5 2093 * This version of API manage only one zone.
sepp_nepp 6:fb11b746ceb5 2094 *
sepp_nepp 6:fb11b746ceb5 2095 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 2096 * @param number_of_roi_zones Number of ROI Zones to be used for a
sepp_nepp 6:fb11b746ceb5 2097 * specific Device.
sepp_nepp 6:fb11b746ceb5 2098 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 2099 * @return VL53L0X_ERROR_INVALID_PARAMS This error is returned if
sepp_nepp 6:fb11b746ceb5 2100 * NumberOfROIZones != 1
sepp_nepp 6:fb11b746ceb5 2101 */
sepp_nepp 6:fb11b746ceb5 2102 VL53L0X_Error VL53L0X_set_number_of_roi_zones(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 2103 uint8_t number_of_roi_zones);
sepp_nepp 6:fb11b746ceb5 2104
sepp_nepp 6:fb11b746ceb5 2105 /**
sepp_nepp 6:fb11b746ceb5 2106 * @brief Gets number of sequence steps managed by the API.
sepp_nepp 6:fb11b746ceb5 2107 *
sepp_nepp 6:fb11b746ceb5 2108 * @par Function Description
sepp_nepp 6:fb11b746ceb5 2109 * This function retrieves the number of sequence steps currently managed
sepp_nepp 6:fb11b746ceb5 2110 * by the API
sepp_nepp 6:fb11b746ceb5 2111 *
sepp_nepp 6:fb11b746ceb5 2112 * @note This function Accesses the device
sepp_nepp 6:fb11b746ceb5 2113 *
sepp_nepp 6:fb11b746ceb5 2114 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 2115 * @param p_number_of_sequence_steps Out parameter reporting the number of
sepp_nepp 6:fb11b746ceb5 2116 * sequence steps.
sepp_nepp 6:fb11b746ceb5 2117 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 2118 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 2119 */
sepp_nepp 6:fb11b746ceb5 2120 VL53L0X_Error VL53L0X_get_number_of_sequence_steps(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 2121 uint8_t *p_number_of_sequence_steps);
sepp_nepp 6:fb11b746ceb5 2122 /**
sepp_nepp 6:fb11b746ceb5 2123 * @brief Get the power mode for a given Device
sepp_nepp 6:fb11b746ceb5 2124 *
sepp_nepp 6:fb11b746ceb5 2125 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 2126 *
sepp_nepp 6:fb11b746ceb5 2127 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 2128 * @param p_power_mode Pointer to the current value of the power
sepp_nepp 6:fb11b746ceb5 2129 * mode. see ::VL53L0X_PowerModes
sepp_nepp 6:fb11b746ceb5 2130 * Valid values are:
sepp_nepp 6:fb11b746ceb5 2131 * VL53L0X_POWERMODE_STANDBY_LEVEL1,
sepp_nepp 6:fb11b746ceb5 2132 * VL53L0X_POWERMODE_IDLE_LEVEL1
sepp_nepp 6:fb11b746ceb5 2133 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 2134 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 2135 */
sepp_nepp 6:fb11b746ceb5 2136 VL53L0X_Error VL53L0X_get_power_mode(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 2137 VL53L0X_PowerModes *p_power_mode);
sepp_nepp 6:fb11b746ceb5 2138
sepp_nepp 6:fb11b746ceb5 2139 /**
sepp_nepp 6:fb11b746ceb5 2140 * @brief Set the power mode for a given Device
sepp_nepp 6:fb11b746ceb5 2141 * The power mode can be Standby or Idle. Different level of both Standby and
sepp_nepp 6:fb11b746ceb5 2142 * Idle can exists.
sepp_nepp 6:fb11b746ceb5 2143 * This function should not be used when device is in Ranging state.
sepp_nepp 6:fb11b746ceb5 2144 *
sepp_nepp 6:fb11b746ceb5 2145 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 2146 *
sepp_nepp 6:fb11b746ceb5 2147 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 2148 * @param power_mode The value of the power mode to set.
sepp_nepp 6:fb11b746ceb5 2149 * see ::VL53L0X_PowerModes
sepp_nepp 6:fb11b746ceb5 2150 * Valid values are:
sepp_nepp 6:fb11b746ceb5 2151 * VL53L0X_POWERMODE_STANDBY_LEVEL1,
sepp_nepp 6:fb11b746ceb5 2152 * VL53L0X_POWERMODE_IDLE_LEVEL1
sepp_nepp 6:fb11b746ceb5 2153 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 2154 * @return VL53L0X_ERROR_MODE_NOT_SUPPORTED This error occurs when PowerMode
sepp_nepp 6:fb11b746ceb5 2155 * is not in the supported list
sepp_nepp 6:fb11b746ceb5 2156 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 2157 */
sepp_nepp 6:fb11b746ceb5 2158 VL53L0X_Error VL53L0X_set_power_mode(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 2159 VL53L0X_PowerModes power_mode);
sepp_nepp 6:fb11b746ceb5 2160
sepp_nepp 6:fb11b746ceb5 2161 /**
sepp_nepp 6:fb11b746ceb5 2162 * @brief Retrieves SPAD configuration
sepp_nepp 6:fb11b746ceb5 2163 *
sepp_nepp 6:fb11b746ceb5 2164 * @par Function Description
sepp_nepp 6:fb11b746ceb5 2165 * This function retrieves the current number of applied reference spads
sepp_nepp 6:fb11b746ceb5 2166 * and also their type : Aperture or Non-Aperture.
sepp_nepp 6:fb11b746ceb5 2167 *
sepp_nepp 6:fb11b746ceb5 2168 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 2169 *
sepp_nepp 6:fb11b746ceb5 2170 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 2171 * @param p_spad_count Number ref Spad Count
sepp_nepp 6:fb11b746ceb5 2172 * @param p_is_aperture_spads Reports if spads are of type
sepp_nepp 6:fb11b746ceb5 2173 * aperture or non-aperture.
sepp_nepp 6:fb11b746ceb5 2174 * 1:=aperture, 0:=Non-Aperture
sepp_nepp 6:fb11b746ceb5 2175 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 2176 * @return VL53L0X_ERROR_REF_SPAD_INIT Error in the in the reference
sepp_nepp 6:fb11b746ceb5 2177 * spad configuration.
sepp_nepp 6:fb11b746ceb5 2178 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 2179 */
sepp_nepp 6:fb11b746ceb5 2180 VL53L0X_Error wrapped_VL53L0X_get_reference_spads(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 2181 uint32_t *p_spad_count, uint8_t *p_is_aperture_spads);
sepp_nepp 6:fb11b746ceb5 2182
sepp_nepp 6:fb11b746ceb5 2183 /**
sepp_nepp 6:fb11b746ceb5 2184 * @brief Gets the (on/off) state of a requested sequence step.
sepp_nepp 6:fb11b746ceb5 2185 *
sepp_nepp 6:fb11b746ceb5 2186 * @par Function Description
sepp_nepp 6:fb11b746ceb5 2187 * This function retrieves the state of a requested sequence step, i.e. on/off.
sepp_nepp 6:fb11b746ceb5 2188 *
sepp_nepp 6:fb11b746ceb5 2189 * @note This function Accesses the device
sepp_nepp 6:fb11b746ceb5 2190 *
sepp_nepp 6:fb11b746ceb5 2191 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 2192 * @param sequence_step_id Sequence step identifier.
sepp_nepp 6:fb11b746ceb5 2193 * @param p_sequence_step_enabled Out parameter reporting if the sequence step
sepp_nepp 6:fb11b746ceb5 2194 * is enabled {0=Off,1=On}.
sepp_nepp 6:fb11b746ceb5 2195 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 2196 * @return VL53L0X_ERROR_INVALID_PARAMS Error SequenceStepId parameter not
sepp_nepp 6:fb11b746ceb5 2197 * supported.
sepp_nepp 6:fb11b746ceb5 2198 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 2199 */
sepp_nepp 6:fb11b746ceb5 2200 VL53L0X_Error VL53L0X_get_sequence_step_enable(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 2201 VL53L0X_SequenceStepId sequence_step_id, uint8_t *p_sequence_step_enabled);
sepp_nepp 6:fb11b746ceb5 2202
sepp_nepp 6:fb11b746ceb5 2203
sepp_nepp 6:fb11b746ceb5 2204 /**
sepp_nepp 6:fb11b746ceb5 2205 * @brief Gets the timeout of a requested sequence step.
sepp_nepp 6:fb11b746ceb5 2206 *
sepp_nepp 6:fb11b746ceb5 2207 * @par Function Description
sepp_nepp 6:fb11b746ceb5 2208 * This function retrieves the timeout of a requested sequence step.
sepp_nepp 6:fb11b746ceb5 2209 *
sepp_nepp 6:fb11b746ceb5 2210 * @note This function Accesses the device
sepp_nepp 6:fb11b746ceb5 2211 *
sepp_nepp 6:fb11b746ceb5 2212 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 2213 * @param sequence_step_id Sequence step identifier.
sepp_nepp 6:fb11b746ceb5 2214 * @param p_time_out_milli_secs Timeout value.
sepp_nepp 6:fb11b746ceb5 2215 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 2216 * @return VL53L0X_ERROR_INVALID_PARAMS Error SequenceStepId parameter not
sepp_nepp 6:fb11b746ceb5 2217 * supported.
sepp_nepp 6:fb11b746ceb5 2218 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 2219 */
sepp_nepp 6:fb11b746ceb5 2220 VL53L0X_Error VL53L0X_get_sequence_step_timeout(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 2221 VL53L0X_SequenceStepId sequence_step_id,
sepp_nepp 6:fb11b746ceb5 2222 FixPoint1616_t *p_time_out_milli_secs);
sepp_nepp 6:fb11b746ceb5 2223
sepp_nepp 6:fb11b746ceb5 2224 /**
sepp_nepp 6:fb11b746ceb5 2225 * @brief Sets the timeout of a requested sequence step.
sepp_nepp 6:fb11b746ceb5 2226 *
sepp_nepp 6:fb11b746ceb5 2227 * @par Function Description
sepp_nepp 6:fb11b746ceb5 2228 * This function sets the timeout of a requested sequence step.
sepp_nepp 6:fb11b746ceb5 2229 *
sepp_nepp 6:fb11b746ceb5 2230 * @note This function Accesses the device
sepp_nepp 6:fb11b746ceb5 2231 *
sepp_nepp 6:fb11b746ceb5 2232 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 2233 * @param sequence_step_id Sequence step identifier.
sepp_nepp 6:fb11b746ceb5 2234 * @param time_out_milli_secs Demanded timeout
sepp_nepp 6:fb11b746ceb5 2235 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 2236 * @return VL53L0X_ERROR_INVALID_PARAMS Error SequenceStepId parameter not
sepp_nepp 6:fb11b746ceb5 2237 * supported.
sepp_nepp 6:fb11b746ceb5 2238 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 2239 */
sepp_nepp 6:fb11b746ceb5 2240 VL53L0X_Error VL53L0X_set_sequence_step_timeout(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 2241 VL53L0X_SequenceStepId sequence_step_id, FixPoint1616_t time_out_milli_secs);
sepp_nepp 6:fb11b746ceb5 2242
sepp_nepp 6:fb11b746ceb5 2243 /**
sepp_nepp 6:fb11b746ceb5 2244 * @brief Get the current SPAD Ambient Damper Factor value
sepp_nepp 6:fb11b746ceb5 2245 *
sepp_nepp 6:fb11b746ceb5 2246 * @par Function Description
sepp_nepp 6:fb11b746ceb5 2247 * This function get the SPAD Ambient Damper Factor value
sepp_nepp 6:fb11b746ceb5 2248 *
sepp_nepp 6:fb11b746ceb5 2249 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 2250 *
sepp_nepp 6:fb11b746ceb5 2251 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 2252 * @param p_spad_ambient_damper_factor Pointer to programmed SPAD Ambient
sepp_nepp 6:fb11b746ceb5 2253 * Damper Factor value
sepp_nepp 6:fb11b746ceb5 2254 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 2255 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 2256 */
sepp_nepp 6:fb11b746ceb5 2257 VL53L0X_Error VL53L0X_get_spad_ambient_damper_factor(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 2258 uint16_t *p_spad_ambient_damper_factor);
sepp_nepp 6:fb11b746ceb5 2259 /**
sepp_nepp 6:fb11b746ceb5 2260 * @brief Set the SPAD Ambient Damper Factor value
sepp_nepp 6:fb11b746ceb5 2261 *
sepp_nepp 6:fb11b746ceb5 2262 * @par Function Description
sepp_nepp 6:fb11b746ceb5 2263 * This function set the SPAD Ambient Damper Factor value
sepp_nepp 6:fb11b746ceb5 2264 *
sepp_nepp 6:fb11b746ceb5 2265 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 2266 *
sepp_nepp 6:fb11b746ceb5 2267 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 2268 * @param spad_ambient_damper_factor SPAD Ambient Damper Factor value
sepp_nepp 6:fb11b746ceb5 2269 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 2270 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 2271 */
sepp_nepp 6:fb11b746ceb5 2272 VL53L0X_Error VL53L0X_set_spad_ambient_damper_factor(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 2273 uint16_t spad_ambient_damper_factor);
sepp_nepp 6:fb11b746ceb5 2274
sepp_nepp 6:fb11b746ceb5 2275 /**
sepp_nepp 6:fb11b746ceb5 2276 * @brief Get the current SPAD Ambient Damper Threshold value
sepp_nepp 6:fb11b746ceb5 2277 *
sepp_nepp 6:fb11b746ceb5 2278 * @par Function Description
sepp_nepp 6:fb11b746ceb5 2279 * This function get the SPAD Ambient Damper Threshold value
sepp_nepp 6:fb11b746ceb5 2280 *
sepp_nepp 6:fb11b746ceb5 2281 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 2282 *
sepp_nepp 6:fb11b746ceb5 2283 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 2284 * @param p_spad_ambient_damper_threshold Pointer to programmed
sepp_nepp 6:fb11b746ceb5 2285 * SPAD Ambient Damper Threshold value
sepp_nepp 6:fb11b746ceb5 2286 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 2287 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 2288 */
sepp_nepp 6:fb11b746ceb5 2289 VL53L0X_Error VL53L0X_get_spad_ambient_damper_threshold(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 2290 uint16_t *p_spad_ambient_damper_threshold);
sepp_nepp 6:fb11b746ceb5 2291
sepp_nepp 6:fb11b746ceb5 2292 /**
sepp_nepp 6:fb11b746ceb5 2293 * @brief Set the SPAD Ambient Damper Threshold value
sepp_nepp 6:fb11b746ceb5 2294 *
sepp_nepp 6:fb11b746ceb5 2295 * @par Function Description
sepp_nepp 6:fb11b746ceb5 2296 * This function set the SPAD Ambient Damper Threshold value
sepp_nepp 6:fb11b746ceb5 2297 *
sepp_nepp 6:fb11b746ceb5 2298 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 2299 *
sepp_nepp 6:fb11b746ceb5 2300 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 2301 * @param spad_ambient_damper_threshold SPAD Ambient Damper Threshold value
sepp_nepp 6:fb11b746ceb5 2302 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 2303 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 2304 */
sepp_nepp 6:fb11b746ceb5 2305 VL53L0X_Error VL53L0X_set_spad_ambient_damper_threshold(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 2306 uint16_t spad_ambient_damper_threshold);
sepp_nepp 6:fb11b746ceb5 2307
sepp_nepp 6:fb11b746ceb5 2308 /**
sepp_nepp 6:fb11b746ceb5 2309 * @brief Get the maximal distance for actual setup
sepp_nepp 6:fb11b746ceb5 2310 * @par Function Description
sepp_nepp 6:fb11b746ceb5 2311 * Device must be initialized through @a VL53L0X_SetParameters() prior calling
sepp_nepp 6:fb11b746ceb5 2312 * this function.
sepp_nepp 6:fb11b746ceb5 2313 *
sepp_nepp 6:fb11b746ceb5 2314 * Any range value more than the value returned is to be considered as
sepp_nepp 6:fb11b746ceb5 2315 * "no target detected" or
sepp_nepp 6:fb11b746ceb5 2316 * "no target in detectable range"\n
sepp_nepp 6:fb11b746ceb5 2317 * @warning The maximal distance depends on the setup
sepp_nepp 6:fb11b746ceb5 2318 *
sepp_nepp 6:fb11b746ceb5 2319 * @note This function is not Implemented
sepp_nepp 6:fb11b746ceb5 2320 *
sepp_nepp 6:fb11b746ceb5 2321 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 2322 * @param p_upper_limit_milli_meter The maximal range limit for actual setup
sepp_nepp 6:fb11b746ceb5 2323 * (in millimeter)
sepp_nepp 6:fb11b746ceb5 2324 * @return VL53L0X_ERROR_NOT_IMPLEMENTED Not implemented
sepp_nepp 6:fb11b746ceb5 2325 */
sepp_nepp 6:fb11b746ceb5 2326 VL53L0X_Error VL53L0X_get_upper_limit_milli_meter(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 2327 uint16_t *p_upper_limit_milli_meter);
sepp_nepp 6:fb11b746ceb5 2328
sepp_nepp 6:fb11b746ceb5 2329 /**
sepp_nepp 6:fb11b746ceb5 2330 * @brief Get the tuning settings pointer and the internal external switch
sepp_nepp 6:fb11b746ceb5 2331 * value.
sepp_nepp 6:fb11b746ceb5 2332 *
sepp_nepp 6:fb11b746ceb5 2333 * This function is used to get the Tuning settings buffer pointer and the
sepp_nepp 6:fb11b746ceb5 2334 * value.
sepp_nepp 6:fb11b746ceb5 2335 * of the switch to select either external or internal tuning settings.
sepp_nepp 6:fb11b746ceb5 2336 *
sepp_nepp 6:fb11b746ceb5 2337 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 2338 *
sepp_nepp 6:fb11b746ceb5 2339 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 2340 * @param pp_tuning_setting_buffer Pointer to tuning settings buffer.
sepp_nepp 6:fb11b746ceb5 2341 * @param p_use_internal_tuning_settings Pointer to store Use internal tuning
sepp_nepp 6:fb11b746ceb5 2342 * settings value.
sepp_nepp 6:fb11b746ceb5 2343 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 2344 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 2345 */
sepp_nepp 6:fb11b746ceb5 2346 VL53L0X_Error VL53L0X_get_tuning_setting_buffer(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 2347 uint8_t **pp_tuning_setting_buffer, uint8_t *p_use_internal_tuning_settings);
sepp_nepp 6:fb11b746ceb5 2348
sepp_nepp 6:fb11b746ceb5 2349 /**
sepp_nepp 6:fb11b746ceb5 2350 * @brief Set the tuning settings pointer
sepp_nepp 6:fb11b746ceb5 2351 *
sepp_nepp 6:fb11b746ceb5 2352 * This function is used to specify the Tuning settings buffer to be used
sepp_nepp 6:fb11b746ceb5 2353 * for a given device. The buffer contains all the necessary data to permit
sepp_nepp 6:fb11b746ceb5 2354 * the API to write tuning settings.
sepp_nepp 6:fb11b746ceb5 2355 * This function permit to force the usage of either external or internal
sepp_nepp 6:fb11b746ceb5 2356 * tuning settings.
sepp_nepp 6:fb11b746ceb5 2357 *
sepp_nepp 6:fb11b746ceb5 2358 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 2359 *
sepp_nepp 6:fb11b746ceb5 2360 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 2361 * @param p_tuning_setting_buffer Pointer to tuning settings buffer.
sepp_nepp 6:fb11b746ceb5 2362 * @param use_internal_tuning_settings Use internal tuning settings value.
sepp_nepp 6:fb11b746ceb5 2363 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 2364 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 2365 */
sepp_nepp 6:fb11b746ceb5 2366 VL53L0X_Error VL53L0X_set_tuning_setting_buffer(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 2367 uint8_t *p_tuning_setting_buffer, uint8_t use_internal_tuning_settings);
sepp_nepp 6:fb11b746ceb5 2368
sepp_nepp 6:fb11b746ceb5 2369 /**
sepp_nepp 6:fb11b746ceb5 2370 * @defgroup VL53L0X_registerAccess_group PAL Register Access Functions
sepp_nepp 6:fb11b746ceb5 2371 * @brief PAL Register Access Functions
sepp_nepp 6:fb11b746ceb5 2372 * @{
sepp_nepp 6:fb11b746ceb5 2373 */
sepp_nepp 6:fb11b746ceb5 2374
sepp_nepp 6:fb11b746ceb5 2375 /**
sepp_nepp 6:fb11b746ceb5 2376 * Lock comms interface to serialize all commands to a shared I2C interface for a specific device
sepp_nepp 6:fb11b746ceb5 2377 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 2378 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 2379 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 2380 */
sepp_nepp 6:fb11b746ceb5 2381 VL53L0X_Error VL53L0X_lock_sequence_access(VL53L0X_DEV dev);
sepp_nepp 6:fb11b746ceb5 2382
sepp_nepp 6:fb11b746ceb5 2383 /**
sepp_nepp 6:fb11b746ceb5 2384 * Unlock comms interface to serialize all commands to a shared I2C interface for a specific device
sepp_nepp 6:fb11b746ceb5 2385 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 2386 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 2387 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 2388 */
sepp_nepp 6:fb11b746ceb5 2389 VL53L0X_Error VL53L0X_unlock_sequence_access(VL53L0X_DEV dev);
sepp_nepp 6:fb11b746ceb5 2390
sepp_nepp 6:fb11b746ceb5 2391 /**
sepp_nepp 6:fb11b746ceb5 2392 * @brief Prepare device for operation
sepp_nepp 6:fb11b746ceb5 2393 * @par Function Description
sepp_nepp 6:fb11b746ceb5 2394 * Update device with provided parameters
sepp_nepp 6:fb11b746ceb5 2395 * @li Then start ranging operation.
sepp_nepp 6:fb11b746ceb5 2396 *
sepp_nepp 6:fb11b746ceb5 2397 * @note This function Access to the device
sepp_nepp 6:fb11b746ceb5 2398 *
sepp_nepp 6:fb11b746ceb5 2399 * @param Dev Device Handle
sepp_nepp 6:fb11b746ceb5 2400 * @param pDeviceParameters Pointer to store current device parameters.
sepp_nepp 6:fb11b746ceb5 2401 * @return VL53L0X_ERROR_NONE Success
sepp_nepp 6:fb11b746ceb5 2402 * @return "Other error code" See ::VL53L0X_Error
sepp_nepp 6:fb11b746ceb5 2403 */
sepp_nepp 6:fb11b746ceb5 2404 VL53L0X_Error vl53L0x_set_device_parameters(VL53L0X_DEV Dev,
sepp_nepp 6:fb11b746ceb5 2405 const VL53L0X_DeviceParameters_t *pDeviceParameters);
sepp_nepp 6:fb11b746ceb5 2406
sepp_nepp 6:fb11b746ceb5 2407 /**
sepp_nepp 6:fb11b746ceb5 2408 * Set Group parameter Hold state
sepp_nepp 6:fb11b746ceb5 2409 *
sepp_nepp 6:fb11b746ceb5 2410 * @par Function Description
sepp_nepp 6:fb11b746ceb5 2411 * Set or remove device internal group parameter hold
sepp_nepp 6:fb11b746ceb5 2412 *
sepp_nepp 6:fb11b746ceb5 2413 * @note This function is not Implemented
sepp_nepp 6:fb11b746ceb5 2414 *
sepp_nepp 6:fb11b746ceb5 2415 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 2416 * @param group_param_hold Group parameter Hold state to be set (on/off)
sepp_nepp 6:fb11b746ceb5 2417 * @return VL53L0X_ERROR_NOT_IMPLEMENTED Not implemented
sepp_nepp 6:fb11b746ceb5 2418 */
sepp_nepp 6:fb11b746ceb5 2419 VL53L0X_Error VL53L0X_set_group_param_hold(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 2420 uint8_t group_param_hold);
sepp_nepp 6:fb11b746ceb5 2421
sepp_nepp 6:fb11b746ceb5 2422 /**
sepp_nepp 6:fb11b746ceb5 2423 * @brief Wait for device ready for a new measurement command.
sepp_nepp 6:fb11b746ceb5 2424 * Blocking function.
sepp_nepp 6:fb11b746ceb5 2425 *
sepp_nepp 6:fb11b746ceb5 2426 * @note This function is not Implemented
sepp_nepp 6:fb11b746ceb5 2427 *
sepp_nepp 6:fb11b746ceb5 2428 * @param dev Device Handle
sepp_nepp 6:fb11b746ceb5 2429 * @param max_loop Max Number of polling loop (timeout).
sepp_nepp 6:fb11b746ceb5 2430 * @return VL53L0X_ERROR_NOT_IMPLEMENTED Not implemented
sepp_nepp 6:fb11b746ceb5 2431 */
sepp_nepp 6:fb11b746ceb5 2432 VL53L0X_Error VL53L0X_wait_device_ready_for_new_measurement(VL53L0X_DEV dev,
sepp_nepp 6:fb11b746ceb5 2433 uint32_t max_loop);
sepp_nepp 6:fb11b746ceb5 2434
sepp_nepp 6:fb11b746ceb5 2435 VL53L0X_Error VL53L0X_reverse_bytes(uint8_t *data, uint32_t size);
sepp_nepp 6:fb11b746ceb5 2436
sepp_nepp 6:fb11b746ceb5 2437 int range_meas_int_continuous_mode(void (*fptr)(void));
sepp_nepp 6:fb11b746ceb5 2438
sepp_nepp 6:fb11b746ceb5 2439
sepp_nepp 6:fb11b746ceb5 2440 VL53L0X_DeviceInfo_t _device_info;
sepp_nepp 6:fb11b746ceb5 2441
sepp_nepp 6:fb11b746ceb5 2442 /* IO Device */
sepp_nepp 6:fb11b746ceb5 2443 I2C *_dev_i2c;
sepp_nepp 6:fb11b746ceb5 2444 /* Digital out pin */
sepp_nepp 6:fb11b746ceb5 2445 DigitalOut *_gpio0;
sepp_nepp 6:fb11b746ceb5 2446 /* Measure detection IRQ */
sepp_nepp 6:fb11b746ceb5 2447 InterruptIn *_gpio1Int;
sepp_nepp 6:fb11b746ceb5 2448 /* Device data */
sepp_nepp 6:fb11b746ceb5 2449 VL53L0X_Dev_t _my_device;
sepp_nepp 6:fb11b746ceb5 2450 VL53L0X_DEV _device;
sepp_nepp 6:fb11b746ceb5 2451 private:
sepp_nepp 6:fb11b746ceb5 2452 /** @brief Writes a buffer towards the I2C peripheral device.
sepp_nepp 6:fb11b746ceb5 2453 * @param pBuffer pointer to the byte-array data to send
sepp_nepp 6:fb11b746ceb5 2454 * @param DeviceAddr specifies the peripheral device slave address.
sepp_nepp 6:fb11b746ceb5 2455 * @param RegisterAddr specifies the internal address register
sepp_nepp 6:fb11b746ceb5 2456 * where to start writing to (must be correctly masked).
sepp_nepp 6:fb11b746ceb5 2457 * @param NumByteToWrite number of bytes to be written.
sepp_nepp 6:fb11b746ceb5 2458 * @retval 0 if ok,
sepp_nepp 6:fb11b746ceb5 2459 * @retval -1 if an I2C error has occured, or
sepp_nepp 6:fb11b746ceb5 2460 * @retval -2 on temporary buffer overflow (i.e. NumByteToWrite was too high)
sepp_nepp 6:fb11b746ceb5 2461 * @note On some devices if NumByteToWrite is greater
sepp_nepp 6:fb11b746ceb5 2462 * than one, the RegisterAddr must be masked correctly!
sepp_nepp 6:fb11b746ceb5 2463 */
sepp_nepp 6:fb11b746ceb5 2464 int i2c_write(uint8_t* pBuffer, uint8_t DeviceAddr, uint8_t RegisterAddr,
sepp_nepp 6:fb11b746ceb5 2465 uint16_t NumByteToWrite);
sepp_nepp 6:fb11b746ceb5 2466
sepp_nepp 6:fb11b746ceb5 2467 /** @brief Reads a buffer from the I2C peripheral device.
sepp_nepp 6:fb11b746ceb5 2468 * @param pBuffer pointer to the byte-array to read data in to
sepp_nepp 6:fb11b746ceb5 2469 * @param DeviceAddr specifies the peripheral device slave address.
sepp_nepp 6:fb11b746ceb5 2470 * @param RegisterAddr specifies the internal address register
sepp_nepp 6:fb11b746ceb5 2471 * where to start reading from (must be correctly masked).
sepp_nepp 6:fb11b746ceb5 2472 * @param NumByteToRead number of bytes to be read.
sepp_nepp 6:fb11b746ceb5 2473 * @retval 0 if ok,
sepp_nepp 6:fb11b746ceb5 2474 * @retval -1 if an I2C error has occured
sepp_nepp 6:fb11b746ceb5 2475 * @note On some devices if NumByteToWrite is greater
sepp_nepp 6:fb11b746ceb5 2476 * than one, the RegisterAddr must be masked correctly!
sepp_nepp 6:fb11b746ceb5 2477 */
sepp_nepp 6:fb11b746ceb5 2478 int i2c_read(uint8_t* pBuffer, uint8_t DeviceAddr, uint8_t RegisterAddr,
sepp_nepp 6:fb11b746ceb5 2479 uint16_t NumByteToRead);
sepp_nepp 6:fb11b746ceb5 2480 };
sepp_nepp 6:fb11b746ceb5 2481
sepp_nepp 6:fb11b746ceb5 2482
sepp_nepp 6:fb11b746ceb5 2483 #endif /* _VL53L0X_CLASS_H_ */