Fork Charles's library

Dependencies:   X_NUCLEO_COMMON ST_INTERFACES

Dependents:   VL53L3ExpansionBoard

Committer:
johnAlexander
Date:
Tue Nov 03 13:58:39 2020 +0000
Revision:
1:96f9b31f585a
Parent:
0:0be0bd219e72
Child:
2:ad33ff89d2cf
Rationalise on common ST Classes, and remove Older variants from directly in sensor class.

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