Fork Charles's library

Dependencies:   X_NUCLEO_COMMON ST_INTERFACES

Dependents:   VL53L3ExpansionBoard

Committer:
johnAlexander
Date:
Tue Nov 03 15:16:36 2020 +0000
Revision:
3:316175f392f7
Parent:
vl53l3inc/vl53lx_class.h@2:ad33ff89d2cf
Add ST common libs

Who changed what in which revision?

UserRevisionLine numberNew contents of line
charlesmn 0:0be0bd219e72 1 /*******************************************************************************
charlesmn 0:0be0bd219e72 2 Copyright © 2018, STMicroelectronics International N.V.
charlesmn 0:0be0bd219e72 3 All rights reserved.
charlesmn 0:0be0bd219e72 4 Redistribution and use in source and binary forms, with or without
charlesmn 0:0be0bd219e72 5 modification, are permitted provided that the following conditions are met:
charlesmn 0:0be0bd219e72 6 * Redistributions of source code must retain the above copyright
charlesmn 0:0be0bd219e72 7 notice, this list of conditions and the following disclaimer.
charlesmn 0:0be0bd219e72 8 * Redistributions in binary form must reproduce the above copyright
charlesmn 0:0be0bd219e72 9 notice, this list of conditions and the following disclaimer in the
charlesmn 0:0be0bd219e72 10 documentation and/or other materials provided with the distribution.
charlesmn 0:0be0bd219e72 11 * Neither the name of STMicroelectronics nor the
charlesmn 0:0be0bd219e72 12 names of its contributors may be used to endorse or promote products
charlesmn 0:0be0bd219e72 13 derived from this software without specific prior written permission.
charlesmn 0:0be0bd219e72 14 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
charlesmn 0:0be0bd219e72 15 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
charlesmn 0:0be0bd219e72 16 WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND
charlesmn 0:0be0bd219e72 17 NON-INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS ARE DISCLAIMED.
charlesmn 0:0be0bd219e72 18 IN NO EVENT SHALL STMICROELECTRONICS INTERNATIONAL N.V. BE LIABLE FOR ANY
charlesmn 0:0be0bd219e72 19 DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
charlesmn 0:0be0bd219e72 20 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
charlesmn 0:0be0bd219e72 21 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
charlesmn 0:0be0bd219e72 22 ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
charlesmn 0:0be0bd219e72 23 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
charlesmn 0:0be0bd219e72 24 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
charlesmn 0:0be0bd219e72 25 *****************************************************************************/
charlesmn 0:0be0bd219e72 26
charlesmn 0:0be0bd219e72 27 #ifndef __VL53LX_CLASS_H
charlesmn 0:0be0bd219e72 28 #define __VL53LX_CLASS_H
charlesmn 0:0be0bd219e72 29
charlesmn 0:0be0bd219e72 30 #ifdef _MSC_VER
charlesmn 0:0be0bd219e72 31 #ifdef VL53LX_API_EXPORTS
charlesmn 0:0be0bd219e72 32 #define VL53LX_API __declspec(dllexport)
charlesmn 0:0be0bd219e72 33 #else
charlesmn 0:0be0bd219e72 34 #define VL53LX_API
charlesmn 0:0be0bd219e72 35 #endif
charlesmn 0:0be0bd219e72 36 #else
charlesmn 0:0be0bd219e72 37 #define VL53LX_API
charlesmn 0:0be0bd219e72 38 #endif
charlesmn 0:0be0bd219e72 39
charlesmn 0:0be0bd219e72 40 /* Includes ------------------------------------------------------------------*/
charlesmn 0:0be0bd219e72 41 //#include "Arduino.h"
charlesmn 0:0be0bd219e72 42 #include "mbed.h"
charlesmn 0:0be0bd219e72 43 #include "RangeSensor.h"
charlesmn 0:0be0bd219e72 44 #include "vl53lx_def.h"
charlesmn 0:0be0bd219e72 45 #include "vl53L3_I2c.h"
charlesmn 0:0be0bd219e72 46 //#include <Wire.h>
charlesmn 0:0be0bd219e72 47
charlesmn 0:0be0bd219e72 48
charlesmn 0:0be0bd219e72 49 #include "PinNames.h"
charlesmn 0:0be0bd219e72 50 #include "vl53lx_error_codes.h"
charlesmn 0:0be0bd219e72 51 #include "vl53lx_platform_user_data.h"
charlesmn 0:0be0bd219e72 52
charlesmn 0:0be0bd219e72 53 #include "Stmpe1600.h"
charlesmn 0:0be0bd219e72 54 /**********************************************************/
charlesmn 0:0be0bd219e72 55
charlesmn 0:0be0bd219e72 56
charlesmn 0:0be0bd219e72 57 #define VL53LX_DEFAULT_DEVICE_ADDRESS 0x52
charlesmn 0:0be0bd219e72 58
charlesmn 0:0be0bd219e72 59
charlesmn 0:0be0bd219e72 60 /* vl53lx_api_core.c */
charlesmn 0:0be0bd219e72 61 #define VL53LX_MAX_I2C_XFER_SIZE 256
charlesmn 0:0be0bd219e72 62 /* vl53lx_core.c */
charlesmn 0:0be0bd219e72 63 // VL53LX_Error VL53LX_dynamic_xtalk_correction_corrector()
charlesmn 0:0be0bd219e72 64 #define CONT_CONTINUE 0
charlesmn 0:0be0bd219e72 65 #define CONT_NEXT_LOOP 1
charlesmn 0:0be0bd219e72 66 #define CONT_RESET 2
charlesmn 0:0be0bd219e72 67
charlesmn 0:0be0bd219e72 68
charlesmn 0:0be0bd219e72 69 /* vl53lx_api.c */
charlesmn 0:0be0bd219e72 70
charlesmn 0:0be0bd219e72 71 #ifndef MIN
charlesmn 0:0be0bd219e72 72 #define MIN(v1, v2) ((v1) < (v2) ? (v1) : (v2))
charlesmn 0:0be0bd219e72 73 #endif
charlesmn 0:0be0bd219e72 74 #ifndef MAX
charlesmn 0:0be0bd219e72 75 #define MAX(v1, v2) ((v1) < (v2) ? (v2) : (v1))
charlesmn 0:0be0bd219e72 76 #endif
charlesmn 0:0be0bd219e72 77
charlesmn 0:0be0bd219e72 78 #define DMAX_REFLECTANCE_IDX 2
charlesmn 0:0be0bd219e72 79
charlesmn 0:0be0bd219e72 80
charlesmn 0:0be0bd219e72 81
charlesmn 0:0be0bd219e72 82 #define LOWPOWER_AUTO_VHV_LOOP_DURATION_US 245
charlesmn 0:0be0bd219e72 83 #define LOWPOWER_AUTO_OVERHEAD_BEFORE_A_RANGING 1448
charlesmn 0:0be0bd219e72 84 #define LOWPOWER_AUTO_OVERHEAD_BETWEEN_A_B_RANGING 2100
charlesmn 0:0be0bd219e72 85
charlesmn 0:0be0bd219e72 86 #define FDA_MAX_TIMING_BUDGET_US 550000
charlesmn 0:0be0bd219e72 87
charlesmn 0:0be0bd219e72 88
charlesmn 0:0be0bd219e72 89 #define VL53LX_NVM_POWER_UP_DELAY_US 50
charlesmn 0:0be0bd219e72 90 #define VL53LX_NVM_READ_TRIGGER_DELAY_US 5
charlesmn 0:0be0bd219e72 91
charlesmn 0:0be0bd219e72 92
charlesmn 0:0be0bd219e72 93 #define VL53LX_D_002 0xFFFF
charlesmn 0:0be0bd219e72 94 #define VL53LX_D_008 0xFFFF
charlesmn 0:0be0bd219e72 95 #define VL53LX_D_003 0xFFFFFF
charlesmn 0:0be0bd219e72 96 #define VL53LX_D_007 0xFFFFFFFF
charlesmn 0:0be0bd219e72 97 #define VL53LX_D_005 0x7FFFFFFFFF
charlesmn 0:0be0bd219e72 98 #define VL53LX_D_009 0xFFFFFFFFFF
charlesmn 0:0be0bd219e72 99 #define VL53LX_D_010 0xFFFFFFFFFFFF
charlesmn 0:0be0bd219e72 100 #define VL53LX_D_004 0xFFFFFFFFFFFFFF
charlesmn 0:0be0bd219e72 101 #define VL53LX_D_006 0x7FFFFFFFFFFFFFFF
charlesmn 0:0be0bd219e72 102 #define VL53LX_D_011 0xFFFFFFFFFFFFFFFF
charlesmn 0:0be0bd219e72 103
charlesmn 0:0be0bd219e72 104 #define VL53L1X_DEFAULT_DEVICE_ADDRESS 0x52
charlesmn 0:0be0bd219e72 105 #define HIGH 1
charlesmn 0:0be0bd219e72 106 /*
charlesmn 0:0be0bd219e72 107
charlesmn 0:0be0bd219e72 108 int BDTable[11] = {
charlesmn 0:0be0bd219e72 109 TUNING_VERSION,
charlesmn 0:0be0bd219e72 110 TUNING_PROXY_MIN,
charlesmn 0:0be0bd219e72 111 TUNING_SINGLE_TARGET_XTALK_TARGET_DISTANCE_MM,
charlesmn 0:0be0bd219e72 112 TUNING_SINGLE_TARGET_XTALK_SAMPLE_NUMBER,
charlesmn 0:0be0bd219e72 113 TUNING_MIN_AMBIENT_DMAX_VALID,
charlesmn 0:0be0bd219e72 114 TUNING_MAX_SIMPLE_OFFSET_CALIBRATION_SAMPLE_NUMBER,
charlesmn 0:0be0bd219e72 115 TUNING_XTALK_FULL_ROI_TARGET_DISTANCE_MM,
charlesmn 0:0be0bd219e72 116 TUNING_SIMPLE_OFFSET_CALIBRATION_REPEAT,
charlesmn 0:0be0bd219e72 117 TUNING_XTALK_FULL_ROI_BIN_SUM_MARGIN,
charlesmn 0:0be0bd219e72 118 TUNING_XTALK_FULL_ROI_DEFAULT_OFFSET,
charlesmn 0:0be0bd219e72 119 TUNING_ZERO_DISTANCE_OFFSET_NON_LINEAR_FACTOR_DEFAULT
charlesmn 0:0be0bd219e72 120 };
charlesmn 0:0be0bd219e72 121 */
charlesmn 0:0be0bd219e72 122
charlesmn 0:0be0bd219e72 123 /* Classes -------------------------------------------------------------------*/
charlesmn 0:0be0bd219e72 124 /** Class representing a VL53LX sensor component
charlesmn 0:0be0bd219e72 125 */
charlesmn 0:0be0bd219e72 126
charlesmn 0:0be0bd219e72 127 class VL53LX : public RangeSensor {
charlesmn 0:0be0bd219e72 128 public:
charlesmn 0:0be0bd219e72 129 /** Constructor
charlesmn 0:0be0bd219e72 130 * @param[in] &i2c device I2C to be used for communication
charlesmn 0:0be0bd219e72 131 * @param[in] &pin_gpio1 pin Mbed InterruptIn PinName to be used as component GPIO_1 INT
charlesmn 0:0be0bd219e72 132 * @param[in] DevAddr device address, 0x52 by default
johnAlexander 2:ad33ff89d2cf 133 */
johnAlexander 2:ad33ff89d2cf 134 VL53LX(vl53L3_DevI2C *i2c, DigitalOut *pin, PinName pin_gpio1, uint8_t dev_addr = VL53L1X_DEFAULT_DEVICE_ADDRESS)
johnAlexander 2:ad33ff89d2cf 135 : RangeSensor(), dev_i2c(i2c), _gpio0(pin)
charlesmn 0:0be0bd219e72 136 {
johnAlexander 2:ad33ff89d2cf 137 MyDevice.I2cDevAddr = dev_addr;
johnAlexander 2:ad33ff89d2cf 138 MyDevice.I2cHandle = i2c;
johnAlexander 2:ad33ff89d2cf 139 Dev = &MyDevice;
johnAlexander 2:ad33ff89d2cf 140
johnAlexander 2:ad33ff89d2cf 141 _expgpio0 = NULL;
johnAlexander 2:ad33ff89d2cf 142 if (pin_gpio1 != NC) {
johnAlexander 2:ad33ff89d2cf 143 _gpio1Int = new InterruptIn(pin_gpio1);
johnAlexander 2:ad33ff89d2cf 144 } else {
johnAlexander 2:ad33ff89d2cf 145 _gpio1Int = NULL;
johnAlexander 2:ad33ff89d2cf 146 }
charlesmn 0:0be0bd219e72 147 }
johnAlexander 2:ad33ff89d2cf 148
charlesmn 0:0be0bd219e72 149
charlesmn 0:0be0bd219e72 150
charlesmn 0:0be0bd219e72 151 VL53LX(vl53L3_DevI2C *i2c, Stmpe1600DigiOut *pin, PinName pin_gpio1, uint8_t dev_addr = VL53LX_DEFAULT_DEVICE_ADDRESS)
charlesmn 0:0be0bd219e72 152 : RangeSensor(), dev_i2c(i2c), _expgpio0(pin)
charlesmn 0:0be0bd219e72 153 {
charlesmn 0:0be0bd219e72 154 MyDevice.I2cDevAddr=dev_addr;
charlesmn 0:0be0bd219e72 155 MyDevice.I2cHandle = i2c;
charlesmn 0:0be0bd219e72 156 Dev = &MyDevice;
charlesmn 0:0be0bd219e72 157
charlesmn 0:0be0bd219e72 158 _gpio0 = NULL;
charlesmn 0:0be0bd219e72 159 if (pin_gpio1 != NC) {
charlesmn 0:0be0bd219e72 160 _gpio1Int = new InterruptIn(pin_gpio1);
charlesmn 0:0be0bd219e72 161 } else {
charlesmn 0:0be0bd219e72 162 _gpio1Int = NULL;
charlesmn 0:0be0bd219e72 163 }
charlesmn 0:0be0bd219e72 164
johnAlexander 2:ad33ff89d2cf 165 // i2c_inst = i2c;
charlesmn 0:0be0bd219e72 166 }
charlesmn 0:0be0bd219e72 167
charlesmn 0:0be0bd219e72 168
charlesmn 0:0be0bd219e72 169 /** Destructor
charlesmn 0:0be0bd219e72 170 */
charlesmn 0:0be0bd219e72 171 virtual ~VL53LX() {}
charlesmn 0:0be0bd219e72 172 /* warning: VL53LX class inherits from GenericSensor, RangeSensor and LightSensor, that haven`t a destructor.
charlesmn 0:0be0bd219e72 173 The warning should request to introduce a virtual destructor to make sure to delete the object */
charlesmn 0:0be0bd219e72 174
charlesmn 0:0be0bd219e72 175 /*** Interface Methods ***/
charlesmn 0:0be0bd219e72 176 /*** High level API ***/
charlesmn 0:0be0bd219e72 177 /**
charlesmn 0:0be0bd219e72 178 * @brief PowerOn the sensor
charlesmn 0:0be0bd219e72 179 * @return void
charlesmn 0:0be0bd219e72 180 */
charlesmn 0:0be0bd219e72 181 /* turns on the sensor */
charlesmn 0:0be0bd219e72 182
charlesmn 0:0be0bd219e72 183
charlesmn 0:0be0bd219e72 184 /* turns on the sensor */
charlesmn 0:0be0bd219e72 185 virtual void VL53LX_On(void)
charlesmn 0:0be0bd219e72 186 {
charlesmn 0:0be0bd219e72 187 printf("VL53L1_On\r\n");
charlesmn 0:0be0bd219e72 188 if (_gpio0) {
charlesmn 0:0be0bd219e72 189 *_gpio0 = 1;
charlesmn 0:0be0bd219e72 190 } else {
charlesmn 0:0be0bd219e72 191 if (_expgpio0) {
charlesmn 0:0be0bd219e72 192 *_expgpio0 = 1;
charlesmn 0:0be0bd219e72 193 }
charlesmn 0:0be0bd219e72 194 }
charlesmn 0:0be0bd219e72 195 wait_ms(10);
charlesmn 0:0be0bd219e72 196 }
charlesmn 0:0be0bd219e72 197
charlesmn 0:0be0bd219e72 198 /**
charlesmn 0:0be0bd219e72 199 * @brief PowerOff the sensor
charlesmn 0:0be0bd219e72 200 * @return void
charlesmn 0:0be0bd219e72 201 */
charlesmn 0:0be0bd219e72 202 /* turns off the sensor */
charlesmn 0:0be0bd219e72 203 virtual void VL53LX_Off(void)
charlesmn 0:0be0bd219e72 204 {
charlesmn 0:0be0bd219e72 205 printf("VL53L1_Off\r\n");
charlesmn 0:0be0bd219e72 206 if (_gpio0) {
charlesmn 0:0be0bd219e72 207 *_gpio0 = 0;
charlesmn 0:0be0bd219e72 208 } else {
charlesmn 0:0be0bd219e72 209 if (_expgpio0) {
charlesmn 0:0be0bd219e72 210 *_expgpio0 = 0;
charlesmn 0:0be0bd219e72 211 }
charlesmn 0:0be0bd219e72 212 }
charlesmn 0:0be0bd219e72 213 wait_ms(10);
charlesmn 0:0be0bd219e72 214 }
charlesmn 0:0be0bd219e72 215 /*
charlesmn 0:0be0bd219e72 216 virtual void VL53LX_On(void)
charlesmn 0:0be0bd219e72 217 {
charlesmn 0:0be0bd219e72 218 if (gpio0 >= 0) {
charlesmn 0:0be0bd219e72 219 digitalWrite(gpio0, HIGH);
charlesmn 0:0be0bd219e72 220 }
charlesmn 0:0be0bd219e72 221 delay(10);
charlesmn 0:0be0bd219e72 222 }
charlesmn 0:0be0bd219e72 223 */
charlesmn 0:0be0bd219e72 224
charlesmn 0:0be0bd219e72 225 /**
charlesmn 0:0be0bd219e72 226 * @brief PowerOff the sensor
charlesmn 0:0be0bd219e72 227 * @return void
charlesmn 0:0be0bd219e72 228 */
charlesmn 0:0be0bd219e72 229 /* turns off the sensor */
charlesmn 0:0be0bd219e72 230 /*
charlesmn 0:0be0bd219e72 231 virtual void VL53LX_Off(void)
charlesmn 0:0be0bd219e72 232 {
charlesmn 0:0be0bd219e72 233 if (gpio0 >= 0) {
charlesmn 0:0be0bd219e72 234 digitalWrite(gpio0, LOW);
charlesmn 0:0be0bd219e72 235 }
charlesmn 0:0be0bd219e72 236 delay(10);
charlesmn 0:0be0bd219e72 237 }
charlesmn 0:0be0bd219e72 238 */
charlesmn 0:0be0bd219e72 239
charlesmn 0:0be0bd219e72 240 /**
charlesmn 0:0be0bd219e72 241 * @brief Initialize the sensor with default values
charlesmn 0:0be0bd219e72 242 * @return 0 on Success
charlesmn 0:0be0bd219e72 243 */
charlesmn 0:0be0bd219e72 244
charlesmn 0:0be0bd219e72 245 VL53LX_Error InitSensor(uint8_t address)
charlesmn 0:0be0bd219e72 246 {
charlesmn 0:0be0bd219e72 247 VL53LX_Error status = VL53LX_ERROR_NONE;
charlesmn 0:0be0bd219e72 248 VL53LX_Off();
charlesmn 0:0be0bd219e72 249 VL53LX_On();
charlesmn 0:0be0bd219e72 250
charlesmn 0:0be0bd219e72 251 status = VL53LX_SetDeviceAddress(address);
charlesmn 0:0be0bd219e72 252
charlesmn 0:0be0bd219e72 253 if (status == VL53LX_ERROR_NONE) {
charlesmn 0:0be0bd219e72 254 status = VL53LX_WaitDeviceBooted();
charlesmn 0:0be0bd219e72 255 }
charlesmn 0:0be0bd219e72 256
charlesmn 0:0be0bd219e72 257 if (status == VL53LX_ERROR_NONE) {
charlesmn 0:0be0bd219e72 258 status = VL53LX_DataInit();
charlesmn 0:0be0bd219e72 259 }
charlesmn 0:0be0bd219e72 260 return status;
charlesmn 0:0be0bd219e72 261 }
charlesmn 0:0be0bd219e72 262
charlesmn 0:0be0bd219e72 263
charlesmn 0:0be0bd219e72 264
charlesmn 0:0be0bd219e72 265 /**
charlesmn 0:0be0bd219e72 266 *
charlesmn 0:0be0bd219e72 267 * @brief One time device initialization
charlesmn 0:0be0bd219e72 268 * @param void
charlesmn 0:0be0bd219e72 269 * @return 0 on success
charlesmn 0:0be0bd219e72 270 */
johnAlexander 1:96f9b31f585a 271 // virtual int Init()
johnAlexander 1:96f9b31f585a 272 virtual int init(void *init)
charlesmn 0:0be0bd219e72 273 {
charlesmn 0:0be0bd219e72 274 return VL53LX_DataInit();
charlesmn 0:0be0bd219e72 275 }
charlesmn 0:0be0bd219e72 276
charlesmn 0:0be0bd219e72 277
charlesmn 0:0be0bd219e72 278
charlesmn 0:0be0bd219e72 279 /* Read function of the ID device */
johnAlexander 1:96f9b31f585a 280 // virtual int ReadID()
johnAlexander 1:96f9b31f585a 281 virtual int read_id(uint8_t *id)
charlesmn 0:0be0bd219e72 282 {
charlesmn 0:0be0bd219e72 283 uint64_t Uid;
charlesmn 0:0be0bd219e72 284 VL53LX_GetUID(&Uid);
charlesmn 0:0be0bd219e72 285 if (Uid == 0x00FF000000FF) {
charlesmn 0:0be0bd219e72 286 return 0;
charlesmn 0:0be0bd219e72 287 }
charlesmn 0:0be0bd219e72 288 return -1;
charlesmn 0:0be0bd219e72 289 }
charlesmn 0:0be0bd219e72 290
charlesmn 0:0be0bd219e72 291
charlesmn 0:0be0bd219e72 292
charlesmn 0:0be0bd219e72 293 /**
charlesmn 0:0be0bd219e72 294 * @brief Get ranging result and only that
charlesmn 0:0be0bd219e72 295 * @param pRange_mm Pointer to range distance
charlesmn 0:0be0bd219e72 296 * @return 0 on success
charlesmn 0:0be0bd219e72 297 */
johnAlexander 1:96f9b31f585a 298 // virtual int GetDistance(uint32_t *piData)
johnAlexander 1:96f9b31f585a 299 virtual int get_distance(uint32_t *pi_data)
charlesmn 0:0be0bd219e72 300 {
johnAlexander 1:96f9b31f585a 301 int status;
johnAlexander 1:96f9b31f585a 302 uint16_t distance = 0;
johnAlexander 1:96f9b31f585a 303 // status = vl53l1x_get_distance(&distance);
johnAlexander 1:96f9b31f585a 304 *pi_data = (uint32_t) distance;
johnAlexander 1:96f9b31f585a 305 return status;
charlesmn 0:0be0bd219e72 306 }
charlesmn 0:0be0bd219e72 307
charlesmn 0:0be0bd219e72 308
charlesmn 0:0be0bd219e72 309 /* vl53lx_api.h */
charlesmn 0:0be0bd219e72 310
charlesmn 0:0be0bd219e72 311 /** @defgroup VL53LX_group VL53LX Function Definition
charlesmn 0:0be0bd219e72 312 * @brief VL53LX Function Definition
charlesmn 0:0be0bd219e72 313 * @{
charlesmn 0:0be0bd219e72 314 */
charlesmn 0:0be0bd219e72 315
charlesmn 0:0be0bd219e72 316 /** @defgroup VL53LX_general_group VL53LX General Functions
charlesmn 0:0be0bd219e72 317 * @brief General functions and definitions
charlesmn 0:0be0bd219e72 318 * @{
charlesmn 0:0be0bd219e72 319 */
charlesmn 0:0be0bd219e72 320
charlesmn 0:0be0bd219e72 321 /**
charlesmn 0:0be0bd219e72 322 * @brief Return the VL53LX driver Version
charlesmn 0:0be0bd219e72 323 *
charlesmn 0:0be0bd219e72 324 * @note This function doesn't access to the device
charlesmn 0:0be0bd219e72 325 *
charlesmn 0:0be0bd219e72 326 * @param pVersion Rer to current driver Version
charlesmn 0:0be0bd219e72 327 * @return VL53LX_Error_NONE Success
charlesmn 0:0be0bd219e72 328 * @return "Other error code" See ::VL53LX_Error
charlesmn 0:0be0bd219e72 329 */
charlesmn 0:0be0bd219e72 330 VL53LX_Error VL53LX_GetVersion(VL53LX_Version_t *pVersion);
charlesmn 0:0be0bd219e72 331
charlesmn 0:0be0bd219e72 332 /**
charlesmn 0:0be0bd219e72 333 * @brief Reads the Product Revision for a for given Device
charlesmn 0:0be0bd219e72 334 * This function can be used to distinguish cut1.0 from cut1.1.
charlesmn 0:0be0bd219e72 335 *
charlesmn 0:0be0bd219e72 336 * @param Dev Device Handle
charlesmn 0:0be0bd219e72 337 * @param pProductRevisionMajor Pointer to Product Revision Major
charlesmn 0:0be0bd219e72 338 * for a given Device
charlesmn 0:0be0bd219e72 339 * @param pProductRevisionMinor Pointer to Product Revision Minor
charlesmn 0:0be0bd219e72 340 * for a given Device
charlesmn 0:0be0bd219e72 341 * @return VL53LX_Error_NONE Success
charlesmn 0:0be0bd219e72 342 * @return "Other error code" See ::VL53LX_Error
charlesmn 0:0be0bd219e72 343 */
charlesmn 0:0be0bd219e72 344 VL53LX_Error VL53LX_GetProductRevision(uint8_t *pProductRevisionMajor, uint8_t *pProductRevisionMinor);
charlesmn 0:0be0bd219e72 345
charlesmn 0:0be0bd219e72 346 /**
charlesmn 0:0be0bd219e72 347 * @brief Reads the Device information for given Device
charlesmn 0:0be0bd219e72 348 *
charlesmn 0:0be0bd219e72 349 * @note This function Access to the device
charlesmn 0:0be0bd219e72 350 *
charlesmn 0:0be0bd219e72 351 * @param Dev Device Handle
charlesmn 0:0be0bd219e72 352 * @param pVL53LX_DeviceInfo Pointer to current device info for a given
charlesmn 0:0be0bd219e72 353 * Device
charlesmn 0:0be0bd219e72 354 * @return VL53LX_Error_NONE Success
charlesmn 0:0be0bd219e72 355 * @return "Other error code" See ::VL53LX_Error
charlesmn 0:0be0bd219e72 356 */
charlesmn 0:0be0bd219e72 357 VL53LX_Error VL53LX_GetDeviceInfo(
charlesmn 0:0be0bd219e72 358 VL53LX_DeviceInfo_t *pVL53LX_DeviceInfo);
charlesmn 0:0be0bd219e72 359
charlesmn 0:0be0bd219e72 360 /**
charlesmn 0:0be0bd219e72 361 * @brief Reads the Device unique identifier
charlesmn 0:0be0bd219e72 362 *
charlesmn 0:0be0bd219e72 363 * @note This function Access to the device
charlesmn 0:0be0bd219e72 364 *
charlesmn 0:0be0bd219e72 365 * @param Dev Device Handle
charlesmn 0:0be0bd219e72 366 * @param pUid Pointer to current device unique ID
charlesmn 0:0be0bd219e72 367 * @return VL53LX_Error_NONE Success
charlesmn 0:0be0bd219e72 368 * @return "Other error code" See ::VL53LX_Error
charlesmn 0:0be0bd219e72 369 */
charlesmn 0:0be0bd219e72 370 VL53LX_Error VL53LX_GetUID(uint64_t *pUid);
charlesmn 0:0be0bd219e72 371
charlesmn 0:0be0bd219e72 372
charlesmn 0:0be0bd219e72 373 /** @} VL53LX_general_group */
charlesmn 0:0be0bd219e72 374
charlesmn 0:0be0bd219e72 375 /** @defgroup VL53LX_init_group VL53LX Init Functions
charlesmn 0:0be0bd219e72 376 * @brief VL53LX Init Functions
charlesmn 0:0be0bd219e72 377 * @{
charlesmn 0:0be0bd219e72 378 */
charlesmn 0:0be0bd219e72 379
charlesmn 0:0be0bd219e72 380 /**
charlesmn 0:0be0bd219e72 381 * @brief Set new device address
charlesmn 0:0be0bd219e72 382 *
charlesmn 0:0be0bd219e72 383 * After completion the device will answer to the new address programmed.
charlesmn 0:0be0bd219e72 384 * This function should be called when several devices are used in parallel
charlesmn 0:0be0bd219e72 385 * before start programming the sensor.
charlesmn 0:0be0bd219e72 386 * When a single device us used, there is no need to call this function.
charlesmn 0:0be0bd219e72 387 *
charlesmn 0:0be0bd219e72 388 * When it is requested for multi devices system this function MUST be called
charlesmn 0:0be0bd219e72 389 * prior to VL53LX_DataInit()
charlesmn 0:0be0bd219e72 390 *
charlesmn 0:0be0bd219e72 391 * @note This function Access to the device
charlesmn 0:0be0bd219e72 392 *
charlesmn 0:0be0bd219e72 393 * @param Dev Device Handle
charlesmn 0:0be0bd219e72 394 * @param DeviceAddress The new Device address
charlesmn 0:0be0bd219e72 395 * @return VL53LX_Error_NONE Success
charlesmn 0:0be0bd219e72 396 * @return "Other error code" See ::VL53LX_Error
charlesmn 0:0be0bd219e72 397 */
charlesmn 0:0be0bd219e72 398 VL53LX_Error VL53LX_SetDeviceAddress(uint8_t DeviceAddress);
charlesmn 0:0be0bd219e72 399
charlesmn 0:0be0bd219e72 400 /**
charlesmn 0:0be0bd219e72 401 *
charlesmn 0:0be0bd219e72 402 * @brief One time device initialization
charlesmn 0:0be0bd219e72 403 *
charlesmn 0:0be0bd219e72 404 * To be called after device has been powered on and booted
charlesmn 0:0be0bd219e72 405 * see @a VL53LX_WaitDeviceBooted()
charlesmn 0:0be0bd219e72 406 *
charlesmn 0:0be0bd219e72 407 * @par Function Description
charlesmn 0:0be0bd219e72 408 * When not used after a fresh device "power up", it may return
charlesmn 0:0be0bd219e72 409 * @a #VL53LX_Error_CALIBRATION_WARNING meaning wrong calibration data
charlesmn 0:0be0bd219e72 410 * may have been fetched from device that can result in ranging offset error\n
charlesmn 0:0be0bd219e72 411 * If VL53LX_DataInit is called several times then the application must restore
charlesmn 0:0be0bd219e72 412 * calibration calling @a VL53LX_SetOffsetCalibrationData()
charlesmn 0:0be0bd219e72 413 * It implies application has gathered calibration data thanks to
charlesmn 0:0be0bd219e72 414 * @a VL53LX_GetOffsetCalibrationData() after an initial calibration stage.
charlesmn 0:0be0bd219e72 415 *
charlesmn 0:0be0bd219e72 416 * @note This function Access to the device
charlesmn 0:0be0bd219e72 417 *
charlesmn 0:0be0bd219e72 418 * @param Dev Device Handle
charlesmn 0:0be0bd219e72 419 * @return VL53LX_Error_NONE Success
charlesmn 0:0be0bd219e72 420 * @return "Other error code" See ::VL53LX_Error
charlesmn 0:0be0bd219e72 421 */
charlesmn 0:0be0bd219e72 422 VL53LX_Error VL53LX_DataInit();
charlesmn 0:0be0bd219e72 423
charlesmn 0:0be0bd219e72 424 /**
charlesmn 0:0be0bd219e72 425 * @brief Wait for device booted after chip enable (hardware standby)
charlesmn 0:0be0bd219e72 426 *
charlesmn 0:0be0bd219e72 427 * @param Dev Device Handle
charlesmn 0:0be0bd219e72 428 * @return VL53LX_Error_NONE Success
charlesmn 0:0be0bd219e72 429 * @return "Other error code" See ::VL53LX_Error
charlesmn 0:0be0bd219e72 430 *
charlesmn 0:0be0bd219e72 431 */
charlesmn 0:0be0bd219e72 432 VL53LX_Error VL53LX_WaitDeviceBooted();
charlesmn 0:0be0bd219e72 433
charlesmn 0:0be0bd219e72 434
charlesmn 0:0be0bd219e72 435 /** @} VL53LX_init_group */
charlesmn 0:0be0bd219e72 436
charlesmn 0:0be0bd219e72 437 /** @defgroup VL53LX_parameters_group VL53LX Parameters Functions
charlesmn 0:0be0bd219e72 438 * @brief Functions used to prepare and setup the device
charlesmn 0:0be0bd219e72 439 * @{
charlesmn 0:0be0bd219e72 440 */
charlesmn 0:0be0bd219e72 441
charlesmn 0:0be0bd219e72 442 /**
charlesmn 0:0be0bd219e72 443 * @brief Set the distance mode
charlesmn 0:0be0bd219e72 444 * @par Function Description
charlesmn 0:0be0bd219e72 445 * Set the distance mode to be used for the next ranging.<br>
charlesmn 0:0be0bd219e72 446 * The modes Short, Medium and Long are used to optimize the ranging accuracy
charlesmn 0:0be0bd219e72 447 * in a specific range of distance.<br> The user select one of these modes to
charlesmn 0:0be0bd219e72 448 * select the distance range.
charlesmn 0:0be0bd219e72 449 * @note This function doesn't Access to the device
charlesmn 0:0be0bd219e72 450 *
charlesmn 0:0be0bd219e72 451 * @warning This function should be called after @a VL53LX_DataInit().
charlesmn 0:0be0bd219e72 452
charlesmn 0:0be0bd219e72 453 * @param Dev Device Handle
charlesmn 0:0be0bd219e72 454 * @param DistanceMode Distance mode to apply, valid values are:
charlesmn 0:0be0bd219e72 455 * @li VL53LX_DISTANCEMODE_SHORT
charlesmn 0:0be0bd219e72 456 * @li VL53LX_DISTANCEMODE_MEDIUM
charlesmn 0:0be0bd219e72 457 * @li VL53LX_DISTANCEMODE_LONG
charlesmn 0:0be0bd219e72 458 * @return VL53LX_Error_NONE Success
charlesmn 0:0be0bd219e72 459 * @return VL53LX_Error_MODE_NOT_SUPPORTED This error occurs when DistanceMode
charlesmn 0:0be0bd219e72 460 * is not in the supported list
charlesmn 0:0be0bd219e72 461 * @return "Other error code" See ::VL53LX_Error
charlesmn 0:0be0bd219e72 462 */
charlesmn 0:0be0bd219e72 463 VL53LX_Error VL53LX_SetDistanceMode(
charlesmn 0:0be0bd219e72 464 VL53LX_DistanceModes DistanceMode);
charlesmn 0:0be0bd219e72 465
charlesmn 0:0be0bd219e72 466 /**
charlesmn 0:0be0bd219e72 467 * @brief Get the distance mode
charlesmn 0:0be0bd219e72 468 * @par Function Description
charlesmn 0:0be0bd219e72 469 * Get the distance mode used for the next ranging.
charlesmn 0:0be0bd219e72 470 *
charlesmn 0:0be0bd219e72 471 * @param Dev Device Handle
charlesmn 0:0be0bd219e72 472 * @param *pDistanceMode Pointer to Distance mode
charlesmn 0:0be0bd219e72 473 * @return VL53LX_Error_NONE Success
charlesmn 0:0be0bd219e72 474 * @return "Other error code" See ::VL53LX_Error
charlesmn 0:0be0bd219e72 475 */
charlesmn 0:0be0bd219e72 476 VL53LX_Error VL53LX_GetDistanceMode(
charlesmn 0:0be0bd219e72 477 VL53LX_DistanceModes *pDistanceMode);
charlesmn 0:0be0bd219e72 478
charlesmn 0:0be0bd219e72 479
charlesmn 0:0be0bd219e72 480 /**
charlesmn 0:0be0bd219e72 481 * @brief Set Ranging Timing Budget in microseconds
charlesmn 0:0be0bd219e72 482 *
charlesmn 0:0be0bd219e72 483 * @par Function Description
charlesmn 0:0be0bd219e72 484 * Defines the maximum time allowed by the user to the device to run a
charlesmn 0:0be0bd219e72 485 * full ranging sequence for the current mode (ranging, histogram, ASL ...)
charlesmn 0:0be0bd219e72 486 *
charlesmn 0:0be0bd219e72 487 * @param Dev Device Handle
charlesmn 0:0be0bd219e72 488 * @param MeasurementTimingBudgetMicroSeconds Max measurement time in
charlesmn 0:0be0bd219e72 489 * microseconds.
charlesmn 0:0be0bd219e72 490 * @return VL53LX_Error_NONE Success
charlesmn 0:0be0bd219e72 491 * @return VL53LX_Error_INVALID_PARAMS Error timing parameter not
charlesmn 0:0be0bd219e72 492 * supported.
charlesmn 0:0be0bd219e72 493 * The maximum accepted value for the
charlesmn 0:0be0bd219e72 494 * computed timing budget is 10 seconds
charlesmn 0:0be0bd219e72 495 * the minimum value depends on the preset
charlesmn 0:0be0bd219e72 496 * mode selected.
charlesmn 0:0be0bd219e72 497 * @return "Other error code" See ::VL53LX_Error
charlesmn 0:0be0bd219e72 498 */
charlesmn 0:0be0bd219e72 499 VL53LX_Error VL53LX_SetMeasurementTimingBudgetMicroSeconds(uint32_t MeasurementTimingBudgetMicroSeconds);
charlesmn 0:0be0bd219e72 500
charlesmn 0:0be0bd219e72 501 /**
charlesmn 0:0be0bd219e72 502 * @brief Get Ranging Timing Budget in microseconds
charlesmn 0:0be0bd219e72 503 *
charlesmn 0:0be0bd219e72 504 * @par Function Description
charlesmn 0:0be0bd219e72 505 * Returns the programmed the maximum time allowed by the user to the
charlesmn 0:0be0bd219e72 506 * device to run a full ranging sequence for the current mode
charlesmn 0:0be0bd219e72 507 * (ranging, histogram, ...)
charlesmn 0:0be0bd219e72 508 *
charlesmn 0:0be0bd219e72 509 * @param Dev Device Handle
charlesmn 0:0be0bd219e72 510 * @param pMeasurementTimingBudgetMicroSeconds Max measurement time in
charlesmn 0:0be0bd219e72 511 * microseconds.
charlesmn 0:0be0bd219e72 512 * @return VL53LX_Error_NONE Success
charlesmn 0:0be0bd219e72 513 * @return "Other error code" See ::VL53LX_Error
charlesmn 0:0be0bd219e72 514 */
charlesmn 0:0be0bd219e72 515 VL53LX_Error VL53LX_GetMeasurementTimingBudgetMicroSeconds(uint32_t *pMeasurementTimingBudgetMicroSeconds);
charlesmn 0:0be0bd219e72 516 /** @} VL53LX_parameters_group */
charlesmn 0:0be0bd219e72 517
charlesmn 0:0be0bd219e72 518
charlesmn 0:0be0bd219e72 519 /** @defgroup VL53LX_measurement_group VL53LX Measurement Functions
charlesmn 0:0be0bd219e72 520 * @brief Functions used for the measurements
charlesmn 0:0be0bd219e72 521 * @{
charlesmn 0:0be0bd219e72 522 */
charlesmn 0:0be0bd219e72 523
charlesmn 0:0be0bd219e72 524 /**
charlesmn 0:0be0bd219e72 525 * @brief Start device measurement
charlesmn 0:0be0bd219e72 526 *
charlesmn 0:0be0bd219e72 527 * @details Started measurement will depend on distance parameter set through
charlesmn 0:0be0bd219e72 528 * @a VL53LX_SetDistanceMode()
charlesmn 0:0be0bd219e72 529 *
charlesmn 0:0be0bd219e72 530 * @note This function Access to the device
charlesmn 0:0be0bd219e72 531 *
charlesmn 0:0be0bd219e72 532 * @param Dev Device Handle
charlesmn 0:0be0bd219e72 533 * @return VL53LX_Error_NONE Success
charlesmn 0:0be0bd219e72 534 * @return VL53LX_Error_TIME_OUT Time out on start measurement
charlesmn 0:0be0bd219e72 535 * @return VL53LX_Error_INVALID_PARAMS This error might occur in timed mode
charlesmn 0:0be0bd219e72 536 * when inter measurement period is smaller or too close to the timing budget.
charlesmn 0:0be0bd219e72 537 * In such case measurements are not started and user must correct the timings
charlesmn 0:0be0bd219e72 538 * passed to @a VL53LX_SetMeasurementTimingBudgetMicroSeconds() and
charlesmn 0:0be0bd219e72 539 * @a VL53LX_SetInterMeasurementPeriodMilliSeconds() functions.
charlesmn 0:0be0bd219e72 540 * @return "Other error code" See ::VL53LX_Error
charlesmn 0:0be0bd219e72 541 */
charlesmn 0:0be0bd219e72 542 VL53LX_Error VL53LX_StartMeasurement();
charlesmn 0:0be0bd219e72 543
charlesmn 0:0be0bd219e72 544 /**
charlesmn 0:0be0bd219e72 545 * @brief Stop device measurement
charlesmn 0:0be0bd219e72 546 *
charlesmn 0:0be0bd219e72 547 * @details Will set the device in standby mode at end of current measurement\n
charlesmn 0:0be0bd219e72 548 * Not necessary in single mode as device shall return automatically
charlesmn 0:0be0bd219e72 549 * in standby mode at end of measurement.
charlesmn 0:0be0bd219e72 550 *
charlesmn 0:0be0bd219e72 551 * @note This function Access to the device
charlesmn 0:0be0bd219e72 552 *
charlesmn 0:0be0bd219e72 553 * @param Dev Device Handle
charlesmn 0:0be0bd219e72 554 * @return VL53LX_Error_NONE Success
charlesmn 0:0be0bd219e72 555 * @return "Other error code" See ::VL53LX_Error
charlesmn 0:0be0bd219e72 556 */
charlesmn 0:0be0bd219e72 557 VL53LX_Error VL53LX_StopMeasurement();
charlesmn 0:0be0bd219e72 558
charlesmn 0:0be0bd219e72 559 /**
charlesmn 0:0be0bd219e72 560 * @brief Clear the Interrupt flag and start new measurement
charlesmn 0:0be0bd219e72 561 * *
charlesmn 0:0be0bd219e72 562 * @note This function Access to the device
charlesmn 0:0be0bd219e72 563 *
charlesmn 0:0be0bd219e72 564 * @param Dev Device Handle
charlesmn 0:0be0bd219e72 565 * @return VL53LX_Error_NONE Success
charlesmn 0:0be0bd219e72 566 * @return "Other error code" See ::VL53LX_Error
charlesmn 0:0be0bd219e72 567 */
charlesmn 0:0be0bd219e72 568 VL53LX_Error VL53LX_ClearInterruptAndStartMeasurement();
charlesmn 0:0be0bd219e72 569
charlesmn 0:0be0bd219e72 570 /**
charlesmn 0:0be0bd219e72 571 * @brief Return Measurement Data Ready
charlesmn 0:0be0bd219e72 572 *
charlesmn 0:0be0bd219e72 573 * @par Function Description
charlesmn 0:0be0bd219e72 574 * This function indicate that a measurement data is ready.
charlesmn 0:0be0bd219e72 575 * This function is used for non-blocking capture.
charlesmn 0:0be0bd219e72 576 *
charlesmn 0:0be0bd219e72 577 * @note This function Access to the device
charlesmn 0:0be0bd219e72 578 *
charlesmn 0:0be0bd219e72 579 * @param Dev Device Handle
charlesmn 0:0be0bd219e72 580 * @param pMeasurementDataReady Pointer to Measurement Data Ready.
charlesmn 0:0be0bd219e72 581 * 0 = data not ready, 1 = data ready
charlesmn 0:0be0bd219e72 582 * @return VL53LX_Error_NONE Success
charlesmn 0:0be0bd219e72 583 * @return "Other error code" See ::VL53LX_Error
charlesmn 0:0be0bd219e72 584 */
charlesmn 0:0be0bd219e72 585 VL53LX_Error VL53LX_GetMeasurementDataReady(
charlesmn 0:0be0bd219e72 586 uint8_t *pMeasurementDataReady);
charlesmn 0:0be0bd219e72 587
charlesmn 0:0be0bd219e72 588 /**
charlesmn 0:0be0bd219e72 589 * @brief Wait for measurement data ready.
charlesmn 0:0be0bd219e72 590 * Blocking function.
charlesmn 0:0be0bd219e72 591 * Note that the timeout is given by:
charlesmn 0:0be0bd219e72 592 * VL53LX_RANGE_COMPLETION_POLLING_TIMEOUT_MS defined in def.h
charlesmn 0:0be0bd219e72 593 *
charlesmn 0:0be0bd219e72 594 *
charlesmn 0:0be0bd219e72 595 * @note This function Access to the device
charlesmn 0:0be0bd219e72 596 *
charlesmn 0:0be0bd219e72 597 * @param Dev Device Handle
charlesmn 0:0be0bd219e72 598 * @return VL53LX_Error_NONE Success
charlesmn 0:0be0bd219e72 599 * @return VL53LX_Error_TIME_OUT In case of timeout
charlesmn 0:0be0bd219e72 600 */
charlesmn 0:0be0bd219e72 601 VL53LX_Error VL53LX_WaitMeasurementDataReady();
charlesmn 0:0be0bd219e72 602
charlesmn 0:0be0bd219e72 603
charlesmn 0:0be0bd219e72 604 /**
charlesmn 0:0be0bd219e72 605 * @brief Retrieve all measurements from device with the current setup
charlesmn 0:0be0bd219e72 606 *
charlesmn 0:0be0bd219e72 607 * @par Function Description
charlesmn 0:0be0bd219e72 608 * Get data from last successful Ranging measurement
charlesmn 0:0be0bd219e72 609 *
charlesmn 0:0be0bd219e72 610 * @warning USER must call @a VL53LX_ClearInterruptAndStartMeasurement() prior
charlesmn 0:0be0bd219e72 611 * to call again this function
charlesmn 0:0be0bd219e72 612 *
charlesmn 0:0be0bd219e72 613 * @note This function Access to the device
charlesmn 0:0be0bd219e72 614 *
charlesmn 0:0be0bd219e72 615 * @note The first valid value returned by this function will have a range
charlesmn 0:0be0bd219e72 616 * status equal to VL53LX_RANGESTATUS_RANGE_VALID_NO_WRAP_CHECK which means that
charlesmn 0:0be0bd219e72 617 * the data is valid but no wrap around check have been done. User should take
charlesmn 0:0be0bd219e72 618 * care about that.
charlesmn 0:0be0bd219e72 619 *
charlesmn 0:0be0bd219e72 620 * @param Dev Device Handle
charlesmn 0:0be0bd219e72 621 * @param pMultiRangingData Pointer to the data structure to fill up.
charlesmn 0:0be0bd219e72 622 * @return VL53LX_Error_NONE Success
charlesmn 0:0be0bd219e72 623 * @return "Other error code" See ::VL53LX_Error
charlesmn 0:0be0bd219e72 624 */
charlesmn 0:0be0bd219e72 625 VL53LX_Error VL53LX_GetMultiRangingData(VL53LX_MultiRangingData_t *pMultiRangingData);
charlesmn 0:0be0bd219e72 626
charlesmn 0:0be0bd219e72 627 /**
charlesmn 0:0be0bd219e72 628 * @brief Get Additional Data
charlesmn 0:0be0bd219e72 629 *
charlesmn 0:0be0bd219e72 630 * @par Function Description
charlesmn 0:0be0bd219e72 631 * This function is used to get lld debugging data on the last histogram
charlesmn 0:0be0bd219e72 632 * measurement. shall be called when a new measurement is ready (interrupt or
charlesmn 0:0be0bd219e72 633 * positive VL53LX_GetMeasurementDataReady() polling) and before a call to
charlesmn 0:0be0bd219e72 634 * VL53LX_ClearInterruptAndStartMeasurement().
charlesmn 0:0be0bd219e72 635 *
charlesmn 0:0be0bd219e72 636 * @param Dev Device Handle
charlesmn 0:0be0bd219e72 637 * @param pAdditionalData Pointer to Additional data
charlesmn 0:0be0bd219e72 638 * @return VL53LX_Error_NONE Success
charlesmn 0:0be0bd219e72 639 * @return "Other error code" See ::VL53LX_Error
charlesmn 0:0be0bd219e72 640 */
charlesmn 0:0be0bd219e72 641 //VL53LX_Error VL53LX_GetAdditionalData( VL53LX_AdditionalData_t *pAdditionalData);
charlesmn 0:0be0bd219e72 642
charlesmn 0:0be0bd219e72 643
charlesmn 0:0be0bd219e72 644 /** @} VL53LX_measurement_group */
charlesmn 0:0be0bd219e72 645
charlesmn 0:0be0bd219e72 646 /** @defgroup VL53LX_Calibration_group VL53LX Calibration Functions
charlesmn 0:0be0bd219e72 647 * @brief Functions used for Calibration
charlesmn 0:0be0bd219e72 648 * @{
charlesmn 0:0be0bd219e72 649 */
charlesmn 0:0be0bd219e72 650
charlesmn 0:0be0bd219e72 651
charlesmn 0:0be0bd219e72 652 /**
charlesmn 0:0be0bd219e72 653 * @brief Set Tuning Parameter value for a given parameter ID
charlesmn 0:0be0bd219e72 654 *
charlesmn 0:0be0bd219e72 655 * @par Function Description
charlesmn 0:0be0bd219e72 656 * This function is used to improve the performance of the device. It permit to
charlesmn 0:0be0bd219e72 657 * change a particular value used for a timeout or a threshold or a constant
charlesmn 0:0be0bd219e72 658 * in an algorithm. The function will change the value of the parameter
charlesmn 0:0be0bd219e72 659 * identified by an unique ID.
charlesmn 0:0be0bd219e72 660 *
charlesmn 0:0be0bd219e72 661 * @note This function doesn't Access to the device
charlesmn 0:0be0bd219e72 662 *
charlesmn 0:0be0bd219e72 663 * @param Dev Device Handle
charlesmn 0:0be0bd219e72 664 * @param TuningParameterId Tuning Parameter ID
charlesmn 0:0be0bd219e72 665 * @param TuningParameterValue Tuning Parameter Value
charlesmn 0:0be0bd219e72 666 * @return VL53LX_Error_NONE Success
charlesmn 0:0be0bd219e72 667 * @return "Other error code" See ::VL53LX_Error
charlesmn 0:0be0bd219e72 668 */
charlesmn 0:0be0bd219e72 669 VL53LX_Error VL53LX_SetTuningParameter(
charlesmn 0:0be0bd219e72 670 uint16_t TuningParameterId, int32_t TuningParameterValue);
charlesmn 0:0be0bd219e72 671
charlesmn 0:0be0bd219e72 672 /**
charlesmn 0:0be0bd219e72 673 * @brief Get Tuning Parameter value for a given parameter ID
charlesmn 0:0be0bd219e72 674 *
charlesmn 0:0be0bd219e72 675 * @par Function Description
charlesmn 0:0be0bd219e72 676 * This function is used to get the value of the parameter
charlesmn 0:0be0bd219e72 677 * identified by an unique ID.
charlesmn 0:0be0bd219e72 678 *
charlesmn 0:0be0bd219e72 679 * @note This function doesn't Access to the device
charlesmn 0:0be0bd219e72 680 *
charlesmn 0:0be0bd219e72 681 * @param Dev Device Handle
charlesmn 0:0be0bd219e72 682 * @param TuningParameterId Tuning Parameter ID
charlesmn 0:0be0bd219e72 683 * @param pTuningParameterValue Pointer to Tuning Parameter Value
charlesmn 0:0be0bd219e72 684 * for a given TuningParameterId.
charlesmn 0:0be0bd219e72 685 * @return VL53LX_Error_NONE Success
charlesmn 0:0be0bd219e72 686 * @return "Other error code" See ::VL53LX_Error
charlesmn 0:0be0bd219e72 687 */
charlesmn 0:0be0bd219e72 688 VL53LX_Error VL53LX_GetTuningParameter(
charlesmn 0:0be0bd219e72 689 uint16_t TuningParameterId, int32_t *pTuningParameterValue);
charlesmn 0:0be0bd219e72 690
charlesmn 0:0be0bd219e72 691 /**
charlesmn 0:0be0bd219e72 692 * @brief Performs Reference Spad Management
charlesmn 0:0be0bd219e72 693 *
charlesmn 0:0be0bd219e72 694 * @par Function Description
charlesmn 0:0be0bd219e72 695 * The reference SPAD initialization procedure determines the minimum amount
charlesmn 0:0be0bd219e72 696 * of reference spads to be enables to achieve a target reference signal rate
charlesmn 0:0be0bd219e72 697 * and should be performed once during initialization.
charlesmn 0:0be0bd219e72 698 *
charlesmn 0:0be0bd219e72 699 * @note This function Access to the device
charlesmn 0:0be0bd219e72 700 *
charlesmn 0:0be0bd219e72 701 * @param Dev Device Handle
charlesmn 0:0be0bd219e72 702 * @return VL53LX_Error_NONE Success
charlesmn 0:0be0bd219e72 703 * @return "Other error code" See ::VL53LX_Error
charlesmn 0:0be0bd219e72 704 */
charlesmn 0:0be0bd219e72 705 VL53LX_Error VL53LX_PerformRefSpadManagement();
charlesmn 0:0be0bd219e72 706
charlesmn 0:0be0bd219e72 707 /**
charlesmn 0:0be0bd219e72 708 * @brief Enable/Disable dynamic Xtalk compensation feature
charlesmn 0:0be0bd219e72 709 *
charlesmn 0:0be0bd219e72 710 * Enable/Disable dynamic Xtalk compensation (aka smudge correction).
charlesmn 0:0be0bd219e72 711 *
charlesmn 0:0be0bd219e72 712 * @param Dev Device Handle
charlesmn 0:0be0bd219e72 713 * @param Mode Set the smudge correction mode
charlesmn 0:0be0bd219e72 714 * See ::VL53LX_SmudgeCorrectionModes
charlesmn 0:0be0bd219e72 715 * @return VL53LX_Error_NONE Success
charlesmn 0:0be0bd219e72 716 * @return "Other error code" See ::VL53LX_Error
charlesmn 0:0be0bd219e72 717 */
charlesmn 0:0be0bd219e72 718 VL53LX_Error VL53LX_SmudgeCorrectionEnable(
charlesmn 0:0be0bd219e72 719 VL53LX_SmudgeCorrectionModes Mode);
charlesmn 0:0be0bd219e72 720
charlesmn 0:0be0bd219e72 721
charlesmn 0:0be0bd219e72 722 /**
charlesmn 0:0be0bd219e72 723 * @brief Enable/Disable Cross talk compensation feature
charlesmn 0:0be0bd219e72 724 *
charlesmn 0:0be0bd219e72 725 * Enable/Disable Cross Talk correction.
charlesmn 0:0be0bd219e72 726 *
charlesmn 0:0be0bd219e72 727 * @param Dev Device Handle
charlesmn 0:0be0bd219e72 728 * @param XTalkCompensationEnable Cross talk compensation
charlesmn 0:0be0bd219e72 729 * to be set 0 = disabled or 1 = enabled.
charlesmn 0:0be0bd219e72 730 * @return VL53LX_Error_NONE Success
charlesmn 0:0be0bd219e72 731 * @return "Other error code" See ::VL53LX_Error
charlesmn 0:0be0bd219e72 732 */
charlesmn 0:0be0bd219e72 733 VL53LX_Error VL53LX_SetXTalkCompensationEnable(
charlesmn 0:0be0bd219e72 734 uint8_t XTalkCompensationEnable);
charlesmn 0:0be0bd219e72 735
charlesmn 0:0be0bd219e72 736 /**
charlesmn 0:0be0bd219e72 737 * @brief Get Cross talk compensation rate enable
charlesmn 0:0be0bd219e72 738 *
charlesmn 0:0be0bd219e72 739 * Get if the Cross Talk is Enabled or Disabled.
charlesmn 0:0be0bd219e72 740 *
charlesmn 0:0be0bd219e72 741 * @note This function doesn't access to the device
charlesmn 0:0be0bd219e72 742 *
charlesmn 0:0be0bd219e72 743 * @param Dev Device Handle
charlesmn 0:0be0bd219e72 744 * @param pXTalkCompensationEnable Pointer to the Cross talk compensation
charlesmn 0:0be0bd219e72 745 * state 0=disabled or 1 = enabled
charlesmn 0:0be0bd219e72 746 * @return VL53LX_Error_NONE Success
charlesmn 0:0be0bd219e72 747 * @return "Other error code" See ::VL53LX_Error
charlesmn 0:0be0bd219e72 748 */
charlesmn 0:0be0bd219e72 749 VL53LX_Error VL53LX_GetXTalkCompensationEnable(
charlesmn 0:0be0bd219e72 750 uint8_t *pXTalkCompensationEnable);
charlesmn 0:0be0bd219e72 751
charlesmn 0:0be0bd219e72 752 /**
charlesmn 0:0be0bd219e72 753 * @brief Perform XTalk Calibration
charlesmn 0:0be0bd219e72 754 *
charlesmn 0:0be0bd219e72 755 * @details Perform a XTalk calibration of the Device.
charlesmn 0:0be0bd219e72 756 * This function will launch a measurement, if interrupts
charlesmn 0:0be0bd219e72 757 * are enabled an interrupt will be done.
charlesmn 0:0be0bd219e72 758 * This function will clear the interrupt generated automatically.
charlesmn 0:0be0bd219e72 759 * This function will program a new value for the XTalk compensation
charlesmn 0:0be0bd219e72 760 * and it will enable the cross talk before exit.
charlesmn 0:0be0bd219e72 761 *
charlesmn 0:0be0bd219e72 762 * @warning This function is a blocking function
charlesmn 0:0be0bd219e72 763 *
charlesmn 0:0be0bd219e72 764 * @note This function Access to the device
charlesmn 0:0be0bd219e72 765 *
charlesmn 0:0be0bd219e72 766 * @param Dev Device Handle
charlesmn 0:0be0bd219e72 767 * the calibration sets appropriate
charlesmn 0:0be0bd219e72 768 * distance mode and thus override existing one<br>
charlesmn 0:0be0bd219e72 769 * The calibration uses a target which should be located at least @60cm from the
charlesmn 0:0be0bd219e72 770 * device. The actual location of the target shall be passed
charlesmn 0:0be0bd219e72 771 * through the bare driver tuning parameters table
charlesmn 0:0be0bd219e72 772 *
charlesmn 0:0be0bd219e72 773 * @return VL53LX_Error_NONE Success
charlesmn 0:0be0bd219e72 774 * @return "Other error code" See ::VL53LX_Error
charlesmn 0:0be0bd219e72 775 */
charlesmn 0:0be0bd219e72 776 VL53LX_Error VL53LX_PerformXTalkCalibration();
charlesmn 0:0be0bd219e72 777
charlesmn 0:0be0bd219e72 778
charlesmn 0:0be0bd219e72 779 /**
charlesmn 0:0be0bd219e72 780 * @brief Define the mode to be used for the offset correction
charlesmn 0:0be0bd219e72 781 *
charlesmn 0:0be0bd219e72 782 * Define the mode to be used for the offset correction.
charlesmn 0:0be0bd219e72 783 *
charlesmn 0:0be0bd219e72 784 * @param Dev Device Handle
charlesmn 0:0be0bd219e72 785 * @param OffsetCorrectionMode Offset Correction Mode valid values are:
charlesmn 0:0be0bd219e72 786 * @li VL53LX_OFFSETCORRECTIONMODE_STANDARD
charlesmn 0:0be0bd219e72 787 * @li VL53LX_OFFSETCORRECTIONMODE_PERVCSEL
charlesmn 0:0be0bd219e72 788 *
charlesmn 0:0be0bd219e72 789 * @return VL53LX_Error_NONE Success
charlesmn 0:0be0bd219e72 790 * @return "Other error code" See ::VL53LX_Error
charlesmn 0:0be0bd219e72 791 */
charlesmn 0:0be0bd219e72 792 VL53LX_Error VL53LX_SetOffsetCorrectionMode(
charlesmn 0:0be0bd219e72 793 VL53LX_OffsetCorrectionModes OffsetCorrectionMode);
charlesmn 0:0be0bd219e72 794
charlesmn 0:0be0bd219e72 795
charlesmn 0:0be0bd219e72 796 /**
charlesmn 0:0be0bd219e72 797 * @brief Perform Offset simple Calibration
charlesmn 0:0be0bd219e72 798 *
charlesmn 0:0be0bd219e72 799 * @details Perform a very simple offset calibration of the Device.
charlesmn 0:0be0bd219e72 800 * This function will launch few ranging measurements and computes offset
charlesmn 0:0be0bd219e72 801 * calibration. The preset mode and the distance mode MUST be set by the
charlesmn 0:0be0bd219e72 802 * application before to call this function.
charlesmn 0:0be0bd219e72 803 *
charlesmn 0:0be0bd219e72 804 * @warning This function is a blocking function
charlesmn 0:0be0bd219e72 805 *
charlesmn 0:0be0bd219e72 806 * @note This function Access to the device
charlesmn 0:0be0bd219e72 807 *
charlesmn 0:0be0bd219e72 808 * @param Dev Device Handle
charlesmn 0:0be0bd219e72 809 * @param CalDistanceMilliMeter Calibration distance value used for the
charlesmn 0:0be0bd219e72 810 * offset compensation.
charlesmn 0:0be0bd219e72 811 *
charlesmn 0:0be0bd219e72 812 * @return VL53LX_Error_NONE
charlesmn 0:0be0bd219e72 813 * @return VL53LX_Error_OFFSET_CAL_NO_SAMPLE_FAIL the calibration failed by
charlesmn 0:0be0bd219e72 814 * lack of valid measurements
charlesmn 0:0be0bd219e72 815 * @return VL53LX_WARNING_OFFSET_CAL_SIGMA_TOO_HIGH means that the target
charlesmn 0:0be0bd219e72 816 * distance combined to the number of loops performed in the calibration lead to
charlesmn 0:0be0bd219e72 817 * an internal overflow. Try to reduce the distance of the target (140 mm)
charlesmn 0:0be0bd219e72 818 * @return "Other error code" See ::VL53LX_Error
charlesmn 0:0be0bd219e72 819 */
charlesmn 0:0be0bd219e72 820 VL53LX_Error VL53LX_PerformOffsetSimpleCalibration(
charlesmn 0:0be0bd219e72 821 int32_t CalDistanceMilliMeter);
charlesmn 0:0be0bd219e72 822
charlesmn 0:0be0bd219e72 823 /**
charlesmn 0:0be0bd219e72 824 * @brief Perform Offset simple Calibration with a "zero distance" target
charlesmn 0:0be0bd219e72 825 *
charlesmn 0:0be0bd219e72 826 * @details Perform a simple offset calibration of the Device.
charlesmn 0:0be0bd219e72 827 * This function will launch few ranging measurements and computes offset
charlesmn 0:0be0bd219e72 828 * calibration. The preset mode and the distance mode MUST be set by the
charlesmn 0:0be0bd219e72 829 * application before to call this function.
charlesmn 0:0be0bd219e72 830 * A target must be place very close to the device.
charlesmn 0:0be0bd219e72 831 * Ideally the target shall be touching the coverglass.
charlesmn 0:0be0bd219e72 832 *
charlesmn 0:0be0bd219e72 833 * @warning This function is a blocking function
charlesmn 0:0be0bd219e72 834 *
charlesmn 0:0be0bd219e72 835 * @note This function Access to the device
charlesmn 0:0be0bd219e72 836 *
charlesmn 0:0be0bd219e72 837 * @param Dev Device Handle
charlesmn 0:0be0bd219e72 838 *
charlesmn 0:0be0bd219e72 839 * @return VL53LX_Error_NONE
charlesmn 0:0be0bd219e72 840 * @return VL53LX_Error_OFFSET_CAL_NO_SAMPLE_FAIL the calibration failed by
charlesmn 0:0be0bd219e72 841 * lack of valid measurements
charlesmn 0:0be0bd219e72 842 * @return VL53LX_WARNING_OFFSET_CAL_SIGMA_TOO_HIGH means that the target
charlesmn 0:0be0bd219e72 843 * distance is too large, try to put the target closer to the device
charlesmn 0:0be0bd219e72 844 * @return "Other error code" See ::VL53LX_Error
charlesmn 0:0be0bd219e72 845 */
charlesmn 0:0be0bd219e72 846 VL53LX_Error VL53LX_PerformOffsetZeroDistanceCalibration();
charlesmn 0:0be0bd219e72 847
charlesmn 0:0be0bd219e72 848
charlesmn 0:0be0bd219e72 849 /**
charlesmn 0:0be0bd219e72 850 * @brief Perform Offset per Vcsel Calibration. i.e. per distance mode
charlesmn 0:0be0bd219e72 851 *
charlesmn 0:0be0bd219e72 852 * @details Perform offset calibration of the Device depending on the
charlesmn 0:0be0bd219e72 853 * three distance mode settings: short, medium and long.
charlesmn 0:0be0bd219e72 854 * This function will launch few ranging measurements and computes offset
charlesmn 0:0be0bd219e72 855 * calibration in each of the three distance modes.
charlesmn 0:0be0bd219e72 856 * The preset mode MUST be set by the application before to call this function.
charlesmn 0:0be0bd219e72 857 *
charlesmn 0:0be0bd219e72 858 * @warning This function is a blocking function
charlesmn 0:0be0bd219e72 859 *
charlesmn 0:0be0bd219e72 860 * @note This function Access to the device
charlesmn 0:0be0bd219e72 861 *
charlesmn 0:0be0bd219e72 862 * @param Dev Device Handle
charlesmn 0:0be0bd219e72 863 * @param CalDistanceMilliMeter Distance of the target used for the
charlesmn 0:0be0bd219e72 864 * offset compensation calibration.
charlesmn 0:0be0bd219e72 865 *
charlesmn 0:0be0bd219e72 866 * @return VL53LX_Error_NONE
charlesmn 0:0be0bd219e72 867 * @return VL53LX_Error_OFFSET_CAL_NO_SAMPLE_FAIL the calibration failed by
charlesmn 0:0be0bd219e72 868 * lack of valid measurements
charlesmn 0:0be0bd219e72 869 * @return VL53LX_WARNING_OFFSET_CAL_SIGMA_TOO_HIGH means that the target
charlesmn 0:0be0bd219e72 870 * distance combined to the number of loops performed in the calibration lead to
charlesmn 0:0be0bd219e72 871 * an internal overflow. Try to reduce the distance of the target (140 mm)
charlesmn 0:0be0bd219e72 872 * @return "Other error code" See ::VL53LX_Error
charlesmn 0:0be0bd219e72 873 */
charlesmn 0:0be0bd219e72 874 VL53LX_Error VL53LX_PerformOffsetPerVcselCalibration(
charlesmn 0:0be0bd219e72 875 int32_t CalDistanceMilliMeter);
charlesmn 0:0be0bd219e72 876
charlesmn 0:0be0bd219e72 877
charlesmn 0:0be0bd219e72 878 /**
charlesmn 0:0be0bd219e72 879 * @brief Sets the Calibration Data.
charlesmn 0:0be0bd219e72 880 *
charlesmn 0:0be0bd219e72 881 * @par Function Description
charlesmn 0:0be0bd219e72 882 * This function set all the Calibration Data issued from the functions
charlesmn 0:0be0bd219e72 883 * @a VL53LX_PerformRefSpadManagement(), @a VL53LX_PerformXTalkCalibration,
charlesmn 0:0be0bd219e72 884 * @a VL53LX_PerformOffsetCalibration()
charlesmn 0:0be0bd219e72 885 *
charlesmn 0:0be0bd219e72 886 * @note This function doesn't Accesses the device
charlesmn 0:0be0bd219e72 887 *
charlesmn 0:0be0bd219e72 888 * @param Dev Device Handle
charlesmn 0:0be0bd219e72 889 * @param *pCalibrationData Pointer to Calibration data to be set.
charlesmn 0:0be0bd219e72 890 * @return VL53LX_Error_NONE Success
charlesmn 0:0be0bd219e72 891 * @return VL53LX_Error_INVALID_PARAMS pCalibrationData points to an older
charlesmn 0:0be0bd219e72 892 * version of the inner structure. Need for support to convert its content.
charlesmn 0:0be0bd219e72 893 * @return "Other error code" See ::VL53LX_Error
charlesmn 0:0be0bd219e72 894 */
charlesmn 0:0be0bd219e72 895 VL53LX_Error VL53LX_SetCalibrationData(
charlesmn 0:0be0bd219e72 896 VL53LX_CalibrationData_t *pCalibrationData);
charlesmn 0:0be0bd219e72 897
charlesmn 0:0be0bd219e72 898 /**
charlesmn 0:0be0bd219e72 899 * @brief Gets the Calibration Data.
charlesmn 0:0be0bd219e72 900 *
charlesmn 0:0be0bd219e72 901 * @par Function Description
charlesmn 0:0be0bd219e72 902 * This function get all the Calibration Data issued from the functions
charlesmn 0:0be0bd219e72 903 * @a VL53LX_PerformRefSpadManagement(), @a VL53LX_PerformXTalkCalibration,
charlesmn 0:0be0bd219e72 904 * @a VL53LX_PerformOffsetCalibration()
charlesmn 0:0be0bd219e72 905 *
charlesmn 0:0be0bd219e72 906 * @note This function doesn't Accesses the device
charlesmn 0:0be0bd219e72 907 *
charlesmn 0:0be0bd219e72 908 * @param Dev Device Handle
charlesmn 0:0be0bd219e72 909 * @param *pCalibrationData pointer where to store Calibration
charlesmn 0:0be0bd219e72 910 * data.
charlesmn 0:0be0bd219e72 911 * @return VL53LX_Error_NONE Success
charlesmn 0:0be0bd219e72 912 * @return "Other error code" See ::VL53LX_Error
charlesmn 0:0be0bd219e72 913 */
charlesmn 0:0be0bd219e72 914 VL53LX_Error VL53LX_GetCalibrationData(
charlesmn 0:0be0bd219e72 915 VL53LX_CalibrationData_t *pCalibrationData);
charlesmn 0:0be0bd219e72 916
charlesmn 0:0be0bd219e72 917 /** @} VL53LX_Calibration_group */
charlesmn 0:0be0bd219e72 918
charlesmn 0:0be0bd219e72 919 /** @} VL53LX_group */
charlesmn 0:0be0bd219e72 920 VL53LX_Error VL53LX_RdWord(VL53LX_DEV Dev, uint16_t index, uint16_t *data);
charlesmn 0:0be0bd219e72 921
charlesmn 0:0be0bd219e72 922 protected:
charlesmn 0:0be0bd219e72 923
charlesmn 0:0be0bd219e72 924 /* vl53lx_api_core.h functions */
charlesmn 0:0be0bd219e72 925
charlesmn 0:0be0bd219e72 926 VL53LX_Error VL53LX_get_version(VL53LX_ll_version_t *pversion);
charlesmn 0:0be0bd219e72 927 VL53LX_Error VL53LX_get_device_firmware_version(uint16_t *pfw_version);
charlesmn 0:0be0bd219e72 928 VL53LX_Error VL53LX_data_init(uint8_t read_p2p_data);
charlesmn 0:0be0bd219e72 929 VL53LX_Error VL53LX_read_p2p_data();
charlesmn 0:0be0bd219e72 930 VL53LX_Error VL53LX_software_reset();
charlesmn 0:0be0bd219e72 931 VL53LX_Error VL53LX_set_part_to_part_data(VL53LX_calibration_data_t *pcal_data);
charlesmn 0:0be0bd219e72 932 VL53LX_Error VL53LX_get_part_to_part_data(VL53LX_calibration_data_t *pcal_data);
charlesmn 0:0be0bd219e72 933 VL53LX_Error VL53LX_get_tuning_debug_data(VL53LX_tuning_parameters_t *ptun_data);
charlesmn 0:0be0bd219e72 934 VL53LX_Error VL53LX_set_inter_measurement_period_ms(uint32_t inter_measurement_period_ms);
charlesmn 0:0be0bd219e72 935 VL53LX_Error VL53LX_get_inter_measurement_period_ms(uint32_t *pinter_measurement_period_ms);
charlesmn 0:0be0bd219e72 936 VL53LX_Error VL53LX_set_timeouts_us(
charlesmn 0:0be0bd219e72 937 uint32_t phasecal_config_timeout_us,
charlesmn 0:0be0bd219e72 938 uint32_t mm_config_timeout_us,
charlesmn 0:0be0bd219e72 939 uint32_t range_config_timeout_us);
charlesmn 0:0be0bd219e72 940
charlesmn 0:0be0bd219e72 941 VL53LX_Error VL53LX_get_timeouts_us(
charlesmn 0:0be0bd219e72 942 uint32_t *pphasecal_config_timeout_us,
charlesmn 0:0be0bd219e72 943 uint32_t *pmm_config_timeout_us,
charlesmn 0:0be0bd219e72 944 uint32_t *prange_config_timeout_us);
charlesmn 0:0be0bd219e72 945
charlesmn 0:0be0bd219e72 946 VL53LX_Error VL53LX_set_calibration_repeat_period(
charlesmn 0:0be0bd219e72 947 uint16_t cal_config__repeat_period);
charlesmn 0:0be0bd219e72 948
charlesmn 0:0be0bd219e72 949 VL53LX_Error VL53LX_get_calibration_repeat_period(
charlesmn 0:0be0bd219e72 950 uint16_t *pcal_config__repeat_period);
charlesmn 0:0be0bd219e72 951
charlesmn 0:0be0bd219e72 952 VL53LX_Error VL53LX_set_sequence_config_bit(
charlesmn 0:0be0bd219e72 953 VL53LX_DeviceSequenceConfig bit_id,
charlesmn 0:0be0bd219e72 954 uint8_t value);
charlesmn 0:0be0bd219e72 955
charlesmn 0:0be0bd219e72 956 VL53LX_Error VL53LX_get_sequence_config_bit(
charlesmn 0:0be0bd219e72 957 VL53LX_DeviceSequenceConfig bit_id,
charlesmn 0:0be0bd219e72 958 uint8_t *pvalue);
charlesmn 0:0be0bd219e72 959
charlesmn 0:0be0bd219e72 960 VL53LX_Error VL53LX_set_interrupt_polarity(
charlesmn 0:0be0bd219e72 961 VL53LX_DeviceInterruptPolarity interrupt_polarity);
charlesmn 0:0be0bd219e72 962
charlesmn 0:0be0bd219e72 963 VL53LX_Error VL53LX_get_interrupt_polarity(
charlesmn 0:0be0bd219e72 964 VL53LX_DeviceInterruptPolarity *pinterrupt_polarity);
charlesmn 0:0be0bd219e72 965
charlesmn 0:0be0bd219e72 966 VL53LX_Error VL53LX_get_refspadchar_config_struct(
charlesmn 0:0be0bd219e72 967 VL53LX_refspadchar_config_t *pdata);
charlesmn 0:0be0bd219e72 968
charlesmn 0:0be0bd219e72 969 VL53LX_Error VL53LX_set_refspadchar_config_struct(
charlesmn 0:0be0bd219e72 970 VL53LX_refspadchar_config_t *pdata);
charlesmn 0:0be0bd219e72 971
charlesmn 0:0be0bd219e72 972 VL53LX_Error VL53LX_set_range_ignore_threshold(
charlesmn 0:0be0bd219e72 973 uint8_t range_ignore_thresh_mult,
charlesmn 0:0be0bd219e72 974 uint16_t range_ignore_threshold_mcps);
charlesmn 0:0be0bd219e72 975
charlesmn 0:0be0bd219e72 976 VL53LX_Error VL53LX_get_range_ignore_threshold(
charlesmn 0:0be0bd219e72 977 uint8_t *prange_ignore_thresh_mult,
charlesmn 0:0be0bd219e72 978 uint16_t *prange_ignore_threshold_mcps_internal,
charlesmn 0:0be0bd219e72 979 uint16_t *prange_ignore_threshold_mcps_current);
charlesmn 0:0be0bd219e72 980
charlesmn 0:0be0bd219e72 981 VL53LX_Error VL53LX_set_user_zone(
charlesmn 0:0be0bd219e72 982 VL53LX_user_zone_t *puser_zone);
charlesmn 0:0be0bd219e72 983
charlesmn 0:0be0bd219e72 984 VL53LX_Error VL53LX_get_user_zone(
charlesmn 0:0be0bd219e72 985 VL53LX_user_zone_t *puser_zone);
charlesmn 0:0be0bd219e72 986
charlesmn 0:0be0bd219e72 987
charlesmn 0:0be0bd219e72 988 VL53LX_Error VL53LX_get_mode_mitigation_roi(
charlesmn 0:0be0bd219e72 989 VL53LX_user_zone_t *pmm_roi);
charlesmn 0:0be0bd219e72 990
charlesmn 0:0be0bd219e72 991
charlesmn 0:0be0bd219e72 992 VL53LX_Error VL53LX_set_zone_config(
charlesmn 0:0be0bd219e72 993 VL53LX_zone_config_t *pzone_cfg);
charlesmn 0:0be0bd219e72 994
charlesmn 0:0be0bd219e72 995 VL53LX_Error VL53LX_get_zone_config(
charlesmn 0:0be0bd219e72 996 VL53LX_zone_config_t *pzone_cfg);
charlesmn 0:0be0bd219e72 997
charlesmn 0:0be0bd219e72 998
charlesmn 0:0be0bd219e72 999 VL53LX_Error VL53LX_set_preset_mode(
charlesmn 0:0be0bd219e72 1000 VL53LX_DevicePresetModes device_preset_mode,
charlesmn 0:0be0bd219e72 1001 uint16_t dss_config__target_total_rate_mcps,
charlesmn 0:0be0bd219e72 1002 uint32_t phasecal_config_timeout_us,
charlesmn 0:0be0bd219e72 1003 uint32_t mm_config_timeout_us,
charlesmn 0:0be0bd219e72 1004 uint32_t range_config_timeout_us,
charlesmn 0:0be0bd219e72 1005 uint32_t inter_measurement_period_ms);
charlesmn 0:0be0bd219e72 1006
charlesmn 0:0be0bd219e72 1007 VL53LX_Error VL53LX_get_preset_mode_timing_cfg(
charlesmn 0:0be0bd219e72 1008 VL53LX_DevicePresetModes device_preset_mode,
charlesmn 0:0be0bd219e72 1009 uint16_t *pdss_config__target_total_rate_mcps,
charlesmn 0:0be0bd219e72 1010 uint32_t *pphasecal_config_timeout_us,
charlesmn 0:0be0bd219e72 1011 uint32_t *pmm_config_timeout_us,
charlesmn 0:0be0bd219e72 1012 uint32_t *prange_config_timeout_us);
charlesmn 0:0be0bd219e72 1013
charlesmn 0:0be0bd219e72 1014
charlesmn 0:0be0bd219e72 1015 VL53LX_Error VL53LX_set_zone_preset(
charlesmn 0:0be0bd219e72 1016 VL53LX_DeviceZonePreset zone_preset);
charlesmn 0:0be0bd219e72 1017
charlesmn 0:0be0bd219e72 1018
charlesmn 0:0be0bd219e72 1019 VL53LX_Error VL53LX_enable_xtalk_compensation();
charlesmn 0:0be0bd219e72 1020
charlesmn 0:0be0bd219e72 1021 VL53LX_Error VL53LX_disable_xtalk_compensation();
charlesmn 0:0be0bd219e72 1022
charlesmn 0:0be0bd219e72 1023
charlesmn 0:0be0bd219e72 1024 void VL53LX_get_xtalk_compensation_enable(
charlesmn 0:0be0bd219e72 1025 uint8_t *pcrosstalk_compensation_enable);
charlesmn 0:0be0bd219e72 1026
charlesmn 0:0be0bd219e72 1027
charlesmn 0:0be0bd219e72 1028 VL53LX_Error VL53LX_init_and_start_range(
charlesmn 0:0be0bd219e72 1029 uint8_t measurement_mode,
charlesmn 0:0be0bd219e72 1030 VL53LX_DeviceConfigLevel device_config_level);
charlesmn 0:0be0bd219e72 1031
charlesmn 0:0be0bd219e72 1032
charlesmn 0:0be0bd219e72 1033 VL53LX_Error VL53LX_stop_range();
charlesmn 0:0be0bd219e72 1034
charlesmn 0:0be0bd219e72 1035 VL53LX_Error VL53LX_get_measurement_results(
charlesmn 0:0be0bd219e72 1036 VL53LX_DeviceResultsLevel device_result_level);
charlesmn 0:0be0bd219e72 1037
charlesmn 0:0be0bd219e72 1038
charlesmn 0:0be0bd219e72 1039 VL53LX_Error VL53LX_get_device_results(
charlesmn 0:0be0bd219e72 1040 VL53LX_DeviceResultsLevel device_result_level,
charlesmn 0:0be0bd219e72 1041 VL53LX_range_results_t *prange_results);
charlesmn 0:0be0bd219e72 1042
charlesmn 0:0be0bd219e72 1043
charlesmn 0:0be0bd219e72 1044 VL53LX_Error VL53LX_clear_interrupt_and_enable_next_range(
charlesmn 0:0be0bd219e72 1045 uint8_t measurement_mode);
charlesmn 0:0be0bd219e72 1046
charlesmn 0:0be0bd219e72 1047
charlesmn 0:0be0bd219e72 1048 VL53LX_Error VL53LX_get_histogram_bin_data(
charlesmn 0:0be0bd219e72 1049 VL53LX_histogram_bin_data_t *phist_data);
charlesmn 0:0be0bd219e72 1050
charlesmn 0:0be0bd219e72 1051 void VL53LX_copy_sys_and_core_results_to_range_results(
charlesmn 0:0be0bd219e72 1052 int32_t gain_factor,
charlesmn 0:0be0bd219e72 1053 VL53LX_system_results_t *psys,
charlesmn 0:0be0bd219e72 1054 VL53LX_core_results_t *pcore,
charlesmn 0:0be0bd219e72 1055 VL53LX_range_results_t *presults);
charlesmn 0:0be0bd219e72 1056
charlesmn 0:0be0bd219e72 1057
charlesmn 0:0be0bd219e72 1058
charlesmn 0:0be0bd219e72 1059 VL53LX_Error VL53LX_set_zone_dss_config(
charlesmn 0:0be0bd219e72 1060 VL53LX_zone_private_dyn_cfg_t *pzone_dyn_cfg);
charlesmn 0:0be0bd219e72 1061
charlesmn 0:0be0bd219e72 1062
charlesmn 0:0be0bd219e72 1063 VL53LX_Error VL53LX_calc_ambient_dmax(
charlesmn 0:0be0bd219e72 1064 uint16_t target_reflectance,
charlesmn 0:0be0bd219e72 1065 int16_t *pambient_dmax_mm);
charlesmn 0:0be0bd219e72 1066
charlesmn 0:0be0bd219e72 1067
charlesmn 0:0be0bd219e72 1068 VL53LX_Error VL53LX_set_GPIO_interrupt_config(
charlesmn 0:0be0bd219e72 1069 VL53LX_GPIO_Interrupt_Mode intr_mode_distance,
charlesmn 0:0be0bd219e72 1070 VL53LX_GPIO_Interrupt_Mode intr_mode_rate,
charlesmn 0:0be0bd219e72 1071 uint8_t intr_new_measure_ready,
charlesmn 0:0be0bd219e72 1072 uint8_t intr_no_target,
charlesmn 0:0be0bd219e72 1073 uint8_t intr_combined_mode,
charlesmn 0:0be0bd219e72 1074 uint16_t thresh_distance_high,
charlesmn 0:0be0bd219e72 1075 uint16_t thresh_distance_low,
charlesmn 0:0be0bd219e72 1076 uint16_t thresh_rate_high,
charlesmn 0:0be0bd219e72 1077 uint16_t thresh_rate_low
charlesmn 0:0be0bd219e72 1078 );
charlesmn 0:0be0bd219e72 1079
charlesmn 0:0be0bd219e72 1080
charlesmn 0:0be0bd219e72 1081
charlesmn 0:0be0bd219e72 1082 VL53LX_Error VL53LX_set_GPIO_interrupt_config_struct(
charlesmn 0:0be0bd219e72 1083 VL53LX_GPIO_interrupt_config_t intconf);
charlesmn 0:0be0bd219e72 1084
charlesmn 0:0be0bd219e72 1085
charlesmn 0:0be0bd219e72 1086 VL53LX_Error VL53LX_get_GPIO_interrupt_config(
charlesmn 0:0be0bd219e72 1087 VL53LX_GPIO_interrupt_config_t *pintconf);
charlesmn 0:0be0bd219e72 1088
charlesmn 0:0be0bd219e72 1089
charlesmn 0:0be0bd219e72 1090 VL53LX_Error VL53LX_set_dmax_mode(
charlesmn 0:0be0bd219e72 1091 VL53LX_DeviceDmaxMode dmax_mode);
charlesmn 0:0be0bd219e72 1092
charlesmn 0:0be0bd219e72 1093
charlesmn 0:0be0bd219e72 1094 VL53LX_Error VL53LX_get_dmax_mode(
charlesmn 0:0be0bd219e72 1095 VL53LX_DeviceDmaxMode *pdmax_mode);
charlesmn 0:0be0bd219e72 1096
charlesmn 0:0be0bd219e72 1097
charlesmn 0:0be0bd219e72 1098 VL53LX_Error VL53LX_get_dmax_calibration_data(
charlesmn 0:0be0bd219e72 1099 VL53LX_DeviceDmaxMode dmax_mode,
charlesmn 0:0be0bd219e72 1100 VL53LX_dmax_calibration_data_t *pdmax_cal);
charlesmn 0:0be0bd219e72 1101
charlesmn 0:0be0bd219e72 1102
charlesmn 0:0be0bd219e72 1103 VL53LX_Error VL53LX_set_hist_dmax_config(
charlesmn 0:0be0bd219e72 1104 VL53LX_hist_gen3_dmax_config_t *pdmax_cfg);
charlesmn 0:0be0bd219e72 1105
charlesmn 0:0be0bd219e72 1106 VL53LX_Error VL53LX_get_hist_dmax_config(
charlesmn 0:0be0bd219e72 1107 VL53LX_hist_gen3_dmax_config_t *pdmax_cfg);
charlesmn 0:0be0bd219e72 1108
charlesmn 0:0be0bd219e72 1109
charlesmn 0:0be0bd219e72 1110 VL53LX_Error VL53LX_set_offset_calibration_mode(
charlesmn 0:0be0bd219e72 1111 VL53LX_OffsetCalibrationMode offset_cal_mode);
charlesmn 0:0be0bd219e72 1112
charlesmn 0:0be0bd219e72 1113
charlesmn 0:0be0bd219e72 1114 VL53LX_Error VL53LX_get_offset_calibration_mode(
charlesmn 0:0be0bd219e72 1115 VL53LX_OffsetCalibrationMode *poffset_cal_mode);
charlesmn 0:0be0bd219e72 1116
charlesmn 0:0be0bd219e72 1117
charlesmn 0:0be0bd219e72 1118 VL53LX_Error VL53LX_set_offset_correction_mode(
charlesmn 0:0be0bd219e72 1119 VL53LX_OffsetCalibrationMode offset_cor_mode);
charlesmn 0:0be0bd219e72 1120
charlesmn 0:0be0bd219e72 1121
charlesmn 0:0be0bd219e72 1122 VL53LX_Error VL53LX_get_offset_correction_mode(
charlesmn 0:0be0bd219e72 1123 VL53LX_OffsetCorrectionMode *poffset_cor_mode);
charlesmn 0:0be0bd219e72 1124
charlesmn 0:0be0bd219e72 1125
charlesmn 0:0be0bd219e72 1126 VL53LX_Error VL53LX_set_zone_calibration_data(
charlesmn 0:0be0bd219e72 1127 VL53LX_zone_calibration_results_t *pzone_cal);
charlesmn 0:0be0bd219e72 1128
charlesmn 0:0be0bd219e72 1129
charlesmn 0:0be0bd219e72 1130 VL53LX_Error VL53LX_get_zone_calibration_data(
charlesmn 0:0be0bd219e72 1131 VL53LX_zone_calibration_results_t *pzone_cal);
charlesmn 0:0be0bd219e72 1132
charlesmn 0:0be0bd219e72 1133
charlesmn 0:0be0bd219e72 1134 VL53LX_Error VL53LX_get_lite_xtalk_margin_kcps(
charlesmn 0:0be0bd219e72 1135 int16_t *pxtalk_margin);
charlesmn 0:0be0bd219e72 1136
charlesmn 0:0be0bd219e72 1137
charlesmn 0:0be0bd219e72 1138 VL53LX_Error VL53LX_set_lite_xtalk_margin_kcps(
charlesmn 0:0be0bd219e72 1139 int16_t xtalk_margin);
charlesmn 0:0be0bd219e72 1140
charlesmn 0:0be0bd219e72 1141
charlesmn 0:0be0bd219e72 1142 VL53LX_Error VL53LX_get_histogram_xtalk_margin_kcps(
charlesmn 0:0be0bd219e72 1143 int16_t *pxtalk_margin);
charlesmn 0:0be0bd219e72 1144
charlesmn 0:0be0bd219e72 1145
charlesmn 0:0be0bd219e72 1146 VL53LX_Error VL53LX_set_histogram_xtalk_margin_kcps(
charlesmn 0:0be0bd219e72 1147 int16_t xtalk_margin);
charlesmn 0:0be0bd219e72 1148
charlesmn 0:0be0bd219e72 1149 VL53LX_Error VL53LX_get_histogram_phase_consistency(
charlesmn 0:0be0bd219e72 1150 uint8_t *pphase_consistency);
charlesmn 0:0be0bd219e72 1151
charlesmn 0:0be0bd219e72 1152
charlesmn 0:0be0bd219e72 1153
charlesmn 0:0be0bd219e72 1154 VL53LX_Error VL53LX_set_histogram_phase_consistency(
charlesmn 0:0be0bd219e72 1155 uint8_t phase_consistency);
charlesmn 0:0be0bd219e72 1156
charlesmn 0:0be0bd219e72 1157
charlesmn 0:0be0bd219e72 1158
charlesmn 0:0be0bd219e72 1159 VL53LX_Error VL53LX_get_histogram_event_consistency(
charlesmn 0:0be0bd219e72 1160 uint8_t *pevent_consistency);
charlesmn 0:0be0bd219e72 1161
charlesmn 0:0be0bd219e72 1162
charlesmn 0:0be0bd219e72 1163
charlesmn 0:0be0bd219e72 1164 VL53LX_Error VL53LX_set_histogram_event_consistency(
charlesmn 0:0be0bd219e72 1165 uint8_t event_consistency);
charlesmn 0:0be0bd219e72 1166
charlesmn 0:0be0bd219e72 1167
charlesmn 0:0be0bd219e72 1168
charlesmn 0:0be0bd219e72 1169 VL53LX_Error VL53LX_get_histogram_ambient_threshold_sigma(
charlesmn 0:0be0bd219e72 1170 uint8_t *pamb_thresh_sigma);
charlesmn 0:0be0bd219e72 1171
charlesmn 0:0be0bd219e72 1172
charlesmn 0:0be0bd219e72 1173
charlesmn 0:0be0bd219e72 1174 VL53LX_Error VL53LX_set_histogram_ambient_threshold_sigma(
charlesmn 0:0be0bd219e72 1175
charlesmn 0:0be0bd219e72 1176 uint8_t amb_thresh_sigma);
charlesmn 0:0be0bd219e72 1177
charlesmn 0:0be0bd219e72 1178
charlesmn 0:0be0bd219e72 1179
charlesmn 0:0be0bd219e72 1180 VL53LX_Error VL53LX_get_lite_min_count_rate(
charlesmn 0:0be0bd219e72 1181
charlesmn 0:0be0bd219e72 1182 uint16_t *plite_mincountrate);
charlesmn 0:0be0bd219e72 1183
charlesmn 0:0be0bd219e72 1184
charlesmn 0:0be0bd219e72 1185
charlesmn 0:0be0bd219e72 1186
charlesmn 0:0be0bd219e72 1187 VL53LX_Error VL53LX_set_lite_min_count_rate(
charlesmn 0:0be0bd219e72 1188
charlesmn 0:0be0bd219e72 1189 uint16_t lite_mincountrate);
charlesmn 0:0be0bd219e72 1190
charlesmn 0:0be0bd219e72 1191
charlesmn 0:0be0bd219e72 1192
charlesmn 0:0be0bd219e72 1193
charlesmn 0:0be0bd219e72 1194
charlesmn 0:0be0bd219e72 1195 VL53LX_Error VL53LX_get_lite_sigma_threshold(
charlesmn 0:0be0bd219e72 1196
charlesmn 0:0be0bd219e72 1197 uint16_t *plite_sigma);
charlesmn 0:0be0bd219e72 1198
charlesmn 0:0be0bd219e72 1199
charlesmn 0:0be0bd219e72 1200
charlesmn 0:0be0bd219e72 1201
charlesmn 0:0be0bd219e72 1202 VL53LX_Error VL53LX_set_lite_sigma_threshold(
charlesmn 0:0be0bd219e72 1203
charlesmn 0:0be0bd219e72 1204 uint16_t lite_sigma);
charlesmn 0:0be0bd219e72 1205
charlesmn 0:0be0bd219e72 1206
charlesmn 0:0be0bd219e72 1207
charlesmn 0:0be0bd219e72 1208
charlesmn 0:0be0bd219e72 1209 VL53LX_Error VL53LX_restore_xtalk_nvm_default();
charlesmn 0:0be0bd219e72 1210
charlesmn 0:0be0bd219e72 1211
charlesmn 0:0be0bd219e72 1212
charlesmn 0:0be0bd219e72 1213 VL53LX_Error VL53LX_get_xtalk_detect_config(
charlesmn 0:0be0bd219e72 1214
charlesmn 0:0be0bd219e72 1215 int16_t *pmax_valid_range_mm,
charlesmn 0:0be0bd219e72 1216 int16_t *pmin_valid_range_mm,
charlesmn 0:0be0bd219e72 1217 uint16_t *pmax_valid_rate_kcps,
charlesmn 0:0be0bd219e72 1218 uint16_t *pmax_sigma_mm);
charlesmn 0:0be0bd219e72 1219
charlesmn 0:0be0bd219e72 1220
charlesmn 0:0be0bd219e72 1221
charlesmn 0:0be0bd219e72 1222 VL53LX_Error VL53LX_set_xtalk_detect_config(
charlesmn 0:0be0bd219e72 1223
charlesmn 0:0be0bd219e72 1224 int16_t max_valid_range_mm,
charlesmn 0:0be0bd219e72 1225 int16_t min_valid_range_mm,
charlesmn 0:0be0bd219e72 1226 uint16_t max_valid_rate_kcps,
charlesmn 0:0be0bd219e72 1227 uint16_t max_sigma_mm);
charlesmn 0:0be0bd219e72 1228
charlesmn 0:0be0bd219e72 1229
charlesmn 0:0be0bd219e72 1230
charlesmn 0:0be0bd219e72 1231 VL53LX_Error VL53LX_get_target_order_mode(
charlesmn 0:0be0bd219e72 1232
charlesmn 0:0be0bd219e72 1233 VL53LX_HistTargetOrder *phist_target_order);
charlesmn 0:0be0bd219e72 1234
charlesmn 0:0be0bd219e72 1235
charlesmn 0:0be0bd219e72 1236
charlesmn 0:0be0bd219e72 1237 VL53LX_Error VL53LX_set_target_order_mode(
charlesmn 0:0be0bd219e72 1238
charlesmn 0:0be0bd219e72 1239 VL53LX_HistTargetOrder hist_target_order);
charlesmn 0:0be0bd219e72 1240
charlesmn 0:0be0bd219e72 1241
charlesmn 0:0be0bd219e72 1242
charlesmn 0:0be0bd219e72 1243
charlesmn 0:0be0bd219e72 1244 VL53LX_Error VL53LX_set_dmax_reflectance_values(
charlesmn 0:0be0bd219e72 1245
charlesmn 0:0be0bd219e72 1246 VL53LX_dmax_reflectance_array_t *pdmax_reflectances);
charlesmn 0:0be0bd219e72 1247
charlesmn 0:0be0bd219e72 1248
charlesmn 0:0be0bd219e72 1249
charlesmn 0:0be0bd219e72 1250 VL53LX_Error VL53LX_get_dmax_reflectance_values(
charlesmn 0:0be0bd219e72 1251
charlesmn 0:0be0bd219e72 1252 VL53LX_dmax_reflectance_array_t *pdmax_reflectances);
charlesmn 0:0be0bd219e72 1253
charlesmn 0:0be0bd219e72 1254
charlesmn 0:0be0bd219e72 1255
charlesmn 0:0be0bd219e72 1256 VL53LX_Error VL53LX_set_vhv_config(
charlesmn 0:0be0bd219e72 1257 uint8_t vhv_init_en,
charlesmn 0:0be0bd219e72 1258 uint8_t vhv_init_value);
charlesmn 0:0be0bd219e72 1259
charlesmn 0:0be0bd219e72 1260
charlesmn 0:0be0bd219e72 1261
charlesmn 0:0be0bd219e72 1262 VL53LX_Error VL53LX_get_vhv_config(
charlesmn 0:0be0bd219e72 1263 uint8_t *pvhv_init_en,
charlesmn 0:0be0bd219e72 1264 uint8_t *pvhv_init_value);
charlesmn 0:0be0bd219e72 1265
charlesmn 0:0be0bd219e72 1266
charlesmn 0:0be0bd219e72 1267
charlesmn 0:0be0bd219e72 1268 VL53LX_Error VL53LX_set_vhv_loopbound(
charlesmn 0:0be0bd219e72 1269
charlesmn 0:0be0bd219e72 1270 uint8_t vhv_loopbound);
charlesmn 0:0be0bd219e72 1271
charlesmn 0:0be0bd219e72 1272
charlesmn 0:0be0bd219e72 1273
charlesmn 0:0be0bd219e72 1274 VL53LX_Error VL53LX_get_vhv_loopbound(
charlesmn 0:0be0bd219e72 1275
charlesmn 0:0be0bd219e72 1276 uint8_t *pvhv_loopbound);
charlesmn 0:0be0bd219e72 1277
charlesmn 0:0be0bd219e72 1278
charlesmn 0:0be0bd219e72 1279
charlesmn 0:0be0bd219e72 1280 VL53LX_Error VL53LX_get_tuning_parm(
charlesmn 0:0be0bd219e72 1281 VL53LX_TuningParms tuning_parm_key,
charlesmn 0:0be0bd219e72 1282 int32_t *ptuning_parm_value);
charlesmn 0:0be0bd219e72 1283
charlesmn 0:0be0bd219e72 1284
charlesmn 0:0be0bd219e72 1285
charlesmn 0:0be0bd219e72 1286 VL53LX_Error VL53LX_set_tuning_parm(
charlesmn 0:0be0bd219e72 1287 VL53LX_TuningParms tuning_parm_key,
charlesmn 0:0be0bd219e72 1288 int32_t tuning_parm_value);
charlesmn 0:0be0bd219e72 1289
charlesmn 0:0be0bd219e72 1290
charlesmn 0:0be0bd219e72 1291
charlesmn 0:0be0bd219e72 1292 VL53LX_Error VL53LX_dynamic_xtalk_correction_enable();
charlesmn 0:0be0bd219e72 1293
charlesmn 0:0be0bd219e72 1294
charlesmn 0:0be0bd219e72 1295
charlesmn 0:0be0bd219e72 1296 VL53LX_Error VL53LX_dynamic_xtalk_correction_disable();
charlesmn 0:0be0bd219e72 1297
charlesmn 0:0be0bd219e72 1298
charlesmn 0:0be0bd219e72 1299
charlesmn 0:0be0bd219e72 1300
charlesmn 0:0be0bd219e72 1301 VL53LX_Error VL53LX_dynamic_xtalk_correction_apply_enable();
charlesmn 0:0be0bd219e72 1302
charlesmn 0:0be0bd219e72 1303
charlesmn 0:0be0bd219e72 1304
charlesmn 0:0be0bd219e72 1305 VL53LX_Error VL53LX_dynamic_xtalk_correction_apply_disable();
charlesmn 0:0be0bd219e72 1306
charlesmn 0:0be0bd219e72 1307
charlesmn 0:0be0bd219e72 1308
charlesmn 0:0be0bd219e72 1309 VL53LX_Error VL53LX_dynamic_xtalk_correction_single_apply_enable();
charlesmn 0:0be0bd219e72 1310
charlesmn 0:0be0bd219e72 1311
charlesmn 0:0be0bd219e72 1312
charlesmn 0:0be0bd219e72 1313 VL53LX_Error VL53LX_dynamic_xtalk_correction_single_apply_disable();
charlesmn 0:0be0bd219e72 1314
charlesmn 0:0be0bd219e72 1315
charlesmn 0:0be0bd219e72 1316
charlesmn 0:0be0bd219e72 1317 VL53LX_Error VL53LX_dynamic_xtalk_correction_set_scalers(
charlesmn 0:0be0bd219e72 1318 int16_t x_scaler_in,
charlesmn 0:0be0bd219e72 1319 int16_t y_scaler_in,
charlesmn 0:0be0bd219e72 1320 uint8_t user_scaler_set_in
charlesmn 0:0be0bd219e72 1321 );
charlesmn 0:0be0bd219e72 1322
charlesmn 0:0be0bd219e72 1323
charlesmn 0:0be0bd219e72 1324
charlesmn 0:0be0bd219e72 1325 VL53LX_Error VL53LX_get_current_xtalk_settings(
charlesmn 0:0be0bd219e72 1326
charlesmn 0:0be0bd219e72 1327 VL53LX_xtalk_calibration_results_t *pxtalk
charlesmn 0:0be0bd219e72 1328 );
charlesmn 0:0be0bd219e72 1329
charlesmn 0:0be0bd219e72 1330
charlesmn 0:0be0bd219e72 1331
charlesmn 0:0be0bd219e72 1332 VL53LX_Error VL53LX_set_current_xtalk_settings(
charlesmn 0:0be0bd219e72 1333
charlesmn 0:0be0bd219e72 1334 VL53LX_xtalk_calibration_results_t *pxtalk
charlesmn 0:0be0bd219e72 1335 );
charlesmn 0:0be0bd219e72 1336
charlesmn 0:0be0bd219e72 1337 VL53LX_Error VL53LX_load_patch();
charlesmn 0:0be0bd219e72 1338
charlesmn 0:0be0bd219e72 1339 VL53LX_Error VL53LX_unload_patch();
charlesmn 0:0be0bd219e72 1340
charlesmn 0:0be0bd219e72 1341
charlesmn 0:0be0bd219e72 1342 /* vl53lx_register_funcs.h */
charlesmn 0:0be0bd219e72 1343
charlesmn 0:0be0bd219e72 1344
charlesmn 0:0be0bd219e72 1345 VL53LX_Error VL53LX_i2c_encode_static_nvm_managed(
charlesmn 0:0be0bd219e72 1346 VL53LX_static_nvm_managed_t *pdata,
charlesmn 0:0be0bd219e72 1347 uint16_t buf_size,
charlesmn 0:0be0bd219e72 1348 uint8_t *pbuffer);
charlesmn 0:0be0bd219e72 1349
charlesmn 0:0be0bd219e72 1350
charlesmn 0:0be0bd219e72 1351
charlesmn 0:0be0bd219e72 1352
charlesmn 0:0be0bd219e72 1353 VL53LX_Error VL53LX_i2c_decode_static_nvm_managed(
charlesmn 0:0be0bd219e72 1354 uint16_t buf_size,
charlesmn 0:0be0bd219e72 1355 uint8_t *pbuffer,
charlesmn 0:0be0bd219e72 1356 VL53LX_static_nvm_managed_t *pdata);
charlesmn 0:0be0bd219e72 1357
charlesmn 0:0be0bd219e72 1358
charlesmn 0:0be0bd219e72 1359
charlesmn 0:0be0bd219e72 1360
charlesmn 0:0be0bd219e72 1361 VL53LX_Error VL53LX_set_static_nvm_managed(
charlesmn 0:0be0bd219e72 1362 VL53LX_static_nvm_managed_t *pdata);
charlesmn 0:0be0bd219e72 1363
charlesmn 0:0be0bd219e72 1364
charlesmn 0:0be0bd219e72 1365
charlesmn 0:0be0bd219e72 1366
charlesmn 0:0be0bd219e72 1367 VL53LX_Error VL53LX_get_static_nvm_managed(
charlesmn 0:0be0bd219e72 1368 VL53LX_static_nvm_managed_t *pdata);
charlesmn 0:0be0bd219e72 1369
charlesmn 0:0be0bd219e72 1370
charlesmn 0:0be0bd219e72 1371
charlesmn 0:0be0bd219e72 1372
charlesmn 0:0be0bd219e72 1373 VL53LX_Error VL53LX_i2c_encode_customer_nvm_managed(
charlesmn 0:0be0bd219e72 1374 VL53LX_customer_nvm_managed_t *pdata,
charlesmn 0:0be0bd219e72 1375 uint16_t buf_size,
charlesmn 0:0be0bd219e72 1376 uint8_t *pbuffer);
charlesmn 0:0be0bd219e72 1377
charlesmn 0:0be0bd219e72 1378
charlesmn 0:0be0bd219e72 1379
charlesmn 0:0be0bd219e72 1380
charlesmn 0:0be0bd219e72 1381 VL53LX_Error VL53LX_i2c_decode_customer_nvm_managed(
charlesmn 0:0be0bd219e72 1382 uint16_t buf_size,
charlesmn 0:0be0bd219e72 1383 uint8_t *pbuffer,
charlesmn 0:0be0bd219e72 1384 VL53LX_customer_nvm_managed_t *pdata);
charlesmn 0:0be0bd219e72 1385
charlesmn 0:0be0bd219e72 1386
charlesmn 0:0be0bd219e72 1387
charlesmn 0:0be0bd219e72 1388
charlesmn 0:0be0bd219e72 1389 VL53LX_Error VL53LX_set_customer_nvm_managed(
charlesmn 0:0be0bd219e72 1390 VL53LX_customer_nvm_managed_t *pdata);
charlesmn 0:0be0bd219e72 1391
charlesmn 0:0be0bd219e72 1392
charlesmn 0:0be0bd219e72 1393
charlesmn 0:0be0bd219e72 1394
charlesmn 0:0be0bd219e72 1395 VL53LX_Error VL53LX_get_customer_nvm_managed(
charlesmn 0:0be0bd219e72 1396 VL53LX_customer_nvm_managed_t *pdata);
charlesmn 0:0be0bd219e72 1397
charlesmn 0:0be0bd219e72 1398
charlesmn 0:0be0bd219e72 1399
charlesmn 0:0be0bd219e72 1400
charlesmn 0:0be0bd219e72 1401 VL53LX_Error VL53LX_i2c_encode_static_config(
charlesmn 0:0be0bd219e72 1402 VL53LX_static_config_t *pdata,
charlesmn 0:0be0bd219e72 1403 uint16_t buf_size,
charlesmn 0:0be0bd219e72 1404 uint8_t *pbuffer);
charlesmn 0:0be0bd219e72 1405
charlesmn 0:0be0bd219e72 1406
charlesmn 0:0be0bd219e72 1407
charlesmn 0:0be0bd219e72 1408
charlesmn 0:0be0bd219e72 1409 VL53LX_Error VL53LX_i2c_decode_static_config(
charlesmn 0:0be0bd219e72 1410 uint16_t buf_size,
charlesmn 0:0be0bd219e72 1411 uint8_t *pbuffer,
charlesmn 0:0be0bd219e72 1412 VL53LX_static_config_t *pdata);
charlesmn 0:0be0bd219e72 1413
charlesmn 0:0be0bd219e72 1414
charlesmn 0:0be0bd219e72 1415
charlesmn 0:0be0bd219e72 1416
charlesmn 0:0be0bd219e72 1417 VL53LX_Error VL53LX_set_static_config(
charlesmn 0:0be0bd219e72 1418 VL53LX_static_config_t *pdata);
charlesmn 0:0be0bd219e72 1419
charlesmn 0:0be0bd219e72 1420
charlesmn 0:0be0bd219e72 1421
charlesmn 0:0be0bd219e72 1422
charlesmn 0:0be0bd219e72 1423 VL53LX_Error VL53LX_get_static_config(
charlesmn 0:0be0bd219e72 1424 VL53LX_static_config_t *pdata);
charlesmn 0:0be0bd219e72 1425
charlesmn 0:0be0bd219e72 1426
charlesmn 0:0be0bd219e72 1427
charlesmn 0:0be0bd219e72 1428
charlesmn 0:0be0bd219e72 1429 VL53LX_Error VL53LX_i2c_encode_general_config(
charlesmn 0:0be0bd219e72 1430 VL53LX_general_config_t *pdata,
charlesmn 0:0be0bd219e72 1431 uint16_t buf_size,
charlesmn 0:0be0bd219e72 1432 uint8_t *pbuffer);
charlesmn 0:0be0bd219e72 1433
charlesmn 0:0be0bd219e72 1434
charlesmn 0:0be0bd219e72 1435
charlesmn 0:0be0bd219e72 1436
charlesmn 0:0be0bd219e72 1437 VL53LX_Error VL53LX_i2c_decode_general_config(
charlesmn 0:0be0bd219e72 1438 uint16_t buf_size,
charlesmn 0:0be0bd219e72 1439 uint8_t *pbuffer,
charlesmn 0:0be0bd219e72 1440 VL53LX_general_config_t *pdata);
charlesmn 0:0be0bd219e72 1441
charlesmn 0:0be0bd219e72 1442
charlesmn 0:0be0bd219e72 1443
charlesmn 0:0be0bd219e72 1444
charlesmn 0:0be0bd219e72 1445 VL53LX_Error VL53LX_set_general_config(
charlesmn 0:0be0bd219e72 1446 VL53LX_general_config_t *pdata);
charlesmn 0:0be0bd219e72 1447
charlesmn 0:0be0bd219e72 1448
charlesmn 0:0be0bd219e72 1449
charlesmn 0:0be0bd219e72 1450
charlesmn 0:0be0bd219e72 1451 VL53LX_Error VL53LX_get_general_config(
charlesmn 0:0be0bd219e72 1452 VL53LX_general_config_t *pdata);
charlesmn 0:0be0bd219e72 1453
charlesmn 0:0be0bd219e72 1454
charlesmn 0:0be0bd219e72 1455
charlesmn 0:0be0bd219e72 1456
charlesmn 0:0be0bd219e72 1457 VL53LX_Error VL53LX_i2c_encode_timing_config(
charlesmn 0:0be0bd219e72 1458 VL53LX_timing_config_t *pdata,
charlesmn 0:0be0bd219e72 1459 uint16_t buf_size,
charlesmn 0:0be0bd219e72 1460 uint8_t *pbuffer);
charlesmn 0:0be0bd219e72 1461
charlesmn 0:0be0bd219e72 1462
charlesmn 0:0be0bd219e72 1463
charlesmn 0:0be0bd219e72 1464
charlesmn 0:0be0bd219e72 1465 VL53LX_Error VL53LX_i2c_decode_timing_config(
charlesmn 0:0be0bd219e72 1466 uint16_t buf_size,
charlesmn 0:0be0bd219e72 1467 uint8_t *pbuffer,
charlesmn 0:0be0bd219e72 1468 VL53LX_timing_config_t *pdata);
charlesmn 0:0be0bd219e72 1469
charlesmn 0:0be0bd219e72 1470
charlesmn 0:0be0bd219e72 1471
charlesmn 0:0be0bd219e72 1472
charlesmn 0:0be0bd219e72 1473 VL53LX_Error VL53LX_set_timing_config(
charlesmn 0:0be0bd219e72 1474 VL53LX_timing_config_t *pdata);
charlesmn 0:0be0bd219e72 1475
charlesmn 0:0be0bd219e72 1476
charlesmn 0:0be0bd219e72 1477
charlesmn 0:0be0bd219e72 1478
charlesmn 0:0be0bd219e72 1479 VL53LX_Error VL53LX_get_timing_config(
charlesmn 0:0be0bd219e72 1480 VL53LX_timing_config_t *pdata);
charlesmn 0:0be0bd219e72 1481
charlesmn 0:0be0bd219e72 1482
charlesmn 0:0be0bd219e72 1483
charlesmn 0:0be0bd219e72 1484
charlesmn 0:0be0bd219e72 1485 VL53LX_Error VL53LX_i2c_encode_dynamic_config(
charlesmn 0:0be0bd219e72 1486 VL53LX_dynamic_config_t *pdata,
charlesmn 0:0be0bd219e72 1487 uint16_t buf_size,
charlesmn 0:0be0bd219e72 1488 uint8_t *pbuffer);
charlesmn 0:0be0bd219e72 1489
charlesmn 0:0be0bd219e72 1490
charlesmn 0:0be0bd219e72 1491
charlesmn 0:0be0bd219e72 1492
charlesmn 0:0be0bd219e72 1493 VL53LX_Error VL53LX_i2c_decode_dynamic_config(
charlesmn 0:0be0bd219e72 1494 uint16_t buf_size,
charlesmn 0:0be0bd219e72 1495 uint8_t *pbuffer,
charlesmn 0:0be0bd219e72 1496 VL53LX_dynamic_config_t *pdata);
charlesmn 0:0be0bd219e72 1497
charlesmn 0:0be0bd219e72 1498
charlesmn 0:0be0bd219e72 1499
charlesmn 0:0be0bd219e72 1500
charlesmn 0:0be0bd219e72 1501 VL53LX_Error VL53LX_set_dynamic_config(
charlesmn 0:0be0bd219e72 1502 VL53LX_dynamic_config_t *pdata);
charlesmn 0:0be0bd219e72 1503
charlesmn 0:0be0bd219e72 1504
charlesmn 0:0be0bd219e72 1505
charlesmn 0:0be0bd219e72 1506
charlesmn 0:0be0bd219e72 1507 VL53LX_Error VL53LX_get_dynamic_config(
charlesmn 0:0be0bd219e72 1508 VL53LX_dynamic_config_t *pdata);
charlesmn 0:0be0bd219e72 1509
charlesmn 0:0be0bd219e72 1510
charlesmn 0:0be0bd219e72 1511
charlesmn 0:0be0bd219e72 1512
charlesmn 0:0be0bd219e72 1513 VL53LX_Error VL53LX_i2c_encode_system_control(
charlesmn 0:0be0bd219e72 1514 VL53LX_system_control_t *pdata,
charlesmn 0:0be0bd219e72 1515 uint16_t buf_size,
charlesmn 0:0be0bd219e72 1516 uint8_t *pbuffer);
charlesmn 0:0be0bd219e72 1517
charlesmn 0:0be0bd219e72 1518
charlesmn 0:0be0bd219e72 1519
charlesmn 0:0be0bd219e72 1520
charlesmn 0:0be0bd219e72 1521 VL53LX_Error VL53LX_i2c_decode_system_control(
charlesmn 0:0be0bd219e72 1522 uint16_t buf_size,
charlesmn 0:0be0bd219e72 1523 uint8_t *pbuffer,
charlesmn 0:0be0bd219e72 1524 VL53LX_system_control_t *pdata);
charlesmn 0:0be0bd219e72 1525
charlesmn 0:0be0bd219e72 1526
charlesmn 0:0be0bd219e72 1527
charlesmn 0:0be0bd219e72 1528
charlesmn 0:0be0bd219e72 1529 VL53LX_Error VL53LX_set_system_control(
charlesmn 0:0be0bd219e72 1530 VL53LX_system_control_t *pdata);
charlesmn 0:0be0bd219e72 1531
charlesmn 0:0be0bd219e72 1532
charlesmn 0:0be0bd219e72 1533
charlesmn 0:0be0bd219e72 1534
charlesmn 0:0be0bd219e72 1535 VL53LX_Error VL53LX_get_system_control(
charlesmn 0:0be0bd219e72 1536 VL53LX_system_control_t *pdata);
charlesmn 0:0be0bd219e72 1537
charlesmn 0:0be0bd219e72 1538
charlesmn 0:0be0bd219e72 1539
charlesmn 0:0be0bd219e72 1540
charlesmn 0:0be0bd219e72 1541 VL53LX_Error VL53LX_i2c_encode_system_results(
charlesmn 0:0be0bd219e72 1542 VL53LX_system_results_t *pdata,
charlesmn 0:0be0bd219e72 1543 uint16_t buf_size,
charlesmn 0:0be0bd219e72 1544 uint8_t *pbuffer);
charlesmn 0:0be0bd219e72 1545
charlesmn 0:0be0bd219e72 1546
charlesmn 0:0be0bd219e72 1547
charlesmn 0:0be0bd219e72 1548
charlesmn 0:0be0bd219e72 1549 VL53LX_Error VL53LX_i2c_decode_system_results(
charlesmn 0:0be0bd219e72 1550 uint16_t buf_size,
charlesmn 0:0be0bd219e72 1551 uint8_t *pbuffer,
charlesmn 0:0be0bd219e72 1552 VL53LX_system_results_t *pdata);
charlesmn 0:0be0bd219e72 1553
charlesmn 0:0be0bd219e72 1554
charlesmn 0:0be0bd219e72 1555
charlesmn 0:0be0bd219e72 1556
charlesmn 0:0be0bd219e72 1557 VL53LX_Error VL53LX_set_system_results(
charlesmn 0:0be0bd219e72 1558 VL53LX_system_results_t *pdata);
charlesmn 0:0be0bd219e72 1559
charlesmn 0:0be0bd219e72 1560
charlesmn 0:0be0bd219e72 1561
charlesmn 0:0be0bd219e72 1562
charlesmn 0:0be0bd219e72 1563 VL53LX_Error VL53LX_get_system_results(
charlesmn 0:0be0bd219e72 1564 VL53LX_system_results_t *pdata);
charlesmn 0:0be0bd219e72 1565
charlesmn 0:0be0bd219e72 1566
charlesmn 0:0be0bd219e72 1567
charlesmn 0:0be0bd219e72 1568
charlesmn 0:0be0bd219e72 1569 VL53LX_Error VL53LX_i2c_encode_core_results(
charlesmn 0:0be0bd219e72 1570 VL53LX_core_results_t *pdata,
charlesmn 0:0be0bd219e72 1571 uint16_t buf_size,
charlesmn 0:0be0bd219e72 1572 uint8_t *pbuffer);
charlesmn 0:0be0bd219e72 1573
charlesmn 0:0be0bd219e72 1574
charlesmn 0:0be0bd219e72 1575
charlesmn 0:0be0bd219e72 1576
charlesmn 0:0be0bd219e72 1577 VL53LX_Error VL53LX_i2c_decode_core_results(
charlesmn 0:0be0bd219e72 1578 uint16_t buf_size,
charlesmn 0:0be0bd219e72 1579 uint8_t *pbuffer,
charlesmn 0:0be0bd219e72 1580 VL53LX_core_results_t *pdata);
charlesmn 0:0be0bd219e72 1581
charlesmn 0:0be0bd219e72 1582
charlesmn 0:0be0bd219e72 1583
charlesmn 0:0be0bd219e72 1584
charlesmn 0:0be0bd219e72 1585 VL53LX_Error VL53LX_set_core_results(
charlesmn 0:0be0bd219e72 1586 VL53LX_core_results_t *pdata);
charlesmn 0:0be0bd219e72 1587
charlesmn 0:0be0bd219e72 1588
charlesmn 0:0be0bd219e72 1589
charlesmn 0:0be0bd219e72 1590
charlesmn 0:0be0bd219e72 1591 VL53LX_Error VL53LX_get_core_results(
charlesmn 0:0be0bd219e72 1592 VL53LX_core_results_t *pdata);
charlesmn 0:0be0bd219e72 1593
charlesmn 0:0be0bd219e72 1594
charlesmn 0:0be0bd219e72 1595
charlesmn 0:0be0bd219e72 1596
charlesmn 0:0be0bd219e72 1597 VL53LX_Error VL53LX_i2c_encode_debug_results(
charlesmn 0:0be0bd219e72 1598 VL53LX_debug_results_t *pdata,
charlesmn 0:0be0bd219e72 1599 uint16_t buf_size,
charlesmn 0:0be0bd219e72 1600 uint8_t *pbuffer);
charlesmn 0:0be0bd219e72 1601
charlesmn 0:0be0bd219e72 1602
charlesmn 0:0be0bd219e72 1603
charlesmn 0:0be0bd219e72 1604
charlesmn 0:0be0bd219e72 1605 VL53LX_Error VL53LX_i2c_decode_debug_results(
charlesmn 0:0be0bd219e72 1606 uint16_t buf_size,
charlesmn 0:0be0bd219e72 1607 uint8_t *pbuffer,
charlesmn 0:0be0bd219e72 1608 VL53LX_debug_results_t *pdata);
charlesmn 0:0be0bd219e72 1609
charlesmn 0:0be0bd219e72 1610
charlesmn 0:0be0bd219e72 1611
charlesmn 0:0be0bd219e72 1612
charlesmn 0:0be0bd219e72 1613 VL53LX_Error VL53LX_set_debug_results(
charlesmn 0:0be0bd219e72 1614 VL53LX_debug_results_t *pdata);
charlesmn 0:0be0bd219e72 1615
charlesmn 0:0be0bd219e72 1616
charlesmn 0:0be0bd219e72 1617
charlesmn 0:0be0bd219e72 1618
charlesmn 0:0be0bd219e72 1619 VL53LX_Error VL53LX_get_debug_results(
charlesmn 0:0be0bd219e72 1620 VL53LX_debug_results_t *pdata);
charlesmn 0:0be0bd219e72 1621
charlesmn 0:0be0bd219e72 1622
charlesmn 0:0be0bd219e72 1623
charlesmn 0:0be0bd219e72 1624
charlesmn 0:0be0bd219e72 1625 VL53LX_Error VL53LX_i2c_encode_nvm_copy_data(
charlesmn 0:0be0bd219e72 1626 VL53LX_nvm_copy_data_t *pdata,
charlesmn 0:0be0bd219e72 1627 uint16_t buf_size,
charlesmn 0:0be0bd219e72 1628 uint8_t *pbuffer);
charlesmn 0:0be0bd219e72 1629
charlesmn 0:0be0bd219e72 1630
charlesmn 0:0be0bd219e72 1631
charlesmn 0:0be0bd219e72 1632
charlesmn 0:0be0bd219e72 1633 VL53LX_Error VL53LX_i2c_decode_nvm_copy_data(
charlesmn 0:0be0bd219e72 1634 uint16_t buf_size,
charlesmn 0:0be0bd219e72 1635 uint8_t *pbuffer,
charlesmn 0:0be0bd219e72 1636 VL53LX_nvm_copy_data_t *pdata);
charlesmn 0:0be0bd219e72 1637
charlesmn 0:0be0bd219e72 1638
charlesmn 0:0be0bd219e72 1639
charlesmn 0:0be0bd219e72 1640
charlesmn 0:0be0bd219e72 1641 VL53LX_Error VL53LX_set_nvm_copy_data(
charlesmn 0:0be0bd219e72 1642 VL53LX_nvm_copy_data_t *pdata);
charlesmn 0:0be0bd219e72 1643
charlesmn 0:0be0bd219e72 1644
charlesmn 0:0be0bd219e72 1645
charlesmn 0:0be0bd219e72 1646
charlesmn 0:0be0bd219e72 1647 VL53LX_Error VL53LX_get_nvm_copy_data(
charlesmn 0:0be0bd219e72 1648 VL53LX_nvm_copy_data_t *pdata);
charlesmn 0:0be0bd219e72 1649
charlesmn 0:0be0bd219e72 1650
charlesmn 0:0be0bd219e72 1651
charlesmn 0:0be0bd219e72 1652
charlesmn 0:0be0bd219e72 1653 VL53LX_Error VL53LX_i2c_encode_prev_shadow_system_results(
charlesmn 0:0be0bd219e72 1654 VL53LX_prev_shadow_system_results_t *pdata,
charlesmn 0:0be0bd219e72 1655 uint16_t buf_size,
charlesmn 0:0be0bd219e72 1656 uint8_t *pbuffer);
charlesmn 0:0be0bd219e72 1657
charlesmn 0:0be0bd219e72 1658
charlesmn 0:0be0bd219e72 1659
charlesmn 0:0be0bd219e72 1660
charlesmn 0:0be0bd219e72 1661 VL53LX_Error VL53LX_i2c_decode_prev_shadow_system_results(
charlesmn 0:0be0bd219e72 1662 uint16_t buf_size,
charlesmn 0:0be0bd219e72 1663 uint8_t *pbuffer,
charlesmn 0:0be0bd219e72 1664 VL53LX_prev_shadow_system_results_t *pdata);
charlesmn 0:0be0bd219e72 1665
charlesmn 0:0be0bd219e72 1666
charlesmn 0:0be0bd219e72 1667
charlesmn 0:0be0bd219e72 1668
charlesmn 0:0be0bd219e72 1669 VL53LX_Error VL53LX_set_prev_shadow_system_results(
charlesmn 0:0be0bd219e72 1670 VL53LX_prev_shadow_system_results_t *pdata);
charlesmn 0:0be0bd219e72 1671
charlesmn 0:0be0bd219e72 1672
charlesmn 0:0be0bd219e72 1673
charlesmn 0:0be0bd219e72 1674
charlesmn 0:0be0bd219e72 1675 VL53LX_Error VL53LX_get_prev_shadow_system_results(
charlesmn 0:0be0bd219e72 1676 VL53LX_prev_shadow_system_results_t *pdata);
charlesmn 0:0be0bd219e72 1677
charlesmn 0:0be0bd219e72 1678
charlesmn 0:0be0bd219e72 1679
charlesmn 0:0be0bd219e72 1680
charlesmn 0:0be0bd219e72 1681 VL53LX_Error VL53LX_i2c_encode_prev_shadow_core_results(
charlesmn 0:0be0bd219e72 1682 VL53LX_prev_shadow_core_results_t *pdata,
charlesmn 0:0be0bd219e72 1683 uint16_t buf_size,
charlesmn 0:0be0bd219e72 1684 uint8_t *pbuffer);
charlesmn 0:0be0bd219e72 1685
charlesmn 0:0be0bd219e72 1686
charlesmn 0:0be0bd219e72 1687
charlesmn 0:0be0bd219e72 1688
charlesmn 0:0be0bd219e72 1689 VL53LX_Error VL53LX_i2c_decode_prev_shadow_core_results(
charlesmn 0:0be0bd219e72 1690 uint16_t buf_size,
charlesmn 0:0be0bd219e72 1691 uint8_t *pbuffer,
charlesmn 0:0be0bd219e72 1692 VL53LX_prev_shadow_core_results_t *pdata);
charlesmn 0:0be0bd219e72 1693
charlesmn 0:0be0bd219e72 1694
charlesmn 0:0be0bd219e72 1695
charlesmn 0:0be0bd219e72 1696
charlesmn 0:0be0bd219e72 1697 VL53LX_Error VL53LX_set_prev_shadow_core_results(
charlesmn 0:0be0bd219e72 1698 VL53LX_prev_shadow_core_results_t *pdata);
charlesmn 0:0be0bd219e72 1699
charlesmn 0:0be0bd219e72 1700
charlesmn 0:0be0bd219e72 1701
charlesmn 0:0be0bd219e72 1702
charlesmn 0:0be0bd219e72 1703 VL53LX_Error VL53LX_get_prev_shadow_core_results(
charlesmn 0:0be0bd219e72 1704 VL53LX_prev_shadow_core_results_t *pdata);
charlesmn 0:0be0bd219e72 1705
charlesmn 0:0be0bd219e72 1706
charlesmn 0:0be0bd219e72 1707
charlesmn 0:0be0bd219e72 1708
charlesmn 0:0be0bd219e72 1709 VL53LX_Error VL53LX_i2c_encode_patch_debug(
charlesmn 0:0be0bd219e72 1710 VL53LX_patch_debug_t *pdata,
charlesmn 0:0be0bd219e72 1711 uint16_t buf_size,
charlesmn 0:0be0bd219e72 1712 uint8_t *pbuffer);
charlesmn 0:0be0bd219e72 1713
charlesmn 0:0be0bd219e72 1714
charlesmn 0:0be0bd219e72 1715
charlesmn 0:0be0bd219e72 1716
charlesmn 0:0be0bd219e72 1717 VL53LX_Error VL53LX_i2c_decode_patch_debug(
charlesmn 0:0be0bd219e72 1718 uint16_t buf_size,
charlesmn 0:0be0bd219e72 1719 uint8_t *pbuffer,
charlesmn 0:0be0bd219e72 1720 VL53LX_patch_debug_t *pdata);
charlesmn 0:0be0bd219e72 1721
charlesmn 0:0be0bd219e72 1722
charlesmn 0:0be0bd219e72 1723
charlesmn 0:0be0bd219e72 1724
charlesmn 0:0be0bd219e72 1725 VL53LX_Error VL53LX_set_patch_debug(
charlesmn 0:0be0bd219e72 1726 VL53LX_patch_debug_t *pdata);
charlesmn 0:0be0bd219e72 1727
charlesmn 0:0be0bd219e72 1728
charlesmn 0:0be0bd219e72 1729
charlesmn 0:0be0bd219e72 1730
charlesmn 0:0be0bd219e72 1731 VL53LX_Error VL53LX_get_patch_debug(
charlesmn 0:0be0bd219e72 1732 VL53LX_patch_debug_t *pdata);
charlesmn 0:0be0bd219e72 1733
charlesmn 0:0be0bd219e72 1734
charlesmn 0:0be0bd219e72 1735
charlesmn 0:0be0bd219e72 1736
charlesmn 0:0be0bd219e72 1737 VL53LX_Error VL53LX_i2c_encode_gph_general_config(
charlesmn 0:0be0bd219e72 1738 VL53LX_gph_general_config_t *pdata,
charlesmn 0:0be0bd219e72 1739 uint16_t buf_size,
charlesmn 0:0be0bd219e72 1740 uint8_t *pbuffer);
charlesmn 0:0be0bd219e72 1741
charlesmn 0:0be0bd219e72 1742
charlesmn 0:0be0bd219e72 1743
charlesmn 0:0be0bd219e72 1744
charlesmn 0:0be0bd219e72 1745 VL53LX_Error VL53LX_i2c_decode_gph_general_config(
charlesmn 0:0be0bd219e72 1746 uint16_t buf_size,
charlesmn 0:0be0bd219e72 1747 uint8_t *pbuffer,
charlesmn 0:0be0bd219e72 1748 VL53LX_gph_general_config_t *pdata);
charlesmn 0:0be0bd219e72 1749
charlesmn 0:0be0bd219e72 1750
charlesmn 0:0be0bd219e72 1751
charlesmn 0:0be0bd219e72 1752
charlesmn 0:0be0bd219e72 1753 VL53LX_Error VL53LX_set_gph_general_config(
charlesmn 0:0be0bd219e72 1754 VL53LX_gph_general_config_t *pdata);
charlesmn 0:0be0bd219e72 1755
charlesmn 0:0be0bd219e72 1756
charlesmn 0:0be0bd219e72 1757
charlesmn 0:0be0bd219e72 1758
charlesmn 0:0be0bd219e72 1759 VL53LX_Error VL53LX_get_gph_general_config(
charlesmn 0:0be0bd219e72 1760 VL53LX_gph_general_config_t *pdata);
charlesmn 0:0be0bd219e72 1761
charlesmn 0:0be0bd219e72 1762
charlesmn 0:0be0bd219e72 1763
charlesmn 0:0be0bd219e72 1764
charlesmn 0:0be0bd219e72 1765 VL53LX_Error VL53LX_i2c_encode_gph_static_config(
charlesmn 0:0be0bd219e72 1766 VL53LX_gph_static_config_t *pdata,
charlesmn 0:0be0bd219e72 1767 uint16_t buf_size,
charlesmn 0:0be0bd219e72 1768 uint8_t *pbuffer);
charlesmn 0:0be0bd219e72 1769
charlesmn 0:0be0bd219e72 1770
charlesmn 0:0be0bd219e72 1771
charlesmn 0:0be0bd219e72 1772
charlesmn 0:0be0bd219e72 1773 VL53LX_Error VL53LX_i2c_decode_gph_static_config(
charlesmn 0:0be0bd219e72 1774 uint16_t buf_size,
charlesmn 0:0be0bd219e72 1775 uint8_t *pbuffer,
charlesmn 0:0be0bd219e72 1776 VL53LX_gph_static_config_t *pdata);
charlesmn 0:0be0bd219e72 1777
charlesmn 0:0be0bd219e72 1778
charlesmn 0:0be0bd219e72 1779
charlesmn 0:0be0bd219e72 1780
charlesmn 0:0be0bd219e72 1781 VL53LX_Error VL53LX_set_gph_static_config(
charlesmn 0:0be0bd219e72 1782 VL53LX_gph_static_config_t *pdata);
charlesmn 0:0be0bd219e72 1783
charlesmn 0:0be0bd219e72 1784
charlesmn 0:0be0bd219e72 1785
charlesmn 0:0be0bd219e72 1786
charlesmn 0:0be0bd219e72 1787 VL53LX_Error VL53LX_get_gph_static_config(
charlesmn 0:0be0bd219e72 1788 VL53LX_gph_static_config_t *pdata);
charlesmn 0:0be0bd219e72 1789
charlesmn 0:0be0bd219e72 1790
charlesmn 0:0be0bd219e72 1791
charlesmn 0:0be0bd219e72 1792
charlesmn 0:0be0bd219e72 1793 VL53LX_Error VL53LX_i2c_encode_gph_timing_config(
charlesmn 0:0be0bd219e72 1794 VL53LX_gph_timing_config_t *pdata,
charlesmn 0:0be0bd219e72 1795 uint16_t buf_size,
charlesmn 0:0be0bd219e72 1796 uint8_t *pbuffer);
charlesmn 0:0be0bd219e72 1797
charlesmn 0:0be0bd219e72 1798
charlesmn 0:0be0bd219e72 1799
charlesmn 0:0be0bd219e72 1800
charlesmn 0:0be0bd219e72 1801 VL53LX_Error VL53LX_i2c_decode_gph_timing_config(
charlesmn 0:0be0bd219e72 1802 uint16_t buf_size,
charlesmn 0:0be0bd219e72 1803 uint8_t *pbuffer,
charlesmn 0:0be0bd219e72 1804 VL53LX_gph_timing_config_t *pdata);
charlesmn 0:0be0bd219e72 1805
charlesmn 0:0be0bd219e72 1806
charlesmn 0:0be0bd219e72 1807
charlesmn 0:0be0bd219e72 1808
charlesmn 0:0be0bd219e72 1809 VL53LX_Error VL53LX_set_gph_timing_config(
charlesmn 0:0be0bd219e72 1810 VL53LX_gph_timing_config_t *pdata);
charlesmn 0:0be0bd219e72 1811
charlesmn 0:0be0bd219e72 1812
charlesmn 0:0be0bd219e72 1813
charlesmn 0:0be0bd219e72 1814
charlesmn 0:0be0bd219e72 1815 VL53LX_Error VL53LX_get_gph_timing_config(
charlesmn 0:0be0bd219e72 1816 VL53LX_gph_timing_config_t *pdata);
charlesmn 0:0be0bd219e72 1817
charlesmn 0:0be0bd219e72 1818
charlesmn 0:0be0bd219e72 1819
charlesmn 0:0be0bd219e72 1820
charlesmn 0:0be0bd219e72 1821 VL53LX_Error VL53LX_i2c_encode_fw_internal(
charlesmn 0:0be0bd219e72 1822 VL53LX_fw_internal_t *pdata,
charlesmn 0:0be0bd219e72 1823 uint16_t buf_size,
charlesmn 0:0be0bd219e72 1824 uint8_t *pbuffer);
charlesmn 0:0be0bd219e72 1825
charlesmn 0:0be0bd219e72 1826
charlesmn 0:0be0bd219e72 1827
charlesmn 0:0be0bd219e72 1828
charlesmn 0:0be0bd219e72 1829 VL53LX_Error VL53LX_i2c_decode_fw_internal(
charlesmn 0:0be0bd219e72 1830 uint16_t buf_size,
charlesmn 0:0be0bd219e72 1831 uint8_t *pbuffer,
charlesmn 0:0be0bd219e72 1832 VL53LX_fw_internal_t *pdata);
charlesmn 0:0be0bd219e72 1833
charlesmn 0:0be0bd219e72 1834
charlesmn 0:0be0bd219e72 1835
charlesmn 0:0be0bd219e72 1836
charlesmn 0:0be0bd219e72 1837 VL53LX_Error VL53LX_set_fw_internal(
charlesmn 0:0be0bd219e72 1838 VL53LX_fw_internal_t *pdata);
charlesmn 0:0be0bd219e72 1839
charlesmn 0:0be0bd219e72 1840
charlesmn 0:0be0bd219e72 1841
charlesmn 0:0be0bd219e72 1842
charlesmn 0:0be0bd219e72 1843 VL53LX_Error VL53LX_get_fw_internal(
charlesmn 0:0be0bd219e72 1844 VL53LX_fw_internal_t *pdata);
charlesmn 0:0be0bd219e72 1845
charlesmn 0:0be0bd219e72 1846
charlesmn 0:0be0bd219e72 1847
charlesmn 0:0be0bd219e72 1848
charlesmn 0:0be0bd219e72 1849 VL53LX_Error VL53LX_i2c_encode_patch_results(
charlesmn 0:0be0bd219e72 1850 VL53LX_patch_results_t *pdata,
charlesmn 0:0be0bd219e72 1851 uint16_t buf_size,
charlesmn 0:0be0bd219e72 1852 uint8_t *pbuffer);
charlesmn 0:0be0bd219e72 1853
charlesmn 0:0be0bd219e72 1854
charlesmn 0:0be0bd219e72 1855
charlesmn 0:0be0bd219e72 1856
charlesmn 0:0be0bd219e72 1857 VL53LX_Error VL53LX_i2c_decode_patch_results(
charlesmn 0:0be0bd219e72 1858 uint16_t buf_size,
charlesmn 0:0be0bd219e72 1859 uint8_t *pbuffer,
charlesmn 0:0be0bd219e72 1860 VL53LX_patch_results_t *pdata);
charlesmn 0:0be0bd219e72 1861
charlesmn 0:0be0bd219e72 1862
charlesmn 0:0be0bd219e72 1863
charlesmn 0:0be0bd219e72 1864
charlesmn 0:0be0bd219e72 1865 VL53LX_Error VL53LX_set_patch_results(
charlesmn 0:0be0bd219e72 1866 VL53LX_patch_results_t *pdata);
charlesmn 0:0be0bd219e72 1867
charlesmn 0:0be0bd219e72 1868
charlesmn 0:0be0bd219e72 1869
charlesmn 0:0be0bd219e72 1870
charlesmn 0:0be0bd219e72 1871 VL53LX_Error VL53LX_get_patch_results(
charlesmn 0:0be0bd219e72 1872 VL53LX_patch_results_t *pdata);
charlesmn 0:0be0bd219e72 1873
charlesmn 0:0be0bd219e72 1874
charlesmn 0:0be0bd219e72 1875
charlesmn 0:0be0bd219e72 1876
charlesmn 0:0be0bd219e72 1877 VL53LX_Error VL53LX_i2c_encode_shadow_system_results(
charlesmn 0:0be0bd219e72 1878 VL53LX_shadow_system_results_t *pdata,
charlesmn 0:0be0bd219e72 1879 uint16_t buf_size,
charlesmn 0:0be0bd219e72 1880 uint8_t *pbuffer);
charlesmn 0:0be0bd219e72 1881
charlesmn 0:0be0bd219e72 1882
charlesmn 0:0be0bd219e72 1883
charlesmn 0:0be0bd219e72 1884
charlesmn 0:0be0bd219e72 1885 VL53LX_Error VL53LX_i2c_decode_shadow_system_results(
charlesmn 0:0be0bd219e72 1886 uint16_t buf_size,
charlesmn 0:0be0bd219e72 1887 uint8_t *pbuffer,
charlesmn 0:0be0bd219e72 1888 VL53LX_shadow_system_results_t *pdata);
charlesmn 0:0be0bd219e72 1889
charlesmn 0:0be0bd219e72 1890
charlesmn 0:0be0bd219e72 1891
charlesmn 0:0be0bd219e72 1892
charlesmn 0:0be0bd219e72 1893 VL53LX_Error VL53LX_set_shadow_system_results(
charlesmn 0:0be0bd219e72 1894 VL53LX_shadow_system_results_t *pdata);
charlesmn 0:0be0bd219e72 1895
charlesmn 0:0be0bd219e72 1896
charlesmn 0:0be0bd219e72 1897
charlesmn 0:0be0bd219e72 1898
charlesmn 0:0be0bd219e72 1899 VL53LX_Error VL53LX_get_shadow_system_results(
charlesmn 0:0be0bd219e72 1900 VL53LX_shadow_system_results_t *pdata);
charlesmn 0:0be0bd219e72 1901
charlesmn 0:0be0bd219e72 1902
charlesmn 0:0be0bd219e72 1903
charlesmn 0:0be0bd219e72 1904
charlesmn 0:0be0bd219e72 1905 VL53LX_Error VL53LX_i2c_encode_shadow_core_results(
charlesmn 0:0be0bd219e72 1906 VL53LX_shadow_core_results_t *pdata,
charlesmn 0:0be0bd219e72 1907 uint16_t buf_size,
charlesmn 0:0be0bd219e72 1908 uint8_t *pbuffer);
charlesmn 0:0be0bd219e72 1909
charlesmn 0:0be0bd219e72 1910
charlesmn 0:0be0bd219e72 1911
charlesmn 0:0be0bd219e72 1912
charlesmn 0:0be0bd219e72 1913 VL53LX_Error VL53LX_i2c_decode_shadow_core_results(
charlesmn 0:0be0bd219e72 1914 uint16_t buf_size,
charlesmn 0:0be0bd219e72 1915 uint8_t *pbuffer,
charlesmn 0:0be0bd219e72 1916 VL53LX_shadow_core_results_t *pdata);
charlesmn 0:0be0bd219e72 1917
charlesmn 0:0be0bd219e72 1918
charlesmn 0:0be0bd219e72 1919
charlesmn 0:0be0bd219e72 1920
charlesmn 0:0be0bd219e72 1921 VL53LX_Error VL53LX_set_shadow_core_results(
charlesmn 0:0be0bd219e72 1922 VL53LX_shadow_core_results_t *pdata);
charlesmn 0:0be0bd219e72 1923
charlesmn 0:0be0bd219e72 1924
charlesmn 0:0be0bd219e72 1925
charlesmn 0:0be0bd219e72 1926
charlesmn 0:0be0bd219e72 1927 VL53LX_Error VL53LX_get_shadow_core_results(
charlesmn 0:0be0bd219e72 1928 VL53LX_shadow_core_results_t *pdata);
charlesmn 0:0be0bd219e72 1929
charlesmn 0:0be0bd219e72 1930
charlesmn 0:0be0bd219e72 1931
charlesmn 0:0be0bd219e72 1932 /* vl53lx_nvm.h */
charlesmn 0:0be0bd219e72 1933
charlesmn 0:0be0bd219e72 1934
charlesmn 0:0be0bd219e72 1935 VL53LX_Error VL53LX_nvm_enable(
charlesmn 0:0be0bd219e72 1936 uint16_t nvm_ctrl_pulse_width,
charlesmn 0:0be0bd219e72 1937 int32_t nvm_power_up_delay_us);
charlesmn 0:0be0bd219e72 1938
charlesmn 0:0be0bd219e72 1939
charlesmn 0:0be0bd219e72 1940
charlesmn 0:0be0bd219e72 1941
charlesmn 0:0be0bd219e72 1942 VL53LX_Error VL53LX_nvm_read(
charlesmn 0:0be0bd219e72 1943 uint8_t start_address,
charlesmn 0:0be0bd219e72 1944 uint8_t count,
charlesmn 0:0be0bd219e72 1945 uint8_t *pdata);
charlesmn 0:0be0bd219e72 1946
charlesmn 0:0be0bd219e72 1947
charlesmn 0:0be0bd219e72 1948
charlesmn 0:0be0bd219e72 1949
charlesmn 0:0be0bd219e72 1950 VL53LX_Error VL53LX_nvm_disable();
charlesmn 0:0be0bd219e72 1951
charlesmn 0:0be0bd219e72 1952
charlesmn 0:0be0bd219e72 1953
charlesmn 0:0be0bd219e72 1954
charlesmn 0:0be0bd219e72 1955 VL53LX_Error VL53LX_nvm_format_decode(
charlesmn 0:0be0bd219e72 1956 uint16_t buf_size,
charlesmn 0:0be0bd219e72 1957 uint8_t *pbuffer,
charlesmn 0:0be0bd219e72 1958 VL53LX_decoded_nvm_data_t *pdata);
charlesmn 0:0be0bd219e72 1959
charlesmn 0:0be0bd219e72 1960
charlesmn 0:0be0bd219e72 1961
charlesmn 0:0be0bd219e72 1962
charlesmn 0:0be0bd219e72 1963 VL53LX_Error VL53LX_nvm_decode_optical_centre(
charlesmn 0:0be0bd219e72 1964 uint16_t buf_size,
charlesmn 0:0be0bd219e72 1965 uint8_t *pbuffer,
charlesmn 0:0be0bd219e72 1966 VL53LX_optical_centre_t *pdata);
charlesmn 0:0be0bd219e72 1967
charlesmn 0:0be0bd219e72 1968
charlesmn 0:0be0bd219e72 1969
charlesmn 0:0be0bd219e72 1970
charlesmn 0:0be0bd219e72 1971 VL53LX_Error VL53LX_nvm_decode_cal_peak_rate_map(
charlesmn 0:0be0bd219e72 1972 uint16_t buf_size,
charlesmn 0:0be0bd219e72 1973 uint8_t *pbuffer,
charlesmn 0:0be0bd219e72 1974 VL53LX_cal_peak_rate_map_t *pdata);
charlesmn 0:0be0bd219e72 1975
charlesmn 0:0be0bd219e72 1976
charlesmn 0:0be0bd219e72 1977
charlesmn 0:0be0bd219e72 1978
charlesmn 0:0be0bd219e72 1979 VL53LX_Error VL53LX_nvm_decode_additional_offset_cal_data(
charlesmn 0:0be0bd219e72 1980 uint16_t buf_size,
charlesmn 0:0be0bd219e72 1981 uint8_t *pbuffer,
charlesmn 0:0be0bd219e72 1982 VL53LX_additional_offset_cal_data_t *pdata);
charlesmn 0:0be0bd219e72 1983
charlesmn 0:0be0bd219e72 1984
charlesmn 0:0be0bd219e72 1985
charlesmn 0:0be0bd219e72 1986
charlesmn 0:0be0bd219e72 1987 VL53LX_Error VL53LX_nvm_decode_fmt_range_results_data(
charlesmn 0:0be0bd219e72 1988 uint16_t buf_size,
charlesmn 0:0be0bd219e72 1989 uint8_t *pbuffer,
charlesmn 0:0be0bd219e72 1990 VL53LX_decoded_nvm_fmt_range_data_t *pdata);
charlesmn 0:0be0bd219e72 1991
charlesmn 0:0be0bd219e72 1992
charlesmn 0:0be0bd219e72 1993
charlesmn 0:0be0bd219e72 1994
charlesmn 0:0be0bd219e72 1995 VL53LX_Error VL53LX_nvm_decode_fmt_info(
charlesmn 0:0be0bd219e72 1996 uint16_t buf_size,
charlesmn 0:0be0bd219e72 1997 uint8_t *pbuffer,
charlesmn 0:0be0bd219e72 1998 VL53LX_decoded_nvm_fmt_info_t *pdata);
charlesmn 0:0be0bd219e72 1999
charlesmn 0:0be0bd219e72 2000
charlesmn 0:0be0bd219e72 2001
charlesmn 0:0be0bd219e72 2002
charlesmn 0:0be0bd219e72 2003 VL53LX_Error VL53LX_nvm_decode_ews_info(
charlesmn 0:0be0bd219e72 2004 uint16_t buf_size,
charlesmn 0:0be0bd219e72 2005 uint8_t *pbuffer,
charlesmn 0:0be0bd219e72 2006 VL53LX_decoded_nvm_ews_info_t *pdata);
charlesmn 0:0be0bd219e72 2007
charlesmn 0:0be0bd219e72 2008
charlesmn 0:0be0bd219e72 2009
charlesmn 0:0be0bd219e72 2010
charlesmn 0:0be0bd219e72 2011 void VL53LX_nvm_format_encode(
charlesmn 0:0be0bd219e72 2012 VL53LX_decoded_nvm_data_t *pnvm_info,
charlesmn 0:0be0bd219e72 2013 uint8_t *pnvm_data);
charlesmn 0:0be0bd219e72 2014
charlesmn 0:0be0bd219e72 2015
charlesmn 0:0be0bd219e72 2016
charlesmn 0:0be0bd219e72 2017
charlesmn 0:0be0bd219e72 2018 VL53LX_Error VL53LX_read_nvm_raw_data(
charlesmn 0:0be0bd219e72 2019 uint8_t start_address,
charlesmn 0:0be0bd219e72 2020 uint8_t count,
charlesmn 0:0be0bd219e72 2021 uint8_t *pnvm_raw_data);
charlesmn 0:0be0bd219e72 2022
charlesmn 0:0be0bd219e72 2023
charlesmn 0:0be0bd219e72 2024
charlesmn 0:0be0bd219e72 2025
charlesmn 0:0be0bd219e72 2026 VL53LX_Error VL53LX_read_nvm(
charlesmn 0:0be0bd219e72 2027 uint8_t nvm_format,
charlesmn 0:0be0bd219e72 2028 VL53LX_decoded_nvm_data_t *pnvm_info);
charlesmn 0:0be0bd219e72 2029
charlesmn 0:0be0bd219e72 2030
charlesmn 0:0be0bd219e72 2031
charlesmn 0:0be0bd219e72 2032
charlesmn 0:0be0bd219e72 2033 VL53LX_Error VL53LX_read_nvm_optical_centre(
charlesmn 0:0be0bd219e72 2034 VL53LX_optical_centre_t *pcentre);
charlesmn 0:0be0bd219e72 2035
charlesmn 0:0be0bd219e72 2036
charlesmn 0:0be0bd219e72 2037
charlesmn 0:0be0bd219e72 2038
charlesmn 0:0be0bd219e72 2039 VL53LX_Error VL53LX_read_nvm_cal_peak_rate_map(
charlesmn 0:0be0bd219e72 2040 VL53LX_cal_peak_rate_map_t *pcal_data);
charlesmn 0:0be0bd219e72 2041
charlesmn 0:0be0bd219e72 2042
charlesmn 0:0be0bd219e72 2043
charlesmn 0:0be0bd219e72 2044
charlesmn 0:0be0bd219e72 2045 VL53LX_Error VL53LX_read_nvm_additional_offset_cal_data(
charlesmn 0:0be0bd219e72 2046 VL53LX_additional_offset_cal_data_t *pcal_data);
charlesmn 0:0be0bd219e72 2047
charlesmn 0:0be0bd219e72 2048
charlesmn 0:0be0bd219e72 2049
charlesmn 0:0be0bd219e72 2050
charlesmn 0:0be0bd219e72 2051 VL53LX_Error VL53LX_read_nvm_fmt_range_results_data(
charlesmn 0:0be0bd219e72 2052 uint16_t range_results_select,
charlesmn 0:0be0bd219e72 2053 VL53LX_decoded_nvm_fmt_range_data_t *prange_data);
charlesmn 0:0be0bd219e72 2054
charlesmn 0:0be0bd219e72 2055
charlesmn 0:0be0bd219e72 2056
charlesmn 0:0be0bd219e72 2057 /* vl53lx_platform_ipp.h */
charlesmn 0:0be0bd219e72 2058
charlesmn 0:0be0bd219e72 2059 VL53LX_Error VL53LX_ipp_hist_process_data(
charlesmn 0:0be0bd219e72 2060 VL53LX_dmax_calibration_data_t *pdmax_cal,
charlesmn 0:0be0bd219e72 2061 VL53LX_hist_gen3_dmax_config_t *pdmax_cfg,
charlesmn 0:0be0bd219e72 2062 VL53LX_hist_post_process_config_t *ppost_cfg,
charlesmn 0:0be0bd219e72 2063 VL53LX_histogram_bin_data_t *pbins,
charlesmn 0:0be0bd219e72 2064 VL53LX_xtalk_histogram_data_t *pxtalk,
charlesmn 0:0be0bd219e72 2065 uint8_t *pArea1,
charlesmn 0:0be0bd219e72 2066 uint8_t *pArea2,
charlesmn 0:0be0bd219e72 2067 uint8_t *phisto_merge_nb,
charlesmn 0:0be0bd219e72 2068 VL53LX_range_results_t *presults);
charlesmn 0:0be0bd219e72 2069
charlesmn 0:0be0bd219e72 2070 VL53LX_Error VL53LX_ipp_hist_ambient_dmax(
charlesmn 0:0be0bd219e72 2071 uint16_t target_reflectance,
charlesmn 0:0be0bd219e72 2072 VL53LX_dmax_calibration_data_t *pdmax_cal,
charlesmn 0:0be0bd219e72 2073 VL53LX_hist_gen3_dmax_config_t *pdmax_cfg,
charlesmn 0:0be0bd219e72 2074 VL53LX_histogram_bin_data_t *pbins,
charlesmn 0:0be0bd219e72 2075 int16_t *pambient_dmax_mm);
charlesmn 0:0be0bd219e72 2076
charlesmn 0:0be0bd219e72 2077 VL53LX_Error VL53LX_ipp_xtalk_calibration_process_data(
charlesmn 0:0be0bd219e72 2078 VL53LX_xtalk_range_results_t *pxtalk_ranges,
charlesmn 0:0be0bd219e72 2079 VL53LX_xtalk_histogram_data_t *pxtalk_shape,
charlesmn 0:0be0bd219e72 2080 VL53LX_xtalk_calibration_results_t *pxtalk_cal);
charlesmn 0:0be0bd219e72 2081
charlesmn 0:0be0bd219e72 2082 VL53LX_Error VL53LX_ipp_hist_xtalk_correction(
charlesmn 0:0be0bd219e72 2083 VL53LX_customer_nvm_managed_t *pcustomer,
charlesmn 0:0be0bd219e72 2084 VL53LX_dynamic_config_t *pdyn_cfg,
charlesmn 0:0be0bd219e72 2085 VL53LX_xtalk_histogram_data_t *pxtalk_shape,
charlesmn 0:0be0bd219e72 2086 VL53LX_histogram_bin_data_t *pip_hist_data,
charlesmn 0:0be0bd219e72 2087 VL53LX_histogram_bin_data_t *pop_hist_data,
charlesmn 0:0be0bd219e72 2088 VL53LX_histogram_bin_data_t *pxtalk_count_data);
charlesmn 0:0be0bd219e72 2089
charlesmn 0:0be0bd219e72 2090 VL53LX_Error VL53LX_ipp_generate_dual_reflectance_xtalk_samples(
charlesmn 0:0be0bd219e72 2091 VL53LX_xtalk_range_results_t *pxtalk_results,
charlesmn 0:0be0bd219e72 2092 uint16_t expected_target_distance_mm,
charlesmn 0:0be0bd219e72 2093 uint8_t higher_reflectance,
charlesmn 0:0be0bd219e72 2094 VL53LX_histogram_bin_data_t *pxtalk_avg_samples);
charlesmn 0:0be0bd219e72 2095
charlesmn 0:0be0bd219e72 2096
charlesmn 0:0be0bd219e72 2097 /* vl53lx_hist_funcs.h */
charlesmn 0:0be0bd219e72 2098
charlesmn 0:0be0bd219e72 2099
charlesmn 0:0be0bd219e72 2100 VL53LX_Error VL53LX_hist_process_data(
charlesmn 0:0be0bd219e72 2101 VL53LX_dmax_calibration_data_t *pdmax_cal,
charlesmn 0:0be0bd219e72 2102 VL53LX_hist_gen3_dmax_config_t *pdmax_cfg,
charlesmn 0:0be0bd219e72 2103 VL53LX_hist_post_process_config_t *ppost_cfg,
charlesmn 0:0be0bd219e72 2104 VL53LX_histogram_bin_data_t *pbins,
charlesmn 0:0be0bd219e72 2105 VL53LX_xtalk_histogram_data_t *pxtalk,
charlesmn 0:0be0bd219e72 2106 uint8_t *pArea1,
charlesmn 0:0be0bd219e72 2107 uint8_t *pArea2,
charlesmn 0:0be0bd219e72 2108 VL53LX_range_results_t *presults,
charlesmn 0:0be0bd219e72 2109 uint8_t *HistMergeNumber);
charlesmn 0:0be0bd219e72 2110
charlesmn 0:0be0bd219e72 2111
charlesmn 0:0be0bd219e72 2112 VL53LX_Error VL53LX_hist_ambient_dmax(
charlesmn 0:0be0bd219e72 2113 uint16_t target_reflectance,
charlesmn 0:0be0bd219e72 2114 VL53LX_dmax_calibration_data_t *pdmax_cal,
charlesmn 0:0be0bd219e72 2115 VL53LX_hist_gen3_dmax_config_t *pdmax_cfg,
charlesmn 0:0be0bd219e72 2116 VL53LX_histogram_bin_data_t *pbins,
charlesmn 0:0be0bd219e72 2117 int16_t *pambient_dmax_mm);
charlesmn 0:0be0bd219e72 2118
charlesmn 0:0be0bd219e72 2119
charlesmn 0:0be0bd219e72 2120 /* vl53lx_core_support.h */
charlesmn 0:0be0bd219e72 2121
charlesmn 0:0be0bd219e72 2122 uint32_t VL53LX_calc_pll_period_us(
charlesmn 0:0be0bd219e72 2123 uint16_t fast_osc_frequency);
charlesmn 0:0be0bd219e72 2124
charlesmn 0:0be0bd219e72 2125 uint32_t VL53LX_duration_maths(
charlesmn 0:0be0bd219e72 2126 uint32_t pll_period_us,
charlesmn 0:0be0bd219e72 2127 uint32_t vcsel_parm_pclks,
charlesmn 0:0be0bd219e72 2128 uint32_t window_vclks,
charlesmn 0:0be0bd219e72 2129 uint32_t periods_elapsed_mclks);
charlesmn 0:0be0bd219e72 2130
charlesmn 0:0be0bd219e72 2131 uint32_t VL53LX_events_per_spad_maths(
charlesmn 0:0be0bd219e72 2132 int32_t VL53LX_p_010,
charlesmn 0:0be0bd219e72 2133 uint16_t num_spads,
charlesmn 0:0be0bd219e72 2134 uint32_t duration);
charlesmn 0:0be0bd219e72 2135
charlesmn 0:0be0bd219e72 2136 uint32_t VL53LX_isqrt(
charlesmn 0:0be0bd219e72 2137 uint32_t num);
charlesmn 0:0be0bd219e72 2138
charlesmn 0:0be0bd219e72 2139 void VL53LX_hist_calc_zero_distance_phase(
charlesmn 0:0be0bd219e72 2140 VL53LX_histogram_bin_data_t *pdata);
charlesmn 0:0be0bd219e72 2141
charlesmn 0:0be0bd219e72 2142 void VL53LX_hist_estimate_ambient_from_thresholded_bins(
charlesmn 0:0be0bd219e72 2143 int32_t ambient_threshold_sigma,
charlesmn 0:0be0bd219e72 2144 VL53LX_histogram_bin_data_t *pdata);
charlesmn 0:0be0bd219e72 2145
charlesmn 0:0be0bd219e72 2146 void VL53LX_hist_remove_ambient_bins(
charlesmn 0:0be0bd219e72 2147 VL53LX_histogram_bin_data_t *pdata);
charlesmn 0:0be0bd219e72 2148
charlesmn 0:0be0bd219e72 2149 uint32_t VL53LX_calc_pll_period_mm(
charlesmn 0:0be0bd219e72 2150 uint16_t fast_osc_frequency);
charlesmn 0:0be0bd219e72 2151
charlesmn 0:0be0bd219e72 2152 uint16_t VL53LX_rate_maths(
charlesmn 0:0be0bd219e72 2153 int32_t VL53LX_p_018,
charlesmn 0:0be0bd219e72 2154 uint32_t time_us);
charlesmn 0:0be0bd219e72 2155
charlesmn 0:0be0bd219e72 2156 uint16_t VL53LX_rate_per_spad_maths(
charlesmn 0:0be0bd219e72 2157 uint32_t frac_bits,
charlesmn 0:0be0bd219e72 2158 uint32_t peak_count_rate,
charlesmn 0:0be0bd219e72 2159 uint16_t num_spads,
charlesmn 0:0be0bd219e72 2160 uint32_t max_output_value);
charlesmn 0:0be0bd219e72 2161
charlesmn 0:0be0bd219e72 2162 int32_t VL53LX_range_maths(
charlesmn 0:0be0bd219e72 2163 uint16_t fast_osc_frequency,
charlesmn 0:0be0bd219e72 2164 uint16_t VL53LX_p_014,
charlesmn 0:0be0bd219e72 2165 uint16_t zero_distance_phase,
charlesmn 0:0be0bd219e72 2166 uint8_t fractional_bits,
charlesmn 0:0be0bd219e72 2167 int32_t gain_factor,
charlesmn 0:0be0bd219e72 2168 int32_t range_offset_mm);
charlesmn 0:0be0bd219e72 2169
charlesmn 0:0be0bd219e72 2170 uint8_t VL53LX_decode_vcsel_period(
charlesmn 0:0be0bd219e72 2171 uint8_t vcsel_period_reg);
charlesmn 0:0be0bd219e72 2172
charlesmn 0:0be0bd219e72 2173 void VL53LX_copy_xtalk_bin_data_to_histogram_data_struct(
charlesmn 0:0be0bd219e72 2174 VL53LX_xtalk_histogram_shape_t *pxtalk,
charlesmn 0:0be0bd219e72 2175 VL53LX_histogram_bin_data_t *phist);
charlesmn 0:0be0bd219e72 2176
charlesmn 0:0be0bd219e72 2177 void VL53LX_init_histogram_bin_data_struct(
charlesmn 0:0be0bd219e72 2178 int32_t bin_value,
charlesmn 0:0be0bd219e72 2179 uint16_t VL53LX_p_021,
charlesmn 0:0be0bd219e72 2180 VL53LX_histogram_bin_data_t *pdata);
charlesmn 0:0be0bd219e72 2181
charlesmn 0:0be0bd219e72 2182 void VL53LX_decode_row_col(
charlesmn 0:0be0bd219e72 2183 uint8_t spad_number,
charlesmn 0:0be0bd219e72 2184 uint8_t *prow,
charlesmn 0:0be0bd219e72 2185 uint8_t *pcol);
charlesmn 0:0be0bd219e72 2186
charlesmn 0:0be0bd219e72 2187 void VL53LX_hist_find_min_max_bin_values(
charlesmn 0:0be0bd219e72 2188 VL53LX_histogram_bin_data_t *pdata);
charlesmn 0:0be0bd219e72 2189
charlesmn 0:0be0bd219e72 2190 void VL53LX_hist_estimate_ambient_from_ambient_bins(
charlesmn 0:0be0bd219e72 2191 VL53LX_histogram_bin_data_t *pdata);
charlesmn 0:0be0bd219e72 2192
charlesmn 0:0be0bd219e72 2193
charlesmn 0:0be0bd219e72 2194
charlesmn 0:0be0bd219e72 2195 /* vl53lx_core.h */
charlesmn 0:0be0bd219e72 2196
charlesmn 0:0be0bd219e72 2197 void VL53LX_init_version();
charlesmn 0:0be0bd219e72 2198
charlesmn 0:0be0bd219e72 2199 void VL53LX_init_ll_driver_state(
charlesmn 0:0be0bd219e72 2200 VL53LX_DeviceState ll_state);
charlesmn 0:0be0bd219e72 2201
charlesmn 0:0be0bd219e72 2202 VL53LX_Error VL53LX_update_ll_driver_rd_state();
charlesmn 0:0be0bd219e72 2203
charlesmn 0:0be0bd219e72 2204 VL53LX_Error VL53LX_check_ll_driver_rd_state();
charlesmn 0:0be0bd219e72 2205
charlesmn 0:0be0bd219e72 2206 VL53LX_Error VL53LX_update_ll_driver_cfg_state();
charlesmn 0:0be0bd219e72 2207
charlesmn 0:0be0bd219e72 2208 void VL53LX_copy_rtn_good_spads_to_buffer(
charlesmn 0:0be0bd219e72 2209 VL53LX_nvm_copy_data_t *pdata,
charlesmn 0:0be0bd219e72 2210 uint8_t *pbuffer);
charlesmn 0:0be0bd219e72 2211
charlesmn 0:0be0bd219e72 2212 void VL53LX_init_system_results(
charlesmn 0:0be0bd219e72 2213 VL53LX_system_results_t *pdata);
charlesmn 0:0be0bd219e72 2214
charlesmn 0:0be0bd219e72 2215 void V53L1_init_zone_results_structure(
charlesmn 0:0be0bd219e72 2216 uint8_t active_zones,
charlesmn 0:0be0bd219e72 2217 VL53LX_zone_results_t *pdata);
charlesmn 0:0be0bd219e72 2218
charlesmn 0:0be0bd219e72 2219 void V53L1_init_zone_dss_configs();
charlesmn 0:0be0bd219e72 2220
charlesmn 0:0be0bd219e72 2221 void VL53LX_init_histogram_config_structure(
charlesmn 0:0be0bd219e72 2222 uint8_t even_bin0,
charlesmn 0:0be0bd219e72 2223 uint8_t even_bin1,
charlesmn 0:0be0bd219e72 2224 uint8_t even_bin2,
charlesmn 0:0be0bd219e72 2225 uint8_t even_bin3,
charlesmn 0:0be0bd219e72 2226 uint8_t even_bin4,
charlesmn 0:0be0bd219e72 2227 uint8_t even_bin5,
charlesmn 0:0be0bd219e72 2228 uint8_t odd_bin0,
charlesmn 0:0be0bd219e72 2229 uint8_t odd_bin1,
charlesmn 0:0be0bd219e72 2230 uint8_t odd_bin2,
charlesmn 0:0be0bd219e72 2231 uint8_t odd_bin3,
charlesmn 0:0be0bd219e72 2232 uint8_t odd_bin4,
charlesmn 0:0be0bd219e72 2233 uint8_t odd_bin5,
charlesmn 0:0be0bd219e72 2234 VL53LX_histogram_config_t *pdata);
charlesmn 0:0be0bd219e72 2235
charlesmn 0:0be0bd219e72 2236 void VL53LX_init_histogram_multizone_config_structure(
charlesmn 0:0be0bd219e72 2237 uint8_t even_bin0,
charlesmn 0:0be0bd219e72 2238 uint8_t even_bin1,
charlesmn 0:0be0bd219e72 2239 uint8_t even_bin2,
charlesmn 0:0be0bd219e72 2240 uint8_t even_bin3,
charlesmn 0:0be0bd219e72 2241 uint8_t even_bin4,
charlesmn 0:0be0bd219e72 2242 uint8_t even_bin5,
charlesmn 0:0be0bd219e72 2243 uint8_t odd_bin0,
charlesmn 0:0be0bd219e72 2244 uint8_t odd_bin1,
charlesmn 0:0be0bd219e72 2245 uint8_t odd_bin2,
charlesmn 0:0be0bd219e72 2246 uint8_t odd_bin3,
charlesmn 0:0be0bd219e72 2247 uint8_t odd_bin4,
charlesmn 0:0be0bd219e72 2248 uint8_t odd_bin5,
charlesmn 0:0be0bd219e72 2249 VL53LX_histogram_config_t *pdata);
charlesmn 0:0be0bd219e72 2250
charlesmn 0:0be0bd219e72 2251 void VL53LX_init_xtalk_bin_data_struct(
charlesmn 0:0be0bd219e72 2252 uint32_t bin_value,
charlesmn 0:0be0bd219e72 2253 uint16_t VL53LX_p_021,
charlesmn 0:0be0bd219e72 2254 VL53LX_xtalk_histogram_shape_t *pdata);
charlesmn 0:0be0bd219e72 2255
charlesmn 0:0be0bd219e72 2256 void VL53LX_i2c_encode_uint16_t(
charlesmn 0:0be0bd219e72 2257 uint16_t ip_value,
charlesmn 0:0be0bd219e72 2258 uint16_t count,
charlesmn 0:0be0bd219e72 2259 uint8_t *pbuffer);
charlesmn 0:0be0bd219e72 2260
charlesmn 0:0be0bd219e72 2261 uint16_t VL53LX_i2c_decode_uint16_t(
charlesmn 0:0be0bd219e72 2262 uint16_t count,
charlesmn 0:0be0bd219e72 2263 uint8_t *pbuffer);
charlesmn 0:0be0bd219e72 2264
charlesmn 0:0be0bd219e72 2265 void VL53LX_i2c_encode_int16_t(
charlesmn 0:0be0bd219e72 2266 int16_t ip_value,
charlesmn 0:0be0bd219e72 2267 uint16_t count,
charlesmn 0:0be0bd219e72 2268 uint8_t *pbuffer);
charlesmn 0:0be0bd219e72 2269
charlesmn 0:0be0bd219e72 2270 int16_t VL53LX_i2c_decode_int16_t(
charlesmn 0:0be0bd219e72 2271 uint16_t count,
charlesmn 0:0be0bd219e72 2272 uint8_t *pbuffer);
charlesmn 0:0be0bd219e72 2273
charlesmn 0:0be0bd219e72 2274 void VL53LX_i2c_encode_uint32_t(
charlesmn 0:0be0bd219e72 2275 uint32_t ip_value,
charlesmn 0:0be0bd219e72 2276 uint16_t count,
charlesmn 0:0be0bd219e72 2277 uint8_t *pbuffer);
charlesmn 0:0be0bd219e72 2278
charlesmn 0:0be0bd219e72 2279 uint32_t VL53LX_i2c_decode_uint32_t(
charlesmn 0:0be0bd219e72 2280 uint16_t count,
charlesmn 0:0be0bd219e72 2281 uint8_t *pbuffer);
charlesmn 0:0be0bd219e72 2282
charlesmn 0:0be0bd219e72 2283 uint32_t VL53LX_i2c_decode_with_mask(
charlesmn 0:0be0bd219e72 2284 uint16_t count,
charlesmn 0:0be0bd219e72 2285 uint8_t *pbuffer,
charlesmn 0:0be0bd219e72 2286 uint32_t bit_mask,
charlesmn 0:0be0bd219e72 2287 uint32_t down_shift,
charlesmn 0:0be0bd219e72 2288 uint32_t offset);
charlesmn 0:0be0bd219e72 2289
charlesmn 0:0be0bd219e72 2290 void VL53LX_i2c_encode_int32_t(
charlesmn 0:0be0bd219e72 2291 int32_t ip_value,
charlesmn 0:0be0bd219e72 2292 uint16_t count,
charlesmn 0:0be0bd219e72 2293 uint8_t *pbuffer);
charlesmn 0:0be0bd219e72 2294
charlesmn 0:0be0bd219e72 2295 int32_t VL53LX_i2c_decode_int32_t(
charlesmn 0:0be0bd219e72 2296 uint16_t count,
charlesmn 0:0be0bd219e72 2297 uint8_t *pbuffer);
charlesmn 0:0be0bd219e72 2298
charlesmn 0:0be0bd219e72 2299 VL53LX_Error VL53LX_start_test(
charlesmn 0:0be0bd219e72 2300 uint8_t test_mode__ctrl);
charlesmn 0:0be0bd219e72 2301
charlesmn 0:0be0bd219e72 2302 VL53LX_Error VL53LX_set_firmware_enable_register(uint8_t value);
charlesmn 0:0be0bd219e72 2303
charlesmn 0:0be0bd219e72 2304 VL53LX_Error VL53LX_enable_firmware();
charlesmn 0:0be0bd219e72 2305
charlesmn 0:0be0bd219e72 2306 VL53LX_Error VL53LX_disable_firmware();
charlesmn 0:0be0bd219e72 2307
charlesmn 0:0be0bd219e72 2308 VL53LX_Error VL53LX_set_powerforce_register(
charlesmn 0:0be0bd219e72 2309 uint8_t value);
charlesmn 0:0be0bd219e72 2310
charlesmn 0:0be0bd219e72 2311 VL53LX_Error VL53LX_enable_powerforce();
charlesmn 0:0be0bd219e72 2312
charlesmn 0:0be0bd219e72 2313 VL53LX_Error VL53LX_disable_powerforce();
charlesmn 0:0be0bd219e72 2314
charlesmn 0:0be0bd219e72 2315 VL53LX_Error VL53LX_clear_interrupt();
charlesmn 0:0be0bd219e72 2316
charlesmn 0:0be0bd219e72 2317 VL53LX_Error VL53LX_force_shadow_stream_count_to_zero();
charlesmn 0:0be0bd219e72 2318
charlesmn 0:0be0bd219e72 2319 uint32_t VL53LX_calc_macro_period_us(
charlesmn 0:0be0bd219e72 2320 uint16_t fast_osc_frequency,
charlesmn 0:0be0bd219e72 2321 uint8_t VL53LX_p_005);
charlesmn 0:0be0bd219e72 2322
charlesmn 0:0be0bd219e72 2323 uint16_t VL53LX_calc_range_ignore_threshold(
charlesmn 0:0be0bd219e72 2324 uint32_t central_rate,
charlesmn 0:0be0bd219e72 2325 int16_t x_gradient,
charlesmn 0:0be0bd219e72 2326 int16_t y_gradient,
charlesmn 0:0be0bd219e72 2327 uint8_t rate_mult);
charlesmn 0:0be0bd219e72 2328
charlesmn 0:0be0bd219e72 2329 uint32_t VL53LX_calc_timeout_mclks(
charlesmn 0:0be0bd219e72 2330 uint32_t timeout_us,
charlesmn 0:0be0bd219e72 2331 uint32_t macro_period_us);
charlesmn 0:0be0bd219e72 2332
charlesmn 0:0be0bd219e72 2333 uint16_t VL53LX_calc_encoded_timeout(
charlesmn 0:0be0bd219e72 2334 uint32_t timeout_us,
charlesmn 0:0be0bd219e72 2335 uint32_t macro_period_us);
charlesmn 0:0be0bd219e72 2336
charlesmn 0:0be0bd219e72 2337 uint32_t VL53LX_calc_timeout_us(
charlesmn 0:0be0bd219e72 2338 uint32_t timeout_mclks,
charlesmn 0:0be0bd219e72 2339 uint32_t macro_period_us);
charlesmn 0:0be0bd219e72 2340
charlesmn 0:0be0bd219e72 2341 uint32_t VL53LX_calc_decoded_timeout_us(
charlesmn 0:0be0bd219e72 2342 uint16_t timeout_encoded,
charlesmn 0:0be0bd219e72 2343 uint32_t macro_period_us);
charlesmn 0:0be0bd219e72 2344
charlesmn 0:0be0bd219e72 2345 uint16_t VL53LX_encode_timeout(
charlesmn 0:0be0bd219e72 2346 uint32_t timeout_mclks);
charlesmn 0:0be0bd219e72 2347
charlesmn 0:0be0bd219e72 2348 uint32_t VL53LX_decode_timeout(
charlesmn 0:0be0bd219e72 2349 uint16_t encoded_timeout);
charlesmn 0:0be0bd219e72 2350
charlesmn 0:0be0bd219e72 2351 VL53LX_Error VL53LX_calc_timeout_register_values(
charlesmn 0:0be0bd219e72 2352 uint32_t phasecal_config_timeout_us,
charlesmn 0:0be0bd219e72 2353 uint32_t mm_config_timeout_us,
charlesmn 0:0be0bd219e72 2354 uint32_t range_config_timeout_us,
charlesmn 0:0be0bd219e72 2355 uint16_t fast_osc_frequency,
charlesmn 0:0be0bd219e72 2356 VL53LX_general_config_t *pgeneral,
charlesmn 0:0be0bd219e72 2357 VL53LX_timing_config_t *ptiming);
charlesmn 0:0be0bd219e72 2358
charlesmn 0:0be0bd219e72 2359 uint8_t VL53LX_encode_vcsel_period(
charlesmn 0:0be0bd219e72 2360 uint8_t VL53LX_p_030);
charlesmn 0:0be0bd219e72 2361
charlesmn 0:0be0bd219e72 2362 uint32_t VL53LX_decode_unsigned_integer(
charlesmn 0:0be0bd219e72 2363 uint8_t *pbuffer,
charlesmn 0:0be0bd219e72 2364 uint8_t no_of_bytes);
charlesmn 0:0be0bd219e72 2365
charlesmn 0:0be0bd219e72 2366 void VL53LX_encode_unsigned_integer(
charlesmn 0:0be0bd219e72 2367 uint32_t ip_value,
charlesmn 0:0be0bd219e72 2368 uint8_t no_of_bytes,
charlesmn 0:0be0bd219e72 2369 uint8_t *pbuffer);
charlesmn 0:0be0bd219e72 2370
charlesmn 0:0be0bd219e72 2371 VL53LX_Error VL53LX_hist_copy_and_scale_ambient_info(
charlesmn 0:0be0bd219e72 2372 VL53LX_zone_hist_info_t *pidata,
charlesmn 0:0be0bd219e72 2373 VL53LX_histogram_bin_data_t *podata);
charlesmn 0:0be0bd219e72 2374
charlesmn 0:0be0bd219e72 2375 void VL53LX_hist_get_bin_sequence_config(
charlesmn 0:0be0bd219e72 2376 VL53LX_histogram_bin_data_t *pdata);
charlesmn 0:0be0bd219e72 2377
charlesmn 0:0be0bd219e72 2378 VL53LX_Error VL53LX_hist_phase_consistency_check(
charlesmn 0:0be0bd219e72 2379 VL53LX_zone_hist_info_t *phist_prev,
charlesmn 0:0be0bd219e72 2380 VL53LX_zone_objects_t *prange_prev,
charlesmn 0:0be0bd219e72 2381 VL53LX_range_results_t *prange_curr);
charlesmn 0:0be0bd219e72 2382
charlesmn 0:0be0bd219e72 2383 VL53LX_Error VL53LX_hist_events_consistency_check(
charlesmn 0:0be0bd219e72 2384 uint8_t event_sigma,
charlesmn 0:0be0bd219e72 2385 uint16_t min_effective_spad_count,
charlesmn 0:0be0bd219e72 2386 VL53LX_zone_hist_info_t *phist_prev,
charlesmn 0:0be0bd219e72 2387 VL53LX_object_data_t *prange_prev,
charlesmn 0:0be0bd219e72 2388 VL53LX_range_data_t *prange_curr,
charlesmn 0:0be0bd219e72 2389 int32_t *pevents_tolerance,
charlesmn 0:0be0bd219e72 2390 int32_t *pevents_delta,
charlesmn 0:0be0bd219e72 2391 VL53LX_DeviceError *prange_status);
charlesmn 0:0be0bd219e72 2392
charlesmn 0:0be0bd219e72 2393 VL53LX_Error VL53LX_hist_merged_pulse_check(
charlesmn 0:0be0bd219e72 2394 int16_t min_max_tolerance_mm,
charlesmn 0:0be0bd219e72 2395 VL53LX_range_data_t *pdata,
charlesmn 0:0be0bd219e72 2396 VL53LX_DeviceError *prange_status);
charlesmn 0:0be0bd219e72 2397
charlesmn 0:0be0bd219e72 2398 VL53LX_Error VL53LX_hist_xmonitor_consistency_check(
charlesmn 0:0be0bd219e72 2399 VL53LX_zone_hist_info_t *phist_prev,
charlesmn 0:0be0bd219e72 2400 VL53LX_zone_objects_t *prange_prev,
charlesmn 0:0be0bd219e72 2401 VL53LX_range_data_t *prange_curr);
charlesmn 0:0be0bd219e72 2402
charlesmn 0:0be0bd219e72 2403 VL53LX_Error VL53LX_hist_wrap_dmax(
charlesmn 0:0be0bd219e72 2404 VL53LX_hist_post_process_config_t *phistpostprocess,
charlesmn 0:0be0bd219e72 2405 VL53LX_histogram_bin_data_t *pcurrent,
charlesmn 0:0be0bd219e72 2406 int16_t *pwrap_dmax_mm);
charlesmn 0:0be0bd219e72 2407
charlesmn 0:0be0bd219e72 2408 void VL53LX_hist_combine_mm1_mm2_offsets(
charlesmn 0:0be0bd219e72 2409 int16_t mm1_offset_mm,
charlesmn 0:0be0bd219e72 2410 int16_t mm2_offset_mm,
charlesmn 0:0be0bd219e72 2411 uint8_t encoded_mm_roi_centre,
charlesmn 0:0be0bd219e72 2412 uint8_t encoded_mm_roi_size,
charlesmn 0:0be0bd219e72 2413 uint8_t encoded_zone_centre,
charlesmn 0:0be0bd219e72 2414 uint8_t encoded_zone_size,
charlesmn 0:0be0bd219e72 2415 VL53LX_additional_offset_cal_data_t *pcal_data,
charlesmn 0:0be0bd219e72 2416 uint8_t *pgood_spads,
charlesmn 0:0be0bd219e72 2417 uint16_t aperture_attenuation,
charlesmn 0:0be0bd219e72 2418 int16_t *prange_offset_mm);
charlesmn 0:0be0bd219e72 2419
charlesmn 0:0be0bd219e72 2420 VL53LX_Error VL53LX_hist_xtalk_extract_calc_window(
charlesmn 0:0be0bd219e72 2421 int16_t target_distance_mm,
charlesmn 0:0be0bd219e72 2422 uint16_t target_width_oversize,
charlesmn 0:0be0bd219e72 2423 VL53LX_histogram_bin_data_t *phist_bins,
charlesmn 0:0be0bd219e72 2424 VL53LX_hist_xtalk_extract_data_t *pxtalk_data);
charlesmn 0:0be0bd219e72 2425
charlesmn 0:0be0bd219e72 2426 VL53LX_Error VL53LX_hist_xtalk_extract_calc_event_sums(
charlesmn 0:0be0bd219e72 2427 VL53LX_histogram_bin_data_t *phist_bins,
charlesmn 0:0be0bd219e72 2428 VL53LX_hist_xtalk_extract_data_t *pxtalk_data);
charlesmn 0:0be0bd219e72 2429
charlesmn 0:0be0bd219e72 2430 VL53LX_Error VL53LX_hist_xtalk_extract_calc_rate_per_spad(
charlesmn 0:0be0bd219e72 2431 VL53LX_hist_xtalk_extract_data_t *pxtalk_data);
charlesmn 0:0be0bd219e72 2432
charlesmn 0:0be0bd219e72 2433 VL53LX_Error VL53LX_hist_xtalk_extract_calc_shape(
charlesmn 0:0be0bd219e72 2434 VL53LX_hist_xtalk_extract_data_t *pxtalk_data,
charlesmn 0:0be0bd219e72 2435 VL53LX_xtalk_histogram_shape_t *pxtalk_shape);
charlesmn 0:0be0bd219e72 2436
charlesmn 0:0be0bd219e72 2437 VL53LX_Error VL53LX_hist_xtalk_shape_model(
charlesmn 0:0be0bd219e72 2438 uint16_t events_per_bin,
charlesmn 0:0be0bd219e72 2439 uint16_t pulse_centre,
charlesmn 0:0be0bd219e72 2440 uint16_t pulse_width,
charlesmn 0:0be0bd219e72 2441 VL53LX_xtalk_histogram_shape_t *pxtalk_shape);
charlesmn 0:0be0bd219e72 2442
charlesmn 0:0be0bd219e72 2443 uint16_t VL53LX_hist_xtalk_shape_model_interp(
charlesmn 0:0be0bd219e72 2444 uint16_t events_per_bin,
charlesmn 0:0be0bd219e72 2445 uint32_t phase_delta);
charlesmn 0:0be0bd219e72 2446
charlesmn 0:0be0bd219e72 2447 void VL53LX_spad_number_to_byte_bit_index(
charlesmn 0:0be0bd219e72 2448 uint8_t spad_number,
charlesmn 0:0be0bd219e72 2449 uint8_t *pbyte_index,
charlesmn 0:0be0bd219e72 2450 uint8_t *pbit_index,
charlesmn 0:0be0bd219e72 2451 uint8_t *pbit_mask);
charlesmn 0:0be0bd219e72 2452
charlesmn 0:0be0bd219e72 2453 void VL53LX_encode_row_col(
charlesmn 0:0be0bd219e72 2454 uint8_t row,
charlesmn 0:0be0bd219e72 2455 uint8_t col,
charlesmn 0:0be0bd219e72 2456 uint8_t *pspad_number);
charlesmn 0:0be0bd219e72 2457
charlesmn 0:0be0bd219e72 2458 void VL53LX_decode_zone_size(
charlesmn 0:0be0bd219e72 2459 uint8_t encoded_xy_size,
charlesmn 0:0be0bd219e72 2460 uint8_t *pwidth,
charlesmn 0:0be0bd219e72 2461 uint8_t *pheight);
charlesmn 0:0be0bd219e72 2462
charlesmn 0:0be0bd219e72 2463 void VL53LX_encode_zone_size(
charlesmn 0:0be0bd219e72 2464 uint8_t width,
charlesmn 0:0be0bd219e72 2465 uint8_t height,
charlesmn 0:0be0bd219e72 2466 uint8_t *pencoded_xy_size);
charlesmn 0:0be0bd219e72 2467
charlesmn 0:0be0bd219e72 2468 void VL53LX_decode_zone_limits(
charlesmn 0:0be0bd219e72 2469 uint8_t encoded_xy_centre,
charlesmn 0:0be0bd219e72 2470 uint8_t encoded_xy_size,
charlesmn 0:0be0bd219e72 2471 int16_t *px_ll,
charlesmn 0:0be0bd219e72 2472 int16_t *py_ll,
charlesmn 0:0be0bd219e72 2473 int16_t *px_ur,
charlesmn 0:0be0bd219e72 2474 int16_t *py_ur);
charlesmn 0:0be0bd219e72 2475
charlesmn 0:0be0bd219e72 2476 uint8_t VL53LX_is_aperture_location(
charlesmn 0:0be0bd219e72 2477 uint8_t row,
charlesmn 0:0be0bd219e72 2478 uint8_t col);
charlesmn 0:0be0bd219e72 2479
charlesmn 0:0be0bd219e72 2480 void VL53LX_calc_max_effective_spads(
charlesmn 0:0be0bd219e72 2481 uint8_t encoded_zone_centre,
charlesmn 0:0be0bd219e72 2482 uint8_t encoded_zone_size,
charlesmn 0:0be0bd219e72 2483 uint8_t *pgood_spads,
charlesmn 0:0be0bd219e72 2484 uint16_t aperture_attenuation,
charlesmn 0:0be0bd219e72 2485 uint16_t *pmax_effective_spads);
charlesmn 0:0be0bd219e72 2486
charlesmn 0:0be0bd219e72 2487 void VL53LX_calc_mm_effective_spads(
charlesmn 0:0be0bd219e72 2488 uint8_t encoded_mm_roi_centre,
charlesmn 0:0be0bd219e72 2489 uint8_t encoded_mm_roi_size,
charlesmn 0:0be0bd219e72 2490 uint8_t encoded_zone_centre,
charlesmn 0:0be0bd219e72 2491 uint8_t encoded_zone_size,
charlesmn 0:0be0bd219e72 2492 uint8_t *pgood_spads,
charlesmn 0:0be0bd219e72 2493 uint16_t aperture_attenuation,
charlesmn 0:0be0bd219e72 2494 uint16_t *pmm_inner_effective_spads,
charlesmn 0:0be0bd219e72 2495 uint16_t *pmm_outer_effective_spads);
charlesmn 0:0be0bd219e72 2496
charlesmn 0:0be0bd219e72 2497 void VL53LX_hist_copy_results_to_sys_and_core(
charlesmn 0:0be0bd219e72 2498 VL53LX_histogram_bin_data_t *pbins,
charlesmn 0:0be0bd219e72 2499 VL53LX_range_results_t *phist,
charlesmn 0:0be0bd219e72 2500 VL53LX_system_results_t *psys,
charlesmn 0:0be0bd219e72 2501 VL53LX_core_results_t *pcore);
charlesmn 0:0be0bd219e72 2502
charlesmn 0:0be0bd219e72 2503 VL53LX_Error VL53LX_sum_histogram_data(
charlesmn 0:0be0bd219e72 2504 VL53LX_histogram_bin_data_t *phist_input,
charlesmn 0:0be0bd219e72 2505 VL53LX_histogram_bin_data_t *phist_output);
charlesmn 0:0be0bd219e72 2506
charlesmn 0:0be0bd219e72 2507 VL53LX_Error VL53LX_avg_histogram_data(
charlesmn 0:0be0bd219e72 2508 uint8_t no_of_samples,
charlesmn 0:0be0bd219e72 2509 VL53LX_histogram_bin_data_t *phist_sum,
charlesmn 0:0be0bd219e72 2510 VL53LX_histogram_bin_data_t *phist_avg);
charlesmn 0:0be0bd219e72 2511
charlesmn 0:0be0bd219e72 2512 VL53LX_Error VL53LX_save_cfg_data();
charlesmn 0:0be0bd219e72 2513
charlesmn 0:0be0bd219e72 2514 VL53LX_Error VL53LX_dynamic_zone_update(
charlesmn 0:0be0bd219e72 2515 VL53LX_range_results_t *presults);
charlesmn 0:0be0bd219e72 2516
charlesmn 0:0be0bd219e72 2517 VL53LX_Error VL53LX_update_internal_stream_counters(
charlesmn 0:0be0bd219e72 2518 uint8_t external_stream_count,
charlesmn 0:0be0bd219e72 2519 uint8_t *pinternal_stream_count,
charlesmn 0:0be0bd219e72 2520 uint8_t *pinternal_stream_count_val
charlesmn 0:0be0bd219e72 2521 );
charlesmn 0:0be0bd219e72 2522
charlesmn 0:0be0bd219e72 2523 VL53LX_Error VL53LX_multizone_hist_bins_update();
charlesmn 0:0be0bd219e72 2524
charlesmn 0:0be0bd219e72 2525 VL53LX_Error VL53LX_set_histogram_multizone_initial_bin_config(
charlesmn 0:0be0bd219e72 2526 VL53LX_zone_config_t *pzone_cfg,
charlesmn 0:0be0bd219e72 2527 VL53LX_histogram_config_t *phist_cfg,
charlesmn 0:0be0bd219e72 2528 VL53LX_histogram_config_t *pmulti_hist
charlesmn 0:0be0bd219e72 2529 );
charlesmn 0:0be0bd219e72 2530
charlesmn 0:0be0bd219e72 2531 uint8_t VL53LX_encode_GPIO_interrupt_config(
charlesmn 0:0be0bd219e72 2532 VL53LX_GPIO_interrupt_config_t *pintconf);
charlesmn 0:0be0bd219e72 2533
charlesmn 0:0be0bd219e72 2534 VL53LX_GPIO_interrupt_config_t VL53LX_decode_GPIO_interrupt_config(
charlesmn 0:0be0bd219e72 2535 uint8_t system__interrupt_config);
charlesmn 0:0be0bd219e72 2536
charlesmn 0:0be0bd219e72 2537 VL53LX_Error VL53LX_set_GPIO_distance_threshold(
charlesmn 0:0be0bd219e72 2538 uint16_t threshold_high,
charlesmn 0:0be0bd219e72 2539 uint16_t threshold_low);
charlesmn 0:0be0bd219e72 2540
charlesmn 0:0be0bd219e72 2541 VL53LX_Error VL53LX_set_GPIO_rate_threshold(
charlesmn 0:0be0bd219e72 2542 uint16_t threshold_high,
charlesmn 0:0be0bd219e72 2543 uint16_t threshold_low);
charlesmn 0:0be0bd219e72 2544
charlesmn 0:0be0bd219e72 2545 VL53LX_Error VL53LX_set_GPIO_thresholds_from_struct(
charlesmn 0:0be0bd219e72 2546 VL53LX_GPIO_interrupt_config_t *pintconf);
charlesmn 0:0be0bd219e72 2547
charlesmn 0:0be0bd219e72 2548 VL53LX_Error VL53LX_set_ref_spad_char_config(
charlesmn 0:0be0bd219e72 2549 uint8_t vcsel_period_a,
charlesmn 0:0be0bd219e72 2550 uint32_t phasecal_timeout_us,
charlesmn 0:0be0bd219e72 2551 uint16_t total_rate_target_mcps,
charlesmn 0:0be0bd219e72 2552 uint16_t max_count_rate_rtn_limit_mcps,
charlesmn 0:0be0bd219e72 2553 uint16_t min_count_rate_rtn_limit_mcps,
charlesmn 0:0be0bd219e72 2554 uint16_t fast_osc_frequency);
charlesmn 0:0be0bd219e72 2555
charlesmn 0:0be0bd219e72 2556 VL53LX_Error VL53LX_set_ssc_config(
charlesmn 0:0be0bd219e72 2557 VL53LX_ssc_config_t *pssc_cfg,
charlesmn 0:0be0bd219e72 2558 uint16_t fast_osc_frequency);
charlesmn 0:0be0bd219e72 2559
charlesmn 0:0be0bd219e72 2560 VL53LX_Error VL53LX_get_spad_rate_data(
charlesmn 0:0be0bd219e72 2561 VL53LX_spad_rate_data_t *pspad_rates);
charlesmn 0:0be0bd219e72 2562
charlesmn 0:0be0bd219e72 2563 uint32_t VL53LX_calc_crosstalk_plane_offset_with_margin(
charlesmn 0:0be0bd219e72 2564 uint32_t plane_offset_kcps,
charlesmn 0:0be0bd219e72 2565 int16_t margin_offset_kcps);
charlesmn 0:0be0bd219e72 2566
charlesmn 0:0be0bd219e72 2567 VL53LX_Error VL53LX_low_power_auto_data_init();
charlesmn 0:0be0bd219e72 2568
charlesmn 0:0be0bd219e72 2569 VL53LX_Error VL53LX_low_power_auto_data_stop_range();
charlesmn 0:0be0bd219e72 2570
charlesmn 0:0be0bd219e72 2571 VL53LX_Error VL53LX_dynamic_xtalk_correction_calc_required_samples();
charlesmn 0:0be0bd219e72 2572
charlesmn 0:0be0bd219e72 2573 VL53LX_Error VL53LX_dynamic_xtalk_correction_calc_new_xtalk(
charlesmn 0:0be0bd219e72 2574 uint32_t xtalk_offset_out,
charlesmn 0:0be0bd219e72 2575 VL53LX_smudge_corrector_config_t *pconfig,
charlesmn 0:0be0bd219e72 2576 VL53LX_smudge_corrector_data_t *pout,
charlesmn 0:0be0bd219e72 2577 uint8_t add_smudge,
charlesmn 0:0be0bd219e72 2578 uint8_t soft_update
charlesmn 0:0be0bd219e72 2579 );
charlesmn 0:0be0bd219e72 2580
charlesmn 0:0be0bd219e72 2581 VL53LX_Error VL53LX_dynamic_xtalk_correction_corrector();
charlesmn 0:0be0bd219e72 2582
charlesmn 0:0be0bd219e72 2583 VL53LX_Error VL53LX_dynamic_xtalk_correction_data_init();
charlesmn 0:0be0bd219e72 2584
charlesmn 0:0be0bd219e72 2585 VL53LX_Error VL53LX_dynamic_xtalk_correction_output_init(
charlesmn 0:0be0bd219e72 2586 VL53LX_LLDriverResults_t *pres
charlesmn 0:0be0bd219e72 2587 );
charlesmn 0:0be0bd219e72 2588
charlesmn 0:0be0bd219e72 2589 VL53LX_Error VL53LX_xtalk_cal_data_init();
charlesmn 0:0be0bd219e72 2590
charlesmn 0:0be0bd219e72 2591 VL53LX_Error VL53LX_config_low_power_auto_mode(
charlesmn 0:0be0bd219e72 2592 VL53LX_general_config_t *pgeneral,
charlesmn 0:0be0bd219e72 2593 VL53LX_dynamic_config_t *pdynamic,
charlesmn 0:0be0bd219e72 2594 VL53LX_low_power_auto_data_t *plpadata
charlesmn 0:0be0bd219e72 2595 );
charlesmn 0:0be0bd219e72 2596
charlesmn 0:0be0bd219e72 2597 VL53LX_Error VL53LX_low_power_auto_setup_manual_calibration();
charlesmn 0:0be0bd219e72 2598
charlesmn 0:0be0bd219e72 2599 VL53LX_Error VL53LX_low_power_auto_update_DSS();
charlesmn 0:0be0bd219e72 2600
charlesmn 0:0be0bd219e72 2601 VL53LX_Error VL53LX_compute_histo_merge_nb(uint8_t *histo_merge_nb);
charlesmn 0:0be0bd219e72 2602
charlesmn 0:0be0bd219e72 2603
charlesmn 0:0be0bd219e72 2604
charlesmn 0:0be0bd219e72 2605 /* vl53lx_wait.h */
charlesmn 0:0be0bd219e72 2606
charlesmn 0:0be0bd219e72 2607 VL53LX_Error VL53LX_wait_for_boot_completion();
charlesmn 0:0be0bd219e72 2608
charlesmn 0:0be0bd219e72 2609 VL53LX_Error VL53LX_wait_for_firmware_ready();
charlesmn 0:0be0bd219e72 2610
charlesmn 0:0be0bd219e72 2611 VL53LX_Error VL53LX_wait_for_range_completion();
charlesmn 0:0be0bd219e72 2612
charlesmn 0:0be0bd219e72 2613 VL53LX_Error VL53LX_wait_for_test_completion();
charlesmn 0:0be0bd219e72 2614
charlesmn 0:0be0bd219e72 2615 VL53LX_Error VL53LX_is_boot_complete(uint8_t *pready);
charlesmn 0:0be0bd219e72 2616
charlesmn 0:0be0bd219e72 2617 VL53LX_Error VL53LX_is_firmware_ready(uint8_t *pready);
charlesmn 0:0be0bd219e72 2618
charlesmn 0:0be0bd219e72 2619 VL53LX_Error VL53LX_is_new_data_ready(uint8_t *pready);
charlesmn 0:0be0bd219e72 2620
charlesmn 0:0be0bd219e72 2621 VL53LX_Error VL53LX_poll_for_boot_completion(uint32_t timeout_ms);
charlesmn 0:0be0bd219e72 2622
charlesmn 0:0be0bd219e72 2623 VL53LX_Error VL53LX_poll_for_firmware_ready(uint32_t timeout_ms);
charlesmn 0:0be0bd219e72 2624
charlesmn 0:0be0bd219e72 2625 VL53LX_Error VL53LX_poll_for_range_completion(uint32_t timeout_ms);
charlesmn 0:0be0bd219e72 2626
charlesmn 0:0be0bd219e72 2627
charlesmn 0:0be0bd219e72 2628 /* vl53lx_zone_presets.h */
charlesmn 0:0be0bd219e72 2629
charlesmn 0:0be0bd219e72 2630 VL53LX_Error VL53LX_init_zone_config_structure(
charlesmn 0:0be0bd219e72 2631 uint8_t x_off,
charlesmn 0:0be0bd219e72 2632 uint8_t x_inc,
charlesmn 0:0be0bd219e72 2633 uint8_t x_zones,
charlesmn 0:0be0bd219e72 2634 uint8_t y_off,
charlesmn 0:0be0bd219e72 2635 uint8_t y_inc,
charlesmn 0:0be0bd219e72 2636 uint8_t y_zones,
charlesmn 0:0be0bd219e72 2637 uint8_t width,
charlesmn 0:0be0bd219e72 2638 uint8_t height,
charlesmn 0:0be0bd219e72 2639 VL53LX_zone_config_t *pdata);
charlesmn 0:0be0bd219e72 2640
charlesmn 0:0be0bd219e72 2641
charlesmn 0:0be0bd219e72 2642 VL53LX_Error VL53LX_zone_preset_xtalk_planar(
charlesmn 0:0be0bd219e72 2643 VL53LX_general_config_t *pgeneral,
charlesmn 0:0be0bd219e72 2644 VL53LX_zone_config_t *pzone_cfg);
charlesmn 0:0be0bd219e72 2645
charlesmn 0:0be0bd219e72 2646
charlesmn 0:0be0bd219e72 2647
charlesmn 0:0be0bd219e72 2648 VL53LX_Error VL53LX_init_zone_config_histogram_bins(
charlesmn 0:0be0bd219e72 2649 VL53LX_zone_config_t *pdata);
charlesmn 0:0be0bd219e72 2650
charlesmn 0:0be0bd219e72 2651
charlesmn 0:0be0bd219e72 2652 /* vl53lx_api_preset_modes.h */
charlesmn 0:0be0bd219e72 2653
charlesmn 0:0be0bd219e72 2654 VL53LX_Error VL53LX_init_refspadchar_config_struct(
charlesmn 0:0be0bd219e72 2655 VL53LX_refspadchar_config_t *pdata);
charlesmn 0:0be0bd219e72 2656
charlesmn 0:0be0bd219e72 2657 VL53LX_Error VL53LX_init_ssc_config_struct(
charlesmn 0:0be0bd219e72 2658 VL53LX_ssc_config_t *pdata);
charlesmn 0:0be0bd219e72 2659
charlesmn 0:0be0bd219e72 2660 VL53LX_Error VL53LX_init_xtalk_config_struct(
charlesmn 0:0be0bd219e72 2661 VL53LX_customer_nvm_managed_t *pnvm,
charlesmn 0:0be0bd219e72 2662 VL53LX_xtalk_config_t *pdata);
charlesmn 0:0be0bd219e72 2663
charlesmn 0:0be0bd219e72 2664 VL53LX_Error VL53LX_init_xtalk_extract_config_struct(
charlesmn 0:0be0bd219e72 2665 VL53LX_xtalkextract_config_t *pdata);
charlesmn 0:0be0bd219e72 2666
charlesmn 0:0be0bd219e72 2667 VL53LX_Error VL53LX_init_offset_cal_config_struct(
charlesmn 0:0be0bd219e72 2668 VL53LX_offsetcal_config_t *pdata);
charlesmn 0:0be0bd219e72 2669
charlesmn 0:0be0bd219e72 2670 VL53LX_Error VL53LX_init_zone_cal_config_struct(
charlesmn 0:0be0bd219e72 2671 VL53LX_zonecal_config_t *pdata);
charlesmn 0:0be0bd219e72 2672
charlesmn 0:0be0bd219e72 2673 VL53LX_Error VL53LX_init_hist_post_process_config_struct(
charlesmn 0:0be0bd219e72 2674 uint8_t xtalk_compensation_enable,
charlesmn 0:0be0bd219e72 2675 VL53LX_hist_post_process_config_t *pdata);
charlesmn 0:0be0bd219e72 2676
charlesmn 0:0be0bd219e72 2677 VL53LX_Error VL53LX_init_dmax_calibration_data_struct(
charlesmn 0:0be0bd219e72 2678 VL53LX_dmax_calibration_data_t *pdata);
charlesmn 0:0be0bd219e72 2679
charlesmn 0:0be0bd219e72 2680 VL53LX_Error VL53LX_init_tuning_parm_storage_struct(
charlesmn 0:0be0bd219e72 2681 VL53LX_tuning_parm_storage_t *pdata);
charlesmn 0:0be0bd219e72 2682
charlesmn 0:0be0bd219e72 2683 VL53LX_Error VL53LX_init_hist_gen3_dmax_config_struct(
charlesmn 0:0be0bd219e72 2684 VL53LX_hist_gen3_dmax_config_t *pdata);
charlesmn 0:0be0bd219e72 2685
charlesmn 0:0be0bd219e72 2686 VL53LX_Error VL53LX_preset_mode_standard_ranging(
charlesmn 0:0be0bd219e72 2687 VL53LX_static_config_t *pstatic,
charlesmn 0:0be0bd219e72 2688 VL53LX_histogram_config_t *phistogram,
charlesmn 0:0be0bd219e72 2689 VL53LX_general_config_t *pgeneral,
charlesmn 0:0be0bd219e72 2690 VL53LX_timing_config_t *ptiming,
charlesmn 0:0be0bd219e72 2691 VL53LX_dynamic_config_t *pdynamic,
charlesmn 0:0be0bd219e72 2692 VL53LX_system_control_t *psystem,
charlesmn 0:0be0bd219e72 2693 VL53LX_tuning_parm_storage_t *ptuning_parms,
charlesmn 0:0be0bd219e72 2694 VL53LX_zone_config_t *pzone_cfg);
charlesmn 0:0be0bd219e72 2695
charlesmn 0:0be0bd219e72 2696 VL53LX_Error VL53LX_preset_mode_standard_ranging_short_range(
charlesmn 0:0be0bd219e72 2697 VL53LX_static_config_t *pstatic,
charlesmn 0:0be0bd219e72 2698 VL53LX_histogram_config_t *phistogram,
charlesmn 0:0be0bd219e72 2699 VL53LX_general_config_t *pgeneral,
charlesmn 0:0be0bd219e72 2700 VL53LX_timing_config_t *ptiming,
charlesmn 0:0be0bd219e72 2701 VL53LX_dynamic_config_t *pdynamic,
charlesmn 0:0be0bd219e72 2702 VL53LX_system_control_t *psystem,
charlesmn 0:0be0bd219e72 2703 VL53LX_tuning_parm_storage_t *ptuning_parms,
charlesmn 0:0be0bd219e72 2704 VL53LX_zone_config_t *pzone_cfg);
charlesmn 0:0be0bd219e72 2705
charlesmn 0:0be0bd219e72 2706 VL53LX_Error VL53LX_preset_mode_standard_ranging_long_range(
charlesmn 0:0be0bd219e72 2707 VL53LX_static_config_t *pstatic,
charlesmn 0:0be0bd219e72 2708 VL53LX_histogram_config_t *phistogram,
charlesmn 0:0be0bd219e72 2709 VL53LX_general_config_t *pgeneral,
charlesmn 0:0be0bd219e72 2710 VL53LX_timing_config_t *ptiming,
charlesmn 0:0be0bd219e72 2711 VL53LX_dynamic_config_t *pdynamic,
charlesmn 0:0be0bd219e72 2712 VL53LX_system_control_t *psystem,
charlesmn 0:0be0bd219e72 2713 VL53LX_tuning_parm_storage_t *ptuning_parms,
charlesmn 0:0be0bd219e72 2714 VL53LX_zone_config_t *pzone_cfg);
charlesmn 0:0be0bd219e72 2715
charlesmn 0:0be0bd219e72 2716 VL53LX_Error VL53LX_preset_mode_standard_ranging_mm1_cal(
charlesmn 0:0be0bd219e72 2717 VL53LX_static_config_t *pstatic,
charlesmn 0:0be0bd219e72 2718 VL53LX_histogram_config_t *phistogram,
charlesmn 0:0be0bd219e72 2719 VL53LX_general_config_t *pgeneral,
charlesmn 0:0be0bd219e72 2720 VL53LX_timing_config_t *ptiming,
charlesmn 0:0be0bd219e72 2721 VL53LX_dynamic_config_t *pdynamic,
charlesmn 0:0be0bd219e72 2722 VL53LX_system_control_t *psystem,
charlesmn 0:0be0bd219e72 2723 VL53LX_tuning_parm_storage_t *ptuning_parms,
charlesmn 0:0be0bd219e72 2724 VL53LX_zone_config_t *pzone_cfg);
charlesmn 0:0be0bd219e72 2725
charlesmn 0:0be0bd219e72 2726 VL53LX_Error VL53LX_preset_mode_standard_ranging_mm2_cal(
charlesmn 0:0be0bd219e72 2727 VL53LX_static_config_t *pstatic,
charlesmn 0:0be0bd219e72 2728 VL53LX_histogram_config_t *phistogram,
charlesmn 0:0be0bd219e72 2729 VL53LX_general_config_t *pgeneral,
charlesmn 0:0be0bd219e72 2730 VL53LX_timing_config_t *ptiming,
charlesmn 0:0be0bd219e72 2731 VL53LX_dynamic_config_t *pdynamic,
charlesmn 0:0be0bd219e72 2732 VL53LX_system_control_t *psystem,
charlesmn 0:0be0bd219e72 2733 VL53LX_tuning_parm_storage_t *ptuning_parms,
charlesmn 0:0be0bd219e72 2734 VL53LX_zone_config_t *pzone_cfg);
charlesmn 0:0be0bd219e72 2735
charlesmn 0:0be0bd219e72 2736 VL53LX_Error VL53LX_preset_mode_timed_ranging(
charlesmn 0:0be0bd219e72 2737
charlesmn 0:0be0bd219e72 2738 VL53LX_static_config_t *pstatic,
charlesmn 0:0be0bd219e72 2739 VL53LX_histogram_config_t *phistogram,
charlesmn 0:0be0bd219e72 2740 VL53LX_general_config_t *pgeneral,
charlesmn 0:0be0bd219e72 2741 VL53LX_timing_config_t *ptiming,
charlesmn 0:0be0bd219e72 2742 VL53LX_dynamic_config_t *pdynamic,
charlesmn 0:0be0bd219e72 2743 VL53LX_system_control_t *psystem,
charlesmn 0:0be0bd219e72 2744 VL53LX_tuning_parm_storage_t *ptuning_parms,
charlesmn 0:0be0bd219e72 2745 VL53LX_zone_config_t *pzone_cfg);
charlesmn 0:0be0bd219e72 2746
charlesmn 0:0be0bd219e72 2747 VL53LX_Error VL53LX_preset_mode_timed_ranging_short_range(
charlesmn 0:0be0bd219e72 2748
charlesmn 0:0be0bd219e72 2749 VL53LX_static_config_t *pstatic,
charlesmn 0:0be0bd219e72 2750 VL53LX_histogram_config_t *phistogram,
charlesmn 0:0be0bd219e72 2751 VL53LX_general_config_t *pgeneral,
charlesmn 0:0be0bd219e72 2752 VL53LX_timing_config_t *ptiming,
charlesmn 0:0be0bd219e72 2753 VL53LX_dynamic_config_t *pdynamic,
charlesmn 0:0be0bd219e72 2754 VL53LX_system_control_t *psystem,
charlesmn 0:0be0bd219e72 2755 VL53LX_tuning_parm_storage_t *ptuning_parms,
charlesmn 0:0be0bd219e72 2756 VL53LX_zone_config_t *pzone_cfg);
charlesmn 0:0be0bd219e72 2757
charlesmn 0:0be0bd219e72 2758 VL53LX_Error VL53LX_preset_mode_timed_ranging_long_range(
charlesmn 0:0be0bd219e72 2759
charlesmn 0:0be0bd219e72 2760 VL53LX_static_config_t *pstatic,
charlesmn 0:0be0bd219e72 2761 VL53LX_histogram_config_t *phistogram,
charlesmn 0:0be0bd219e72 2762 VL53LX_general_config_t *pgeneral,
charlesmn 0:0be0bd219e72 2763 VL53LX_timing_config_t *ptiming,
charlesmn 0:0be0bd219e72 2764 VL53LX_dynamic_config_t *pdynamic,
charlesmn 0:0be0bd219e72 2765 VL53LX_system_control_t *psystem,
charlesmn 0:0be0bd219e72 2766 VL53LX_tuning_parm_storage_t *ptuning_parms,
charlesmn 0:0be0bd219e72 2767 VL53LX_zone_config_t *pzone_cfg);
charlesmn 0:0be0bd219e72 2768
charlesmn 0:0be0bd219e72 2769 VL53LX_Error VL53LX_preset_mode_low_power_auto_ranging(
charlesmn 0:0be0bd219e72 2770
charlesmn 0:0be0bd219e72 2771 VL53LX_static_config_t *pstatic,
charlesmn 0:0be0bd219e72 2772 VL53LX_histogram_config_t *phistogram,
charlesmn 0:0be0bd219e72 2773 VL53LX_general_config_t *pgeneral,
charlesmn 0:0be0bd219e72 2774 VL53LX_timing_config_t *ptiming,
charlesmn 0:0be0bd219e72 2775 VL53LX_dynamic_config_t *pdynamic,
charlesmn 0:0be0bd219e72 2776 VL53LX_system_control_t *psystem,
charlesmn 0:0be0bd219e72 2777 VL53LX_tuning_parm_storage_t *ptuning_parms,
charlesmn 0:0be0bd219e72 2778 VL53LX_zone_config_t *pzone_cfg,
charlesmn 0:0be0bd219e72 2779 VL53LX_low_power_auto_data_t *plpadata);
charlesmn 0:0be0bd219e72 2780
charlesmn 0:0be0bd219e72 2781 VL53LX_Error VL53LX_preset_mode_low_power_auto_short_ranging(
charlesmn 0:0be0bd219e72 2782
charlesmn 0:0be0bd219e72 2783 VL53LX_static_config_t *pstatic,
charlesmn 0:0be0bd219e72 2784 VL53LX_histogram_config_t *phistogram,
charlesmn 0:0be0bd219e72 2785 VL53LX_general_config_t *pgeneral,
charlesmn 0:0be0bd219e72 2786 VL53LX_timing_config_t *ptiming,
charlesmn 0:0be0bd219e72 2787 VL53LX_dynamic_config_t *pdynamic,
charlesmn 0:0be0bd219e72 2788 VL53LX_system_control_t *psystem,
charlesmn 0:0be0bd219e72 2789 VL53LX_tuning_parm_storage_t *ptuning_parms,
charlesmn 0:0be0bd219e72 2790 VL53LX_zone_config_t *pzone_cfg,
charlesmn 0:0be0bd219e72 2791 VL53LX_low_power_auto_data_t *plpadata);
charlesmn 0:0be0bd219e72 2792
charlesmn 0:0be0bd219e72 2793 VL53LX_Error VL53LX_preset_mode_low_power_auto_long_ranging(
charlesmn 0:0be0bd219e72 2794
charlesmn 0:0be0bd219e72 2795 VL53LX_static_config_t *pstatic,
charlesmn 0:0be0bd219e72 2796 VL53LX_histogram_config_t *phistogram,
charlesmn 0:0be0bd219e72 2797 VL53LX_general_config_t *pgeneral,
charlesmn 0:0be0bd219e72 2798 VL53LX_timing_config_t *ptiming,
charlesmn 0:0be0bd219e72 2799 VL53LX_dynamic_config_t *pdynamic,
charlesmn 0:0be0bd219e72 2800 VL53LX_system_control_t *psystem,
charlesmn 0:0be0bd219e72 2801 VL53LX_tuning_parm_storage_t *ptuning_parms,
charlesmn 0:0be0bd219e72 2802 VL53LX_zone_config_t *pzone_cfg,
charlesmn 0:0be0bd219e72 2803 VL53LX_low_power_auto_data_t *plpadata);
charlesmn 0:0be0bd219e72 2804
charlesmn 0:0be0bd219e72 2805 VL53LX_Error VL53LX_preset_mode_histogram_ranging(
charlesmn 0:0be0bd219e72 2806 VL53LX_hist_post_process_config_t *phistpostprocess,
charlesmn 0:0be0bd219e72 2807 VL53LX_static_config_t *pstatic,
charlesmn 0:0be0bd219e72 2808 VL53LX_histogram_config_t *phistogram,
charlesmn 0:0be0bd219e72 2809 VL53LX_general_config_t *pgeneral,
charlesmn 0:0be0bd219e72 2810 VL53LX_timing_config_t *ptiming,
charlesmn 0:0be0bd219e72 2811 VL53LX_dynamic_config_t *pdynamic,
charlesmn 0:0be0bd219e72 2812 VL53LX_system_control_t *psystem,
charlesmn 0:0be0bd219e72 2813 VL53LX_tuning_parm_storage_t *ptuning_parms,
charlesmn 0:0be0bd219e72 2814 VL53LX_zone_config_t *pzone_cfg);
charlesmn 0:0be0bd219e72 2815
charlesmn 0:0be0bd219e72 2816 VL53LX_Error VL53LX_preset_mode_histogram_ranging_with_mm1(
charlesmn 0:0be0bd219e72 2817 VL53LX_hist_post_process_config_t *phistpostprocess,
charlesmn 0:0be0bd219e72 2818 VL53LX_static_config_t *pstatic,
charlesmn 0:0be0bd219e72 2819 VL53LX_histogram_config_t *phistogram,
charlesmn 0:0be0bd219e72 2820 VL53LX_general_config_t *pgeneral,
charlesmn 0:0be0bd219e72 2821 VL53LX_timing_config_t *ptiming,
charlesmn 0:0be0bd219e72 2822 VL53LX_dynamic_config_t *pdynamic,
charlesmn 0:0be0bd219e72 2823 VL53LX_system_control_t *psystem,
charlesmn 0:0be0bd219e72 2824 VL53LX_tuning_parm_storage_t *ptuning_parms,
charlesmn 0:0be0bd219e72 2825 VL53LX_zone_config_t *pzone_cfg);
charlesmn 0:0be0bd219e72 2826
charlesmn 0:0be0bd219e72 2827 VL53LX_Error VL53LX_preset_mode_histogram_ranging_with_mm2(
charlesmn 0:0be0bd219e72 2828 VL53LX_hist_post_process_config_t *phistpostprocess,
charlesmn 0:0be0bd219e72 2829 VL53LX_static_config_t *pstatic,
charlesmn 0:0be0bd219e72 2830 VL53LX_histogram_config_t *phistogram,
charlesmn 0:0be0bd219e72 2831 VL53LX_general_config_t *pgeneral,
charlesmn 0:0be0bd219e72 2832 VL53LX_timing_config_t *ptiming,
charlesmn 0:0be0bd219e72 2833 VL53LX_dynamic_config_t *pdynamic,
charlesmn 0:0be0bd219e72 2834 VL53LX_system_control_t *psystem,
charlesmn 0:0be0bd219e72 2835 VL53LX_tuning_parm_storage_t *ptuning_parms,
charlesmn 0:0be0bd219e72 2836 VL53LX_zone_config_t *pzone_cfg);
charlesmn 0:0be0bd219e72 2837
charlesmn 0:0be0bd219e72 2838 VL53LX_Error VL53LX_preset_mode_histogram_ranging_mm1_cal(
charlesmn 0:0be0bd219e72 2839 VL53LX_hist_post_process_config_t *phistpostprocess,
charlesmn 0:0be0bd219e72 2840 VL53LX_static_config_t *pstatic,
charlesmn 0:0be0bd219e72 2841 VL53LX_histogram_config_t *phistogram,
charlesmn 0:0be0bd219e72 2842 VL53LX_general_config_t *pgeneral,
charlesmn 0:0be0bd219e72 2843 VL53LX_timing_config_t *ptiming,
charlesmn 0:0be0bd219e72 2844 VL53LX_dynamic_config_t *pdynamic,
charlesmn 0:0be0bd219e72 2845 VL53LX_system_control_t *psystem,
charlesmn 0:0be0bd219e72 2846 VL53LX_tuning_parm_storage_t *ptuning_parms,
charlesmn 0:0be0bd219e72 2847 VL53LX_zone_config_t *pzone_cfg);
charlesmn 0:0be0bd219e72 2848
charlesmn 0:0be0bd219e72 2849 VL53LX_Error VL53LX_preset_mode_histogram_ranging_mm2_cal(
charlesmn 0:0be0bd219e72 2850 VL53LX_hist_post_process_config_t *phistpostprocess,
charlesmn 0:0be0bd219e72 2851 VL53LX_static_config_t *pstatic,
charlesmn 0:0be0bd219e72 2852 VL53LX_histogram_config_t *phistogram,
charlesmn 0:0be0bd219e72 2853 VL53LX_general_config_t *pgeneral,
charlesmn 0:0be0bd219e72 2854 VL53LX_timing_config_t *ptiming,
charlesmn 0:0be0bd219e72 2855 VL53LX_dynamic_config_t *pdynamic,
charlesmn 0:0be0bd219e72 2856 VL53LX_system_control_t *psystem,
charlesmn 0:0be0bd219e72 2857 VL53LX_tuning_parm_storage_t *ptuning_parms,
charlesmn 0:0be0bd219e72 2858 VL53LX_zone_config_t *pzone_cfg);
charlesmn 0:0be0bd219e72 2859
charlesmn 0:0be0bd219e72 2860 VL53LX_Error VL53LX_preset_mode_histogram_ranging_ref(
charlesmn 0:0be0bd219e72 2861 VL53LX_hist_post_process_config_t *phistpostprocess,
charlesmn 0:0be0bd219e72 2862 VL53LX_static_config_t *pstatic,
charlesmn 0:0be0bd219e72 2863 VL53LX_histogram_config_t *phistogram,
charlesmn 0:0be0bd219e72 2864 VL53LX_general_config_t *pgeneral,
charlesmn 0:0be0bd219e72 2865 VL53LX_timing_config_t *ptiming,
charlesmn 0:0be0bd219e72 2866 VL53LX_dynamic_config_t *pdynamic,
charlesmn 0:0be0bd219e72 2867 VL53LX_system_control_t *psystem,
charlesmn 0:0be0bd219e72 2868 VL53LX_tuning_parm_storage_t *ptuning_parms,
charlesmn 0:0be0bd219e72 2869 VL53LX_zone_config_t *pzone_cfg);
charlesmn 0:0be0bd219e72 2870
charlesmn 0:0be0bd219e72 2871 VL53LX_Error VL53LX_preset_mode_histogram_characterisation(
charlesmn 0:0be0bd219e72 2872 VL53LX_hist_post_process_config_t *phistpostprocess,
charlesmn 0:0be0bd219e72 2873 VL53LX_static_config_t *pstatic,
charlesmn 0:0be0bd219e72 2874 VL53LX_histogram_config_t *phistogram,
charlesmn 0:0be0bd219e72 2875 VL53LX_general_config_t *pgeneral,
charlesmn 0:0be0bd219e72 2876 VL53LX_timing_config_t *ptiming,
charlesmn 0:0be0bd219e72 2877 VL53LX_dynamic_config_t *pdynamic,
charlesmn 0:0be0bd219e72 2878 VL53LX_system_control_t *psystem,
charlesmn 0:0be0bd219e72 2879 VL53LX_tuning_parm_storage_t *ptuning_parms,
charlesmn 0:0be0bd219e72 2880 VL53LX_zone_config_t *pzone_cfg);
charlesmn 0:0be0bd219e72 2881
charlesmn 0:0be0bd219e72 2882 VL53LX_Error VL53LX_preset_mode_histogram_xtalk_planar(
charlesmn 0:0be0bd219e72 2883 VL53LX_hist_post_process_config_t *phistpostprocess,
charlesmn 0:0be0bd219e72 2884 VL53LX_static_config_t *pstatic,
charlesmn 0:0be0bd219e72 2885 VL53LX_histogram_config_t *phistogram,
charlesmn 0:0be0bd219e72 2886 VL53LX_general_config_t *pgeneral,
charlesmn 0:0be0bd219e72 2887 VL53LX_timing_config_t *ptiming,
charlesmn 0:0be0bd219e72 2888 VL53LX_dynamic_config_t *pdynamic,
charlesmn 0:0be0bd219e72 2889 VL53LX_system_control_t *psystem,
charlesmn 0:0be0bd219e72 2890 VL53LX_tuning_parm_storage_t *ptuning_parms,
charlesmn 0:0be0bd219e72 2891 VL53LX_zone_config_t *pzone_cfg);
charlesmn 0:0be0bd219e72 2892
charlesmn 0:0be0bd219e72 2893 VL53LX_Error VL53LX_preset_mode_histogram_xtalk_mm1(
charlesmn 0:0be0bd219e72 2894 VL53LX_hist_post_process_config_t *phistpostprocess,
charlesmn 0:0be0bd219e72 2895 VL53LX_static_config_t *pstatic,
charlesmn 0:0be0bd219e72 2896 VL53LX_histogram_config_t *phistogram,
charlesmn 0:0be0bd219e72 2897 VL53LX_general_config_t *pgeneral,
charlesmn 0:0be0bd219e72 2898 VL53LX_timing_config_t *ptiming,
charlesmn 0:0be0bd219e72 2899 VL53LX_dynamic_config_t *pdynamic,
charlesmn 0:0be0bd219e72 2900 VL53LX_system_control_t *psystem,
charlesmn 0:0be0bd219e72 2901 VL53LX_tuning_parm_storage_t *ptuning_parms,
charlesmn 0:0be0bd219e72 2902 VL53LX_zone_config_t *pzone_cfg);
charlesmn 0:0be0bd219e72 2903
charlesmn 0:0be0bd219e72 2904 VL53LX_Error VL53LX_preset_mode_histogram_xtalk_mm2(
charlesmn 0:0be0bd219e72 2905 VL53LX_hist_post_process_config_t *phistpostprocess,
charlesmn 0:0be0bd219e72 2906 VL53LX_static_config_t *pstatic,
charlesmn 0:0be0bd219e72 2907 VL53LX_histogram_config_t *phistogram,
charlesmn 0:0be0bd219e72 2908 VL53LX_general_config_t *pgeneral,
charlesmn 0:0be0bd219e72 2909 VL53LX_timing_config_t *ptiming,
charlesmn 0:0be0bd219e72 2910 VL53LX_dynamic_config_t *pdynamic,
charlesmn 0:0be0bd219e72 2911 VL53LX_system_control_t *psystem,
charlesmn 0:0be0bd219e72 2912 VL53LX_tuning_parm_storage_t *ptuning_parms,
charlesmn 0:0be0bd219e72 2913 VL53LX_zone_config_t *pzone_cfg);
charlesmn 0:0be0bd219e72 2914
charlesmn 0:0be0bd219e72 2915 VL53LX_Error VL53LX_preset_mode_histogram_multizone(
charlesmn 0:0be0bd219e72 2916 VL53LX_hist_post_process_config_t *phistpostprocess,
charlesmn 0:0be0bd219e72 2917 VL53LX_static_config_t *pstatic,
charlesmn 0:0be0bd219e72 2918 VL53LX_histogram_config_t *phistogram,
charlesmn 0:0be0bd219e72 2919 VL53LX_general_config_t *pgeneral,
charlesmn 0:0be0bd219e72 2920 VL53LX_timing_config_t *ptiming,
charlesmn 0:0be0bd219e72 2921 VL53LX_dynamic_config_t *pdynamic,
charlesmn 0:0be0bd219e72 2922 VL53LX_system_control_t *psystem,
charlesmn 0:0be0bd219e72 2923 VL53LX_tuning_parm_storage_t *ptuning_parms,
charlesmn 0:0be0bd219e72 2924 VL53LX_zone_config_t *pzone_cfg);
charlesmn 0:0be0bd219e72 2925
charlesmn 0:0be0bd219e72 2926 VL53LX_Error VL53LX_preset_mode_histogram_multizone_short_range(
charlesmn 0:0be0bd219e72 2927 VL53LX_hist_post_process_config_t *phistpostprocess,
charlesmn 0:0be0bd219e72 2928 VL53LX_static_config_t *pstatic,
charlesmn 0:0be0bd219e72 2929 VL53LX_histogram_config_t *phistogram,
charlesmn 0:0be0bd219e72 2930 VL53LX_general_config_t *pgeneral,
charlesmn 0:0be0bd219e72 2931 VL53LX_timing_config_t *ptiming,
charlesmn 0:0be0bd219e72 2932 VL53LX_dynamic_config_t *pdynamic,
charlesmn 0:0be0bd219e72 2933 VL53LX_system_control_t *psystem,
charlesmn 0:0be0bd219e72 2934 VL53LX_tuning_parm_storage_t *ptuning_parms,
charlesmn 0:0be0bd219e72 2935 VL53LX_zone_config_t *pzone_cfg);
charlesmn 0:0be0bd219e72 2936
charlesmn 0:0be0bd219e72 2937 VL53LX_Error VL53LX_preset_mode_histogram_multizone_long_range(
charlesmn 0:0be0bd219e72 2938 VL53LX_hist_post_process_config_t *phistpostprocess,
charlesmn 0:0be0bd219e72 2939 VL53LX_static_config_t *pstatic,
charlesmn 0:0be0bd219e72 2940 VL53LX_histogram_config_t *phistogram,
charlesmn 0:0be0bd219e72 2941 VL53LX_general_config_t *pgeneral,
charlesmn 0:0be0bd219e72 2942 VL53LX_timing_config_t *ptiming,
charlesmn 0:0be0bd219e72 2943 VL53LX_dynamic_config_t *pdynamic,
charlesmn 0:0be0bd219e72 2944 VL53LX_system_control_t *psystem,
charlesmn 0:0be0bd219e72 2945 VL53LX_tuning_parm_storage_t *ptuning_parms,
charlesmn 0:0be0bd219e72 2946 VL53LX_zone_config_t *pzone_cfg);
charlesmn 0:0be0bd219e72 2947
charlesmn 0:0be0bd219e72 2948 VL53LX_Error VL53LX_preset_mode_histogram_ranging_short_timing(
charlesmn 0:0be0bd219e72 2949 VL53LX_hist_post_process_config_t *phistpostprocess,
charlesmn 0:0be0bd219e72 2950 VL53LX_static_config_t *pstatic,
charlesmn 0:0be0bd219e72 2951 VL53LX_histogram_config_t *phistogram,
charlesmn 0:0be0bd219e72 2952 VL53LX_general_config_t *pgeneral,
charlesmn 0:0be0bd219e72 2953 VL53LX_timing_config_t *ptiming,
charlesmn 0:0be0bd219e72 2954 VL53LX_dynamic_config_t *pdynamic,
charlesmn 0:0be0bd219e72 2955 VL53LX_system_control_t *psystem,
charlesmn 0:0be0bd219e72 2956 VL53LX_tuning_parm_storage_t *ptuning_parms,
charlesmn 0:0be0bd219e72 2957 VL53LX_zone_config_t *pzone_cfg);
charlesmn 0:0be0bd219e72 2958
charlesmn 0:0be0bd219e72 2959 VL53LX_Error VL53LX_preset_mode_histogram_long_range(
charlesmn 0:0be0bd219e72 2960 VL53LX_hist_post_process_config_t *phistpostprocess,
charlesmn 0:0be0bd219e72 2961 VL53LX_static_config_t *pstatic,
charlesmn 0:0be0bd219e72 2962 VL53LX_histogram_config_t *phistogram,
charlesmn 0:0be0bd219e72 2963 VL53LX_general_config_t *pgeneral,
charlesmn 0:0be0bd219e72 2964 VL53LX_timing_config_t *ptiming,
charlesmn 0:0be0bd219e72 2965 VL53LX_dynamic_config_t *pdynamic,
charlesmn 0:0be0bd219e72 2966 VL53LX_system_control_t *psystem,
charlesmn 0:0be0bd219e72 2967 VL53LX_tuning_parm_storage_t *ptuning_parms,
charlesmn 0:0be0bd219e72 2968 VL53LX_zone_config_t *pzone_cfg);
charlesmn 0:0be0bd219e72 2969
charlesmn 0:0be0bd219e72 2970 VL53LX_Error VL53LX_preset_mode_histogram_medium_range(
charlesmn 0:0be0bd219e72 2971 VL53LX_hist_post_process_config_t *phistpostprocess,
charlesmn 0:0be0bd219e72 2972 VL53LX_static_config_t *pstatic,
charlesmn 0:0be0bd219e72 2973 VL53LX_histogram_config_t *phistogram,
charlesmn 0:0be0bd219e72 2974 VL53LX_general_config_t *pgeneral,
charlesmn 0:0be0bd219e72 2975 VL53LX_timing_config_t *ptiming,
charlesmn 0:0be0bd219e72 2976 VL53LX_dynamic_config_t *pdynamic,
charlesmn 0:0be0bd219e72 2977 VL53LX_system_control_t *psystem,
charlesmn 0:0be0bd219e72 2978 VL53LX_tuning_parm_storage_t *ptuning_parms,
charlesmn 0:0be0bd219e72 2979 VL53LX_zone_config_t *pzone_cfg);
charlesmn 0:0be0bd219e72 2980
charlesmn 0:0be0bd219e72 2981 VL53LX_Error VL53LX_preset_mode_histogram_short_range(
charlesmn 0:0be0bd219e72 2982 VL53LX_hist_post_process_config_t *phistpostprocess,
charlesmn 0:0be0bd219e72 2983 VL53LX_static_config_t *pstatic,
charlesmn 0:0be0bd219e72 2984 VL53LX_histogram_config_t *phistogram,
charlesmn 0:0be0bd219e72 2985 VL53LX_general_config_t *pgeneral,
charlesmn 0:0be0bd219e72 2986 VL53LX_timing_config_t *ptiming,
charlesmn 0:0be0bd219e72 2987 VL53LX_dynamic_config_t *pdynamic,
charlesmn 0:0be0bd219e72 2988 VL53LX_system_control_t *psystem,
charlesmn 0:0be0bd219e72 2989 VL53LX_tuning_parm_storage_t *ptuning_parms,
charlesmn 0:0be0bd219e72 2990 VL53LX_zone_config_t *pzone_cfg);
charlesmn 0:0be0bd219e72 2991
charlesmn 0:0be0bd219e72 2992 VL53LX_Error VL53LX_preset_mode_special_histogram_short_range(
charlesmn 0:0be0bd219e72 2993 VL53LX_hist_post_process_config_t *phistpostprocess,
charlesmn 0:0be0bd219e72 2994 VL53LX_static_config_t *pstatic,
charlesmn 0:0be0bd219e72 2995 VL53LX_histogram_config_t *phistogram,
charlesmn 0:0be0bd219e72 2996 VL53LX_general_config_t *pgeneral,
charlesmn 0:0be0bd219e72 2997 VL53LX_timing_config_t *ptiming,
charlesmn 0:0be0bd219e72 2998 VL53LX_dynamic_config_t *pdynamic,
charlesmn 0:0be0bd219e72 2999 VL53LX_system_control_t *psystem,
charlesmn 0:0be0bd219e72 3000 VL53LX_tuning_parm_storage_t *ptuning_parms,
charlesmn 0:0be0bd219e72 3001 VL53LX_zone_config_t *pzone_cfg);
charlesmn 0:0be0bd219e72 3002
charlesmn 0:0be0bd219e72 3003 VL53LX_Error VL53LX_preset_mode_histogram_long_range_mm1(
charlesmn 0:0be0bd219e72 3004 VL53LX_hist_post_process_config_t *phistpostprocess,
charlesmn 0:0be0bd219e72 3005 VL53LX_static_config_t *pstatic,
charlesmn 0:0be0bd219e72 3006 VL53LX_histogram_config_t *phistogram,
charlesmn 0:0be0bd219e72 3007 VL53LX_general_config_t *pgeneral,
charlesmn 0:0be0bd219e72 3008 VL53LX_timing_config_t *ptiming,
charlesmn 0:0be0bd219e72 3009 VL53LX_dynamic_config_t *pdynamic,
charlesmn 0:0be0bd219e72 3010 VL53LX_system_control_t *psystem,
charlesmn 0:0be0bd219e72 3011 VL53LX_tuning_parm_storage_t *ptuning_parms,
charlesmn 0:0be0bd219e72 3012 VL53LX_zone_config_t *pzone_cfg);
charlesmn 0:0be0bd219e72 3013
charlesmn 0:0be0bd219e72 3014 VL53LX_Error VL53LX_preset_mode_histogram_long_range_mm2(
charlesmn 0:0be0bd219e72 3015 VL53LX_hist_post_process_config_t *phistpostprocess,
charlesmn 0:0be0bd219e72 3016 VL53LX_static_config_t *pstatic,
charlesmn 0:0be0bd219e72 3017 VL53LX_histogram_config_t *phistogram,
charlesmn 0:0be0bd219e72 3018 VL53LX_general_config_t *pgeneral,
charlesmn 0:0be0bd219e72 3019 VL53LX_timing_config_t *ptiming,
charlesmn 0:0be0bd219e72 3020 VL53LX_dynamic_config_t *pdynamic,
charlesmn 0:0be0bd219e72 3021 VL53LX_system_control_t *psystem,
charlesmn 0:0be0bd219e72 3022 VL53LX_tuning_parm_storage_t *ptuning_parms,
charlesmn 0:0be0bd219e72 3023 VL53LX_zone_config_t *pzone_cfg);
charlesmn 0:0be0bd219e72 3024
charlesmn 0:0be0bd219e72 3025 VL53LX_Error VL53LX_preset_mode_histogram_medium_range_mm1(
charlesmn 0:0be0bd219e72 3026 VL53LX_hist_post_process_config_t *phistpostprocess,
charlesmn 0:0be0bd219e72 3027 VL53LX_static_config_t *pstatic,
charlesmn 0:0be0bd219e72 3028 VL53LX_histogram_config_t *phistogram,
charlesmn 0:0be0bd219e72 3029 VL53LX_general_config_t *pgeneral,
charlesmn 0:0be0bd219e72 3030 VL53LX_timing_config_t *ptiming,
charlesmn 0:0be0bd219e72 3031 VL53LX_dynamic_config_t *pdynamic,
charlesmn 0:0be0bd219e72 3032 VL53LX_system_control_t *psystem,
charlesmn 0:0be0bd219e72 3033 VL53LX_tuning_parm_storage_t *ptuning_parms,
charlesmn 0:0be0bd219e72 3034 VL53LX_zone_config_t *pzone_cfg);
charlesmn 0:0be0bd219e72 3035
charlesmn 0:0be0bd219e72 3036 VL53LX_Error VL53LX_preset_mode_histogram_medium_range_mm2(
charlesmn 0:0be0bd219e72 3037 VL53LX_hist_post_process_config_t *phistpostprocess,
charlesmn 0:0be0bd219e72 3038 VL53LX_static_config_t *pstatic,
charlesmn 0:0be0bd219e72 3039 VL53LX_histogram_config_t *phistogram,
charlesmn 0:0be0bd219e72 3040 VL53LX_general_config_t *pgeneral,
charlesmn 0:0be0bd219e72 3041 VL53LX_timing_config_t *ptiming,
charlesmn 0:0be0bd219e72 3042 VL53LX_dynamic_config_t *pdynamic,
charlesmn 0:0be0bd219e72 3043 VL53LX_system_control_t *psystem,
charlesmn 0:0be0bd219e72 3044 VL53LX_tuning_parm_storage_t *ptuning_parms,
charlesmn 0:0be0bd219e72 3045 VL53LX_zone_config_t *pzone_cfg);
charlesmn 0:0be0bd219e72 3046
charlesmn 0:0be0bd219e72 3047 VL53LX_Error VL53LX_preset_mode_histogram_short_range_mm1(
charlesmn 0:0be0bd219e72 3048 VL53LX_hist_post_process_config_t *phistpostprocess,
charlesmn 0:0be0bd219e72 3049 VL53LX_static_config_t *pstatic,
charlesmn 0:0be0bd219e72 3050 VL53LX_histogram_config_t *phistogram,
charlesmn 0:0be0bd219e72 3051 VL53LX_general_config_t *pgeneral,
charlesmn 0:0be0bd219e72 3052 VL53LX_timing_config_t *ptiming,
charlesmn 0:0be0bd219e72 3053 VL53LX_dynamic_config_t *pdynamic,
charlesmn 0:0be0bd219e72 3054 VL53LX_system_control_t *psystem,
charlesmn 0:0be0bd219e72 3055 VL53LX_tuning_parm_storage_t *ptuning_parms,
charlesmn 0:0be0bd219e72 3056 VL53LX_zone_config_t *pzone_cfg);
charlesmn 0:0be0bd219e72 3057
charlesmn 0:0be0bd219e72 3058 VL53LX_Error VL53LX_preset_mode_histogram_short_range_mm2(
charlesmn 0:0be0bd219e72 3059 VL53LX_hist_post_process_config_t *phistpostprocess,
charlesmn 0:0be0bd219e72 3060 VL53LX_static_config_t *pstatic,
charlesmn 0:0be0bd219e72 3061 VL53LX_histogram_config_t *phistogram,
charlesmn 0:0be0bd219e72 3062 VL53LX_general_config_t *pgeneral,
charlesmn 0:0be0bd219e72 3063 VL53LX_timing_config_t *ptiming,
charlesmn 0:0be0bd219e72 3064 VL53LX_dynamic_config_t *pdynamic,
charlesmn 0:0be0bd219e72 3065 VL53LX_system_control_t *psystem,
charlesmn 0:0be0bd219e72 3066 VL53LX_tuning_parm_storage_t *ptuning_parms,
charlesmn 0:0be0bd219e72 3067 VL53LX_zone_config_t *pzone_cfg);
charlesmn 0:0be0bd219e72 3068
charlesmn 0:0be0bd219e72 3069 VL53LX_Error VL53LX_preset_mode_olt(
charlesmn 0:0be0bd219e72 3070 VL53LX_static_config_t *pstatic,
charlesmn 0:0be0bd219e72 3071 VL53LX_histogram_config_t *phistogram,
charlesmn 0:0be0bd219e72 3072 VL53LX_general_config_t *pgeneral,
charlesmn 0:0be0bd219e72 3073 VL53LX_timing_config_t *ptiming,
charlesmn 0:0be0bd219e72 3074 VL53LX_dynamic_config_t *pdynamic,
charlesmn 0:0be0bd219e72 3075 VL53LX_system_control_t *psystem,
charlesmn 0:0be0bd219e72 3076 VL53LX_tuning_parm_storage_t *ptuning_parms,
charlesmn 0:0be0bd219e72 3077 VL53LX_zone_config_t *pzone_cfg);
charlesmn 0:0be0bd219e72 3078
charlesmn 0:0be0bd219e72 3079 VL53LX_Error VL53LX_preset_mode_singleshot_ranging(
charlesmn 0:0be0bd219e72 3080
charlesmn 0:0be0bd219e72 3081 VL53LX_static_config_t *pstatic,
charlesmn 0:0be0bd219e72 3082 VL53LX_histogram_config_t *phistogram,
charlesmn 0:0be0bd219e72 3083 VL53LX_general_config_t *pgeneral,
charlesmn 0:0be0bd219e72 3084 VL53LX_timing_config_t *ptiming,
charlesmn 0:0be0bd219e72 3085 VL53LX_dynamic_config_t *pdynamic,
charlesmn 0:0be0bd219e72 3086 VL53LX_system_control_t *psystem,
charlesmn 0:0be0bd219e72 3087 VL53LX_tuning_parm_storage_t *ptuning_parms,
charlesmn 0:0be0bd219e72 3088 VL53LX_zone_config_t *pzone_cfg);
charlesmn 0:0be0bd219e72 3089
charlesmn 0:0be0bd219e72 3090 void VL53LX_copy_hist_cfg_to_static_cfg(
charlesmn 0:0be0bd219e72 3091 VL53LX_histogram_config_t *phistogram,
charlesmn 0:0be0bd219e72 3092 VL53LX_static_config_t *pstatic,
charlesmn 0:0be0bd219e72 3093 VL53LX_general_config_t *pgeneral,
charlesmn 0:0be0bd219e72 3094 VL53LX_timing_config_t *ptiming,
charlesmn 0:0be0bd219e72 3095 VL53LX_dynamic_config_t *pdynamic);
charlesmn 0:0be0bd219e72 3096
charlesmn 0:0be0bd219e72 3097 void VL53LX_copy_hist_bins_to_static_cfg(
charlesmn 0:0be0bd219e72 3098 VL53LX_histogram_config_t *phistogram,
charlesmn 0:0be0bd219e72 3099 VL53LX_static_config_t *pstatic,
charlesmn 0:0be0bd219e72 3100 VL53LX_timing_config_t *ptiming);
charlesmn 0:0be0bd219e72 3101
charlesmn 0:0be0bd219e72 3102
charlesmn 0:0be0bd219e72 3103 /* vl53lx_silicon_core.h */
charlesmn 0:0be0bd219e72 3104 VL53LX_Error VL53LX_is_firmware_ready_silicon(
charlesmn 0:0be0bd219e72 3105 uint8_t *pready);
charlesmn 0:0be0bd219e72 3106
charlesmn 0:0be0bd219e72 3107
charlesmn 0:0be0bd219e72 3108 /* vl53lx_hist_core.h */
charlesmn 0:0be0bd219e72 3109
charlesmn 0:0be0bd219e72 3110 void VL53LX_f_022(
charlesmn 0:0be0bd219e72 3111 uint8_t VL53LX_p_032,
charlesmn 0:0be0bd219e72 3112 uint8_t filter_woi,
charlesmn 0:0be0bd219e72 3113 VL53LX_histogram_bin_data_t *pbins,
charlesmn 0:0be0bd219e72 3114 int32_t *pa,
charlesmn 0:0be0bd219e72 3115 int32_t *pb,
charlesmn 0:0be0bd219e72 3116 int32_t *pc);
charlesmn 0:0be0bd219e72 3117
charlesmn 0:0be0bd219e72 3118 VL53LX_Error VL53LX_f_018(
charlesmn 0:0be0bd219e72 3119 uint16_t vcsel_width,
charlesmn 0:0be0bd219e72 3120 uint16_t fast_osc_frequency,
charlesmn 0:0be0bd219e72 3121 uint32_t total_periods_elapsed,
charlesmn 0:0be0bd219e72 3122 uint16_t VL53LX_p_004,
charlesmn 0:0be0bd219e72 3123 VL53LX_range_data_t *pdata);
charlesmn 0:0be0bd219e72 3124
charlesmn 0:0be0bd219e72 3125 void VL53LX_f_019(
charlesmn 0:0be0bd219e72 3126 uint16_t gain_factor,
charlesmn 0:0be0bd219e72 3127 int16_t range_offset_mm,
charlesmn 0:0be0bd219e72 3128 VL53LX_range_data_t *pdata);
charlesmn 0:0be0bd219e72 3129
charlesmn 0:0be0bd219e72 3130 void VL53LX_f_029(
charlesmn 0:0be0bd219e72 3131 VL53LX_histogram_bin_data_t *pdata,
charlesmn 0:0be0bd219e72 3132 int32_t ambient_estimate_counts_per_bin);
charlesmn 0:0be0bd219e72 3133
charlesmn 0:0be0bd219e72 3134 void VL53LX_f_005(
charlesmn 0:0be0bd219e72 3135 VL53LX_histogram_bin_data_t *pxtalk,
charlesmn 0:0be0bd219e72 3136 VL53LX_histogram_bin_data_t *pbins,
charlesmn 0:0be0bd219e72 3137 VL53LX_histogram_bin_data_t *pxtalk_realigned);
charlesmn 0:0be0bd219e72 3138
charlesmn 0:0be0bd219e72 3139 int8_t VL53LX_f_030(
charlesmn 0:0be0bd219e72 3140 VL53LX_histogram_bin_data_t *pdata1,
charlesmn 0:0be0bd219e72 3141 VL53LX_histogram_bin_data_t *pdata2);
charlesmn 0:0be0bd219e72 3142
charlesmn 0:0be0bd219e72 3143 VL53LX_Error VL53LX_f_031(
charlesmn 0:0be0bd219e72 3144 VL53LX_histogram_bin_data_t *pidata,
charlesmn 0:0be0bd219e72 3145 VL53LX_histogram_bin_data_t *podata);
charlesmn 0:0be0bd219e72 3146
charlesmn 0:0be0bd219e72 3147
charlesmn 0:0be0bd219e72 3148 /* vl53lx_xtalk.h */
charlesmn 0:0be0bd219e72 3149
charlesmn 0:0be0bd219e72 3150 VL53LX_Error VL53LX_xtalk_calibration_process_data(
charlesmn 0:0be0bd219e72 3151 VL53LX_xtalk_range_results_t *pxtalk_ranges,
charlesmn 0:0be0bd219e72 3152 VL53LX_xtalk_histogram_data_t *pxtalk_shape,
charlesmn 0:0be0bd219e72 3153 VL53LX_xtalk_calibration_results_t *pxtalk_cal);
charlesmn 0:0be0bd219e72 3154
charlesmn 0:0be0bd219e72 3155 VL53LX_Error VL53LX_f_041(
charlesmn 0:0be0bd219e72 3156 VL53LX_histogram_bin_data_t *pavg_bins,
charlesmn 0:0be0bd219e72 3157 VL53LX_xtalk_algo_data_t *pdebug,
charlesmn 0:0be0bd219e72 3158 VL53LX_xtalk_range_data_t *pxtalk_data,
charlesmn 0:0be0bd219e72 3159 uint8_t histogram__window_start,
charlesmn 0:0be0bd219e72 3160 uint8_t histogram__window_end,
charlesmn 0:0be0bd219e72 3161 VL53LX_xtalk_histogram_shape_t *pxtalk_shape);
charlesmn 0:0be0bd219e72 3162
charlesmn 0:0be0bd219e72 3163 VL53LX_Error VL53LX_f_039(
charlesmn 0:0be0bd219e72 3164 VL53LX_xtalk_range_results_t *pxtalk_results,
charlesmn 0:0be0bd219e72 3165 VL53LX_xtalk_algo_data_t *pdebug,
charlesmn 0:0be0bd219e72 3166 int16_t *xgradient,
charlesmn 0:0be0bd219e72 3167 int16_t *ygradient);
charlesmn 0:0be0bd219e72 3168
charlesmn 0:0be0bd219e72 3169 VL53LX_Error VL53LX_f_040(
charlesmn 0:0be0bd219e72 3170 VL53LX_xtalk_range_data_t *pxtalk_data,
charlesmn 0:0be0bd219e72 3171 VL53LX_xtalk_algo_data_t *pdebug,
charlesmn 0:0be0bd219e72 3172 uint32_t *xtalk_mean_offset_kcps);
charlesmn 0:0be0bd219e72 3173
charlesmn 0:0be0bd219e72 3174 VL53LX_Error VL53LX_f_045(
charlesmn 0:0be0bd219e72 3175 VL53LX_histogram_bin_data_t *phist_data,
charlesmn 0:0be0bd219e72 3176 VL53LX_xtalk_range_data_t *pxtalk_data,
charlesmn 0:0be0bd219e72 3177 VL53LX_xtalk_algo_data_t *pdebug,
charlesmn 0:0be0bd219e72 3178 VL53LX_xtalk_histogram_shape_t *pxtalk_histo);
charlesmn 0:0be0bd219e72 3179
charlesmn 0:0be0bd219e72 3180 VL53LX_Error VL53LX_f_032(
charlesmn 0:0be0bd219e72 3181 uint32_t mean_offset,
charlesmn 0:0be0bd219e72 3182 int16_t xgradient,
charlesmn 0:0be0bd219e72 3183 int16_t ygradient,
charlesmn 0:0be0bd219e72 3184 int8_t centre_offset_x,
charlesmn 0:0be0bd219e72 3185 int8_t centre_offset_y,
charlesmn 0:0be0bd219e72 3186 uint16_t roi_effective_spads,
charlesmn 0:0be0bd219e72 3187 uint8_t roi_centre_spad,
charlesmn 0:0be0bd219e72 3188 uint8_t roi_xy_size,
charlesmn 0:0be0bd219e72 3189 uint32_t *xtalk_rate_kcps);
charlesmn 0:0be0bd219e72 3190
charlesmn 0:0be0bd219e72 3191 VL53LX_Error VL53LX_f_033(
charlesmn 0:0be0bd219e72 3192 VL53LX_histogram_bin_data_t *phist_data,
charlesmn 0:0be0bd219e72 3193 VL53LX_xtalk_histogram_shape_t *pxtalk_data,
charlesmn 0:0be0bd219e72 3194 uint32_t xtalk_rate_kcps,
charlesmn 0:0be0bd219e72 3195 VL53LX_histogram_bin_data_t *pxtalkcount_data);
charlesmn 0:0be0bd219e72 3196
charlesmn 0:0be0bd219e72 3197 VL53LX_Error VL53LX_f_047(
charlesmn 0:0be0bd219e72 3198 VL53LX_histogram_bin_data_t *phist_data,
charlesmn 0:0be0bd219e72 3199 VL53LX_histogram_bin_data_t *pxtalk_data,
charlesmn 0:0be0bd219e72 3200 uint8_t xtalk_bin_offset);
charlesmn 0:0be0bd219e72 3201
charlesmn 0:0be0bd219e72 3202 VL53LX_Error VL53LX_f_044(
charlesmn 0:0be0bd219e72 3203 VL53LX_histogram_bin_data_t *pxtalk_data,
charlesmn 0:0be0bd219e72 3204 uint32_t amb_threshold,
charlesmn 0:0be0bd219e72 3205 uint8_t VL53LX_p_019,
charlesmn 0:0be0bd219e72 3206 uint8_t VL53LX_p_024);
charlesmn 0:0be0bd219e72 3207
charlesmn 0:0be0bd219e72 3208 VL53LX_Error VL53LX_f_046(
charlesmn 0:0be0bd219e72 3209 VL53LX_customer_nvm_managed_t *pcustomer,
charlesmn 0:0be0bd219e72 3210 VL53LX_dynamic_config_t *pdyn_cfg,
charlesmn 0:0be0bd219e72 3211 VL53LX_xtalk_histogram_data_t *pxtalk_shape,
charlesmn 0:0be0bd219e72 3212 VL53LX_histogram_bin_data_t *pip_hist_data,
charlesmn 0:0be0bd219e72 3213 VL53LX_histogram_bin_data_t *pop_hist_data,
charlesmn 0:0be0bd219e72 3214 VL53LX_histogram_bin_data_t *pxtalk_count_data);
charlesmn 0:0be0bd219e72 3215
charlesmn 0:0be0bd219e72 3216 VL53LX_Error VL53LX_f_043(
charlesmn 0:0be0bd219e72 3217 uint8_t sigma_mult,
charlesmn 0:0be0bd219e72 3218 int32_t VL53LX_p_028,
charlesmn 0:0be0bd219e72 3219 uint32_t *ambient_noise);
charlesmn 0:0be0bd219e72 3220
charlesmn 0:0be0bd219e72 3221
charlesmn 0:0be0bd219e72 3222 VL53LX_Error VL53LX_generate_dual_reflectance_xtalk_samples(
charlesmn 0:0be0bd219e72 3223 VL53LX_xtalk_range_results_t *pxtalk_results,
charlesmn 0:0be0bd219e72 3224 uint16_t expected_target_distance_mm,
charlesmn 0:0be0bd219e72 3225 uint8_t higher_reflectance,
charlesmn 0:0be0bd219e72 3226 VL53LX_histogram_bin_data_t *pxtalk_avg_samples
charlesmn 0:0be0bd219e72 3227 );
charlesmn 0:0be0bd219e72 3228
charlesmn 0:0be0bd219e72 3229 VL53LX_Error VL53LX_f_042(
charlesmn 0:0be0bd219e72 3230 VL53LX_histogram_bin_data_t *pzone_avg_1,
charlesmn 0:0be0bd219e72 3231 VL53LX_histogram_bin_data_t *pzone_avg_2,
charlesmn 0:0be0bd219e72 3232 uint16_t expected_target_distance,
charlesmn 0:0be0bd219e72 3233 uint8_t subtract_amb,
charlesmn 0:0be0bd219e72 3234 uint8_t higher_reflectance,
charlesmn 0:0be0bd219e72 3235 VL53LX_histogram_bin_data_t *pxtalk_output
charlesmn 0:0be0bd219e72 3236 );
charlesmn 0:0be0bd219e72 3237
charlesmn 0:0be0bd219e72 3238
charlesmn 0:0be0bd219e72 3239 /* vl53lx_sigma_estimate.h */
charlesmn 0:0be0bd219e72 3240
charlesmn 0:0be0bd219e72 3241 uint16_t VL53LX_f_034(
charlesmn 0:0be0bd219e72 3242 uint8_t sigma_estimator__effective_pulse_width_ns,
charlesmn 0:0be0bd219e72 3243 uint8_t sigma_estimator__effective_ambient_width_ns,
charlesmn 0:0be0bd219e72 3244 uint8_t sigma_estimator__sigma_ref_mm,
charlesmn 0:0be0bd219e72 3245 VL53LX_range_data_t *pdata);
charlesmn 0:0be0bd219e72 3246
charlesmn 0:0be0bd219e72 3247 uint16_t VL53LX_f_036(
charlesmn 0:0be0bd219e72 3248 uint8_t sigma_estimator__effective_pulse_width_ns,
charlesmn 0:0be0bd219e72 3249 uint8_t sigma_estimator__effective_ambient_width_ns,
charlesmn 0:0be0bd219e72 3250 uint8_t sigma_estimator__sigma_ref_mm,
charlesmn 0:0be0bd219e72 3251 VL53LX_range_data_t *pdata);
charlesmn 0:0be0bd219e72 3252
charlesmn 0:0be0bd219e72 3253 VL53LX_Error VL53LX_f_037(
charlesmn 0:0be0bd219e72 3254 uint8_t sigma_estimator__sigma_ref_mm,
charlesmn 0:0be0bd219e72 3255 uint32_t VL53LX_p_007,
charlesmn 0:0be0bd219e72 3256 uint32_t VL53LX_p_032,
charlesmn 0:0be0bd219e72 3257 uint32_t VL53LX_p_001,
charlesmn 0:0be0bd219e72 3258 uint32_t a_zp,
charlesmn 0:0be0bd219e72 3259 uint32_t c_zp,
charlesmn 0:0be0bd219e72 3260 uint32_t bx,
charlesmn 0:0be0bd219e72 3261 uint32_t ax_zp,
charlesmn 0:0be0bd219e72 3262 uint32_t cx_zp,
charlesmn 0:0be0bd219e72 3263 uint32_t VL53LX_p_028,
charlesmn 0:0be0bd219e72 3264 uint16_t fast_osc_frequency,
charlesmn 0:0be0bd219e72 3265 uint16_t *psigma_est);
charlesmn 0:0be0bd219e72 3266
charlesmn 0:0be0bd219e72 3267 VL53LX_Error VL53LX_f_023(
charlesmn 0:0be0bd219e72 3268 uint8_t sigma_estimator__sigma_ref_mm,
charlesmn 0:0be0bd219e72 3269 uint32_t VL53LX_p_007,
charlesmn 0:0be0bd219e72 3270 uint32_t VL53LX_p_032,
charlesmn 0:0be0bd219e72 3271 uint32_t VL53LX_p_001,
charlesmn 0:0be0bd219e72 3272 uint32_t a_zp,
charlesmn 0:0be0bd219e72 3273 uint32_t c_zp,
charlesmn 0:0be0bd219e72 3274 uint32_t bx,
charlesmn 0:0be0bd219e72 3275 uint32_t ax_zp,
charlesmn 0:0be0bd219e72 3276 uint32_t cx_zp,
charlesmn 0:0be0bd219e72 3277 uint32_t VL53LX_p_028,
charlesmn 0:0be0bd219e72 3278 uint16_t fast_osc_frequency,
charlesmn 0:0be0bd219e72 3279 uint16_t *psigma_est);
charlesmn 0:0be0bd219e72 3280
charlesmn 0:0be0bd219e72 3281 uint32_t VL53LX_f_038(
charlesmn 0:0be0bd219e72 3282 uint64_t VL53LX_p_007,
charlesmn 0:0be0bd219e72 3283 uint32_t size
charlesmn 0:0be0bd219e72 3284 );
charlesmn 0:0be0bd219e72 3285
charlesmn 0:0be0bd219e72 3286 uint32_t VL53LX_f_035(
charlesmn 0:0be0bd219e72 3287 uint32_t VL53LX_p_007,
charlesmn 0:0be0bd219e72 3288 uint32_t VL53LX_p_032);
charlesmn 0:0be0bd219e72 3289
charlesmn 0:0be0bd219e72 3290
charlesmn 0:0be0bd219e72 3291 /* vl53lx_hist_algos_gen3.h */
charlesmn 0:0be0bd219e72 3292
charlesmn 0:0be0bd219e72 3293 void VL53LX_f_003(
charlesmn 0:0be0bd219e72 3294 VL53LX_hist_gen3_algo_private_data_t *palgo);
charlesmn 0:0be0bd219e72 3295
charlesmn 0:0be0bd219e72 3296 VL53LX_Error VL53LX_f_004(
charlesmn 0:0be0bd219e72 3297 VL53LX_dmax_calibration_data_t *pdmax_cal,
charlesmn 0:0be0bd219e72 3298 VL53LX_hist_gen3_dmax_config_t *pdmax_cfg,
charlesmn 0:0be0bd219e72 3299 VL53LX_hist_post_process_config_t *ppost_cfg,
charlesmn 0:0be0bd219e72 3300 VL53LX_histogram_bin_data_t *pbins,
charlesmn 0:0be0bd219e72 3301 VL53LX_histogram_bin_data_t *pxtalk,
charlesmn 0:0be0bd219e72 3302 VL53LX_hist_gen3_algo_private_data_t *palgo,
charlesmn 0:0be0bd219e72 3303 VL53LX_hist_gen3_dmax_private_data_t *pdmax_algo,
charlesmn 0:0be0bd219e72 3304 VL53LX_range_results_t *presults);
charlesmn 0:0be0bd219e72 3305
charlesmn 0:0be0bd219e72 3306 VL53LX_Error VL53LX_f_006(
charlesmn 0:0be0bd219e72 3307 uint16_t ambient_threshold_events_scaler,
charlesmn 0:0be0bd219e72 3308 int32_t ambient_threshold_sigma,
charlesmn 0:0be0bd219e72 3309 int32_t min_ambient_threshold_events,
charlesmn 0:0be0bd219e72 3310 uint8_t algo__crosstalk_compensation_enable,
charlesmn 0:0be0bd219e72 3311 VL53LX_histogram_bin_data_t *pbins,
charlesmn 0:0be0bd219e72 3312 VL53LX_histogram_bin_data_t *pxtalk,
charlesmn 0:0be0bd219e72 3313 VL53LX_hist_gen3_algo_private_data_t *palgo);
charlesmn 0:0be0bd219e72 3314
charlesmn 0:0be0bd219e72 3315
charlesmn 0:0be0bd219e72 3316 VL53LX_Error VL53LX_f_007(
charlesmn 0:0be0bd219e72 3317 VL53LX_hist_gen3_algo_private_data_t *palgo);
charlesmn 0:0be0bd219e72 3318
charlesmn 0:0be0bd219e72 3319 VL53LX_Error VL53LX_f_008(
charlesmn 0:0be0bd219e72 3320 VL53LX_hist_gen3_algo_private_data_t *palgo);
charlesmn 0:0be0bd219e72 3321
charlesmn 0:0be0bd219e72 3322 VL53LX_Error VL53LX_f_009(
charlesmn 0:0be0bd219e72 3323 VL53LX_hist_gen3_algo_private_data_t *palgo);
charlesmn 0:0be0bd219e72 3324
charlesmn 0:0be0bd219e72 3325 VL53LX_Error VL53LX_f_016(
charlesmn 0:0be0bd219e72 3326 VL53LX_HistTargetOrder target_order,
charlesmn 0:0be0bd219e72 3327 VL53LX_hist_gen3_algo_private_data_t *palgo);
charlesmn 0:0be0bd219e72 3328
charlesmn 0:0be0bd219e72 3329 VL53LX_Error VL53LX_f_010(
charlesmn 0:0be0bd219e72 3330 uint8_t pulse_no,
charlesmn 0:0be0bd219e72 3331 VL53LX_histogram_bin_data_t *pbins,
charlesmn 0:0be0bd219e72 3332 VL53LX_hist_gen3_algo_private_data_t *palgo);
charlesmn 0:0be0bd219e72 3333
charlesmn 0:0be0bd219e72 3334 VL53LX_Error VL53LX_f_015(
charlesmn 0:0be0bd219e72 3335 uint8_t pulse_no,
charlesmn 0:0be0bd219e72 3336 uint8_t clip_events,
charlesmn 0:0be0bd219e72 3337 VL53LX_histogram_bin_data_t *pbins,
charlesmn 0:0be0bd219e72 3338 VL53LX_hist_gen3_algo_private_data_t *palgo);
charlesmn 0:0be0bd219e72 3339
charlesmn 0:0be0bd219e72 3340 VL53LX_Error VL53LX_f_020(
charlesmn 0:0be0bd219e72 3341 int16_t VL53LX_p_019,
charlesmn 0:0be0bd219e72 3342 int16_t VL53LX_p_024,
charlesmn 0:0be0bd219e72 3343 uint8_t VL53LX_p_030,
charlesmn 0:0be0bd219e72 3344 uint8_t clip_events,
charlesmn 0:0be0bd219e72 3345 VL53LX_histogram_bin_data_t *pbins,
charlesmn 0:0be0bd219e72 3346 uint32_t *pphase);
charlesmn 0:0be0bd219e72 3347
charlesmn 0:0be0bd219e72 3348
charlesmn 0:0be0bd219e72 3349 VL53LX_Error VL53LX_f_011(
charlesmn 0:0be0bd219e72 3350 uint8_t pulse_no,
charlesmn 0:0be0bd219e72 3351 VL53LX_histogram_bin_data_t *pbins,
charlesmn 0:0be0bd219e72 3352 VL53LX_hist_gen3_algo_private_data_t *palgo,
charlesmn 0:0be0bd219e72 3353 int32_t pad_value,
charlesmn 0:0be0bd219e72 3354 VL53LX_histogram_bin_data_t *ppulse);
charlesmn 0:0be0bd219e72 3355
charlesmn 0:0be0bd219e72 3356 VL53LX_Error VL53LX_f_012(
charlesmn 0:0be0bd219e72 3357 uint8_t pulse_no,
charlesmn 0:0be0bd219e72 3358 VL53LX_histogram_bin_data_t *ppulse,
charlesmn 0:0be0bd219e72 3359 VL53LX_hist_gen3_algo_private_data_t *palgo);
charlesmn 0:0be0bd219e72 3360
charlesmn 0:0be0bd219e72 3361 VL53LX_Error VL53LX_f_013(
charlesmn 0:0be0bd219e72 3362 uint8_t pulse_no,
charlesmn 0:0be0bd219e72 3363 uint16_t noise_threshold,
charlesmn 0:0be0bd219e72 3364 VL53LX_hist_gen3_algo_private_data_t *palgo);
charlesmn 0:0be0bd219e72 3365
charlesmn 0:0be0bd219e72 3366 VL53LX_Error VL53LX_f_021(
charlesmn 0:0be0bd219e72 3367 uint8_t bin,
charlesmn 0:0be0bd219e72 3368 int32_t filta0,
charlesmn 0:0be0bd219e72 3369 int32_t filta1,
charlesmn 0:0be0bd219e72 3370 uint8_t VL53LX_p_030,
charlesmn 0:0be0bd219e72 3371 uint32_t *pmedian_phase);
charlesmn 0:0be0bd219e72 3372
charlesmn 0:0be0bd219e72 3373
charlesmn 0:0be0bd219e72 3374 VL53LX_Error VL53LX_f_014(
charlesmn 0:0be0bd219e72 3375 uint8_t bin,
charlesmn 0:0be0bd219e72 3376 uint8_t sigma_estimator__sigma_ref_mm,
charlesmn 0:0be0bd219e72 3377 uint8_t VL53LX_p_030,
charlesmn 0:0be0bd219e72 3378 uint8_t VL53LX_p_051,
charlesmn 0:0be0bd219e72 3379 uint8_t crosstalk_compensation_enable,
charlesmn 0:0be0bd219e72 3380 VL53LX_histogram_bin_data_t *phist_data_ap,
charlesmn 0:0be0bd219e72 3381 VL53LX_histogram_bin_data_t *phist_data_zp,
charlesmn 0:0be0bd219e72 3382 VL53LX_histogram_bin_data_t *pxtalk_hist,
charlesmn 0:0be0bd219e72 3383 uint16_t *psigma_est);
charlesmn 0:0be0bd219e72 3384
charlesmn 0:0be0bd219e72 3385
charlesmn 0:0be0bd219e72 3386 void VL53LX_f_017(
charlesmn 0:0be0bd219e72 3387 uint8_t range_id,
charlesmn 0:0be0bd219e72 3388 uint8_t valid_phase_low,
charlesmn 0:0be0bd219e72 3389 uint8_t valid_phase_high,
charlesmn 0:0be0bd219e72 3390 uint16_t sigma_thres,
charlesmn 0:0be0bd219e72 3391 VL53LX_histogram_bin_data_t *pbins,
charlesmn 0:0be0bd219e72 3392 VL53LX_hist_pulse_data_t *ppulse,
charlesmn 0:0be0bd219e72 3393 VL53LX_range_data_t *pdata);
charlesmn 0:0be0bd219e72 3394
charlesmn 0:0be0bd219e72 3395
charlesmn 0:0be0bd219e72 3396 /* vl53lx_hist_algos_gen4.h */
charlesmn 0:0be0bd219e72 3397
charlesmn 0:0be0bd219e72 3398 void VL53LX_f_024(
charlesmn 0:0be0bd219e72 3399 VL53LX_hist_gen4_algo_filtered_data_t *palgo);
charlesmn 0:0be0bd219e72 3400
charlesmn 0:0be0bd219e72 3401 VL53LX_Error VL53LX_f_025(
charlesmn 0:0be0bd219e72 3402 VL53LX_dmax_calibration_data_t *pdmax_cal,
charlesmn 0:0be0bd219e72 3403 VL53LX_hist_gen3_dmax_config_t *pdmax_cfg,
charlesmn 0:0be0bd219e72 3404 VL53LX_hist_post_process_config_t *ppost_cfg,
charlesmn 0:0be0bd219e72 3405 VL53LX_histogram_bin_data_t *pbins,
charlesmn 0:0be0bd219e72 3406 VL53LX_histogram_bin_data_t *pxtalk,
charlesmn 0:0be0bd219e72 3407 VL53LX_hist_gen3_algo_private_data_t *palgo,
charlesmn 0:0be0bd219e72 3408 VL53LX_hist_gen4_algo_filtered_data_t *pfiltered,
charlesmn 0:0be0bd219e72 3409 VL53LX_hist_gen3_dmax_private_data_t *pdmax_algo,
charlesmn 0:0be0bd219e72 3410 VL53LX_range_results_t *presults);
charlesmn 0:0be0bd219e72 3411
charlesmn 0:0be0bd219e72 3412 VL53LX_Error VL53LX_f_026(
charlesmn 0:0be0bd219e72 3413 uint8_t pulse_no,
charlesmn 0:0be0bd219e72 3414 VL53LX_histogram_bin_data_t *ppulse,
charlesmn 0:0be0bd219e72 3415 VL53LX_hist_gen3_algo_private_data_t *palgo,
charlesmn 0:0be0bd219e72 3416 VL53LX_hist_gen4_algo_filtered_data_t *pfiltered);
charlesmn 0:0be0bd219e72 3417
charlesmn 0:0be0bd219e72 3418 VL53LX_Error VL53LX_f_027(
charlesmn 0:0be0bd219e72 3419 uint8_t pulse_no,
charlesmn 0:0be0bd219e72 3420 uint16_t noise_threshold,
charlesmn 0:0be0bd219e72 3421 VL53LX_hist_gen4_algo_filtered_data_t *pfiltered,
charlesmn 0:0be0bd219e72 3422 VL53LX_hist_gen3_algo_private_data_t *palgo);
charlesmn 0:0be0bd219e72 3423
charlesmn 0:0be0bd219e72 3424 VL53LX_Error VL53LX_f_028(
charlesmn 0:0be0bd219e72 3425 uint8_t bin,
charlesmn 0:0be0bd219e72 3426 int32_t VL53LX_p_007,
charlesmn 0:0be0bd219e72 3427 int32_t VL53LX_p_032,
charlesmn 0:0be0bd219e72 3428 int32_t VL53LX_p_001,
charlesmn 0:0be0bd219e72 3429 int32_t ax,
charlesmn 0:0be0bd219e72 3430 int32_t bx,
charlesmn 0:0be0bd219e72 3431 int32_t cx,
charlesmn 0:0be0bd219e72 3432 int32_t VL53LX_p_028,
charlesmn 0:0be0bd219e72 3433 uint8_t VL53LX_p_030,
charlesmn 0:0be0bd219e72 3434 uint32_t *pmedian_phase);
charlesmn 0:0be0bd219e72 3435
charlesmn 0:0be0bd219e72 3436
charlesmn 0:0be0bd219e72 3437
charlesmn 0:0be0bd219e72 3438 /* vl53lx_dmax.h */
charlesmn 0:0be0bd219e72 3439
charlesmn 0:0be0bd219e72 3440 VL53LX_Error VL53LX_f_001(
charlesmn 0:0be0bd219e72 3441 uint16_t target_reflectance,
charlesmn 0:0be0bd219e72 3442 VL53LX_dmax_calibration_data_t *pcal,
charlesmn 0:0be0bd219e72 3443 VL53LX_hist_gen3_dmax_config_t *pcfg,
charlesmn 0:0be0bd219e72 3444 VL53LX_histogram_bin_data_t *pbins,
charlesmn 0:0be0bd219e72 3445 VL53LX_hist_gen3_dmax_private_data_t *pdata,
charlesmn 0:0be0bd219e72 3446 int16_t *pambient_dmax_mm);
charlesmn 0:0be0bd219e72 3447
charlesmn 0:0be0bd219e72 3448 uint32_t VL53LX_f_002(
charlesmn 0:0be0bd219e72 3449 uint32_t events_threshold,
charlesmn 0:0be0bd219e72 3450 uint32_t ref_signal_events,
charlesmn 0:0be0bd219e72 3451 uint32_t ref_distance_mm,
charlesmn 0:0be0bd219e72 3452 uint32_t signal_thresh_sigma);
charlesmn 0:0be0bd219e72 3453
charlesmn 0:0be0bd219e72 3454
charlesmn 0:0be0bd219e72 3455
charlesmn 0:0be0bd219e72 3456 /* vl53lx_api_calibration.h */
charlesmn 0:0be0bd219e72 3457
charlesmn 0:0be0bd219e72 3458 VL53LX_Error VL53LX_run_ref_spad_char(
charlesmn 0:0be0bd219e72 3459 VL53LX_Error *pcal_status);
charlesmn 0:0be0bd219e72 3460
charlesmn 0:0be0bd219e72 3461
charlesmn 0:0be0bd219e72 3462
charlesmn 0:0be0bd219e72 3463
charlesmn 0:0be0bd219e72 3464 VL53LX_Error VL53LX_run_device_test(
charlesmn 0:0be0bd219e72 3465 VL53LX_DeviceTestMode device_test_mode);
charlesmn 0:0be0bd219e72 3466
charlesmn 0:0be0bd219e72 3467
charlesmn 0:0be0bd219e72 3468
charlesmn 0:0be0bd219e72 3469
charlesmn 0:0be0bd219e72 3470 VL53LX_Error VL53LX_run_spad_rate_map(
charlesmn 0:0be0bd219e72 3471 VL53LX_DeviceTestMode device_test_mode,
charlesmn 0:0be0bd219e72 3472 VL53LX_DeviceSscArray array_select,
charlesmn 0:0be0bd219e72 3473 uint32_t ssc_config_timeout_us,
charlesmn 0:0be0bd219e72 3474 VL53LX_spad_rate_data_t *pspad_rate_data);
charlesmn 0:0be0bd219e72 3475
charlesmn 0:0be0bd219e72 3476
charlesmn 0:0be0bd219e72 3477
charlesmn 0:0be0bd219e72 3478
charlesmn 0:0be0bd219e72 3479 VL53LX_Error VL53LX_run_xtalk_extraction(
charlesmn 0:0be0bd219e72 3480 VL53LX_Error *pcal_status);
charlesmn 0:0be0bd219e72 3481
charlesmn 0:0be0bd219e72 3482
charlesmn 0:0be0bd219e72 3483
charlesmn 0:0be0bd219e72 3484 VL53LX_Error VL53LX_get_and_avg_xtalk_samples(
charlesmn 0:0be0bd219e72 3485 uint8_t num_of_samples,
charlesmn 0:0be0bd219e72 3486 uint8_t measurement_mode,
charlesmn 0:0be0bd219e72 3487 int16_t xtalk_filter_thresh_max_mm,
charlesmn 0:0be0bd219e72 3488 int16_t xtalk_filter_thresh_min_mm,
charlesmn 0:0be0bd219e72 3489 uint16_t xtalk_max_valid_rate_kcps,
charlesmn 0:0be0bd219e72 3490 uint8_t xtalk_result_id,
charlesmn 0:0be0bd219e72 3491 uint8_t xtalk_histo_id,
charlesmn 0:0be0bd219e72 3492 VL53LX_xtalk_range_results_t *pxtalk_results,
charlesmn 0:0be0bd219e72 3493 VL53LX_histogram_bin_data_t *psum_histo,
charlesmn 0:0be0bd219e72 3494 VL53LX_histogram_bin_data_t *pavg_histo);
charlesmn 0:0be0bd219e72 3495
charlesmn 0:0be0bd219e72 3496
charlesmn 0:0be0bd219e72 3497
charlesmn 0:0be0bd219e72 3498 VL53LX_Error VL53LX_run_offset_calibration(
charlesmn 0:0be0bd219e72 3499 int16_t cal_distance_mm,
charlesmn 0:0be0bd219e72 3500 uint16_t cal_reflectance_pc,
charlesmn 0:0be0bd219e72 3501 VL53LX_Error *pcal_status);
charlesmn 0:0be0bd219e72 3502
charlesmn 0:0be0bd219e72 3503
charlesmn 0:0be0bd219e72 3504
charlesmn 0:0be0bd219e72 3505
charlesmn 0:0be0bd219e72 3506 VL53LX_Error VL53LX_run_phasecal_average(
charlesmn 0:0be0bd219e72 3507 uint8_t measurement_mode,
charlesmn 0:0be0bd219e72 3508 uint8_t phasecal_result__vcsel_start,
charlesmn 0:0be0bd219e72 3509 uint16_t phasecal_num_of_samples,
charlesmn 0:0be0bd219e72 3510 VL53LX_range_results_t *prange_results,
charlesmn 0:0be0bd219e72 3511 uint16_t *pphasecal_result__reference_phase,
charlesmn 0:0be0bd219e72 3512 uint16_t *pzero_distance_phase);
charlesmn 0:0be0bd219e72 3513
charlesmn 0:0be0bd219e72 3514
charlesmn 0:0be0bd219e72 3515
charlesmn 0:0be0bd219e72 3516
charlesmn 0:0be0bd219e72 3517 VL53LX_Error VL53LX_run_zone_calibration(
charlesmn 0:0be0bd219e72 3518 VL53LX_DevicePresetModes device_preset_mode,
charlesmn 0:0be0bd219e72 3519 VL53LX_DeviceZonePreset zone_preset,
charlesmn 0:0be0bd219e72 3520 VL53LX_zone_config_t *pzone_cfg,
charlesmn 0:0be0bd219e72 3521 int16_t cal_distance_mm,
charlesmn 0:0be0bd219e72 3522 uint16_t cal_reflectance_pc,
charlesmn 0:0be0bd219e72 3523 VL53LX_Error *pcal_status);
charlesmn 0:0be0bd219e72 3524
charlesmn 0:0be0bd219e72 3525
charlesmn 0:0be0bd219e72 3526
charlesmn 0:0be0bd219e72 3527
charlesmn 0:0be0bd219e72 3528 void VL53LX_hist_xtalk_extract_data_init(
charlesmn 0:0be0bd219e72 3529 VL53LX_hist_xtalk_extract_data_t *pxtalk_data);
charlesmn 0:0be0bd219e72 3530
charlesmn 0:0be0bd219e72 3531
charlesmn 0:0be0bd219e72 3532
charlesmn 0:0be0bd219e72 3533 VL53LX_Error VL53LX_hist_xtalk_extract_update(
charlesmn 0:0be0bd219e72 3534 int16_t target_distance_mm,
charlesmn 0:0be0bd219e72 3535 uint16_t target_width_oversize,
charlesmn 0:0be0bd219e72 3536 VL53LX_histogram_bin_data_t *phist_bins,
charlesmn 0:0be0bd219e72 3537 VL53LX_hist_xtalk_extract_data_t *pxtalk_data);
charlesmn 0:0be0bd219e72 3538
charlesmn 0:0be0bd219e72 3539
charlesmn 0:0be0bd219e72 3540
charlesmn 0:0be0bd219e72 3541 VL53LX_Error VL53LX_hist_xtalk_extract_fini(
charlesmn 0:0be0bd219e72 3542 VL53LX_histogram_bin_data_t *phist_bins,
charlesmn 0:0be0bd219e72 3543 VL53LX_hist_xtalk_extract_data_t *pxtalk_data,
charlesmn 0:0be0bd219e72 3544 VL53LX_xtalk_calibration_results_t *pxtalk_cal,
charlesmn 0:0be0bd219e72 3545 VL53LX_xtalk_histogram_shape_t *pxtalk_shape);
charlesmn 0:0be0bd219e72 3546
charlesmn 0:0be0bd219e72 3547
charlesmn 0:0be0bd219e72 3548
charlesmn 0:0be0bd219e72 3549
charlesmn 0:0be0bd219e72 3550 VL53LX_Error VL53LX_run_hist_xtalk_extraction(
charlesmn 0:0be0bd219e72 3551 int16_t cal_distance_mm,
charlesmn 0:0be0bd219e72 3552 VL53LX_Error *pcal_status);
charlesmn 0:0be0bd219e72 3553
charlesmn 0:0be0bd219e72 3554 /* vl53lx_api_core.c static functions */
charlesmn 0:0be0bd219e72 3555 VL53LX_Error select_offset_per_vcsel(VL53LX_LLDriverData_t *pdev, int16_t *poffset);
charlesmn 0:0be0bd219e72 3556 void vl53lx_diff_histo_stddev(VL53LX_LLDriverData_t *pdev, VL53LX_histogram_bin_data_t *pdata, uint8_t timing, uint8_t HighIndex, uint8_t prev_pos, int32_t *pdiff_histo_stddev) ;
charlesmn 0:0be0bd219e72 3557 void vl53lx_histo_merge(VL53LX_histogram_bin_data_t *pdata);
charlesmn 0:0be0bd219e72 3558
charlesmn 0:0be0bd219e72 3559 /* vl53lx_api.c static functions */
charlesmn 0:0be0bd219e72 3560
charlesmn 0:0be0bd219e72 3561
charlesmn 0:0be0bd219e72 3562
charlesmn 0:0be0bd219e72 3563 // int32_t BDTable[VL53LX_TUNING_MAX_TUNABLE_KEY] = {
charlesmn 0:0be0bd219e72 3564 int BDTable[11];
charlesmn 0:0be0bd219e72 3565
charlesmn 0:0be0bd219e72 3566
charlesmn 0:0be0bd219e72 3567 /*
charlesmn 0:0be0bd219e72 3568
charlesmn 0:0be0bd219e72 3569 int32_t BDTable[11] = {
charlesmn 0:0be0bd219e72 3570 TUNING_VERSION,
charlesmn 0:0be0bd219e72 3571 TUNING_PROXY_MIN,
charlesmn 0:0be0bd219e72 3572 TUNING_SINGLE_TARGET_XTALK_TARGET_DISTANCE_MM,
charlesmn 0:0be0bd219e72 3573 TUNING_SINGLE_TARGET_XTALK_SAMPLE_NUMBER,
charlesmn 0:0be0bd219e72 3574 TUNING_MIN_AMBIENT_DMAX_VALID,
charlesmn 0:0be0bd219e72 3575 TUNING_MAX_SIMPLE_OFFSET_CALIBRATION_SAMPLE_NUMBER,
charlesmn 0:0be0bd219e72 3576 TUNING_XTALK_FULL_ROI_TARGET_DISTANCE_MM,
charlesmn 0:0be0bd219e72 3577 TUNING_SIMPLE_OFFSET_CALIBRATION_REPEAT,
charlesmn 0:0be0bd219e72 3578 TUNING_XTALK_FULL_ROI_BIN_SUM_MARGIN,
charlesmn 0:0be0bd219e72 3579 TUNING_XTALK_FULL_ROI_DEFAULT_OFFSET,
charlesmn 0:0be0bd219e72 3580 TUNING_ZERO_DISTANCE_OFFSET_NON_LINEAR_FACTOR_DEFAULT
charlesmn 0:0be0bd219e72 3581 };
charlesmn 0:0be0bd219e72 3582 */
charlesmn 0:0be0bd219e72 3583
charlesmn 0:0be0bd219e72 3584
charlesmn 0:0be0bd219e72 3585 VL53LX_Error ComputeDevicePresetMode(
charlesmn 0:0be0bd219e72 3586 VL53LX_DistanceModes DistanceMode,
charlesmn 0:0be0bd219e72 3587 VL53LX_DevicePresetModes *pDevicePresetMode);
charlesmn 0:0be0bd219e72 3588
charlesmn 0:0be0bd219e72 3589 VL53LX_Error SetPresetModeL3CX(
charlesmn 0:0be0bd219e72 3590 VL53LX_DistanceModes DistanceMode,
charlesmn 0:0be0bd219e72 3591 uint32_t inter_measurement_period_ms);
charlesmn 0:0be0bd219e72 3592
charlesmn 0:0be0bd219e72 3593 VL53LX_Error SetInterMeasurementPeriodMilliSeconds(uint32_t InterMeasurementPeriodMilliSeconds);
charlesmn 0:0be0bd219e72 3594
charlesmn 0:0be0bd219e72 3595 VL53LX_Error GetInterMeasurementPeriodMilliSeconds(uint32_t *pInterMeasurementPeriodMilliSeconds);
charlesmn 0:0be0bd219e72 3596
charlesmn 0:0be0bd219e72 3597 uint8_t ConvertStatusHisto(uint8_t FilteredRangeStatus);
charlesmn 0:0be0bd219e72 3598
charlesmn 0:0be0bd219e72 3599 VL53LX_Error SetTargetData(
charlesmn 0:0be0bd219e72 3600 uint8_t active_results, uint8_t device_status,
charlesmn 0:0be0bd219e72 3601 VL53LX_range_data_t *presults_data,
charlesmn 0:0be0bd219e72 3602 VL53LX_TargetRangeData_t *pRangeData);
charlesmn 0:0be0bd219e72 3603
charlesmn 0:0be0bd219e72 3604 VL53LX_Error SetMeasurementData(
charlesmn 0:0be0bd219e72 3605 VL53LX_range_results_t *presults,
charlesmn 0:0be0bd219e72 3606 VL53LX_MultiRangingData_t *pMultiRangingData);
charlesmn 0:0be0bd219e72 3607
charlesmn 0:0be0bd219e72 3608
charlesmn 0:0be0bd219e72 3609 /* Write and read functions from I2C */
charlesmn 0:0be0bd219e72 3610
charlesmn 0:0be0bd219e72 3611 VL53LX_Error VL53LX_WrByte(VL53LX_DEV Dev, uint16_t index, uint8_t data);
charlesmn 0:0be0bd219e72 3612 VL53LX_Error VL53LX_WrWord(VL53LX_DEV Dev, uint16_t index, uint16_t data);
charlesmn 0:0be0bd219e72 3613 VL53LX_Error VL53LX_WrDWord(VL53LX_DEV Dev, uint16_t index, uint32_t data);
charlesmn 0:0be0bd219e72 3614 VL53LX_Error VL53LX_RdByte(VL53LX_DEV Dev, uint16_t index, uint8_t *data);
charlesmn 0:0be0bd219e72 3615 // VL53LX_Error VL53LX_RdWord(VL53LX_DEV Dev, uint16_t index, uint16_t *data);
charlesmn 0:0be0bd219e72 3616 VL53LX_Error VL53LX_RdDWord(VL53LX_DEV Dev, uint16_t index, uint32_t *data);
charlesmn 0:0be0bd219e72 3617 VL53LX_Error VL53LX_UpdateByte(VL53LX_DEV Dev, uint16_t index, uint8_t AndData, uint8_t OrData);
charlesmn 0:0be0bd219e72 3618
charlesmn 0:0be0bd219e72 3619 VL53LX_Error VL53LX_WriteMulti(VL53LX_DEV Dev, uint16_t index, uint8_t *pdata, uint32_t count);
charlesmn 0:0be0bd219e72 3620 VL53LX_Error VL53LX_ReadMulti(VL53LX_DEV Dev, uint16_t index, uint8_t *pdata, uint32_t count);
charlesmn 0:0be0bd219e72 3621
charlesmn 0:0be0bd219e72 3622 VL53LX_Error VL53LX_I2CWrite(uint8_t DeviceAddr, uint16_t RegisterAddr, uint8_t *pBuffer, uint16_t NumByteToWrite);
charlesmn 0:0be0bd219e72 3623 VL53LX_Error VL53LX_I2CRead(uint8_t DeviceAddr, uint16_t RegisterAddr, uint8_t *pBuffer, uint16_t NumByteToRead);
charlesmn 0:0be0bd219e72 3624 VL53LX_Error VL53LX_GetTickCount(uint32_t *ptick_count_ms);
charlesmn 0:0be0bd219e72 3625 VL53LX_Error VL53LX_WaitUs(VL53LX_Dev_t *pdev, int32_t wait_us);
charlesmn 0:0be0bd219e72 3626 VL53LX_Error VL53LX_WaitMs(VL53LX_Dev_t *pdev, int32_t wait_ms);
charlesmn 0:0be0bd219e72 3627
charlesmn 0:0be0bd219e72 3628 VL53LX_Error VL53LX_WaitValueMaskEx(VL53LX_Dev_t *pdev, uint32_t timeout_ms, uint16_t index, uint8_t value, uint8_t mask, uint32_t poll_delay_ms);
charlesmn 0:0be0bd219e72 3629
charlesmn 0:0be0bd219e72 3630
charlesmn 0:0be0bd219e72 3631 protected:
charlesmn 0:0be0bd219e72 3632
charlesmn 0:0be0bd219e72 3633 /* IO Device */
charlesmn 0:0be0bd219e72 3634 vl53L3_DevI2C *dev_i2c;
johnAlexander 2:ad33ff89d2cf 3635
charlesmn 0:0be0bd219e72 3636 /* Device data */
charlesmn 0:0be0bd219e72 3637 VL53LX_Dev_t MyDevice;
charlesmn 0:0be0bd219e72 3638 VL53LX_DEV Dev;
charlesmn 0:0be0bd219e72 3639
johnAlexander 2:ad33ff89d2cf 3640 // vl53L3_DevI2C *i2c_inst;
charlesmn 0:0be0bd219e72 3641
charlesmn 0:0be0bd219e72 3642 /* Digital out pin */
charlesmn 0:0be0bd219e72 3643 DigitalOut *_gpio0;
charlesmn 0:0be0bd219e72 3644 /* GPIO expander */
charlesmn 0:0be0bd219e72 3645 Stmpe1600DigiOut *_expgpio0;
charlesmn 0:0be0bd219e72 3646 /* Measure detection IRQ */
charlesmn 0:0be0bd219e72 3647 InterruptIn *_gpio1Int;
johnAlexander 2:ad33ff89d2cf 3648
charlesmn 0:0be0bd219e72 3649 };
charlesmn 0:0be0bd219e72 3650
charlesmn 0:0be0bd219e72 3651 #endif /* _VL53LX_CLASS_H_ */
charlesmn 0:0be0bd219e72 3652