Rename library

Dependencies:   X_NUCLEO_COMMON ST_INTERFACES

Dependents:   VL53L3CX_NoShield_1Sensor_poll_Mb06x VL53L3_NoShield_1Sensor_polling_Mb63 X_NUCLEO_53L3A2 53L3A2_Ranging

Committer:
charlesmn
Date:
Wed Jul 14 14:36:12 2021 +0000
Revision:
6:df30b960b7dc
Parent:
5:89031b2f5316
Make compile

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Charles MacNeill 5:89031b2f5316 1 /*******************************************************************************
Charles MacNeill 5:89031b2f5316 2 Copyright © 2018, STMicroelectronics International N.V.
Charles MacNeill 5:89031b2f5316 3 All rights reserved.
Charles MacNeill 5:89031b2f5316 4 Redistribution and use in source and binary forms, with or without
Charles MacNeill 5:89031b2f5316 5 modification, are permitted provided that the following conditions are met:
Charles MacNeill 5:89031b2f5316 6 * Redistributions of source code must retain the above copyright
Charles MacNeill 5:89031b2f5316 7 notice, this list of conditions and the following disclaimer.
Charles MacNeill 5:89031b2f5316 8 * Redistributions in binary form must reproduce the above copyright
Charles MacNeill 5:89031b2f5316 9 notice, this list of conditions and the following disclaimer in the
Charles MacNeill 5:89031b2f5316 10 documentation and/or other materials provided with the distribution.
Charles MacNeill 5:89031b2f5316 11 * Neither the name of STMicroelectronics nor the
Charles MacNeill 5:89031b2f5316 12 names of its contributors may be used to endorse or promote products
Charles MacNeill 5:89031b2f5316 13 derived from this software without specific prior written permission.
Charles MacNeill 5:89031b2f5316 14 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
Charles MacNeill 5:89031b2f5316 15 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
Charles MacNeill 5:89031b2f5316 16 WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND
Charles MacNeill 5:89031b2f5316 17 NON-INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS ARE DISCLAIMED.
Charles MacNeill 5:89031b2f5316 18 IN NO EVENT SHALL STMICROELECTRONICS INTERNATIONAL N.V. BE LIABLE FOR ANY
Charles MacNeill 5:89031b2f5316 19 DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
Charles MacNeill 5:89031b2f5316 20 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
Charles MacNeill 5:89031b2f5316 21 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
Charles MacNeill 5:89031b2f5316 22 ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
Charles MacNeill 5:89031b2f5316 23 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
Charles MacNeill 5:89031b2f5316 24 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Charles MacNeill 5:89031b2f5316 25 *****************************************************************************/
Charles MacNeill 5:89031b2f5316 26
Charles MacNeill 5:89031b2f5316 27 #ifndef __VL53LX_CLASS_H
Charles MacNeill 5:89031b2f5316 28 #define __VL53LX_CLASS_H
Charles MacNeill 5:89031b2f5316 29
Charles MacNeill 5:89031b2f5316 30 #ifdef _MSC_VER
Charles MacNeill 5:89031b2f5316 31 #ifdef VL53LX_API_EXPORTS
Charles MacNeill 5:89031b2f5316 32 #define VL53LX_API __declspec(dllexport)
Charles MacNeill 5:89031b2f5316 33 #else
Charles MacNeill 5:89031b2f5316 34 #define VL53LX_API
Charles MacNeill 5:89031b2f5316 35 #endif
Charles MacNeill 5:89031b2f5316 36 #else
Charles MacNeill 5:89031b2f5316 37 #define VL53LX_API
Charles MacNeill 5:89031b2f5316 38 #endif
Charles MacNeill 5:89031b2f5316 39
Charles MacNeill 5:89031b2f5316 40 /* Includes ------------------------------------------------------------------*/
Charles MacNeill 5:89031b2f5316 41
Charles MacNeill 5:89031b2f5316 42 #include "mbed.h"
Charles MacNeill 5:89031b2f5316 43 #include "RangeSensor.h"
Charles MacNeill 5:89031b2f5316 44 #include "vl53lx_def.h"
Charles MacNeill 5:89031b2f5316 45 #include "vl53L3_I2c.h"
Charles MacNeill 5:89031b2f5316 46
Charles MacNeill 5:89031b2f5316 47
Charles MacNeill 5:89031b2f5316 48
Charles MacNeill 5:89031b2f5316 49 #include "PinNames.h"
Charles MacNeill 5:89031b2f5316 50 #include "vl53lx_error_codes.h"
Charles MacNeill 5:89031b2f5316 51 #include "vl53lx_platform_user_data.h"
Charles MacNeill 5:89031b2f5316 52
charlesmn 6:df30b960b7dc 53 #include "vl53lx_nvm_structs.h"//cgm
Charles MacNeill 5:89031b2f5316 54 #include "vl53lx_xtalk_private_structs.h"
Charles MacNeill 5:89031b2f5316 55 #include "vl53lx_hist_private_structs.h"
Charles MacNeill 5:89031b2f5316 56 #include "vl53lx_dmax_private_structs.h"
Charles MacNeill 5:89031b2f5316 57 #include "vl53lx_api.h"
Charles MacNeill 5:89031b2f5316 58
Charles MacNeill 5:89031b2f5316 59 #include "Stmpe1600.h"
Charles MacNeill 5:89031b2f5316 60 /**********************************************************/
Charles MacNeill 5:89031b2f5316 61 #if (MBED_VERSION > 60300)
Charles MacNeill 5:89031b2f5316 62 extern "C" void wait_ms(int ms);
Charles MacNeill 5:89031b2f5316 63 #endif
Charles MacNeill 5:89031b2f5316 64
Charles MacNeill 5:89031b2f5316 65
Charles MacNeill 5:89031b2f5316 66 #define VL53LX_DEFAULT_DEVICE_ADDRESS 0x52
Charles MacNeill 5:89031b2f5316 67
Charles MacNeill 5:89031b2f5316 68
Charles MacNeill 5:89031b2f5316 69
Charles MacNeill 5:89031b2f5316 70 #define VL53LX_MAX_I2C_XFER_SIZE 256
Charles MacNeill 5:89031b2f5316 71 #define CONT_CONTINUE 0
Charles MacNeill 5:89031b2f5316 72 #define CONT_NEXT_LOOP 1
Charles MacNeill 5:89031b2f5316 73 #define CONT_RESET 2
Charles MacNeill 5:89031b2f5316 74
Charles MacNeill 5:89031b2f5316 75
Charles MacNeill 5:89031b2f5316 76 /* vl53lx_api.c */
Charles MacNeill 5:89031b2f5316 77
Charles MacNeill 5:89031b2f5316 78 #ifndef MIN
Charles MacNeill 5:89031b2f5316 79 #define MIN(v1, v2) ((v1) < (v2) ? (v1) : (v2))
Charles MacNeill 5:89031b2f5316 80 #endif
Charles MacNeill 5:89031b2f5316 81 #ifndef MAX
Charles MacNeill 5:89031b2f5316 82 #define MAX(v1, v2) ((v1) < (v2) ? (v2) : (v1))
Charles MacNeill 5:89031b2f5316 83 #endif
Charles MacNeill 5:89031b2f5316 84
Charles MacNeill 5:89031b2f5316 85 #define DMAX_REFLECTANCE_IDX 2
Charles MacNeill 5:89031b2f5316 86
Charles MacNeill 5:89031b2f5316 87
Charles MacNeill 5:89031b2f5316 88
Charles MacNeill 5:89031b2f5316 89 #define LOWPOWER_AUTO_VHV_LOOP_DURATION_US 245
Charles MacNeill 5:89031b2f5316 90 #define LOWPOWER_AUTO_OVERHEAD_BEFORE_A_RANGING 1448
Charles MacNeill 5:89031b2f5316 91 #define LOWPOWER_AUTO_OVERHEAD_BETWEEN_A_B_RANGING 2100
Charles MacNeill 5:89031b2f5316 92
Charles MacNeill 5:89031b2f5316 93 #define FDA_MAX_TIMING_BUDGET_US 550000
Charles MacNeill 5:89031b2f5316 94
Charles MacNeill 5:89031b2f5316 95
Charles MacNeill 5:89031b2f5316 96 #define VL53LX_NVM_POWER_UP_DELAY_US 50
Charles MacNeill 5:89031b2f5316 97 #define VL53LX_NVM_READ_TRIGGER_DELAY_US 5
Charles MacNeill 5:89031b2f5316 98
Charles MacNeill 5:89031b2f5316 99
Charles MacNeill 5:89031b2f5316 100 #define VL53LX_D_002 0xFFFF
Charles MacNeill 5:89031b2f5316 101 #define VL53LX_D_008 0xFFFF
Charles MacNeill 5:89031b2f5316 102 #define VL53LX_D_003 0xFFFFFF
Charles MacNeill 5:89031b2f5316 103 #define VL53LX_D_007 0xFFFFFFFF
Charles MacNeill 5:89031b2f5316 104 #define VL53LX_D_005 0x7FFFFFFFFF
Charles MacNeill 5:89031b2f5316 105 #define VL53LX_D_009 0xFFFFFFFFFF
Charles MacNeill 5:89031b2f5316 106 #define VL53LX_D_010 0xFFFFFFFFFFFF
Charles MacNeill 5:89031b2f5316 107 #define VL53LX_D_004 0xFFFFFFFFFFFFFF
Charles MacNeill 5:89031b2f5316 108 #define VL53LX_D_006 0x7FFFFFFFFFFFFFFF
Charles MacNeill 5:89031b2f5316 109 #define VL53LX_D_011 0xFFFFFFFFFFFFFFFF
Charles MacNeill 5:89031b2f5316 110
Charles MacNeill 5:89031b2f5316 111 #define VL53L1X_DEFAULT_DEVICE_ADDRESS 0x52
Charles MacNeill 5:89031b2f5316 112 #define HIGH 1
Charles MacNeill 5:89031b2f5316 113
Charles MacNeill 5:89031b2f5316 114
Charles MacNeill 5:89031b2f5316 115 /* Classes -------------------------------------------------------------------*/
Charles MacNeill 5:89031b2f5316 116 /** Class representing a VL53L3CX sensor component
Charles MacNeill 5:89031b2f5316 117 */
Charles MacNeill 5:89031b2f5316 118
Charles MacNeill 5:89031b2f5316 119 class VL53L3CX : public RangeSensor {
Charles MacNeill 5:89031b2f5316 120 public:
Charles MacNeill 5:89031b2f5316 121 /** Constructor
Charles MacNeill 5:89031b2f5316 122 * @param[in] &i2c device I2C to be used for communication
Charles MacNeill 5:89031b2f5316 123 * @param[in] &pin_gpio1 pin Mbed InterruptIn PinName to be used as component GPIO_1 INT
Charles MacNeill 5:89031b2f5316 124 * @param[in] DevAddr device address, 0x52 by default
Charles MacNeill 5:89031b2f5316 125 */
Charles MacNeill 5:89031b2f5316 126
Charles MacNeill 5:89031b2f5316 127 VL53L3CX(vl53L3_DevI2C *i2c, Stmpe1600DigiOut *pin, PinName pin_gpio1, uint8_t dev_addr = VL53LX_DEFAULT_DEVICE_ADDRESS)
Charles MacNeill 5:89031b2f5316 128 : RangeSensor(), dev_i2c(i2c), _expgpio0(pin)
Charles MacNeill 5:89031b2f5316 129 {
Charles MacNeill 5:89031b2f5316 130
Charles MacNeill 5:89031b2f5316 131 Dev = new VL53L3CX_Object_t;
Charles MacNeill 5:89031b2f5316 132 I2cDevAddr = dev_addr;
Charles MacNeill 5:89031b2f5316 133 Dev->IO.Address = VL53LX_DEFAULT_DEVICE_ADDRESS;
Charles MacNeill 5:89031b2f5316 134
Charles MacNeill 5:89031b2f5316 135 _gpio0 = NULL;
Charles MacNeill 5:89031b2f5316 136 if (pin_gpio1 != NC) {
Charles MacNeill 5:89031b2f5316 137 _gpio1Int = new InterruptIn(pin_gpio1);
Charles MacNeill 5:89031b2f5316 138 } else {
Charles MacNeill 5:89031b2f5316 139 _gpio1Int = NULL;
Charles MacNeill 5:89031b2f5316 140 }
Charles MacNeill 5:89031b2f5316 141
Charles MacNeill 5:89031b2f5316 142 i2c_inst = i2c;
Charles MacNeill 5:89031b2f5316 143
Charles MacNeill 5:89031b2f5316 144 }
Charles MacNeill 5:89031b2f5316 145
Charles MacNeill 5:89031b2f5316 146
Charles MacNeill 5:89031b2f5316 147 /** Destructor
Charles MacNeill 5:89031b2f5316 148 */
Charles MacNeill 5:89031b2f5316 149 virtual ~VL53L3CX() {}
Charles MacNeill 5:89031b2f5316 150 /* warning: VL53LX class inherits from GenericSensor, RangeSensor and LightSensor, that haven`t a destructor.
Charles MacNeill 5:89031b2f5316 151 The warning should request to introduce a virtual destructor to make sure to delete the object */
Charles MacNeill 5:89031b2f5316 152
Charles MacNeill 5:89031b2f5316 153 /*** Interface Methods ***/
Charles MacNeill 5:89031b2f5316 154 /*** High level API ***/
Charles MacNeill 5:89031b2f5316 155 /**
Charles MacNeill 5:89031b2f5316 156 * @brief PowerOn the sensor
Charles MacNeill 5:89031b2f5316 157 * @return void
Charles MacNeill 5:89031b2f5316 158 */
Charles MacNeill 5:89031b2f5316 159
Charles MacNeill 5:89031b2f5316 160
Charles MacNeill 5:89031b2f5316 161 /* turns on the sensor */
Charles MacNeill 5:89031b2f5316 162 virtual void VL53LX_On(void)
Charles MacNeill 5:89031b2f5316 163 {
Charles MacNeill 5:89031b2f5316 164 printf("VL53L1_On\r\n");
Charles MacNeill 5:89031b2f5316 165 if (_gpio0) {
Charles MacNeill 5:89031b2f5316 166 *_gpio0 = 1;
Charles MacNeill 5:89031b2f5316 167 } else {
Charles MacNeill 5:89031b2f5316 168 if (_expgpio0) {
Charles MacNeill 5:89031b2f5316 169 *_expgpio0 = 1;
Charles MacNeill 5:89031b2f5316 170 }
Charles MacNeill 5:89031b2f5316 171 }
Charles MacNeill 5:89031b2f5316 172 wait_ms(100);
Charles MacNeill 5:89031b2f5316 173 }
Charles MacNeill 5:89031b2f5316 174
Charles MacNeill 5:89031b2f5316 175 /**
Charles MacNeill 5:89031b2f5316 176 * @brief PowerOff the sensor
Charles MacNeill 5:89031b2f5316 177 * @return void
Charles MacNeill 5:89031b2f5316 178 */
Charles MacNeill 5:89031b2f5316 179 /* turns off the sensor */
Charles MacNeill 5:89031b2f5316 180 virtual void VL53LX_Off(void)
Charles MacNeill 5:89031b2f5316 181 {
Charles MacNeill 5:89031b2f5316 182 printf("VL53L1_Off\r\n");
Charles MacNeill 5:89031b2f5316 183 if (_gpio0) {
Charles MacNeill 5:89031b2f5316 184 *_gpio0 = 0;
Charles MacNeill 5:89031b2f5316 185 } else {
Charles MacNeill 5:89031b2f5316 186 if (_expgpio0) {
Charles MacNeill 5:89031b2f5316 187 *_expgpio0 = 0;
Charles MacNeill 5:89031b2f5316 188 }
Charles MacNeill 5:89031b2f5316 189 }
Charles MacNeill 5:89031b2f5316 190 wait_ms(100);
Charles MacNeill 5:89031b2f5316 191 }
Charles MacNeill 5:89031b2f5316 192
Charles MacNeill 5:89031b2f5316 193
Charles MacNeill 5:89031b2f5316 194
Charles MacNeill 5:89031b2f5316 195 /**
Charles MacNeill 5:89031b2f5316 196 * @brief Initialize the sensor with default values
Charles MacNeill 5:89031b2f5316 197 * @return 0 on Success
Charles MacNeill 5:89031b2f5316 198 */
Charles MacNeill 5:89031b2f5316 199
Charles MacNeill 5:89031b2f5316 200 VL53LX_Error InitSensor(uint8_t address)
Charles MacNeill 5:89031b2f5316 201 {
Charles MacNeill 5:89031b2f5316 202
Charles MacNeill 5:89031b2f5316 203 VL53LX_Error status = VL53LX_ERROR_NONE;
Charles MacNeill 5:89031b2f5316 204 VL53LX_Off();
Charles MacNeill 5:89031b2f5316 205 VL53LX_On();
Charles MacNeill 5:89031b2f5316 206 Dev->IO.Address = VL53LX_DEFAULT_DEVICE_ADDRESS;
Charles MacNeill 5:89031b2f5316 207
Charles MacNeill 5:89031b2f5316 208 status = VL53L3CX_SetDeviceAddress(address);
Charles MacNeill 5:89031b2f5316 209
Charles MacNeill 5:89031b2f5316 210 wait_ms(100);
Charles MacNeill 5:89031b2f5316 211
Charles MacNeill 5:89031b2f5316 212 if (status == VL53LX_ERROR_NONE) {
Charles MacNeill 5:89031b2f5316 213 status = VL53L3CX_WaitDeviceBooted();
Charles MacNeill 5:89031b2f5316 214 printf("VL53L3CX_WaitDeviceBooted %d \n",status);
Charles MacNeill 5:89031b2f5316 215 }
Charles MacNeill 5:89031b2f5316 216
Charles MacNeill 5:89031b2f5316 217 if (status == VL53LX_ERROR_NONE) {
Charles MacNeill 5:89031b2f5316 218 status = VL53L3CX_DataInit();
Charles MacNeill 5:89031b2f5316 219 printf("VL53L3CX_DataInit %d %d\n",status,Dev->IO.Address );
Charles MacNeill 5:89031b2f5316 220 }
Charles MacNeill 5:89031b2f5316 221
Charles MacNeill 5:89031b2f5316 222
Charles MacNeill 5:89031b2f5316 223 return status;
Charles MacNeill 5:89031b2f5316 224 }
Charles MacNeill 5:89031b2f5316 225
Charles MacNeill 5:89031b2f5316 226
Charles MacNeill 5:89031b2f5316 227
Charles MacNeill 5:89031b2f5316 228 /**
Charles MacNeill 5:89031b2f5316 229 *
Charles MacNeill 5:89031b2f5316 230 * @brief One time device initialization
Charles MacNeill 5:89031b2f5316 231 * @param void
Charles MacNeill 5:89031b2f5316 232 * @return 0 on success
Charles MacNeill 5:89031b2f5316 233 */
Charles MacNeill 5:89031b2f5316 234 virtual int Init()
Charles MacNeill 5:89031b2f5316 235 {
Charles MacNeill 5:89031b2f5316 236 return VL53L3CX_DataInit();
Charles MacNeill 5:89031b2f5316 237 }
Charles MacNeill 5:89031b2f5316 238
Charles MacNeill 5:89031b2f5316 239 int init(void *init)
Charles MacNeill 5:89031b2f5316 240 {
Charles MacNeill 5:89031b2f5316 241 return VL53L3CX_DataInit();
Charles MacNeill 5:89031b2f5316 242 }
Charles MacNeill 5:89031b2f5316 243
Charles MacNeill 5:89031b2f5316 244 /* Read function of the ID device */
Charles MacNeill 5:89031b2f5316 245 virtual int ReadID()
Charles MacNeill 5:89031b2f5316 246 {
Charles MacNeill 5:89031b2f5316 247 uint64_t Uid;
Charles MacNeill 5:89031b2f5316 248 VL53L3CX_GetUID(&Uid);
Charles MacNeill 5:89031b2f5316 249 if (Uid == 0x00FF000000FF) {
Charles MacNeill 5:89031b2f5316 250 return 0;
Charles MacNeill 5:89031b2f5316 251 }
Charles MacNeill 5:89031b2f5316 252 return -1;
Charles MacNeill 5:89031b2f5316 253 }
Charles MacNeill 5:89031b2f5316 254
Charles MacNeill 5:89031b2f5316 255
Charles MacNeill 5:89031b2f5316 256
Charles MacNeill 5:89031b2f5316 257 /**
Charles MacNeill 5:89031b2f5316 258 * @brief Get ranging result and only that
Charles MacNeill 5:89031b2f5316 259 * @param pRange_mm Pointer to range distance
Charles MacNeill 5:89031b2f5316 260 * @return 0 on success
Charles MacNeill 5:89031b2f5316 261 */
Charles MacNeill 5:89031b2f5316 262 virtual int GetDistance(uint32_t *piData)
Charles MacNeill 5:89031b2f5316 263 {
Charles MacNeill 5:89031b2f5316 264 (void)piData;
Charles MacNeill 5:89031b2f5316 265 return 0;
Charles MacNeill 5:89031b2f5316 266 }
Charles MacNeill 5:89031b2f5316 267
Charles MacNeill 5:89031b2f5316 268
Charles MacNeill 5:89031b2f5316 269 /* vl53lx_api.h */
Charles MacNeill 5:89031b2f5316 270
Charles MacNeill 5:89031b2f5316 271 /** @defgroup VL53LX_group VL53LX Function Definition
Charles MacNeill 5:89031b2f5316 272 * @brief VL53LX Function Definition
Charles MacNeill 5:89031b2f5316 273 * @{
Charles MacNeill 5:89031b2f5316 274 */
Charles MacNeill 5:89031b2f5316 275
Charles MacNeill 5:89031b2f5316 276 /** @defgroup VL53LX_general_group VL53LX General Functions
Charles MacNeill 5:89031b2f5316 277 * @brief General functions and definitions
Charles MacNeill 5:89031b2f5316 278 * @{
Charles MacNeill 5:89031b2f5316 279 */
Charles MacNeill 5:89031b2f5316 280
Charles MacNeill 5:89031b2f5316 281 /**
Charles MacNeill 5:89031b2f5316 282 * @brief Return the VL53L3CX driver Version
Charles MacNeill 5:89031b2f5316 283 *
Charles MacNeill 5:89031b2f5316 284 * @note This function doesn't access to the device
Charles MacNeill 5:89031b2f5316 285 *
Charles MacNeill 5:89031b2f5316 286 * @param pVersion Rer to current driver Version
Charles MacNeill 5:89031b2f5316 287 * @return VL53LX_Error_NONE Success
Charles MacNeill 5:89031b2f5316 288 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 289 */
Charles MacNeill 5:89031b2f5316 290 VL53LX_Error VL53L3CX_GetVersion(VL53LX_Version_t *pVersion);
Charles MacNeill 5:89031b2f5316 291
Charles MacNeill 5:89031b2f5316 292 /**
Charles MacNeill 5:89031b2f5316 293 * @brief Reads the Product Revision for a for given Device
Charles MacNeill 5:89031b2f5316 294 * This function can be used to distinguish cut1.0 from cut1.1.
Charles MacNeill 5:89031b2f5316 295 *
Charles MacNeill 5:89031b2f5316 296 * @param Dev Device Handle
Charles MacNeill 5:89031b2f5316 297 * @param pProductRevisionMajor Pointer to Product Revision Major
Charles MacNeill 5:89031b2f5316 298 * for a given Device
Charles MacNeill 5:89031b2f5316 299 * @param pProductRevisionMinor Pointer to Product Revision Minor
Charles MacNeill 5:89031b2f5316 300 * for a given Device
Charles MacNeill 5:89031b2f5316 301 * @return VL53LX_Error_NONE Success
Charles MacNeill 5:89031b2f5316 302 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 303 */
Charles MacNeill 5:89031b2f5316 304 VL53LX_Error VL53L3CX_GetProductRevision(uint8_t *pProductRevisionMajor,
Charles MacNeill 5:89031b2f5316 305 uint8_t *pProductRevisionMinor);
Charles MacNeill 5:89031b2f5316 306
Charles MacNeill 5:89031b2f5316 307 /**
Charles MacNeill 5:89031b2f5316 308 * @brief Reads the Device information for given Device
Charles MacNeill 5:89031b2f5316 309 *
Charles MacNeill 5:89031b2f5316 310 * @note This function Access to the device
Charles MacNeill 5:89031b2f5316 311 *
Charles MacNeill 5:89031b2f5316 312 * @param Dev Device Handle
Charles MacNeill 5:89031b2f5316 313 * @param pVL53LX_DeviceInfo Pointer to current device info for a given
Charles MacNeill 5:89031b2f5316 314 * Device
Charles MacNeill 5:89031b2f5316 315 * @return VL53LX_Error_NONE Success
Charles MacNeill 5:89031b2f5316 316 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 317 */
Charles MacNeill 5:89031b2f5316 318 VL53LX_Error VL53L3CX_GetDeviceInfo(
Charles MacNeill 5:89031b2f5316 319 VL53LX_DeviceInfo_t *pVL53LX_DeviceInfo);
Charles MacNeill 5:89031b2f5316 320
Charles MacNeill 5:89031b2f5316 321 /**
Charles MacNeill 5:89031b2f5316 322 * @brief Reads the Device unique identifier
Charles MacNeill 5:89031b2f5316 323 *
Charles MacNeill 5:89031b2f5316 324 * @note This function Access to the device
Charles MacNeill 5:89031b2f5316 325 *
Charles MacNeill 5:89031b2f5316 326 * @param Dev Device Handle
Charles MacNeill 5:89031b2f5316 327 * @param pUid Pointer to current device unique ID
Charles MacNeill 5:89031b2f5316 328 * @return VL53LX_Error_NONE Success
Charles MacNeill 5:89031b2f5316 329 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 330 */
Charles MacNeill 5:89031b2f5316 331 VL53LX_Error VL53L3CX_GetUID(uint64_t *pUid);
Charles MacNeill 5:89031b2f5316 332
Charles MacNeill 5:89031b2f5316 333
Charles MacNeill 5:89031b2f5316 334 /** @} VL53LX_general_group */
Charles MacNeill 5:89031b2f5316 335
Charles MacNeill 5:89031b2f5316 336 /** @defgroup VL53LX_init_group VL53LX Init Functions
Charles MacNeill 5:89031b2f5316 337 * @brief VL53LX Init Functions
Charles MacNeill 5:89031b2f5316 338 * @{
Charles MacNeill 5:89031b2f5316 339 */
Charles MacNeill 5:89031b2f5316 340
Charles MacNeill 5:89031b2f5316 341 /**
Charles MacNeill 5:89031b2f5316 342 * @brief Set new device address
Charles MacNeill 5:89031b2f5316 343 *
Charles MacNeill 5:89031b2f5316 344 * After completion the device will answer to the new address programmed.
Charles MacNeill 5:89031b2f5316 345 * This function should be called when several devices are used in parallel
Charles MacNeill 5:89031b2f5316 346 * before start programming the sensor.
Charles MacNeill 5:89031b2f5316 347 * When a single device us used, there is no need to call this function.
Charles MacNeill 5:89031b2f5316 348 *
Charles MacNeill 5:89031b2f5316 349 * When it is requested for multi devices system this function MUST be called
Charles MacNeill 5:89031b2f5316 350 * prior to VL53LX_DataInit()
Charles MacNeill 5:89031b2f5316 351 *
Charles MacNeill 5:89031b2f5316 352 * @note This function Access to the device
Charles MacNeill 5:89031b2f5316 353 *
Charles MacNeill 5:89031b2f5316 354 * @param Dev Device Handle
Charles MacNeill 5:89031b2f5316 355 * @param DeviceAddress The new Device address
Charles MacNeill 5:89031b2f5316 356 * @return VL53LX_Error_NONE Success
Charles MacNeill 5:89031b2f5316 357 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 358 */
Charles MacNeill 5:89031b2f5316 359 VL53LX_Error VL53L3CX_SetDeviceAddress(uint8_t DeviceAddress);
Charles MacNeill 5:89031b2f5316 360
Charles MacNeill 5:89031b2f5316 361 /**
Charles MacNeill 5:89031b2f5316 362 *
Charles MacNeill 5:89031b2f5316 363 * @brief One time device initialization
Charles MacNeill 5:89031b2f5316 364 *
Charles MacNeill 5:89031b2f5316 365 * To be called after device has been powered on and booted
Charles MacNeill 5:89031b2f5316 366 * see @a VL53L3CX_WaitDeviceBooted()
Charles MacNeill 5:89031b2f5316 367 *
Charles MacNeill 5:89031b2f5316 368 * @par Function Description
Charles MacNeill 5:89031b2f5316 369 * When not used after a fresh device "power up", it may return
Charles MacNeill 5:89031b2f5316 370 * @a #VL53LX_Error_CALIBRATION_WARNING meaning wrong calibration data
Charles MacNeill 5:89031b2f5316 371 * may have been fetched from device that can result in ranging offset error\n
Charles MacNeill 5:89031b2f5316 372 * If VL53LX_DataInit is called several times then the application must restore
Charles MacNeill 5:89031b2f5316 373 * calibration calling @a VL53LX_SetOffsetCalibrationData()
Charles MacNeill 5:89031b2f5316 374 * It implies application has gathered calibration data thanks to
Charles MacNeill 5:89031b2f5316 375 * @a VL53LX_GetOffsetCalibrationData() after an initial calibration stage.
Charles MacNeill 5:89031b2f5316 376 *
Charles MacNeill 5:89031b2f5316 377 * @note This function Access to the device
Charles MacNeill 5:89031b2f5316 378 *
Charles MacNeill 5:89031b2f5316 379 * @param Dev Device Handle
Charles MacNeill 5:89031b2f5316 380 * @return VL53LX_Error_NONE Success
Charles MacNeill 5:89031b2f5316 381 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 382 */
Charles MacNeill 5:89031b2f5316 383 VL53LX_Error VL53L3CX_DataInit();
Charles MacNeill 5:89031b2f5316 384
Charles MacNeill 5:89031b2f5316 385 /**
Charles MacNeill 5:89031b2f5316 386 * @brief Wait for device booted after chip enable (hardware standby)
Charles MacNeill 5:89031b2f5316 387 *
Charles MacNeill 5:89031b2f5316 388 * @param Dev Device Handle
Charles MacNeill 5:89031b2f5316 389 * @return VL53LX_Error_NONE Success
Charles MacNeill 5:89031b2f5316 390 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 391 *
Charles MacNeill 5:89031b2f5316 392 */
Charles MacNeill 5:89031b2f5316 393 VL53LX_Error VL53L3CX_WaitDeviceBooted();
Charles MacNeill 5:89031b2f5316 394
Charles MacNeill 5:89031b2f5316 395
Charles MacNeill 5:89031b2f5316 396 /** @} VL53LX_init_group */
Charles MacNeill 5:89031b2f5316 397
Charles MacNeill 5:89031b2f5316 398 /** @defgroup VL53LX_parameters_group VL53LX Parameters Functions
Charles MacNeill 5:89031b2f5316 399 * @brief Functions used to prepare and setup the device
Charles MacNeill 5:89031b2f5316 400 * @{
Charles MacNeill 5:89031b2f5316 401 */
Charles MacNeill 5:89031b2f5316 402
Charles MacNeill 5:89031b2f5316 403 /**
Charles MacNeill 5:89031b2f5316 404 * @brief Set the distance mode
Charles MacNeill 5:89031b2f5316 405 * @par Function Description
Charles MacNeill 5:89031b2f5316 406 * Set the distance mode to be used for the next ranging.<br>
Charles MacNeill 5:89031b2f5316 407 * The modes Short, Medium and Long are used to optimize the ranging accuracy
Charles MacNeill 5:89031b2f5316 408 * in a specific range of distance.<br> The user select one of these modes to
Charles MacNeill 5:89031b2f5316 409 * select the distance range.
Charles MacNeill 5:89031b2f5316 410 * @note This function doesn't Access to the device
Charles MacNeill 5:89031b2f5316 411 *
Charles MacNeill 5:89031b2f5316 412 * @warning This function should be called after @a VL53LX_DataInit().
Charles MacNeill 5:89031b2f5316 413
Charles MacNeill 5:89031b2f5316 414 * @param Dev Device Handle
Charles MacNeill 5:89031b2f5316 415 * @param DistanceMode Distance mode to apply, valid values are:
Charles MacNeill 5:89031b2f5316 416 * @li VL53LX_DISTANCEMODE_SHORT
Charles MacNeill 5:89031b2f5316 417 * @li VL53LX_DISTANCEMODE_MEDIUM
Charles MacNeill 5:89031b2f5316 418 * @li VL53LX_DISTANCEMODE_LONG
Charles MacNeill 5:89031b2f5316 419 * @return VL53LX_Error_NONE Success
Charles MacNeill 5:89031b2f5316 420 * @return VL53LX_Error_MODE_NOT_SUPPORTED This error occurs when DistanceMode
Charles MacNeill 5:89031b2f5316 421 * is not in the supported list
Charles MacNeill 5:89031b2f5316 422 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 423 */
Charles MacNeill 5:89031b2f5316 424 VL53LX_Error VL53L3CX_SetDistanceMode(
Charles MacNeill 5:89031b2f5316 425 VL53LX_DistanceModes DistanceMode);
Charles MacNeill 5:89031b2f5316 426
Charles MacNeill 5:89031b2f5316 427 /**
Charles MacNeill 5:89031b2f5316 428 * @brief Get the distance mode
Charles MacNeill 5:89031b2f5316 429 * @par Function Description
Charles MacNeill 5:89031b2f5316 430 * Get the distance mode used for the next ranging.
Charles MacNeill 5:89031b2f5316 431 *
Charles MacNeill 5:89031b2f5316 432 * @param Dev Device Handle
Charles MacNeill 5:89031b2f5316 433 * @param *pDistanceMode Pointer to Distance mode
Charles MacNeill 5:89031b2f5316 434 * @return VL53LX_Error_NONE Success
Charles MacNeill 5:89031b2f5316 435 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 436 */
Charles MacNeill 5:89031b2f5316 437 VL53LX_Error VL53L3CX_GetDistanceMode(
Charles MacNeill 5:89031b2f5316 438 VL53LX_DistanceModes *pDistanceMode);
Charles MacNeill 5:89031b2f5316 439
Charles MacNeill 5:89031b2f5316 440
Charles MacNeill 5:89031b2f5316 441 /**
Charles MacNeill 5:89031b2f5316 442 * @brief Set Ranging Timing Budget in microseconds
Charles MacNeill 5:89031b2f5316 443 *
Charles MacNeill 5:89031b2f5316 444 * @par Function Description
Charles MacNeill 5:89031b2f5316 445 * Defines the maximum time allowed by the user to the device to run a
Charles MacNeill 5:89031b2f5316 446 * full ranging sequence for the current mode (ranging, histogram, ASL ...)
Charles MacNeill 5:89031b2f5316 447 *
Charles MacNeill 5:89031b2f5316 448 * @param Dev Device Handle
Charles MacNeill 5:89031b2f5316 449 * @param MeasurementTimingBudgetMicroSeconds Max measurement time in
Charles MacNeill 5:89031b2f5316 450 * microseconds.
Charles MacNeill 5:89031b2f5316 451 * @return VL53LX_Error_NONE Success
Charles MacNeill 5:89031b2f5316 452 * @return VL53LX_Error_INVALID_PARAMS Error timing parameter not
Charles MacNeill 5:89031b2f5316 453 * supported.
Charles MacNeill 5:89031b2f5316 454 * The maximum accepted value for the
Charles MacNeill 5:89031b2f5316 455 * computed timing budget is 10 seconds
Charles MacNeill 5:89031b2f5316 456 * the minimum value depends on the preset
Charles MacNeill 5:89031b2f5316 457 * mode selected.
Charles MacNeill 5:89031b2f5316 458 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 459 */
Charles MacNeill 5:89031b2f5316 460 VL53LX_Error VL53L3CX_SetMeasurementTimingBudgetMicroSeconds(uint32_t MeasurementTimingBudgetMicroSeconds);
Charles MacNeill 5:89031b2f5316 461
Charles MacNeill 5:89031b2f5316 462 /**
Charles MacNeill 5:89031b2f5316 463 * @brief Get Ranging Timing Budget in microseconds
Charles MacNeill 5:89031b2f5316 464 *
Charles MacNeill 5:89031b2f5316 465 * @par Function Description
Charles MacNeill 5:89031b2f5316 466 * Returns the programmed the maximum time allowed by the user to the
Charles MacNeill 5:89031b2f5316 467 * device to run a full ranging sequence for the current mode
Charles MacNeill 5:89031b2f5316 468 * (ranging, histogram, ...)
Charles MacNeill 5:89031b2f5316 469 *
Charles MacNeill 5:89031b2f5316 470 * @param Dev Device Handle
Charles MacNeill 5:89031b2f5316 471 * @param pMeasurementTimingBudgetMicroSeconds Max measurement time in
Charles MacNeill 5:89031b2f5316 472 * microseconds.
Charles MacNeill 5:89031b2f5316 473 * @return VL53LX_Error_NONE Success
Charles MacNeill 5:89031b2f5316 474 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 475 */
Charles MacNeill 5:89031b2f5316 476 VL53LX_Error VL53L3CX_GetMeasurementTimingBudgetMicroSeconds(uint32_t *pMeasurementTimingBudgetMicroSeconds);
Charles MacNeill 5:89031b2f5316 477 /** @} VL53LX_parameters_group */
Charles MacNeill 5:89031b2f5316 478
Charles MacNeill 5:89031b2f5316 479
Charles MacNeill 5:89031b2f5316 480 /** @defgroup VL53LX_measurement_group VL53LX Measurement Functions
Charles MacNeill 5:89031b2f5316 481 * @brief Functions used for the measurements
Charles MacNeill 5:89031b2f5316 482 * @{
Charles MacNeill 5:89031b2f5316 483 */
Charles MacNeill 5:89031b2f5316 484
Charles MacNeill 5:89031b2f5316 485 /**
Charles MacNeill 5:89031b2f5316 486 * @brief Start device measurement
Charles MacNeill 5:89031b2f5316 487 *
Charles MacNeill 5:89031b2f5316 488 * @details Started measurement will depend on distance parameter set through
Charles MacNeill 5:89031b2f5316 489 * @a VL53L3CX_SetDistanceMode()
Charles MacNeill 5:89031b2f5316 490 *
Charles MacNeill 5:89031b2f5316 491 * @note This function Access to the device
Charles MacNeill 5:89031b2f5316 492 *
Charles MacNeill 5:89031b2f5316 493 * @param Dev Device Handle
Charles MacNeill 5:89031b2f5316 494 * @return VL53LX_Error_NONE Success
Charles MacNeill 5:89031b2f5316 495 * @return VL53LX_Error_TIME_OUT Time out on start measurement
Charles MacNeill 5:89031b2f5316 496 * @return VL53LX_Error_INVALID_PARAMS This error might occur in timed mode
Charles MacNeill 5:89031b2f5316 497 * when inter measurement period is smaller or too close to the timing budget.
Charles MacNeill 5:89031b2f5316 498 * In such case measurements are not started and user must correct the timings
Charles MacNeill 5:89031b2f5316 499 * passed to @a VL53LX_SetMeasurementTimingBudgetMicroSeconds() and
Charles MacNeill 5:89031b2f5316 500 * @a VL53LX_SetInterMeasurementPeriodMilliSeconds() functions.
Charles MacNeill 5:89031b2f5316 501 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 502 */
Charles MacNeill 5:89031b2f5316 503 VL53LX_Error VL53L3CX_StartMeasurement();
Charles MacNeill 5:89031b2f5316 504
Charles MacNeill 5:89031b2f5316 505 /**
Charles MacNeill 5:89031b2f5316 506 * @brief Stop device measurement
Charles MacNeill 5:89031b2f5316 507 *
Charles MacNeill 5:89031b2f5316 508 * @details Will set the device in standby mode at end of current measurement\n
Charles MacNeill 5:89031b2f5316 509 * Not necessary in single mode as device shall return automatically
Charles MacNeill 5:89031b2f5316 510 * in standby mode at end of measurement.
Charles MacNeill 5:89031b2f5316 511 *
Charles MacNeill 5:89031b2f5316 512 * @note This function Access to the device
Charles MacNeill 5:89031b2f5316 513 *
Charles MacNeill 5:89031b2f5316 514 * @param Dev Device Handle
Charles MacNeill 5:89031b2f5316 515 * @return VL53LX_Error_NONE Success
Charles MacNeill 5:89031b2f5316 516 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 517 */
Charles MacNeill 5:89031b2f5316 518 VL53LX_Error VL53L3CX_StopMeasurement();
Charles MacNeill 5:89031b2f5316 519
Charles MacNeill 5:89031b2f5316 520 /**
Charles MacNeill 5:89031b2f5316 521 * @brief Clear the Interrupt flag and start new measurement
Charles MacNeill 5:89031b2f5316 522 * *
Charles MacNeill 5:89031b2f5316 523 * @note This function Access to the device
Charles MacNeill 5:89031b2f5316 524 *
Charles MacNeill 5:89031b2f5316 525 * @param Dev Device Handle
Charles MacNeill 5:89031b2f5316 526 * @return VL53LX_Error_NONE Success
Charles MacNeill 5:89031b2f5316 527 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 528 */
Charles MacNeill 5:89031b2f5316 529 VL53LX_Error VL53L3CX_ClearInterruptAndStartMeasurement();
Charles MacNeill 5:89031b2f5316 530
Charles MacNeill 5:89031b2f5316 531 /**
Charles MacNeill 5:89031b2f5316 532 * @brief Return Measurement Data Ready
Charles MacNeill 5:89031b2f5316 533 *
Charles MacNeill 5:89031b2f5316 534 * @par Function Description
Charles MacNeill 5:89031b2f5316 535 * This function indicate that a measurement data is ready.
Charles MacNeill 5:89031b2f5316 536 * This function is used for non-blocking capture.
Charles MacNeill 5:89031b2f5316 537 *
Charles MacNeill 5:89031b2f5316 538 * @note This function Access to the device
Charles MacNeill 5:89031b2f5316 539 *
Charles MacNeill 5:89031b2f5316 540 * @param Dev Device Handle
Charles MacNeill 5:89031b2f5316 541 * @param pMeasurementDataReady Pointer to Measurement Data Ready.
Charles MacNeill 5:89031b2f5316 542 * 0 = data not ready, 1 = data ready
Charles MacNeill 5:89031b2f5316 543 * @return VL53LX_Error_NONE Success
Charles MacNeill 5:89031b2f5316 544 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 545 */
Charles MacNeill 5:89031b2f5316 546 VL53LX_Error VL53L3CX_GetMeasurementDataReady(
Charles MacNeill 5:89031b2f5316 547 uint8_t *pMeasurementDataReady);
Charles MacNeill 5:89031b2f5316 548
Charles MacNeill 5:89031b2f5316 549 /**
Charles MacNeill 5:89031b2f5316 550 * @brief Wait for measurement data ready.
Charles MacNeill 5:89031b2f5316 551 * Blocking function.
Charles MacNeill 5:89031b2f5316 552 * Note that the timeout is given by:
Charles MacNeill 5:89031b2f5316 553 * VL53LX_RANGE_COMPLETION_POLLING_TIMEOUT_MS defined in def.h
Charles MacNeill 5:89031b2f5316 554 *
Charles MacNeill 5:89031b2f5316 555 *
Charles MacNeill 5:89031b2f5316 556 * @note This function Access to the device
Charles MacNeill 5:89031b2f5316 557 *
Charles MacNeill 5:89031b2f5316 558 * @param Dev Device Handle
Charles MacNeill 5:89031b2f5316 559 * @return VL53LX_Error_NONE Success
Charles MacNeill 5:89031b2f5316 560 * @return VL53LX_Error_TIME_OUT In case of timeout
Charles MacNeill 5:89031b2f5316 561 */
Charles MacNeill 5:89031b2f5316 562 VL53LX_Error VL53L3CX_WaitMeasurementDataReady();
Charles MacNeill 5:89031b2f5316 563
Charles MacNeill 5:89031b2f5316 564
Charles MacNeill 5:89031b2f5316 565 /**
Charles MacNeill 5:89031b2f5316 566 * @brief Retrieve all measurements from device with the current setup
Charles MacNeill 5:89031b2f5316 567 *
Charles MacNeill 5:89031b2f5316 568 * @par Function Description
Charles MacNeill 5:89031b2f5316 569 * Get data from last successful Ranging measurement
Charles MacNeill 5:89031b2f5316 570 *
Charles MacNeill 5:89031b2f5316 571 * @warning USER must call @a VL53LX_ClearInterruptAndStartMeasurement() prior
Charles MacNeill 5:89031b2f5316 572 * to call again this function
Charles MacNeill 5:89031b2f5316 573 *
Charles MacNeill 5:89031b2f5316 574 * @note This function Access to the device
Charles MacNeill 5:89031b2f5316 575 *
Charles MacNeill 5:89031b2f5316 576 * @note The first valid value returned by this function will have a range
Charles MacNeill 5:89031b2f5316 577 * status equal to VL53LX_RANGESTATUS_RANGE_VALID_NO_WRAP_CHECK which means that
Charles MacNeill 5:89031b2f5316 578 * the data is valid but no wrap around check have been done. User should take
Charles MacNeill 5:89031b2f5316 579 * care about that.
Charles MacNeill 5:89031b2f5316 580 *
Charles MacNeill 5:89031b2f5316 581 * @param Dev Device Handle
Charles MacNeill 5:89031b2f5316 582 * @param pMultiRangingData Pointer to the data structure to fill up.
Charles MacNeill 5:89031b2f5316 583 * @return VL53LX_Error_NONE Success
Charles MacNeill 5:89031b2f5316 584 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 585 */
Charles MacNeill 5:89031b2f5316 586 VL53LX_Error VL53L3CX_GetMultiRangingData(VL53LX_MultiRangingData_t *pMultiRangingData);
Charles MacNeill 5:89031b2f5316 587
Charles MacNeill 5:89031b2f5316 588 /**
Charles MacNeill 5:89031b2f5316 589 * @brief Get Additional Data
Charles MacNeill 5:89031b2f5316 590 *
Charles MacNeill 5:89031b2f5316 591 * @par Function Description
Charles MacNeill 5:89031b2f5316 592 * This function is used to get lld debugging data on the last histogram
Charles MacNeill 5:89031b2f5316 593 * measurement. shall be called when a new measurement is ready (interrupt or
Charles MacNeill 5:89031b2f5316 594 * positive VL53LX_GetMeasurementDataReady() polling) and before a call to
Charles MacNeill 5:89031b2f5316 595 * VL53LX_ClearInterruptAndStartMeasurement().
Charles MacNeill 5:89031b2f5316 596 *
Charles MacNeill 5:89031b2f5316 597 * @param Dev Device Handle
Charles MacNeill 5:89031b2f5316 598 * @param pAdditionalData Pointer to Additional data
Charles MacNeill 5:89031b2f5316 599 * @return VL53LX_Error_NONE Success
Charles MacNeill 5:89031b2f5316 600 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 601 */
Charles MacNeill 5:89031b2f5316 602 VL53LX_Error VL53L3CX_GetAdditionalData( VL53LX_AdditionalData_t *pAdditionalData);
Charles MacNeill 5:89031b2f5316 603
Charles MacNeill 5:89031b2f5316 604
Charles MacNeill 5:89031b2f5316 605 /** @} VL53LX_measurement_group */
Charles MacNeill 5:89031b2f5316 606
Charles MacNeill 5:89031b2f5316 607 /** @defgroup VL53LX_Calibration_group VL53LX Calibration Functions
Charles MacNeill 5:89031b2f5316 608 * @brief Functions used for Calibration
Charles MacNeill 5:89031b2f5316 609 * @{
Charles MacNeill 5:89031b2f5316 610 */
Charles MacNeill 5:89031b2f5316 611
Charles MacNeill 5:89031b2f5316 612
Charles MacNeill 5:89031b2f5316 613 /**
Charles MacNeill 5:89031b2f5316 614 * @brief Set Tuning Parameter value for a given parameter ID
Charles MacNeill 5:89031b2f5316 615 *
Charles MacNeill 5:89031b2f5316 616 * @par Function Description
Charles MacNeill 5:89031b2f5316 617 * This function is used to improve the performance of the device. It permit to
Charles MacNeill 5:89031b2f5316 618 * change a particular value used for a timeout or a threshold or a constant
Charles MacNeill 5:89031b2f5316 619 * in an algorithm. The function will change the value of the parameter
Charles MacNeill 5:89031b2f5316 620 * identified by an unique ID.
Charles MacNeill 5:89031b2f5316 621 *
Charles MacNeill 5:89031b2f5316 622 * @note This function doesn't Access to the device
Charles MacNeill 5:89031b2f5316 623 *
Charles MacNeill 5:89031b2f5316 624 * @param Dev Device Handle
Charles MacNeill 5:89031b2f5316 625 * @param TuningParameterId Tuning Parameter ID
Charles MacNeill 5:89031b2f5316 626 * @param TuningParameterValue Tuning Parameter Value
Charles MacNeill 5:89031b2f5316 627 * @return VL53LX_Error_NONE Success
Charles MacNeill 5:89031b2f5316 628 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 629 */
Charles MacNeill 5:89031b2f5316 630 VL53LX_Error VL53L3CX_SetTuningParameter(
Charles MacNeill 5:89031b2f5316 631 uint16_t TuningParameterId, int32_t TuningParameterValue);
Charles MacNeill 5:89031b2f5316 632
Charles MacNeill 5:89031b2f5316 633 /**
Charles MacNeill 5:89031b2f5316 634 * @brief Get Tuning Parameter value for a given parameter ID
Charles MacNeill 5:89031b2f5316 635 *
Charles MacNeill 5:89031b2f5316 636 * @par Function Description
Charles MacNeill 5:89031b2f5316 637 * This function is used to get the value of the parameter
Charles MacNeill 5:89031b2f5316 638 * identified by an unique ID.
Charles MacNeill 5:89031b2f5316 639 *
Charles MacNeill 5:89031b2f5316 640 * @note This function doesn't Access to the device
Charles MacNeill 5:89031b2f5316 641 *
Charles MacNeill 5:89031b2f5316 642 * @param Dev Device Handle
Charles MacNeill 5:89031b2f5316 643 * @param TuningParameterId Tuning Parameter ID
Charles MacNeill 5:89031b2f5316 644 * @param pTuningParameterValue Pointer to Tuning Parameter Value
Charles MacNeill 5:89031b2f5316 645 * for a given TuningParameterId.
Charles MacNeill 5:89031b2f5316 646 * @return VL53LX_Error_NONE Success
Charles MacNeill 5:89031b2f5316 647 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 648 */
Charles MacNeill 5:89031b2f5316 649 VL53LX_Error VL53L3CX_GetTuningParameter(
Charles MacNeill 5:89031b2f5316 650 uint16_t TuningParameterId, int32_t *pTuningParameterValue);
Charles MacNeill 5:89031b2f5316 651
Charles MacNeill 5:89031b2f5316 652 /**
Charles MacNeill 5:89031b2f5316 653 * @brief Performs Reference Spad Management
Charles MacNeill 5:89031b2f5316 654 *
Charles MacNeill 5:89031b2f5316 655 * @par Function Description
Charles MacNeill 5:89031b2f5316 656 * The reference SPAD initialization procedure determines the minimum amount
Charles MacNeill 5:89031b2f5316 657 * of reference spads to be enables to achieve a target reference signal rate
Charles MacNeill 5:89031b2f5316 658 * and should be performed once during initialization.
Charles MacNeill 5:89031b2f5316 659 *
Charles MacNeill 5:89031b2f5316 660 * @note This function Access to the device
Charles MacNeill 5:89031b2f5316 661 *
Charles MacNeill 5:89031b2f5316 662 * @param Dev Device Handle
Charles MacNeill 5:89031b2f5316 663 * @return VL53LX_Error_NONE Success
Charles MacNeill 5:89031b2f5316 664 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 665 */
Charles MacNeill 5:89031b2f5316 666 VL53LX_Error VL53L3CX_PerformRefSpadManagement();
Charles MacNeill 5:89031b2f5316 667
Charles MacNeill 5:89031b2f5316 668 /**
Charles MacNeill 5:89031b2f5316 669 * @brief Enable/Disable dynamic Xtalk compensation feature
Charles MacNeill 5:89031b2f5316 670 *
Charles MacNeill 5:89031b2f5316 671 * Enable/Disable dynamic Xtalk compensation (aka smudge correction).
Charles MacNeill 5:89031b2f5316 672 *
Charles MacNeill 5:89031b2f5316 673 * @param Dev Device Handle
Charles MacNeill 5:89031b2f5316 674 * @param Mode Set the smudge correction mode
Charles MacNeill 5:89031b2f5316 675 * See ::VL53LX_SmudgeCorrectionModes
Charles MacNeill 5:89031b2f5316 676 * @return VL53LX_Error_NONE Success
Charles MacNeill 5:89031b2f5316 677 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 678 */
Charles MacNeill 5:89031b2f5316 679 VL53LX_Error VL53L3CX_SmudgeCorrectionEnable(
Charles MacNeill 5:89031b2f5316 680 VL53LX_SmudgeCorrectionModes Mode);
Charles MacNeill 5:89031b2f5316 681
Charles MacNeill 5:89031b2f5316 682
Charles MacNeill 5:89031b2f5316 683 /**
Charles MacNeill 5:89031b2f5316 684 * @brief Enable/Disable Cross talk compensation feature
Charles MacNeill 5:89031b2f5316 685 *
Charles MacNeill 5:89031b2f5316 686 * Enable/Disable Cross Talk correction.
Charles MacNeill 5:89031b2f5316 687 *
Charles MacNeill 5:89031b2f5316 688 * @param Dev Device Handle
Charles MacNeill 5:89031b2f5316 689 * @param XTalkCompensationEnable Cross talk compensation
Charles MacNeill 5:89031b2f5316 690 * to be set 0 = disabled or 1 = enabled.
Charles MacNeill 5:89031b2f5316 691 * @return VL53LX_Error_NONE Success
Charles MacNeill 5:89031b2f5316 692 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 693 */
Charles MacNeill 5:89031b2f5316 694 VL53LX_Error VL53L3CX_SetXTalkCompensationEnable(
Charles MacNeill 5:89031b2f5316 695 uint8_t XTalkCompensationEnable);
Charles MacNeill 5:89031b2f5316 696
Charles MacNeill 5:89031b2f5316 697 /**
Charles MacNeill 5:89031b2f5316 698 * @brief Get Cross talk compensation rate enable
Charles MacNeill 5:89031b2f5316 699 *
Charles MacNeill 5:89031b2f5316 700 * Get if the Cross Talk is Enabled or Disabled.
Charles MacNeill 5:89031b2f5316 701 *
Charles MacNeill 5:89031b2f5316 702 * @note This function doesn't access to the device
Charles MacNeill 5:89031b2f5316 703 *
Charles MacNeill 5:89031b2f5316 704 * @param Dev Device Handle
Charles MacNeill 5:89031b2f5316 705 * @param pXTalkCompensationEnable Pointer to the Cross talk compensation
Charles MacNeill 5:89031b2f5316 706 * state 0=disabled or 1 = enabled
Charles MacNeill 5:89031b2f5316 707 * @return VL53LX_Error_NONE Success
Charles MacNeill 5:89031b2f5316 708 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 709 */
Charles MacNeill 5:89031b2f5316 710 VL53LX_Error VL53L3CX_GetXTalkCompensationEnable(
Charles MacNeill 5:89031b2f5316 711 uint8_t *pXTalkCompensationEnable);
Charles MacNeill 5:89031b2f5316 712
Charles MacNeill 5:89031b2f5316 713 /**
Charles MacNeill 5:89031b2f5316 714 * @brief Perform XTalk Calibration
Charles MacNeill 5:89031b2f5316 715 *
Charles MacNeill 5:89031b2f5316 716 * @details Perform a XTalk calibration of the Device.
Charles MacNeill 5:89031b2f5316 717 * This function will launch a measurement, if interrupts
Charles MacNeill 5:89031b2f5316 718 * are enabled an interrupt will be done.
Charles MacNeill 5:89031b2f5316 719 * This function will clear the interrupt generated automatically.
Charles MacNeill 5:89031b2f5316 720 * This function will program a new value for the XTalk compensation
Charles MacNeill 5:89031b2f5316 721 * and it will enable the cross talk before exit.
Charles MacNeill 5:89031b2f5316 722 *
Charles MacNeill 5:89031b2f5316 723 * @warning This function is a blocking function
Charles MacNeill 5:89031b2f5316 724 *
Charles MacNeill 5:89031b2f5316 725 * @note This function Access to the device
Charles MacNeill 5:89031b2f5316 726 *
Charles MacNeill 5:89031b2f5316 727 * @param Dev Device Handle
Charles MacNeill 5:89031b2f5316 728 * the calibration sets appropriate
Charles MacNeill 5:89031b2f5316 729 * distance mode and thus override existing one<br>
Charles MacNeill 5:89031b2f5316 730 * The calibration uses a target which should be located at least @60cm from the
Charles MacNeill 5:89031b2f5316 731 * device. The actual location of the target shall be passed
Charles MacNeill 5:89031b2f5316 732 * through the bare driver tuning parameters table
Charles MacNeill 5:89031b2f5316 733 *
Charles MacNeill 5:89031b2f5316 734 * @return VL53LX_Error_NONE Success
Charles MacNeill 5:89031b2f5316 735 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 736 */
Charles MacNeill 5:89031b2f5316 737 VL53LX_Error VL53L3CX_PerformXTalkCalibration();
Charles MacNeill 5:89031b2f5316 738
Charles MacNeill 5:89031b2f5316 739
Charles MacNeill 5:89031b2f5316 740 /**
Charles MacNeill 5:89031b2f5316 741 * @brief Define the mode to be used for the offset correction
Charles MacNeill 5:89031b2f5316 742 *
Charles MacNeill 5:89031b2f5316 743 * Define the mode to be used for the offset correction.
Charles MacNeill 5:89031b2f5316 744 *
Charles MacNeill 5:89031b2f5316 745 * @param Dev Device Handle
Charles MacNeill 5:89031b2f5316 746 * @param OffsetCorrectionMode Offset Correction Mode valid values are:
Charles MacNeill 5:89031b2f5316 747 * @li VL53LX_OFFSETCORRECTIONMODE_STANDARD
Charles MacNeill 5:89031b2f5316 748 * @li VL53LX_OFFSETCORRECTIONMODE_PERVCSEL
Charles MacNeill 5:89031b2f5316 749 *
Charles MacNeill 5:89031b2f5316 750 * @return VL53LX_Error_NONE Success
Charles MacNeill 5:89031b2f5316 751 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 752 */
Charles MacNeill 5:89031b2f5316 753 VL53LX_Error VL53L3CX_SetOffsetCorrectionMode(
Charles MacNeill 5:89031b2f5316 754 VL53LX_OffsetCorrectionModes OffsetCorrectionMode);
Charles MacNeill 5:89031b2f5316 755
Charles MacNeill 5:89031b2f5316 756
Charles MacNeill 5:89031b2f5316 757 /**
Charles MacNeill 5:89031b2f5316 758 * @brief Perform Offset simple Calibration
Charles MacNeill 5:89031b2f5316 759 *
Charles MacNeill 5:89031b2f5316 760 * @details Perform a very simple offset calibration of the Device.
Charles MacNeill 5:89031b2f5316 761 * This function will launch few ranging measurements and computes offset
Charles MacNeill 5:89031b2f5316 762 * calibration. The preset mode and the distance mode MUST be set by the
Charles MacNeill 5:89031b2f5316 763 * application before to call this function.
Charles MacNeill 5:89031b2f5316 764 *
Charles MacNeill 5:89031b2f5316 765 * @warning This function is a blocking function
Charles MacNeill 5:89031b2f5316 766 *
Charles MacNeill 5:89031b2f5316 767 * @note This function Access to the device
Charles MacNeill 5:89031b2f5316 768 *
Charles MacNeill 5:89031b2f5316 769 * @param Dev Device Handle
Charles MacNeill 5:89031b2f5316 770 * @param CalDistanceMilliMeter Calibration distance value used for the
Charles MacNeill 5:89031b2f5316 771 * offset compensation.
Charles MacNeill 5:89031b2f5316 772 *
Charles MacNeill 5:89031b2f5316 773 * @return VL53LX_Error_NONE
Charles MacNeill 5:89031b2f5316 774 * @return VL53LX_Error_OFFSET_CAL_NO_SAMPLE_FAIL the calibration failed by
Charles MacNeill 5:89031b2f5316 775 * lack of valid measurements
Charles MacNeill 5:89031b2f5316 776 * @return VL53LX_WARNING_OFFSET_CAL_SIGMA_TOO_HIGH means that the target
Charles MacNeill 5:89031b2f5316 777 * distance combined to the number of loops performed in the calibration lead to
Charles MacNeill 5:89031b2f5316 778 * an internal overflow. Try to reduce the distance of the target (140 mm)
Charles MacNeill 5:89031b2f5316 779 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 780 */
Charles MacNeill 5:89031b2f5316 781 VL53LX_Error VL53L3CX_PerformOffsetSimpleCalibration(
Charles MacNeill 5:89031b2f5316 782 int32_t CalDistanceMilliMeter);
Charles MacNeill 5:89031b2f5316 783
Charles MacNeill 5:89031b2f5316 784 /**
Charles MacNeill 5:89031b2f5316 785 * @brief Perform Offset simple Calibration with a "zero distance" target
Charles MacNeill 5:89031b2f5316 786 *
Charles MacNeill 5:89031b2f5316 787 * @details Perform a simple offset calibration of the Device.
Charles MacNeill 5:89031b2f5316 788 * This function will launch few ranging measurements and computes offset
Charles MacNeill 5:89031b2f5316 789 * calibration. The preset mode and the distance mode MUST be set by the
Charles MacNeill 5:89031b2f5316 790 * application before to call this function.
Charles MacNeill 5:89031b2f5316 791 * A target must be place very close to the device.
Charles MacNeill 5:89031b2f5316 792 * Ideally the target shall be touching the coverglass.
Charles MacNeill 5:89031b2f5316 793 *
Charles MacNeill 5:89031b2f5316 794 * @warning This function is a blocking function
Charles MacNeill 5:89031b2f5316 795 *
Charles MacNeill 5:89031b2f5316 796 * @note This function Access to the device
Charles MacNeill 5:89031b2f5316 797 *
Charles MacNeill 5:89031b2f5316 798 * @param Dev Device Handle
Charles MacNeill 5:89031b2f5316 799 *
Charles MacNeill 5:89031b2f5316 800 * @return VL53LX_Error_NONE
Charles MacNeill 5:89031b2f5316 801 * @return VL53LX_Error_OFFSET_CAL_NO_SAMPLE_FAIL the calibration failed by
Charles MacNeill 5:89031b2f5316 802 * lack of valid measurements
Charles MacNeill 5:89031b2f5316 803 * @return VL53LX_WARNING_OFFSET_CAL_SIGMA_TOO_HIGH means that the target
Charles MacNeill 5:89031b2f5316 804 * distance is too large, try to put the target closer to the device
Charles MacNeill 5:89031b2f5316 805 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 806 */
Charles MacNeill 5:89031b2f5316 807 VL53LX_Error VL53L3CX_PerformOffsetZeroDistanceCalibration();
Charles MacNeill 5:89031b2f5316 808
Charles MacNeill 5:89031b2f5316 809
Charles MacNeill 5:89031b2f5316 810 /**
Charles MacNeill 5:89031b2f5316 811 * @brief Perform Offset per Vcsel Calibration. i.e. per distance mode
Charles MacNeill 5:89031b2f5316 812 *
Charles MacNeill 5:89031b2f5316 813 * @details Perform offset calibration of the Device depending on the
Charles MacNeill 5:89031b2f5316 814 * three distance mode settings: short, medium and long.
Charles MacNeill 5:89031b2f5316 815 * This function will launch few ranging measurements and computes offset
Charles MacNeill 5:89031b2f5316 816 * calibration in each of the three distance modes.
Charles MacNeill 5:89031b2f5316 817 * The preset mode MUST be set by the application before to call this function.
Charles MacNeill 5:89031b2f5316 818 *
Charles MacNeill 5:89031b2f5316 819 * @warning This function is a blocking function
Charles MacNeill 5:89031b2f5316 820 *
Charles MacNeill 5:89031b2f5316 821 * @note This function Access to the device
Charles MacNeill 5:89031b2f5316 822 *
Charles MacNeill 5:89031b2f5316 823 * @param Dev Device Handle
Charles MacNeill 5:89031b2f5316 824 * @param CalDistanceMilliMeter Distance of the target used for the
Charles MacNeill 5:89031b2f5316 825 * offset compensation calibration.
Charles MacNeill 5:89031b2f5316 826 *
Charles MacNeill 5:89031b2f5316 827 * @return VL53LX_Error_NONE
Charles MacNeill 5:89031b2f5316 828 * @return VL53LX_Error_OFFSET_CAL_NO_SAMPLE_FAIL the calibration failed by
Charles MacNeill 5:89031b2f5316 829 * lack of valid measurements
Charles MacNeill 5:89031b2f5316 830 * @return VL53LX_WARNING_OFFSET_CAL_SIGMA_TOO_HIGH means that the target
Charles MacNeill 5:89031b2f5316 831 * distance combined to the number of loops performed in the calibration lead to
Charles MacNeill 5:89031b2f5316 832 * an internal overflow. Try to reduce the distance of the target (140 mm)
Charles MacNeill 5:89031b2f5316 833 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 834 */
Charles MacNeill 5:89031b2f5316 835 VL53LX_Error VL53L3CX_PerformOffsetPerVcselCalibration(
Charles MacNeill 5:89031b2f5316 836 int32_t CalDistanceMilliMeter);
Charles MacNeill 5:89031b2f5316 837
Charles MacNeill 5:89031b2f5316 838
Charles MacNeill 5:89031b2f5316 839 /**
Charles MacNeill 5:89031b2f5316 840 * @brief Sets the Calibration Data.
Charles MacNeill 5:89031b2f5316 841 *
Charles MacNeill 5:89031b2f5316 842 * @par Function Description
Charles MacNeill 5:89031b2f5316 843 * This function set all the Calibration Data issued from the functions
Charles MacNeill 5:89031b2f5316 844 * @a VL53LX_PerformRefSpadManagement(), @a VL53LX_PerformXTalkCalibration,
Charles MacNeill 5:89031b2f5316 845 * @a VL53LX_PerformOffsetCalibration()
Charles MacNeill 5:89031b2f5316 846 *
Charles MacNeill 5:89031b2f5316 847 * @note This function doesn't Accesses the device
Charles MacNeill 5:89031b2f5316 848 *
Charles MacNeill 5:89031b2f5316 849 * @param Dev Device Handle
Charles MacNeill 5:89031b2f5316 850 * @param *pCalibrationData Pointer to Calibration data to be set.
Charles MacNeill 5:89031b2f5316 851 * @return VL53LX_Error_NONE Success
Charles MacNeill 5:89031b2f5316 852 * @return VL53LX_Error_INVALID_PARAMS pCalibrationData points to an older
Charles MacNeill 5:89031b2f5316 853 * version of the inner structure. Need for support to convert its content.
Charles MacNeill 5:89031b2f5316 854 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 855 */
Charles MacNeill 5:89031b2f5316 856 VL53LX_Error VL53L3CX_SetCalibrationData(
Charles MacNeill 5:89031b2f5316 857 VL53LX_CalibrationData_t *pCalibrationData);
Charles MacNeill 5:89031b2f5316 858
Charles MacNeill 5:89031b2f5316 859 /**
Charles MacNeill 5:89031b2f5316 860 * @brief Gets the Calibration Data.
Charles MacNeill 5:89031b2f5316 861 *
Charles MacNeill 5:89031b2f5316 862 * @par Function Description
Charles MacNeill 5:89031b2f5316 863 * This function get all the Calibration Data issued from the functions
Charles MacNeill 5:89031b2f5316 864 * @a VL53LX_PerformRefSpadManagement(), @a VL53LX_PerformXTalkCalibration,
Charles MacNeill 5:89031b2f5316 865 * @a VL53LX_PerformOffsetCalibration()
Charles MacNeill 5:89031b2f5316 866 *
Charles MacNeill 5:89031b2f5316 867 * @note This function doesn't Accesses the device
Charles MacNeill 5:89031b2f5316 868 *
Charles MacNeill 5:89031b2f5316 869 * @param Dev Device Handle
Charles MacNeill 5:89031b2f5316 870 * @param *pCalibrationData pointer where to store Calibration
Charles MacNeill 5:89031b2f5316 871 * data.
Charles MacNeill 5:89031b2f5316 872 * @return VL53LX_Error_NONE Success
Charles MacNeill 5:89031b2f5316 873 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 874 */
Charles MacNeill 5:89031b2f5316 875 VL53LX_Error VL53L3CX_GetCalibrationData(
Charles MacNeill 5:89031b2f5316 876 VL53LX_CalibrationData_t *pCalibrationData);
Charles MacNeill 5:89031b2f5316 877
Charles MacNeill 5:89031b2f5316 878 /** @} VL53LX_Calibration_group */
Charles MacNeill 5:89031b2f5316 879
Charles MacNeill 5:89031b2f5316 880 /** @} VL53LX_group */
Charles MacNeill 5:89031b2f5316 881 VL53LX_Error VL53L3CX_RdWord(VL53LX_DEV Dev, uint16_t index, uint16_t *data);
Charles MacNeill 5:89031b2f5316 882
Charles MacNeill 5:89031b2f5316 883 // protected:
Charles MacNeill 5:89031b2f5316 884
Charles MacNeill 5:89031b2f5316 885 /* vl53lx_api_core.h functions */
Charles MacNeill 5:89031b2f5316 886
Charles MacNeill 5:89031b2f5316 887 VL53LX_Error VL53L3CX_get_version(VL53LX_ll_version_t *pversion);
Charles MacNeill 5:89031b2f5316 888 VL53LX_Error VL53L3CX_data_init(uint8_t read_p2p_data);
Charles MacNeill 5:89031b2f5316 889 VL53LX_Error VL53L3CX_read_p2p_data();
Charles MacNeill 5:89031b2f5316 890 VL53LX_Error VL53L3CX_set_part_to_part_data(VL53LX_calibration_data_t *pcal_data);
Charles MacNeill 5:89031b2f5316 891 VL53LX_Error VL53L3CX_get_part_to_part_data(VL53LX_calibration_data_t *pcal_data);
Charles MacNeill 5:89031b2f5316 892 VL53LX_Error VL53L3CX_get_tuning_debug_data(VL53LX_tuning_parameters_t *ptun_data);
Charles MacNeill 5:89031b2f5316 893 VL53LX_Error VL53L3CX_set_inter_measurement_period_ms(uint32_t inter_measurement_period_ms);
Charles MacNeill 5:89031b2f5316 894 VL53LX_Error VL53L3CX_get_inter_measurement_period_ms(uint32_t *pinter_measurement_period_ms);
Charles MacNeill 5:89031b2f5316 895 VL53LX_Error VL53L3CX_set_timeouts_us(
Charles MacNeill 5:89031b2f5316 896 uint32_t phasecal_config_timeout_us,
Charles MacNeill 5:89031b2f5316 897 uint32_t mm_config_timeout_us,
Charles MacNeill 5:89031b2f5316 898 uint32_t range_config_timeout_us);
Charles MacNeill 5:89031b2f5316 899
Charles MacNeill 5:89031b2f5316 900 VL53LX_Error VL53L3CX_get_timeouts_us(
Charles MacNeill 5:89031b2f5316 901 uint32_t *pphasecal_config_timeout_us,
Charles MacNeill 5:89031b2f5316 902 uint32_t *pmm_config_timeout_us,
Charles MacNeill 5:89031b2f5316 903 uint32_t *prange_config_timeout_us);
Charles MacNeill 5:89031b2f5316 904
Charles MacNeill 5:89031b2f5316 905
Charles MacNeill 5:89031b2f5316 906
Charles MacNeill 5:89031b2f5316 907
Charles MacNeill 5:89031b2f5316 908 VL53LX_Error VL53L3CX_set_user_zone(
Charles MacNeill 5:89031b2f5316 909 VL53LX_user_zone_t *puser_zone);
Charles MacNeill 5:89031b2f5316 910
Charles MacNeill 5:89031b2f5316 911 VL53LX_Error VL53L3CX_get_user_zone(
Charles MacNeill 5:89031b2f5316 912 VL53LX_user_zone_t *puser_zone);
Charles MacNeill 5:89031b2f5316 913
Charles MacNeill 5:89031b2f5316 914
Charles MacNeill 5:89031b2f5316 915 VL53LX_Error VL53L3CX_get_mode_mitigation_roi(
Charles MacNeill 5:89031b2f5316 916 VL53LX_user_zone_t *pmm_roi);
Charles MacNeill 5:89031b2f5316 917
Charles MacNeill 5:89031b2f5316 918
Charles MacNeill 5:89031b2f5316 919 VL53LX_Error VL53L3CX_set_zone_config(
Charles MacNeill 5:89031b2f5316 920 VL53LX_zone_config_t *pzone_cfg);
Charles MacNeill 5:89031b2f5316 921
Charles MacNeill 5:89031b2f5316 922 VL53LX_Error VL53L3CX_get_zone_config(
Charles MacNeill 5:89031b2f5316 923 VL53LX_zone_config_t *pzone_cfg);
Charles MacNeill 5:89031b2f5316 924
Charles MacNeill 5:89031b2f5316 925
Charles MacNeill 5:89031b2f5316 926 VL53LX_Error VL53L3CX_set_preset_mode(
Charles MacNeill 5:89031b2f5316 927 VL53LX_DevicePresetModes device_preset_mode,
Charles MacNeill 5:89031b2f5316 928 uint16_t dss_config__target_total_rate_mcps,
Charles MacNeill 5:89031b2f5316 929 uint32_t phasecal_config_timeout_us,
Charles MacNeill 5:89031b2f5316 930 uint32_t mm_config_timeout_us,
Charles MacNeill 5:89031b2f5316 931 uint32_t range_config_timeout_us,
Charles MacNeill 5:89031b2f5316 932 uint32_t inter_measurement_period_ms);
Charles MacNeill 5:89031b2f5316 933
Charles MacNeill 5:89031b2f5316 934 VL53LX_Error VL53L3CX_get_preset_mode_timing_cfg(
Charles MacNeill 5:89031b2f5316 935 VL53LX_DevicePresetModes device_preset_mode,
Charles MacNeill 5:89031b2f5316 936 uint16_t *pdss_config__target_total_rate_mcps,
Charles MacNeill 5:89031b2f5316 937 uint32_t *pphasecal_config_timeout_us,
Charles MacNeill 5:89031b2f5316 938 uint32_t *pmm_config_timeout_us,
Charles MacNeill 5:89031b2f5316 939 uint32_t *prange_config_timeout_us);
Charles MacNeill 5:89031b2f5316 940
Charles MacNeill 5:89031b2f5316 941
Charles MacNeill 5:89031b2f5316 942 VL53LX_Error VL53L3CX_set_zone_preset(
Charles MacNeill 5:89031b2f5316 943 VL53LX_DeviceZonePreset zone_preset);
Charles MacNeill 5:89031b2f5316 944
Charles MacNeill 5:89031b2f5316 945
Charles MacNeill 5:89031b2f5316 946 VL53LX_Error VL53L3CX_enable_xtalk_compensation();
Charles MacNeill 5:89031b2f5316 947
Charles MacNeill 5:89031b2f5316 948 VL53LX_Error VL53L3CX_disable_xtalk_compensation();
Charles MacNeill 5:89031b2f5316 949
Charles MacNeill 5:89031b2f5316 950
Charles MacNeill 5:89031b2f5316 951 void VL53L3CX_get_xtalk_compensation_enable(
Charles MacNeill 5:89031b2f5316 952 uint8_t *pcrosstalk_compensation_enable);
Charles MacNeill 5:89031b2f5316 953
Charles MacNeill 5:89031b2f5316 954
Charles MacNeill 5:89031b2f5316 955 VL53LX_Error VL53L3CX_init_and_start_range(
Charles MacNeill 5:89031b2f5316 956 uint8_t measurement_mode,
Charles MacNeill 5:89031b2f5316 957 VL53LX_DeviceConfigLevel device_config_level);
Charles MacNeill 5:89031b2f5316 958
Charles MacNeill 5:89031b2f5316 959
Charles MacNeill 5:89031b2f5316 960 VL53LX_Error VL53L3CX_stop_range(); // remove
Charles MacNeill 5:89031b2f5316 961
Charles MacNeill 5:89031b2f5316 962 VL53LX_Error VL53L3CX_get_measurement_results(
Charles MacNeill 5:89031b2f5316 963 VL53LX_DeviceResultsLevel device_result_level);
Charles MacNeill 5:89031b2f5316 964
Charles MacNeill 5:89031b2f5316 965
Charles MacNeill 5:89031b2f5316 966 VL53LX_Error VL53L3CX_get_device_results(
Charles MacNeill 5:89031b2f5316 967 VL53LX_DeviceResultsLevel device_result_level,
Charles MacNeill 5:89031b2f5316 968 VL53LX_range_results_t *prange_results);
Charles MacNeill 5:89031b2f5316 969
Charles MacNeill 5:89031b2f5316 970
Charles MacNeill 5:89031b2f5316 971 VL53LX_Error VL53L3CX_clear_interrupt_and_enable_next_range(
Charles MacNeill 5:89031b2f5316 972 uint8_t measurement_mode);
Charles MacNeill 5:89031b2f5316 973
Charles MacNeill 5:89031b2f5316 974
Charles MacNeill 5:89031b2f5316 975 VL53LX_Error VL53L3CX_get_histogram_bin_data(
Charles MacNeill 5:89031b2f5316 976 VL53LX_histogram_bin_data_t *phist_data);
Charles MacNeill 5:89031b2f5316 977
Charles MacNeill 5:89031b2f5316 978 void VL53L3CX_copy_sys_and_core_results_to_range_results(
Charles MacNeill 5:89031b2f5316 979 int32_t gain_factor,
Charles MacNeill 5:89031b2f5316 980 VL53LX_system_results_t *psys,
Charles MacNeill 5:89031b2f5316 981 VL53LX_core_results_t *pcore,
Charles MacNeill 5:89031b2f5316 982 VL53LX_range_results_t *presults);
Charles MacNeill 5:89031b2f5316 983
Charles MacNeill 5:89031b2f5316 984
Charles MacNeill 5:89031b2f5316 985
Charles MacNeill 5:89031b2f5316 986 VL53LX_Error VL53L3CX_set_zone_dss_config(
Charles MacNeill 5:89031b2f5316 987 VL53LX_zone_private_dyn_cfg_t *pzone_dyn_cfg);
Charles MacNeill 5:89031b2f5316 988
Charles MacNeill 5:89031b2f5316 989
Charles MacNeill 5:89031b2f5316 990 VL53LX_Error VL53L3CX_set_dmax_mode(
Charles MacNeill 5:89031b2f5316 991 VL53LX_DeviceDmaxMode dmax_mode);
Charles MacNeill 5:89031b2f5316 992
Charles MacNeill 5:89031b2f5316 993
Charles MacNeill 5:89031b2f5316 994 VL53LX_Error VL53L3CX_get_dmax_mode(
Charles MacNeill 5:89031b2f5316 995 VL53LX_DeviceDmaxMode *pdmax_mode);
Charles MacNeill 5:89031b2f5316 996
Charles MacNeill 5:89031b2f5316 997
Charles MacNeill 5:89031b2f5316 998 VL53LX_Error VL53L3CX_set_dmax_calibration_data(
Charles MacNeill 5:89031b2f5316 999 VL53LX_DeviceDmaxMode dmax_mode,
Charles MacNeill 5:89031b2f5316 1000 VL53LX_dmax_calibration_data_t *pdmax_cal);
Charles MacNeill 5:89031b2f5316 1001
Charles MacNeill 5:89031b2f5316 1002
Charles MacNeill 5:89031b2f5316 1003 VL53LX_Error VL53L3CX_get_dmax_calibration_data(
Charles MacNeill 5:89031b2f5316 1004 VL53LX_DeviceDmaxMode dmax_mode,
Charles MacNeill 5:89031b2f5316 1005 VL53LX_dmax_calibration_data_t *pdmax_cal);
Charles MacNeill 5:89031b2f5316 1006
Charles MacNeill 5:89031b2f5316 1007
Charles MacNeill 5:89031b2f5316 1008 VL53LX_Error VL53L3CX_set_offset_correction_mode(
Charles MacNeill 5:89031b2f5316 1009 VL53LX_OffsetCalibrationMode offset_cor_mode);
Charles MacNeill 5:89031b2f5316 1010
Charles MacNeill 5:89031b2f5316 1011
Charles MacNeill 5:89031b2f5316 1012 VL53LX_Error VL53L3CX_get_offset_correction_mode(
Charles MacNeill 5:89031b2f5316 1013 VL53LX_OffsetCorrectionMode *poffset_cor_mode);
Charles MacNeill 5:89031b2f5316 1014
Charles MacNeill 5:89031b2f5316 1015
Charles MacNeill 5:89031b2f5316 1016 VL53LX_Error VL53L3CX_et_zone_calibration_data(
Charles MacNeill 5:89031b2f5316 1017 VL53LX_zone_calibration_results_t *pzone_cal);
Charles MacNeill 5:89031b2f5316 1018
Charles MacNeill 5:89031b2f5316 1019
Charles MacNeill 5:89031b2f5316 1020 VL53LX_Error VL53L3CX_set_zone_calibration_data(
Charles MacNeill 5:89031b2f5316 1021 VL53LX_zone_calibration_results_t *pzone_cal);
Charles MacNeill 5:89031b2f5316 1022
Charles MacNeill 5:89031b2f5316 1023
Charles MacNeill 5:89031b2f5316 1024
Charles MacNeill 5:89031b2f5316 1025 VL53LX_Error VL53L3CX_get_tuning_parm(
Charles MacNeill 5:89031b2f5316 1026 VL53LX_TuningParms tuning_parm_key,
Charles MacNeill 5:89031b2f5316 1027 int32_t *ptuning_parm_value);
Charles MacNeill 5:89031b2f5316 1028
Charles MacNeill 5:89031b2f5316 1029
Charles MacNeill 5:89031b2f5316 1030
Charles MacNeill 5:89031b2f5316 1031 VL53LX_Error VL53L3CX_set_tuning_parm(
Charles MacNeill 5:89031b2f5316 1032 VL53LX_TuningParms tuning_parm_key,
Charles MacNeill 5:89031b2f5316 1033 int32_t tuning_parm_value);
Charles MacNeill 5:89031b2f5316 1034
Charles MacNeill 5:89031b2f5316 1035
Charles MacNeill 5:89031b2f5316 1036
Charles MacNeill 5:89031b2f5316 1037 VL53LX_Error VL53L3CX_dynamic_xtalk_correction_enable();
Charles MacNeill 5:89031b2f5316 1038
Charles MacNeill 5:89031b2f5316 1039
Charles MacNeill 5:89031b2f5316 1040
Charles MacNeill 5:89031b2f5316 1041 VL53LX_Error VL53L3CX_dynamic_xtalk_correction_disable();
Charles MacNeill 5:89031b2f5316 1042
Charles MacNeill 5:89031b2f5316 1043
Charles MacNeill 5:89031b2f5316 1044
Charles MacNeill 5:89031b2f5316 1045
Charles MacNeill 5:89031b2f5316 1046 VL53LX_Error VL53L3CX_dynamic_xtalk_correction_apply_enable();
Charles MacNeill 5:89031b2f5316 1047
Charles MacNeill 5:89031b2f5316 1048
Charles MacNeill 5:89031b2f5316 1049
Charles MacNeill 5:89031b2f5316 1050 VL53LX_Error VL53L3CX_dynamic_xtalk_correction_apply_disable();
Charles MacNeill 5:89031b2f5316 1051
Charles MacNeill 5:89031b2f5316 1052
Charles MacNeill 5:89031b2f5316 1053
Charles MacNeill 5:89031b2f5316 1054 VL53LX_Error VL53L3CX_dynamic_xtalk_correction_single_apply_enable();
Charles MacNeill 5:89031b2f5316 1055
Charles MacNeill 5:89031b2f5316 1056
Charles MacNeill 5:89031b2f5316 1057
Charles MacNeill 5:89031b2f5316 1058 VL53LX_Error VL53L3CX_dynamic_xtalk_correction_single_apply_disable();
Charles MacNeill 5:89031b2f5316 1059
Charles MacNeill 5:89031b2f5316 1060
Charles MacNeill 5:89031b2f5316 1061 VL53LX_Error VL53L3CX_get_current_xtalk_settings(
Charles MacNeill 5:89031b2f5316 1062
Charles MacNeill 5:89031b2f5316 1063 VL53LX_xtalk_calibration_results_t *pxtalk
Charles MacNeill 5:89031b2f5316 1064 );
Charles MacNeill 5:89031b2f5316 1065
Charles MacNeill 5:89031b2f5316 1066
Charles MacNeill 5:89031b2f5316 1067
Charles MacNeill 5:89031b2f5316 1068 VL53LX_Error VL53L3CX_set_current_xtalk_settings(
Charles MacNeill 5:89031b2f5316 1069
Charles MacNeill 5:89031b2f5316 1070 VL53LX_xtalk_calibration_results_t *pxtalk
Charles MacNeill 5:89031b2f5316 1071 );
Charles MacNeill 5:89031b2f5316 1072
Charles MacNeill 5:89031b2f5316 1073 VL53LX_Error VL53L3CX_load_patch();
Charles MacNeill 5:89031b2f5316 1074
Charles MacNeill 5:89031b2f5316 1075 VL53LX_Error VL53L3CX_unload_patch();
Charles MacNeill 5:89031b2f5316 1076
Charles MacNeill 5:89031b2f5316 1077
Charles MacNeill 5:89031b2f5316 1078 /* vl53lx_register_funcs.h */
Charles MacNeill 5:89031b2f5316 1079
Charles MacNeill 5:89031b2f5316 1080
Charles MacNeill 5:89031b2f5316 1081 VL53LX_Error VL53L3CX_i2c_encode_static_nvm_managed(
Charles MacNeill 5:89031b2f5316 1082 VL53LX_static_nvm_managed_t *pdata,
Charles MacNeill 5:89031b2f5316 1083 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 1084 uint8_t *pbuffer);
Charles MacNeill 5:89031b2f5316 1085
Charles MacNeill 5:89031b2f5316 1086
Charles MacNeill 5:89031b2f5316 1087
Charles MacNeill 5:89031b2f5316 1088
Charles MacNeill 5:89031b2f5316 1089 VL53LX_Error VL53L3CX_i2c_decode_static_nvm_managed(
Charles MacNeill 5:89031b2f5316 1090 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 1091 uint8_t *pbuffer,
Charles MacNeill 5:89031b2f5316 1092 VL53LX_static_nvm_managed_t *pdata);
Charles MacNeill 5:89031b2f5316 1093
Charles MacNeill 5:89031b2f5316 1094
Charles MacNeill 5:89031b2f5316 1095
Charles MacNeill 5:89031b2f5316 1096
Charles MacNeill 5:89031b2f5316 1097 VL53LX_Error VL53L3CX_set_static_nvm_managed(
Charles MacNeill 5:89031b2f5316 1098 VL53LX_static_nvm_managed_t *pdata);
Charles MacNeill 5:89031b2f5316 1099
Charles MacNeill 5:89031b2f5316 1100
Charles MacNeill 5:89031b2f5316 1101
Charles MacNeill 5:89031b2f5316 1102
Charles MacNeill 5:89031b2f5316 1103 VL53LX_Error VL53L3CX_get_static_nvm_managed(
Charles MacNeill 5:89031b2f5316 1104 VL53LX_static_nvm_managed_t *pdata);
Charles MacNeill 5:89031b2f5316 1105
Charles MacNeill 5:89031b2f5316 1106
Charles MacNeill 5:89031b2f5316 1107
Charles MacNeill 5:89031b2f5316 1108
Charles MacNeill 5:89031b2f5316 1109 VL53LX_Error VL53L3CX_i2c_encode_customer_nvm_managed(
Charles MacNeill 5:89031b2f5316 1110 VL53LX_customer_nvm_managed_t *pdata,
Charles MacNeill 5:89031b2f5316 1111 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 1112 uint8_t *pbuffer);
Charles MacNeill 5:89031b2f5316 1113
Charles MacNeill 5:89031b2f5316 1114
Charles MacNeill 5:89031b2f5316 1115
Charles MacNeill 5:89031b2f5316 1116
Charles MacNeill 5:89031b2f5316 1117 VL53LX_Error VL53L3CX_i2c_decode_customer_nvm_managed(
Charles MacNeill 5:89031b2f5316 1118 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 1119 uint8_t *pbuffer,
Charles MacNeill 5:89031b2f5316 1120 VL53LX_customer_nvm_managed_t *pdata);
Charles MacNeill 5:89031b2f5316 1121
Charles MacNeill 5:89031b2f5316 1122
Charles MacNeill 5:89031b2f5316 1123
Charles MacNeill 5:89031b2f5316 1124
Charles MacNeill 5:89031b2f5316 1125 VL53LX_Error VL53L3CX_set_customer_nvm_managed(
Charles MacNeill 5:89031b2f5316 1126 VL53LX_customer_nvm_managed_t *pdata);
Charles MacNeill 5:89031b2f5316 1127
Charles MacNeill 5:89031b2f5316 1128
Charles MacNeill 5:89031b2f5316 1129
Charles MacNeill 5:89031b2f5316 1130
Charles MacNeill 5:89031b2f5316 1131 VL53LX_Error VL53L3CX_get_customer_nvm_managed(
Charles MacNeill 5:89031b2f5316 1132 VL53LX_customer_nvm_managed_t *pdata);
Charles MacNeill 5:89031b2f5316 1133
Charles MacNeill 5:89031b2f5316 1134
Charles MacNeill 5:89031b2f5316 1135
Charles MacNeill 5:89031b2f5316 1136
Charles MacNeill 5:89031b2f5316 1137 VL53LX_Error VL53L3CX_i2c_encode_static_config(
Charles MacNeill 5:89031b2f5316 1138 VL53LX_static_config_t *pdata,
Charles MacNeill 5:89031b2f5316 1139 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 1140 uint8_t *pbuffer);
Charles MacNeill 5:89031b2f5316 1141
Charles MacNeill 5:89031b2f5316 1142
Charles MacNeill 5:89031b2f5316 1143
Charles MacNeill 5:89031b2f5316 1144
Charles MacNeill 5:89031b2f5316 1145 VL53LX_Error VL53L3CX_i2c_decode_static_config(
Charles MacNeill 5:89031b2f5316 1146 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 1147 uint8_t *pbuffer,
Charles MacNeill 5:89031b2f5316 1148 VL53LX_static_config_t *pdata);
Charles MacNeill 5:89031b2f5316 1149
Charles MacNeill 5:89031b2f5316 1150
Charles MacNeill 5:89031b2f5316 1151
Charles MacNeill 5:89031b2f5316 1152
Charles MacNeill 5:89031b2f5316 1153 VL53LX_Error VL53L3CX_set_static_config(
Charles MacNeill 5:89031b2f5316 1154 VL53LX_static_config_t *pdata);
Charles MacNeill 5:89031b2f5316 1155
Charles MacNeill 5:89031b2f5316 1156
Charles MacNeill 5:89031b2f5316 1157
Charles MacNeill 5:89031b2f5316 1158
Charles MacNeill 5:89031b2f5316 1159 VL53LX_Error VL53L3CX_get_static_config(
Charles MacNeill 5:89031b2f5316 1160 VL53LX_static_config_t *pdata);
Charles MacNeill 5:89031b2f5316 1161
Charles MacNeill 5:89031b2f5316 1162
Charles MacNeill 5:89031b2f5316 1163
Charles MacNeill 5:89031b2f5316 1164
Charles MacNeill 5:89031b2f5316 1165 VL53LX_Error VL53L3CX_i2c_encode_general_config(
Charles MacNeill 5:89031b2f5316 1166 VL53LX_general_config_t *pdata,
Charles MacNeill 5:89031b2f5316 1167 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 1168 uint8_t *pbuffer);
Charles MacNeill 5:89031b2f5316 1169
Charles MacNeill 5:89031b2f5316 1170
Charles MacNeill 5:89031b2f5316 1171
Charles MacNeill 5:89031b2f5316 1172
Charles MacNeill 5:89031b2f5316 1173 VL53LX_Error VL53L3CX_i2c_decode_general_config(
Charles MacNeill 5:89031b2f5316 1174 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 1175 uint8_t *pbuffer,
Charles MacNeill 5:89031b2f5316 1176 VL53LX_general_config_t *pdata);
Charles MacNeill 5:89031b2f5316 1177
Charles MacNeill 5:89031b2f5316 1178
Charles MacNeill 5:89031b2f5316 1179
Charles MacNeill 5:89031b2f5316 1180
Charles MacNeill 5:89031b2f5316 1181 VL53LX_Error VL53L3CX_set_general_config(
Charles MacNeill 5:89031b2f5316 1182 VL53LX_general_config_t *pdata);
Charles MacNeill 5:89031b2f5316 1183
Charles MacNeill 5:89031b2f5316 1184
Charles MacNeill 5:89031b2f5316 1185
Charles MacNeill 5:89031b2f5316 1186
Charles MacNeill 5:89031b2f5316 1187 VL53LX_Error VL53L3CX_get_general_config(
Charles MacNeill 5:89031b2f5316 1188 VL53LX_general_config_t *pdata);
Charles MacNeill 5:89031b2f5316 1189
Charles MacNeill 5:89031b2f5316 1190
Charles MacNeill 5:89031b2f5316 1191
Charles MacNeill 5:89031b2f5316 1192
Charles MacNeill 5:89031b2f5316 1193 VL53LX_Error VL53L3CX_i2c_encode_timing_config(
Charles MacNeill 5:89031b2f5316 1194 VL53LX_timing_config_t *pdata,
Charles MacNeill 5:89031b2f5316 1195 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 1196 uint8_t *pbuffer);
Charles MacNeill 5:89031b2f5316 1197
Charles MacNeill 5:89031b2f5316 1198
Charles MacNeill 5:89031b2f5316 1199
Charles MacNeill 5:89031b2f5316 1200
Charles MacNeill 5:89031b2f5316 1201 VL53LX_Error VL53L3CX_i2c_decode_timing_config(
Charles MacNeill 5:89031b2f5316 1202 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 1203 uint8_t *pbuffer,
Charles MacNeill 5:89031b2f5316 1204 VL53LX_timing_config_t *pdata);
Charles MacNeill 5:89031b2f5316 1205
Charles MacNeill 5:89031b2f5316 1206
Charles MacNeill 5:89031b2f5316 1207
Charles MacNeill 5:89031b2f5316 1208
Charles MacNeill 5:89031b2f5316 1209 VL53LX_Error VL53L3CX_set_timing_config(
Charles MacNeill 5:89031b2f5316 1210 VL53LX_timing_config_t *pdata);
Charles MacNeill 5:89031b2f5316 1211
Charles MacNeill 5:89031b2f5316 1212
Charles MacNeill 5:89031b2f5316 1213
Charles MacNeill 5:89031b2f5316 1214
Charles MacNeill 5:89031b2f5316 1215 VL53LX_Error VL53L3CX_get_timing_config(
Charles MacNeill 5:89031b2f5316 1216 VL53LX_timing_config_t *pdata);
Charles MacNeill 5:89031b2f5316 1217
Charles MacNeill 5:89031b2f5316 1218
Charles MacNeill 5:89031b2f5316 1219
Charles MacNeill 5:89031b2f5316 1220
Charles MacNeill 5:89031b2f5316 1221 VL53LX_Error VL53L3CX_i2c_encode_dynamic_config(
Charles MacNeill 5:89031b2f5316 1222 VL53LX_dynamic_config_t *pdata,
Charles MacNeill 5:89031b2f5316 1223 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 1224 uint8_t *pbuffer);
Charles MacNeill 5:89031b2f5316 1225
Charles MacNeill 5:89031b2f5316 1226
Charles MacNeill 5:89031b2f5316 1227
Charles MacNeill 5:89031b2f5316 1228
Charles MacNeill 5:89031b2f5316 1229 VL53LX_Error VL53L3CX_i2c_decode_dynamic_config(
Charles MacNeill 5:89031b2f5316 1230 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 1231 uint8_t *pbuffer,
Charles MacNeill 5:89031b2f5316 1232 VL53LX_dynamic_config_t *pdata);
Charles MacNeill 5:89031b2f5316 1233
Charles MacNeill 5:89031b2f5316 1234
Charles MacNeill 5:89031b2f5316 1235
Charles MacNeill 5:89031b2f5316 1236
Charles MacNeill 5:89031b2f5316 1237 VL53LX_Error VL53L3CX_set_dynamic_config(
Charles MacNeill 5:89031b2f5316 1238 VL53LX_dynamic_config_t *pdata);
Charles MacNeill 5:89031b2f5316 1239
Charles MacNeill 5:89031b2f5316 1240
Charles MacNeill 5:89031b2f5316 1241
Charles MacNeill 5:89031b2f5316 1242
Charles MacNeill 5:89031b2f5316 1243 VL53LX_Error VL53L3CX_get_dynamic_config(
Charles MacNeill 5:89031b2f5316 1244 VL53LX_dynamic_config_t *pdata);
Charles MacNeill 5:89031b2f5316 1245
Charles MacNeill 5:89031b2f5316 1246
Charles MacNeill 5:89031b2f5316 1247
Charles MacNeill 5:89031b2f5316 1248
Charles MacNeill 5:89031b2f5316 1249 VL53LX_Error VL53L3CX_i2c_encode_system_control(
Charles MacNeill 5:89031b2f5316 1250 VL53LX_system_control_t *pdata,
Charles MacNeill 5:89031b2f5316 1251 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 1252 uint8_t *pbuffer);
Charles MacNeill 5:89031b2f5316 1253
Charles MacNeill 5:89031b2f5316 1254
Charles MacNeill 5:89031b2f5316 1255
Charles MacNeill 5:89031b2f5316 1256
Charles MacNeill 5:89031b2f5316 1257 VL53LX_Error VL53L3CX_i2c_decode_system_control(
Charles MacNeill 5:89031b2f5316 1258 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 1259 uint8_t *pbuffer,
Charles MacNeill 5:89031b2f5316 1260 VL53LX_system_control_t *pdata);
Charles MacNeill 5:89031b2f5316 1261
Charles MacNeill 5:89031b2f5316 1262
Charles MacNeill 5:89031b2f5316 1263
Charles MacNeill 5:89031b2f5316 1264
Charles MacNeill 5:89031b2f5316 1265 VL53LX_Error VL53L3CX_set_system_control(
Charles MacNeill 5:89031b2f5316 1266 VL53LX_system_control_t *pdata);
Charles MacNeill 5:89031b2f5316 1267
Charles MacNeill 5:89031b2f5316 1268
Charles MacNeill 5:89031b2f5316 1269
Charles MacNeill 5:89031b2f5316 1270
Charles MacNeill 5:89031b2f5316 1271 VL53LX_Error VL53L3CX_get_system_control(
Charles MacNeill 5:89031b2f5316 1272 VL53LX_system_control_t *pdata);
Charles MacNeill 5:89031b2f5316 1273
Charles MacNeill 5:89031b2f5316 1274
Charles MacNeill 5:89031b2f5316 1275
Charles MacNeill 5:89031b2f5316 1276
Charles MacNeill 5:89031b2f5316 1277 VL53LX_Error VL53L3CX_i2c_encode_system_results(
Charles MacNeill 5:89031b2f5316 1278 VL53LX_system_results_t *pdata,
Charles MacNeill 5:89031b2f5316 1279 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 1280 uint8_t *pbuffer);
Charles MacNeill 5:89031b2f5316 1281
Charles MacNeill 5:89031b2f5316 1282
Charles MacNeill 5:89031b2f5316 1283
Charles MacNeill 5:89031b2f5316 1284
Charles MacNeill 5:89031b2f5316 1285 VL53LX_Error VL53L3CX_i2c_decode_system_results(
Charles MacNeill 5:89031b2f5316 1286 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 1287 uint8_t *pbuffer,
Charles MacNeill 5:89031b2f5316 1288 VL53LX_system_results_t *pdata);
Charles MacNeill 5:89031b2f5316 1289
Charles MacNeill 5:89031b2f5316 1290
Charles MacNeill 5:89031b2f5316 1291
Charles MacNeill 5:89031b2f5316 1292
Charles MacNeill 5:89031b2f5316 1293 VL53LX_Error VL53L3CX_set_system_results(
Charles MacNeill 5:89031b2f5316 1294 VL53LX_system_results_t *pdata);
Charles MacNeill 5:89031b2f5316 1295
Charles MacNeill 5:89031b2f5316 1296
Charles MacNeill 5:89031b2f5316 1297
Charles MacNeill 5:89031b2f5316 1298
Charles MacNeill 5:89031b2f5316 1299 VL53LX_Error VL53L3CX_get_system_results(
Charles MacNeill 5:89031b2f5316 1300 VL53LX_system_results_t *pdata);
Charles MacNeill 5:89031b2f5316 1301
Charles MacNeill 5:89031b2f5316 1302
Charles MacNeill 5:89031b2f5316 1303
Charles MacNeill 5:89031b2f5316 1304
Charles MacNeill 5:89031b2f5316 1305 VL53LX_Error VL53L3CX_i2c_encode_core_results(
Charles MacNeill 5:89031b2f5316 1306 VL53LX_core_results_t *pdata,
Charles MacNeill 5:89031b2f5316 1307 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 1308 uint8_t *pbuffer);
Charles MacNeill 5:89031b2f5316 1309
Charles MacNeill 5:89031b2f5316 1310
Charles MacNeill 5:89031b2f5316 1311
Charles MacNeill 5:89031b2f5316 1312
Charles MacNeill 5:89031b2f5316 1313 VL53LX_Error VL53L3CX_i2c_decode_core_results(
Charles MacNeill 5:89031b2f5316 1314 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 1315 uint8_t *pbuffer,
Charles MacNeill 5:89031b2f5316 1316 VL53LX_core_results_t *pdata);
Charles MacNeill 5:89031b2f5316 1317
Charles MacNeill 5:89031b2f5316 1318
Charles MacNeill 5:89031b2f5316 1319
Charles MacNeill 5:89031b2f5316 1320
Charles MacNeill 5:89031b2f5316 1321 VL53LX_Error VL53L3CX_set_core_results(
Charles MacNeill 5:89031b2f5316 1322 VL53LX_core_results_t *pdata);
Charles MacNeill 5:89031b2f5316 1323
Charles MacNeill 5:89031b2f5316 1324
Charles MacNeill 5:89031b2f5316 1325
Charles MacNeill 5:89031b2f5316 1326
Charles MacNeill 5:89031b2f5316 1327 VL53LX_Error VL53L3CX_get_core_results(
Charles MacNeill 5:89031b2f5316 1328 VL53LX_core_results_t *pdata);
Charles MacNeill 5:89031b2f5316 1329
Charles MacNeill 5:89031b2f5316 1330
Charles MacNeill 5:89031b2f5316 1331
Charles MacNeill 5:89031b2f5316 1332
Charles MacNeill 5:89031b2f5316 1333 VL53LX_Error VL53L3CX_i2c_encode_debug_results(
Charles MacNeill 5:89031b2f5316 1334 VL53LX_debug_results_t *pdata,
Charles MacNeill 5:89031b2f5316 1335 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 1336 uint8_t *pbuffer);
Charles MacNeill 5:89031b2f5316 1337
Charles MacNeill 5:89031b2f5316 1338
Charles MacNeill 5:89031b2f5316 1339
Charles MacNeill 5:89031b2f5316 1340
Charles MacNeill 5:89031b2f5316 1341 VL53LX_Error VL53L3CX_i2c_decode_debug_results(
Charles MacNeill 5:89031b2f5316 1342 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 1343 uint8_t *pbuffer,
Charles MacNeill 5:89031b2f5316 1344 VL53LX_debug_results_t *pdata);
Charles MacNeill 5:89031b2f5316 1345
Charles MacNeill 5:89031b2f5316 1346
Charles MacNeill 5:89031b2f5316 1347
Charles MacNeill 5:89031b2f5316 1348
Charles MacNeill 5:89031b2f5316 1349 VL53LX_Error VL53L3CX_set_debug_results(
Charles MacNeill 5:89031b2f5316 1350 VL53LX_debug_results_t *pdata);
Charles MacNeill 5:89031b2f5316 1351
Charles MacNeill 5:89031b2f5316 1352
Charles MacNeill 5:89031b2f5316 1353
Charles MacNeill 5:89031b2f5316 1354
Charles MacNeill 5:89031b2f5316 1355 VL53LX_Error VL53L3CX_get_debug_results(
Charles MacNeill 5:89031b2f5316 1356 VL53LX_debug_results_t *pdata);
Charles MacNeill 5:89031b2f5316 1357
Charles MacNeill 5:89031b2f5316 1358
Charles MacNeill 5:89031b2f5316 1359
Charles MacNeill 5:89031b2f5316 1360
Charles MacNeill 5:89031b2f5316 1361 VL53LX_Error VL53L3CX_i2c_encode_nvm_copy_data(
Charles MacNeill 5:89031b2f5316 1362 VL53LX_nvm_copy_data_t *pdata,
Charles MacNeill 5:89031b2f5316 1363 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 1364 uint8_t *pbuffer);
Charles MacNeill 5:89031b2f5316 1365
Charles MacNeill 5:89031b2f5316 1366
Charles MacNeill 5:89031b2f5316 1367
Charles MacNeill 5:89031b2f5316 1368
Charles MacNeill 5:89031b2f5316 1369 VL53LX_Error VL53L3CX_i2c_decode_nvm_copy_data(
Charles MacNeill 5:89031b2f5316 1370 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 1371 uint8_t *pbuffer,
Charles MacNeill 5:89031b2f5316 1372 VL53LX_nvm_copy_data_t *pdata);
Charles MacNeill 5:89031b2f5316 1373
Charles MacNeill 5:89031b2f5316 1374
Charles MacNeill 5:89031b2f5316 1375
Charles MacNeill 5:89031b2f5316 1376
Charles MacNeill 5:89031b2f5316 1377 VL53LX_Error VL53L3CX_set_nvm_copy_data(
Charles MacNeill 5:89031b2f5316 1378 VL53LX_nvm_copy_data_t *pdata);
Charles MacNeill 5:89031b2f5316 1379
Charles MacNeill 5:89031b2f5316 1380
Charles MacNeill 5:89031b2f5316 1381
Charles MacNeill 5:89031b2f5316 1382
Charles MacNeill 5:89031b2f5316 1383 VL53LX_Error VL53L3CX_get_nvm_copy_data(
Charles MacNeill 5:89031b2f5316 1384 VL53LX_nvm_copy_data_t *pdata);
Charles MacNeill 5:89031b2f5316 1385
Charles MacNeill 5:89031b2f5316 1386
Charles MacNeill 5:89031b2f5316 1387
Charles MacNeill 5:89031b2f5316 1388
Charles MacNeill 5:89031b2f5316 1389 VL53LX_Error VL53L3CX_i2c_encode_prev_shadow_system_results(
Charles MacNeill 5:89031b2f5316 1390 VL53LX_prev_shadow_system_results_t *pdata,
Charles MacNeill 5:89031b2f5316 1391 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 1392 uint8_t *pbuffer);
Charles MacNeill 5:89031b2f5316 1393
Charles MacNeill 5:89031b2f5316 1394
Charles MacNeill 5:89031b2f5316 1395
Charles MacNeill 5:89031b2f5316 1396
Charles MacNeill 5:89031b2f5316 1397 VL53LX_Error VL53L3CX_i2c_decode_prev_shadow_system_results(
Charles MacNeill 5:89031b2f5316 1398 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 1399 uint8_t *pbuffer,
Charles MacNeill 5:89031b2f5316 1400 VL53LX_prev_shadow_system_results_t *pdata);
Charles MacNeill 5:89031b2f5316 1401
Charles MacNeill 5:89031b2f5316 1402
Charles MacNeill 5:89031b2f5316 1403
Charles MacNeill 5:89031b2f5316 1404
Charles MacNeill 5:89031b2f5316 1405 VL53LX_Error VL53L3CX_set_prev_shadow_system_results(
Charles MacNeill 5:89031b2f5316 1406 VL53LX_prev_shadow_system_results_t *pdata);
Charles MacNeill 5:89031b2f5316 1407
Charles MacNeill 5:89031b2f5316 1408
Charles MacNeill 5:89031b2f5316 1409
Charles MacNeill 5:89031b2f5316 1410
Charles MacNeill 5:89031b2f5316 1411 VL53LX_Error VL53L3CX_get_prev_shadow_system_results(
Charles MacNeill 5:89031b2f5316 1412 VL53LX_prev_shadow_system_results_t *pdata);
Charles MacNeill 5:89031b2f5316 1413
Charles MacNeill 5:89031b2f5316 1414
Charles MacNeill 5:89031b2f5316 1415
Charles MacNeill 5:89031b2f5316 1416
Charles MacNeill 5:89031b2f5316 1417 VL53LX_Error VL53L3CX_i2c_encode_prev_shadow_core_results(
Charles MacNeill 5:89031b2f5316 1418 VL53LX_prev_shadow_core_results_t *pdata,
Charles MacNeill 5:89031b2f5316 1419 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 1420 uint8_t *pbuffer);
Charles MacNeill 5:89031b2f5316 1421
Charles MacNeill 5:89031b2f5316 1422
Charles MacNeill 5:89031b2f5316 1423
Charles MacNeill 5:89031b2f5316 1424
Charles MacNeill 5:89031b2f5316 1425 VL53LX_Error VL53L3CX_i2c_decode_prev_shadow_core_results(
Charles MacNeill 5:89031b2f5316 1426 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 1427 uint8_t *pbuffer,
Charles MacNeill 5:89031b2f5316 1428 VL53LX_prev_shadow_core_results_t *pdata);
Charles MacNeill 5:89031b2f5316 1429
Charles MacNeill 5:89031b2f5316 1430
Charles MacNeill 5:89031b2f5316 1431
Charles MacNeill 5:89031b2f5316 1432
Charles MacNeill 5:89031b2f5316 1433 VL53LX_Error VL53L3CX_set_prev_shadow_core_results(
Charles MacNeill 5:89031b2f5316 1434 VL53LX_prev_shadow_core_results_t *pdata);
Charles MacNeill 5:89031b2f5316 1435
Charles MacNeill 5:89031b2f5316 1436
Charles MacNeill 5:89031b2f5316 1437
Charles MacNeill 5:89031b2f5316 1438
Charles MacNeill 5:89031b2f5316 1439 VL53LX_Error VL53L3CX_get_prev_shadow_core_results(
Charles MacNeill 5:89031b2f5316 1440 VL53LX_prev_shadow_core_results_t *pdata);
Charles MacNeill 5:89031b2f5316 1441
Charles MacNeill 5:89031b2f5316 1442
Charles MacNeill 5:89031b2f5316 1443
Charles MacNeill 5:89031b2f5316 1444
Charles MacNeill 5:89031b2f5316 1445 VL53LX_Error VL53L3CX_i2c_encode_patch_debug(
Charles MacNeill 5:89031b2f5316 1446 VL53LX_patch_debug_t *pdata,
Charles MacNeill 5:89031b2f5316 1447 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 1448 uint8_t *pbuffer);
Charles MacNeill 5:89031b2f5316 1449
Charles MacNeill 5:89031b2f5316 1450
Charles MacNeill 5:89031b2f5316 1451
Charles MacNeill 5:89031b2f5316 1452
Charles MacNeill 5:89031b2f5316 1453 VL53LX_Error VL53L3CX_i2c_decode_patch_debug(
Charles MacNeill 5:89031b2f5316 1454 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 1455 uint8_t *pbuffer,
Charles MacNeill 5:89031b2f5316 1456 VL53LX_patch_debug_t *pdata);
Charles MacNeill 5:89031b2f5316 1457
Charles MacNeill 5:89031b2f5316 1458
Charles MacNeill 5:89031b2f5316 1459
Charles MacNeill 5:89031b2f5316 1460
Charles MacNeill 5:89031b2f5316 1461 VL53LX_Error VL53L3CX_set_patch_debug(
Charles MacNeill 5:89031b2f5316 1462 VL53LX_patch_debug_t *pdata);
Charles MacNeill 5:89031b2f5316 1463
Charles MacNeill 5:89031b2f5316 1464
Charles MacNeill 5:89031b2f5316 1465
Charles MacNeill 5:89031b2f5316 1466
Charles MacNeill 5:89031b2f5316 1467 VL53LX_Error VL53L3CX_get_patch_debug(
Charles MacNeill 5:89031b2f5316 1468 VL53LX_patch_debug_t *pdata);
Charles MacNeill 5:89031b2f5316 1469
Charles MacNeill 5:89031b2f5316 1470
Charles MacNeill 5:89031b2f5316 1471
Charles MacNeill 5:89031b2f5316 1472
Charles MacNeill 5:89031b2f5316 1473 VL53LX_Error VL53L3CX_i2c_encode_gph_general_config(
Charles MacNeill 5:89031b2f5316 1474 VL53LX_gph_general_config_t *pdata,
Charles MacNeill 5:89031b2f5316 1475 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 1476 uint8_t *pbuffer);
Charles MacNeill 5:89031b2f5316 1477
Charles MacNeill 5:89031b2f5316 1478
Charles MacNeill 5:89031b2f5316 1479
Charles MacNeill 5:89031b2f5316 1480
Charles MacNeill 5:89031b2f5316 1481 VL53LX_Error VL53L3CX_i2c_decode_gph_general_config(
Charles MacNeill 5:89031b2f5316 1482 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 1483 uint8_t *pbuffer,
Charles MacNeill 5:89031b2f5316 1484 VL53LX_gph_general_config_t *pdata);
Charles MacNeill 5:89031b2f5316 1485
Charles MacNeill 5:89031b2f5316 1486
Charles MacNeill 5:89031b2f5316 1487
Charles MacNeill 5:89031b2f5316 1488
Charles MacNeill 5:89031b2f5316 1489 VL53LX_Error VL53L3CX_set_gph_general_config(
Charles MacNeill 5:89031b2f5316 1490 VL53LX_gph_general_config_t *pdata);
Charles MacNeill 5:89031b2f5316 1491
Charles MacNeill 5:89031b2f5316 1492
Charles MacNeill 5:89031b2f5316 1493
Charles MacNeill 5:89031b2f5316 1494
Charles MacNeill 5:89031b2f5316 1495 VL53LX_Error VL53L3CX_get_gph_general_config(
Charles MacNeill 5:89031b2f5316 1496 VL53LX_gph_general_config_t *pdata);
Charles MacNeill 5:89031b2f5316 1497
Charles MacNeill 5:89031b2f5316 1498
Charles MacNeill 5:89031b2f5316 1499
Charles MacNeill 5:89031b2f5316 1500
Charles MacNeill 5:89031b2f5316 1501 VL53LX_Error VL53L3CX_i2c_encode_gph_static_config(
Charles MacNeill 5:89031b2f5316 1502 VL53LX_gph_static_config_t *pdata,
Charles MacNeill 5:89031b2f5316 1503 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 1504 uint8_t *pbuffer);
Charles MacNeill 5:89031b2f5316 1505
Charles MacNeill 5:89031b2f5316 1506
Charles MacNeill 5:89031b2f5316 1507
Charles MacNeill 5:89031b2f5316 1508
Charles MacNeill 5:89031b2f5316 1509 VL53LX_Error VL53L3CX_i2c_decode_gph_static_config(
Charles MacNeill 5:89031b2f5316 1510 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 1511 uint8_t *pbuffer,
Charles MacNeill 5:89031b2f5316 1512 VL53LX_gph_static_config_t *pdata);
Charles MacNeill 5:89031b2f5316 1513
Charles MacNeill 5:89031b2f5316 1514
Charles MacNeill 5:89031b2f5316 1515
Charles MacNeill 5:89031b2f5316 1516
Charles MacNeill 5:89031b2f5316 1517 VL53LX_Error VL53L3CX_set_gph_static_config(
Charles MacNeill 5:89031b2f5316 1518 VL53LX_gph_static_config_t *pdata);
Charles MacNeill 5:89031b2f5316 1519
Charles MacNeill 5:89031b2f5316 1520
Charles MacNeill 5:89031b2f5316 1521
Charles MacNeill 5:89031b2f5316 1522
Charles MacNeill 5:89031b2f5316 1523 VL53LX_Error VL53L3CX_get_gph_static_config(
Charles MacNeill 5:89031b2f5316 1524 VL53LX_gph_static_config_t *pdata);
Charles MacNeill 5:89031b2f5316 1525
Charles MacNeill 5:89031b2f5316 1526
Charles MacNeill 5:89031b2f5316 1527
Charles MacNeill 5:89031b2f5316 1528
Charles MacNeill 5:89031b2f5316 1529 VL53LX_Error VL53L3CX_i2c_encode_gph_timing_config(
Charles MacNeill 5:89031b2f5316 1530 VL53LX_gph_timing_config_t *pdata,
Charles MacNeill 5:89031b2f5316 1531 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 1532 uint8_t *pbuffer);
Charles MacNeill 5:89031b2f5316 1533
Charles MacNeill 5:89031b2f5316 1534
Charles MacNeill 5:89031b2f5316 1535
Charles MacNeill 5:89031b2f5316 1536
Charles MacNeill 5:89031b2f5316 1537 VL53LX_Error VL53L3CX_i2c_decode_gph_timing_config(
Charles MacNeill 5:89031b2f5316 1538 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 1539 uint8_t *pbuffer,
Charles MacNeill 5:89031b2f5316 1540 VL53LX_gph_timing_config_t *pdata);
Charles MacNeill 5:89031b2f5316 1541
Charles MacNeill 5:89031b2f5316 1542
Charles MacNeill 5:89031b2f5316 1543
Charles MacNeill 5:89031b2f5316 1544
Charles MacNeill 5:89031b2f5316 1545 VL53LX_Error VL53L3CX_set_gph_timing_config(
Charles MacNeill 5:89031b2f5316 1546 VL53LX_gph_timing_config_t *pdata);
Charles MacNeill 5:89031b2f5316 1547
Charles MacNeill 5:89031b2f5316 1548
Charles MacNeill 5:89031b2f5316 1549
Charles MacNeill 5:89031b2f5316 1550
Charles MacNeill 5:89031b2f5316 1551 VL53LX_Error VL53L3CX_get_gph_timing_config(
Charles MacNeill 5:89031b2f5316 1552 VL53LX_gph_timing_config_t *pdata);
Charles MacNeill 5:89031b2f5316 1553
Charles MacNeill 5:89031b2f5316 1554
Charles MacNeill 5:89031b2f5316 1555
Charles MacNeill 5:89031b2f5316 1556
Charles MacNeill 5:89031b2f5316 1557 VL53LX_Error VL53L3CX_i2c_encode_fw_internal(
Charles MacNeill 5:89031b2f5316 1558 VL53LX_fw_internal_t *pdata,
Charles MacNeill 5:89031b2f5316 1559 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 1560 uint8_t *pbuffer);
Charles MacNeill 5:89031b2f5316 1561
Charles MacNeill 5:89031b2f5316 1562
Charles MacNeill 5:89031b2f5316 1563
Charles MacNeill 5:89031b2f5316 1564
Charles MacNeill 5:89031b2f5316 1565 VL53LX_Error VL53L3CX_i2c_decode_fw_internal(
Charles MacNeill 5:89031b2f5316 1566 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 1567 uint8_t *pbuffer,
Charles MacNeill 5:89031b2f5316 1568 VL53LX_fw_internal_t *pdata);
Charles MacNeill 5:89031b2f5316 1569
Charles MacNeill 5:89031b2f5316 1570
Charles MacNeill 5:89031b2f5316 1571
Charles MacNeill 5:89031b2f5316 1572
Charles MacNeill 5:89031b2f5316 1573 VL53LX_Error VL53L3CX_set_fw_internal(
Charles MacNeill 5:89031b2f5316 1574 VL53LX_fw_internal_t *pdata);
Charles MacNeill 5:89031b2f5316 1575
Charles MacNeill 5:89031b2f5316 1576
Charles MacNeill 5:89031b2f5316 1577
Charles MacNeill 5:89031b2f5316 1578
Charles MacNeill 5:89031b2f5316 1579 VL53LX_Error VL53L3CX_get_fw_internal(
Charles MacNeill 5:89031b2f5316 1580 VL53LX_fw_internal_t *pdata);
Charles MacNeill 5:89031b2f5316 1581
Charles MacNeill 5:89031b2f5316 1582
Charles MacNeill 5:89031b2f5316 1583
Charles MacNeill 5:89031b2f5316 1584
Charles MacNeill 5:89031b2f5316 1585 VL53LX_Error VL53L3CX_i2c_encode_patch_results(
Charles MacNeill 5:89031b2f5316 1586 VL53LX_patch_results_t *pdata,
Charles MacNeill 5:89031b2f5316 1587 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 1588 uint8_t *pbuffer);
Charles MacNeill 5:89031b2f5316 1589
Charles MacNeill 5:89031b2f5316 1590
Charles MacNeill 5:89031b2f5316 1591
Charles MacNeill 5:89031b2f5316 1592
Charles MacNeill 5:89031b2f5316 1593 VL53LX_Error VL53L3CX_i2c_decode_patch_results(
Charles MacNeill 5:89031b2f5316 1594 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 1595 uint8_t *pbuffer,
Charles MacNeill 5:89031b2f5316 1596 VL53LX_patch_results_t *pdata);
Charles MacNeill 5:89031b2f5316 1597
Charles MacNeill 5:89031b2f5316 1598
Charles MacNeill 5:89031b2f5316 1599
Charles MacNeill 5:89031b2f5316 1600
Charles MacNeill 5:89031b2f5316 1601 VL53LX_Error VL53L3CX_set_patch_results(
Charles MacNeill 5:89031b2f5316 1602 VL53LX_patch_results_t *pdata);
Charles MacNeill 5:89031b2f5316 1603
Charles MacNeill 5:89031b2f5316 1604
Charles MacNeill 5:89031b2f5316 1605
Charles MacNeill 5:89031b2f5316 1606
Charles MacNeill 5:89031b2f5316 1607 VL53LX_Error VL53L3CX_get_patch_results(
Charles MacNeill 5:89031b2f5316 1608 VL53LX_patch_results_t *pdata);
Charles MacNeill 5:89031b2f5316 1609
Charles MacNeill 5:89031b2f5316 1610
Charles MacNeill 5:89031b2f5316 1611
Charles MacNeill 5:89031b2f5316 1612
Charles MacNeill 5:89031b2f5316 1613 VL53LX_Error VL53L3CX_i2c_encode_shadow_system_results(
Charles MacNeill 5:89031b2f5316 1614 VL53LX_shadow_system_results_t *pdata,
Charles MacNeill 5:89031b2f5316 1615 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 1616 uint8_t *pbuffer);
Charles MacNeill 5:89031b2f5316 1617
Charles MacNeill 5:89031b2f5316 1618
Charles MacNeill 5:89031b2f5316 1619
Charles MacNeill 5:89031b2f5316 1620
Charles MacNeill 5:89031b2f5316 1621 VL53LX_Error VL53L3CX_i2c_decode_shadow_system_results(
Charles MacNeill 5:89031b2f5316 1622 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 1623 uint8_t *pbuffer,
Charles MacNeill 5:89031b2f5316 1624 VL53LX_shadow_system_results_t *pdata);
Charles MacNeill 5:89031b2f5316 1625
Charles MacNeill 5:89031b2f5316 1626
Charles MacNeill 5:89031b2f5316 1627
Charles MacNeill 5:89031b2f5316 1628
Charles MacNeill 5:89031b2f5316 1629 VL53LX_Error VL53L3CX_set_shadow_system_results(
Charles MacNeill 5:89031b2f5316 1630 VL53LX_shadow_system_results_t *pdata);
Charles MacNeill 5:89031b2f5316 1631
Charles MacNeill 5:89031b2f5316 1632
Charles MacNeill 5:89031b2f5316 1633
Charles MacNeill 5:89031b2f5316 1634
Charles MacNeill 5:89031b2f5316 1635 VL53LX_Error VL53L3CX_get_shadow_system_results(
Charles MacNeill 5:89031b2f5316 1636 VL53LX_shadow_system_results_t *pdata);
Charles MacNeill 5:89031b2f5316 1637
Charles MacNeill 5:89031b2f5316 1638
Charles MacNeill 5:89031b2f5316 1639
Charles MacNeill 5:89031b2f5316 1640
Charles MacNeill 5:89031b2f5316 1641 VL53LX_Error VL53L3CX_i2c_encode_shadow_core_results(
Charles MacNeill 5:89031b2f5316 1642 VL53LX_shadow_core_results_t *pdata,
Charles MacNeill 5:89031b2f5316 1643 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 1644 uint8_t *pbuffer);
Charles MacNeill 5:89031b2f5316 1645
Charles MacNeill 5:89031b2f5316 1646
Charles MacNeill 5:89031b2f5316 1647
Charles MacNeill 5:89031b2f5316 1648
Charles MacNeill 5:89031b2f5316 1649 VL53LX_Error VL53L3CX_i2c_decode_shadow_core_results(
Charles MacNeill 5:89031b2f5316 1650 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 1651 uint8_t *pbuffer,
Charles MacNeill 5:89031b2f5316 1652 VL53LX_shadow_core_results_t *pdata);
Charles MacNeill 5:89031b2f5316 1653
Charles MacNeill 5:89031b2f5316 1654
Charles MacNeill 5:89031b2f5316 1655
Charles MacNeill 5:89031b2f5316 1656
Charles MacNeill 5:89031b2f5316 1657 VL53LX_Error VL53L3CX_set_shadow_core_results(
Charles MacNeill 5:89031b2f5316 1658 VL53LX_shadow_core_results_t *pdata);
Charles MacNeill 5:89031b2f5316 1659
Charles MacNeill 5:89031b2f5316 1660
Charles MacNeill 5:89031b2f5316 1661
Charles MacNeill 5:89031b2f5316 1662
Charles MacNeill 5:89031b2f5316 1663 VL53LX_Error VL53L3CX_get_shadow_core_results(
Charles MacNeill 5:89031b2f5316 1664 VL53LX_shadow_core_results_t *pdata);
Charles MacNeill 5:89031b2f5316 1665
Charles MacNeill 5:89031b2f5316 1666
Charles MacNeill 5:89031b2f5316 1667
Charles MacNeill 5:89031b2f5316 1668 /* vl53lx_nvm.h */
Charles MacNeill 5:89031b2f5316 1669
Charles MacNeill 5:89031b2f5316 1670
Charles MacNeill 5:89031b2f5316 1671 VL53LX_Error VL53L3CX_nvm_enable(
Charles MacNeill 5:89031b2f5316 1672 uint16_t nvm_ctrl_pulse_width,
Charles MacNeill 5:89031b2f5316 1673 int32_t nvm_power_up_delay_us);
Charles MacNeill 5:89031b2f5316 1674
Charles MacNeill 5:89031b2f5316 1675
Charles MacNeill 5:89031b2f5316 1676
Charles MacNeill 5:89031b2f5316 1677
Charles MacNeill 5:89031b2f5316 1678 VL53LX_Error VL53L3CX_nvm_read(
Charles MacNeill 5:89031b2f5316 1679 uint8_t start_address,
Charles MacNeill 5:89031b2f5316 1680 uint8_t count,
Charles MacNeill 5:89031b2f5316 1681 uint8_t *pdata);
Charles MacNeill 5:89031b2f5316 1682
Charles MacNeill 5:89031b2f5316 1683
Charles MacNeill 5:89031b2f5316 1684
Charles MacNeill 5:89031b2f5316 1685
Charles MacNeill 5:89031b2f5316 1686 VL53LX_Error VL53L3CX_nvm_disable();
Charles MacNeill 5:89031b2f5316 1687
Charles MacNeill 5:89031b2f5316 1688
Charles MacNeill 5:89031b2f5316 1689
Charles MacNeill 5:89031b2f5316 1690
Charles MacNeill 5:89031b2f5316 1691 VL53LX_Error VL53L3CX_nvm_format_decode(
Charles MacNeill 5:89031b2f5316 1692 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 1693 uint8_t *pbuffer,
Charles MacNeill 5:89031b2f5316 1694 VL53LX_decoded_nvm_data_t *pdata);
Charles MacNeill 5:89031b2f5316 1695
Charles MacNeill 5:89031b2f5316 1696
Charles MacNeill 5:89031b2f5316 1697
Charles MacNeill 5:89031b2f5316 1698
Charles MacNeill 5:89031b2f5316 1699 VL53LX_Error VL53L3CX_nvm_decode_optical_centre(
Charles MacNeill 5:89031b2f5316 1700 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 1701 uint8_t *pbuffer,
Charles MacNeill 5:89031b2f5316 1702 VL53LX_optical_centre_t *pdata);
Charles MacNeill 5:89031b2f5316 1703
Charles MacNeill 5:89031b2f5316 1704
Charles MacNeill 5:89031b2f5316 1705
Charles MacNeill 5:89031b2f5316 1706
Charles MacNeill 5:89031b2f5316 1707 VL53LX_Error VL53L3CX_nvm_decode_cal_peak_rate_map(
Charles MacNeill 5:89031b2f5316 1708 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 1709 uint8_t *pbuffer,
Charles MacNeill 5:89031b2f5316 1710 VL53LX_cal_peak_rate_map_t *pdata);
Charles MacNeill 5:89031b2f5316 1711
Charles MacNeill 5:89031b2f5316 1712
Charles MacNeill 5:89031b2f5316 1713
Charles MacNeill 5:89031b2f5316 1714
Charles MacNeill 5:89031b2f5316 1715 VL53LX_Error VL53L3CX_nvm_decode_additional_offset_cal_data(
Charles MacNeill 5:89031b2f5316 1716 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 1717 uint8_t *pbuffer,
Charles MacNeill 5:89031b2f5316 1718 VL53LX_additional_offset_cal_data_t *pdata);
Charles MacNeill 5:89031b2f5316 1719
Charles MacNeill 5:89031b2f5316 1720
Charles MacNeill 5:89031b2f5316 1721
Charles MacNeill 5:89031b2f5316 1722
Charles MacNeill 5:89031b2f5316 1723 VL53LX_Error VL53L3CX_nvm_decode_fmt_range_results_data(
Charles MacNeill 5:89031b2f5316 1724 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 1725 uint8_t *pbuffer,
Charles MacNeill 5:89031b2f5316 1726 VL53LX_decoded_nvm_fmt_range_data_t *pdata);
Charles MacNeill 5:89031b2f5316 1727
Charles MacNeill 5:89031b2f5316 1728
Charles MacNeill 5:89031b2f5316 1729
Charles MacNeill 5:89031b2f5316 1730
Charles MacNeill 5:89031b2f5316 1731 VL53LX_Error VL53L3CX_nvm_decode_fmt_info(
Charles MacNeill 5:89031b2f5316 1732 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 1733 uint8_t *pbuffer,
Charles MacNeill 5:89031b2f5316 1734 VL53LX_decoded_nvm_fmt_info_t *pdata);
Charles MacNeill 5:89031b2f5316 1735
Charles MacNeill 5:89031b2f5316 1736
Charles MacNeill 5:89031b2f5316 1737
Charles MacNeill 5:89031b2f5316 1738
Charles MacNeill 5:89031b2f5316 1739 VL53LX_Error VL53L3CX_nvm_decode_ews_info(
Charles MacNeill 5:89031b2f5316 1740 uint16_t buf_size,
Charles MacNeill 5:89031b2f5316 1741 uint8_t *pbuffer,
Charles MacNeill 5:89031b2f5316 1742 VL53LX_decoded_nvm_ews_info_t *pdata);
Charles MacNeill 5:89031b2f5316 1743
Charles MacNeill 5:89031b2f5316 1744
Charles MacNeill 5:89031b2f5316 1745
Charles MacNeill 5:89031b2f5316 1746
Charles MacNeill 5:89031b2f5316 1747 void VL53L3CX_nvm_format_encode(
Charles MacNeill 5:89031b2f5316 1748 VL53LX_decoded_nvm_data_t *pnvm_info,
Charles MacNeill 5:89031b2f5316 1749 uint8_t *pnvm_data);
Charles MacNeill 5:89031b2f5316 1750
Charles MacNeill 5:89031b2f5316 1751
Charles MacNeill 5:89031b2f5316 1752
Charles MacNeill 5:89031b2f5316 1753
Charles MacNeill 5:89031b2f5316 1754 VL53LX_Error VL53L3CX_read_nvm_raw_data(
Charles MacNeill 5:89031b2f5316 1755 uint8_t start_address,
Charles MacNeill 5:89031b2f5316 1756 uint8_t count,
Charles MacNeill 5:89031b2f5316 1757 uint8_t *pnvm_raw_data);
Charles MacNeill 5:89031b2f5316 1758
Charles MacNeill 5:89031b2f5316 1759
Charles MacNeill 5:89031b2f5316 1760
Charles MacNeill 5:89031b2f5316 1761
Charles MacNeill 5:89031b2f5316 1762 VL53LX_Error VL53L3CX_read_nvm(
Charles MacNeill 5:89031b2f5316 1763 uint8_t nvm_format,
Charles MacNeill 5:89031b2f5316 1764 VL53LX_decoded_nvm_data_t *pnvm_info);
Charles MacNeill 5:89031b2f5316 1765
Charles MacNeill 5:89031b2f5316 1766
Charles MacNeill 5:89031b2f5316 1767
Charles MacNeill 5:89031b2f5316 1768
Charles MacNeill 5:89031b2f5316 1769 VL53LX_Error VL53L3CX_read_nvm_optical_centre(
Charles MacNeill 5:89031b2f5316 1770 VL53LX_optical_centre_t *pcentre);
Charles MacNeill 5:89031b2f5316 1771
Charles MacNeill 5:89031b2f5316 1772
Charles MacNeill 5:89031b2f5316 1773
Charles MacNeill 5:89031b2f5316 1774
Charles MacNeill 5:89031b2f5316 1775 VL53LX_Error VL53L3CX_read_nvm_cal_peak_rate_map(
Charles MacNeill 5:89031b2f5316 1776 VL53LX_cal_peak_rate_map_t *pcal_data);
Charles MacNeill 5:89031b2f5316 1777
Charles MacNeill 5:89031b2f5316 1778
Charles MacNeill 5:89031b2f5316 1779
Charles MacNeill 5:89031b2f5316 1780
Charles MacNeill 5:89031b2f5316 1781 VL53LX_Error VL53L3CX_read_nvm_additional_offset_cal_data(
Charles MacNeill 5:89031b2f5316 1782 VL53LX_additional_offset_cal_data_t *pcal_data);
Charles MacNeill 5:89031b2f5316 1783
Charles MacNeill 5:89031b2f5316 1784
Charles MacNeill 5:89031b2f5316 1785
Charles MacNeill 5:89031b2f5316 1786
Charles MacNeill 5:89031b2f5316 1787 VL53LX_Error VL53L3CX_read_nvm_fmt_range_results_data(
Charles MacNeill 5:89031b2f5316 1788 uint16_t range_results_select,
Charles MacNeill 5:89031b2f5316 1789 VL53LX_decoded_nvm_fmt_range_data_t *prange_data);
Charles MacNeill 5:89031b2f5316 1790
Charles MacNeill 5:89031b2f5316 1791
Charles MacNeill 5:89031b2f5316 1792
Charles MacNeill 5:89031b2f5316 1793 /* vl53lx_platform_ipp.h */
Charles MacNeill 5:89031b2f5316 1794
Charles MacNeill 5:89031b2f5316 1795 VL53LX_Error VL53L3CX_ipp_hist_process_data(
Charles MacNeill 5:89031b2f5316 1796 VL53LX_dmax_calibration_data_t *pdmax_cal,
Charles MacNeill 5:89031b2f5316 1797 VL53LX_hist_gen3_dmax_config_t *pdmax_cfg,
Charles MacNeill 5:89031b2f5316 1798 VL53LX_hist_post_process_config_t *ppost_cfg,
Charles MacNeill 5:89031b2f5316 1799 VL53LX_histogram_bin_data_t *pbins,
Charles MacNeill 5:89031b2f5316 1800 VL53LX_xtalk_histogram_data_t *pxtalk,
Charles MacNeill 5:89031b2f5316 1801 uint8_t *pArea1,
Charles MacNeill 5:89031b2f5316 1802 uint8_t *pArea2,
Charles MacNeill 5:89031b2f5316 1803 uint8_t *phisto_merge_nb,
Charles MacNeill 5:89031b2f5316 1804 VL53LX_range_results_t *presults);
Charles MacNeill 5:89031b2f5316 1805
Charles MacNeill 5:89031b2f5316 1806 VL53LX_Error VL53L3CX_ipp_hist_ambient_dmax(
Charles MacNeill 5:89031b2f5316 1807 uint16_t target_reflectance,
Charles MacNeill 5:89031b2f5316 1808 VL53LX_dmax_calibration_data_t *pdmax_cal,
Charles MacNeill 5:89031b2f5316 1809 VL53LX_hist_gen3_dmax_config_t *pdmax_cfg,
Charles MacNeill 5:89031b2f5316 1810 VL53LX_histogram_bin_data_t *pbins,
Charles MacNeill 5:89031b2f5316 1811 int16_t *pambient_dmax_mm);
Charles MacNeill 5:89031b2f5316 1812
Charles MacNeill 5:89031b2f5316 1813 VL53LX_Error VL53L3CX_ipp_xtalk_calibration_process_data(
Charles MacNeill 5:89031b2f5316 1814 VL53LX_xtalk_range_results_t *pxtalk_ranges,
Charles MacNeill 5:89031b2f5316 1815 VL53LX_xtalk_histogram_data_t *pxtalk_shape,
Charles MacNeill 5:89031b2f5316 1816 VL53LX_xtalk_calibration_results_t *pxtalk_cal);
Charles MacNeill 5:89031b2f5316 1817
Charles MacNeill 5:89031b2f5316 1818
Charles MacNeill 5:89031b2f5316 1819
Charles MacNeill 5:89031b2f5316 1820
Charles MacNeill 5:89031b2f5316 1821 /* vl53lx_hist_funcs.h */
Charles MacNeill 5:89031b2f5316 1822
Charles MacNeill 5:89031b2f5316 1823
Charles MacNeill 5:89031b2f5316 1824 VL53LX_Error VL53L3CX_hist_process_data(
Charles MacNeill 5:89031b2f5316 1825 VL53LX_dmax_calibration_data_t *pdmax_cal,
Charles MacNeill 5:89031b2f5316 1826 VL53LX_hist_gen3_dmax_config_t *pdmax_cfg,
Charles MacNeill 5:89031b2f5316 1827 VL53LX_hist_post_process_config_t *ppost_cfg,
Charles MacNeill 5:89031b2f5316 1828 VL53LX_histogram_bin_data_t *pbins,
Charles MacNeill 5:89031b2f5316 1829 VL53LX_xtalk_histogram_data_t *pxtalk,
Charles MacNeill 5:89031b2f5316 1830 uint8_t *pArea1,
Charles MacNeill 5:89031b2f5316 1831 uint8_t *pArea2,
Charles MacNeill 5:89031b2f5316 1832 VL53LX_range_results_t *presults,
Charles MacNeill 5:89031b2f5316 1833 uint8_t *HistMergeNumber);
Charles MacNeill 5:89031b2f5316 1834
Charles MacNeill 5:89031b2f5316 1835
Charles MacNeill 5:89031b2f5316 1836 VL53LX_Error VL53L3CX_hist_ambient_dmax(
Charles MacNeill 5:89031b2f5316 1837 uint16_t target_reflectance,
Charles MacNeill 5:89031b2f5316 1838 VL53LX_dmax_calibration_data_t *pdmax_cal,
Charles MacNeill 5:89031b2f5316 1839 VL53LX_hist_gen3_dmax_config_t *pdmax_cfg,
Charles MacNeill 5:89031b2f5316 1840 VL53LX_histogram_bin_data_t *pbins,
Charles MacNeill 5:89031b2f5316 1841 int16_t *pambient_dmax_mm);
Charles MacNeill 5:89031b2f5316 1842
Charles MacNeill 5:89031b2f5316 1843
Charles MacNeill 5:89031b2f5316 1844 /* vl53lx_core_support.h */
Charles MacNeill 5:89031b2f5316 1845
Charles MacNeill 5:89031b2f5316 1846 uint8_t VL53L3CX_decode_vcsel_period( uint8_t vcsel_period_reg);
Charles MacNeill 5:89031b2f5316 1847
Charles MacNeill 5:89031b2f5316 1848 uint32_t VL53L3CX_events_per_spad_maths(
Charles MacNeill 5:89031b2f5316 1849 int32_t VL53LX_p_010,
Charles MacNeill 5:89031b2f5316 1850 uint16_t num_spads,
Charles MacNeill 5:89031b2f5316 1851 uint32_t duration);
Charles MacNeill 5:89031b2f5316 1852
Charles MacNeill 5:89031b2f5316 1853 uint32_t VL53L3CX_isqrt(
Charles MacNeill 5:89031b2f5316 1854 uint32_t num);
Charles MacNeill 5:89031b2f5316 1855
Charles MacNeill 5:89031b2f5316 1856 void VL53L3CX_hist_calc_zero_distance_phase(
Charles MacNeill 5:89031b2f5316 1857 VL53LX_histogram_bin_data_t *pdata);
Charles MacNeill 5:89031b2f5316 1858
Charles MacNeill 5:89031b2f5316 1859 void VL53L3CX_hist_estimate_ambient_from_thresholded_bins(
Charles MacNeill 5:89031b2f5316 1860 int32_t ambient_threshold_sigma,
Charles MacNeill 5:89031b2f5316 1861 VL53LX_histogram_bin_data_t *pdata);
Charles MacNeill 5:89031b2f5316 1862
Charles MacNeill 5:89031b2f5316 1863 void VL53L3CX_hist_remove_ambient_bins(
Charles MacNeill 5:89031b2f5316 1864 VL53LX_histogram_bin_data_t *pdata);
Charles MacNeill 5:89031b2f5316 1865
Charles MacNeill 5:89031b2f5316 1866 uint32_t VL53L3CX_calc_pll_period_mm(
Charles MacNeill 5:89031b2f5316 1867 uint16_t fast_osc_frequency);
Charles MacNeill 5:89031b2f5316 1868
Charles MacNeill 5:89031b2f5316 1869 uint16_t VL53L3CX_rate_maths(
Charles MacNeill 5:89031b2f5316 1870 int32_t VL53LX_p_018,
Charles MacNeill 5:89031b2f5316 1871 uint32_t time_us);
Charles MacNeill 5:89031b2f5316 1872
Charles MacNeill 5:89031b2f5316 1873 uint16_t VL53L3CX_rate_per_spad_maths(
Charles MacNeill 5:89031b2f5316 1874 uint32_t frac_bits,
Charles MacNeill 5:89031b2f5316 1875 uint32_t peak_count_rate,
Charles MacNeill 5:89031b2f5316 1876 uint16_t num_spads,
Charles MacNeill 5:89031b2f5316 1877 uint32_t max_output_value);
Charles MacNeill 5:89031b2f5316 1878
Charles MacNeill 5:89031b2f5316 1879 int32_t VL53L3CX_range_maths(
Charles MacNeill 5:89031b2f5316 1880 uint16_t fast_osc_frequency,
Charles MacNeill 5:89031b2f5316 1881 uint16_t VL53LX_p_014,
Charles MacNeill 5:89031b2f5316 1882 uint16_t zero_distance_phase,
Charles MacNeill 5:89031b2f5316 1883 uint8_t fractional_bits,
Charles MacNeill 5:89031b2f5316 1884 int32_t gain_factor,
Charles MacNeill 5:89031b2f5316 1885 int32_t range_offset_mm);
Charles MacNeill 5:89031b2f5316 1886
Charles MacNeill 5:89031b2f5316 1887
Charles MacNeill 5:89031b2f5316 1888 void VL53L3CX_copy_xtalk_bin_data_to_histogram_data_struct(
Charles MacNeill 5:89031b2f5316 1889 VL53LX_xtalk_histogram_shape_t *pxtalk,
Charles MacNeill 5:89031b2f5316 1890 VL53LX_histogram_bin_data_t *phist);
Charles MacNeill 5:89031b2f5316 1891
Charles MacNeill 5:89031b2f5316 1892 void VL53L3CX_init_histogram_bin_data_struct(
Charles MacNeill 5:89031b2f5316 1893 int32_t bin_value,
Charles MacNeill 5:89031b2f5316 1894 uint16_t VL53LX_p_021,
Charles MacNeill 5:89031b2f5316 1895 VL53LX_histogram_bin_data_t *pdata);
Charles MacNeill 5:89031b2f5316 1896
Charles MacNeill 5:89031b2f5316 1897 void VL53L3CX_decode_row_col(
Charles MacNeill 5:89031b2f5316 1898 uint8_t spad_number,
Charles MacNeill 5:89031b2f5316 1899 uint8_t *prow,
Charles MacNeill 5:89031b2f5316 1900 uint8_t *pcol);
Charles MacNeill 5:89031b2f5316 1901
Charles MacNeill 5:89031b2f5316 1902 void VL53L3CX_hist_find_min_max_bin_values(
Charles MacNeill 5:89031b2f5316 1903 VL53LX_histogram_bin_data_t *pdata);
Charles MacNeill 5:89031b2f5316 1904
Charles MacNeill 5:89031b2f5316 1905 void VL53L3CX_hist_estimate_ambient_from_ambient_bins(
Charles MacNeill 5:89031b2f5316 1906 VL53LX_histogram_bin_data_t *pdata);
Charles MacNeill 5:89031b2f5316 1907
Charles MacNeill 5:89031b2f5316 1908 uint32_t VL53L3CX_calc_pll_period_us(
Charles MacNeill 5:89031b2f5316 1909 uint16_t fast_osc_frequency);
Charles MacNeill 5:89031b2f5316 1910
Charles MacNeill 5:89031b2f5316 1911 uint32_t VL53L3CX_duration_maths(
Charles MacNeill 5:89031b2f5316 1912 uint32_t pll_period_us,
Charles MacNeill 5:89031b2f5316 1913 uint32_t vcsel_parm_pclks,
Charles MacNeill 5:89031b2f5316 1914 uint32_t window_vclks,
Charles MacNeill 5:89031b2f5316 1915 uint32_t periods_elapsed_mclks);
Charles MacNeill 5:89031b2f5316 1916
Charles MacNeill 5:89031b2f5316 1917
Charles MacNeill 5:89031b2f5316 1918 /* vl53lx_core.h */
Charles MacNeill 5:89031b2f5316 1919
Charles MacNeill 5:89031b2f5316 1920 void VL53L3CX_init_version();
Charles MacNeill 5:89031b2f5316 1921
Charles MacNeill 5:89031b2f5316 1922 void VL53L3CX_init_ll_driver_state(
Charles MacNeill 5:89031b2f5316 1923 VL53LX_DeviceState ll_state);
Charles MacNeill 5:89031b2f5316 1924
Charles MacNeill 5:89031b2f5316 1925 VL53LX_Error VL53L3CX_update_ll_driver_rd_state();
Charles MacNeill 5:89031b2f5316 1926
Charles MacNeill 5:89031b2f5316 1927 VL53LX_Error VL53L3CX_check_ll_driver_rd_state();
Charles MacNeill 5:89031b2f5316 1928
Charles MacNeill 5:89031b2f5316 1929 VL53LX_Error VL53L3CX_update_ll_driver_cfg_state();
Charles MacNeill 5:89031b2f5316 1930
Charles MacNeill 5:89031b2f5316 1931 void VL53L3CX_copy_rtn_good_spads_to_buffer(
Charles MacNeill 5:89031b2f5316 1932 VL53LX_nvm_copy_data_t *pdata,
Charles MacNeill 5:89031b2f5316 1933 uint8_t *pbuffer);
Charles MacNeill 5:89031b2f5316 1934
Charles MacNeill 5:89031b2f5316 1935 void VL53L3CX_init_system_results(
Charles MacNeill 5:89031b2f5316 1936 VL53LX_system_results_t *pdata);
Charles MacNeill 5:89031b2f5316 1937
Charles MacNeill 5:89031b2f5316 1938 void VL53L3CX_init_zone_results_structure(
Charles MacNeill 5:89031b2f5316 1939 uint8_t active_zones,
Charles MacNeill 5:89031b2f5316 1940 VL53LX_zone_results_t *pdata);
Charles MacNeill 5:89031b2f5316 1941
Charles MacNeill 5:89031b2f5316 1942 void VL53L3CX_init_zone_dss_configs();
Charles MacNeill 5:89031b2f5316 1943
Charles MacNeill 5:89031b2f5316 1944 void VL53L3CX_init_histogram_config_structure(
Charles MacNeill 5:89031b2f5316 1945 uint8_t even_bin0,
Charles MacNeill 5:89031b2f5316 1946 uint8_t even_bin1,
Charles MacNeill 5:89031b2f5316 1947 uint8_t even_bin2,
Charles MacNeill 5:89031b2f5316 1948 uint8_t even_bin3,
Charles MacNeill 5:89031b2f5316 1949 uint8_t even_bin4,
Charles MacNeill 5:89031b2f5316 1950 uint8_t even_bin5,
Charles MacNeill 5:89031b2f5316 1951 uint8_t odd_bin0,
Charles MacNeill 5:89031b2f5316 1952 uint8_t odd_bin1,
Charles MacNeill 5:89031b2f5316 1953 uint8_t odd_bin2,
Charles MacNeill 5:89031b2f5316 1954 uint8_t odd_bin3,
Charles MacNeill 5:89031b2f5316 1955 uint8_t odd_bin4,
Charles MacNeill 5:89031b2f5316 1956 uint8_t odd_bin5,
Charles MacNeill 5:89031b2f5316 1957 VL53LX_histogram_config_t *pdata);
Charles MacNeill 5:89031b2f5316 1958
Charles MacNeill 5:89031b2f5316 1959 void VL53L3CX_init_histogram_multizone_config_structure(
Charles MacNeill 5:89031b2f5316 1960 uint8_t even_bin0,
Charles MacNeill 5:89031b2f5316 1961 uint8_t even_bin1,
Charles MacNeill 5:89031b2f5316 1962 uint8_t even_bin2,
Charles MacNeill 5:89031b2f5316 1963 uint8_t even_bin3,
Charles MacNeill 5:89031b2f5316 1964 uint8_t even_bin4,
Charles MacNeill 5:89031b2f5316 1965 uint8_t even_bin5,
Charles MacNeill 5:89031b2f5316 1966 uint8_t odd_bin0,
Charles MacNeill 5:89031b2f5316 1967 uint8_t odd_bin1,
Charles MacNeill 5:89031b2f5316 1968 uint8_t odd_bin2,
Charles MacNeill 5:89031b2f5316 1969 uint8_t odd_bin3,
Charles MacNeill 5:89031b2f5316 1970 uint8_t odd_bin4,
Charles MacNeill 5:89031b2f5316 1971 uint8_t odd_bin5,
Charles MacNeill 5:89031b2f5316 1972 VL53LX_histogram_config_t *pdata);
Charles MacNeill 5:89031b2f5316 1973
Charles MacNeill 5:89031b2f5316 1974 void VL53L3CX_init_xtalk_bin_data_struct(
Charles MacNeill 5:89031b2f5316 1975 uint32_t bin_value,
Charles MacNeill 5:89031b2f5316 1976 uint16_t VL53LX_p_021,
Charles MacNeill 5:89031b2f5316 1977 VL53LX_xtalk_histogram_shape_t *pdata);
Charles MacNeill 5:89031b2f5316 1978
Charles MacNeill 5:89031b2f5316 1979 void VL53L3CX_i2c_encode_uint16_t(
Charles MacNeill 5:89031b2f5316 1980 uint16_t ip_value,
Charles MacNeill 5:89031b2f5316 1981 uint16_t count,
Charles MacNeill 5:89031b2f5316 1982 uint8_t *pbuffer);
Charles MacNeill 5:89031b2f5316 1983
Charles MacNeill 5:89031b2f5316 1984 uint16_t VL53L3CX_i2c_decode_uint16_t(
Charles MacNeill 5:89031b2f5316 1985 uint16_t count,
Charles MacNeill 5:89031b2f5316 1986 uint8_t *pbuffer);
Charles MacNeill 5:89031b2f5316 1987
Charles MacNeill 5:89031b2f5316 1988 void VL53L3CX_i2c_encode_int16_t(
Charles MacNeill 5:89031b2f5316 1989 int16_t ip_value,
Charles MacNeill 5:89031b2f5316 1990 uint16_t count,
Charles MacNeill 5:89031b2f5316 1991 uint8_t *pbuffer);
Charles MacNeill 5:89031b2f5316 1992
Charles MacNeill 5:89031b2f5316 1993 int16_t VL53L3CX_i2c_decode_int16_t(
Charles MacNeill 5:89031b2f5316 1994 uint16_t count,
Charles MacNeill 5:89031b2f5316 1995 uint8_t *pbuffer);
Charles MacNeill 5:89031b2f5316 1996
Charles MacNeill 5:89031b2f5316 1997 void VL53L3CX_i2c_encode_uint32_t(
Charles MacNeill 5:89031b2f5316 1998 uint32_t ip_value,
Charles MacNeill 5:89031b2f5316 1999 uint16_t count,
Charles MacNeill 5:89031b2f5316 2000 uint8_t *pbuffer);
Charles MacNeill 5:89031b2f5316 2001
Charles MacNeill 5:89031b2f5316 2002 uint32_t VL53L3CX_i2c_decode_uint32_t(
Charles MacNeill 5:89031b2f5316 2003 uint16_t count,
Charles MacNeill 5:89031b2f5316 2004 uint8_t *pbuffer);
Charles MacNeill 5:89031b2f5316 2005
Charles MacNeill 5:89031b2f5316 2006 uint32_t VL53L3CX_i2c_decode_with_mask(
Charles MacNeill 5:89031b2f5316 2007 uint16_t count,
Charles MacNeill 5:89031b2f5316 2008 uint8_t *pbuffer,
Charles MacNeill 5:89031b2f5316 2009 uint32_t bit_mask,
Charles MacNeill 5:89031b2f5316 2010 uint32_t down_shift,
Charles MacNeill 5:89031b2f5316 2011 uint32_t offset);
Charles MacNeill 5:89031b2f5316 2012
Charles MacNeill 5:89031b2f5316 2013 void VL53L3CX_i2c_encode_int32_t(
Charles MacNeill 5:89031b2f5316 2014 int32_t ip_value,
Charles MacNeill 5:89031b2f5316 2015 uint16_t count,
Charles MacNeill 5:89031b2f5316 2016 uint8_t *pbuffer);
Charles MacNeill 5:89031b2f5316 2017
Charles MacNeill 5:89031b2f5316 2018 int32_t VL53L3CX_i2c_decode_int32_t(
Charles MacNeill 5:89031b2f5316 2019 uint16_t count,
Charles MacNeill 5:89031b2f5316 2020 uint8_t *pbuffer);
Charles MacNeill 5:89031b2f5316 2021
Charles MacNeill 5:89031b2f5316 2022 VL53LX_Error VL53L3CX_start_test(
Charles MacNeill 5:89031b2f5316 2023 uint8_t test_mode__ctrl);
Charles MacNeill 5:89031b2f5316 2024
Charles MacNeill 5:89031b2f5316 2025 VL53LX_Error VL53L3CX_set_firmware_enable_register(uint8_t value);
Charles MacNeill 5:89031b2f5316 2026
Charles MacNeill 5:89031b2f5316 2027 VL53LX_Error VL53L3CX_enable_firmware();
Charles MacNeill 5:89031b2f5316 2028
Charles MacNeill 5:89031b2f5316 2029 VL53LX_Error VL53L3CX_disable_firmware();
Charles MacNeill 5:89031b2f5316 2030
Charles MacNeill 5:89031b2f5316 2031 VL53LX_Error VL53L3CX_set_powerforce_register(
Charles MacNeill 5:89031b2f5316 2032 uint8_t value);
Charles MacNeill 5:89031b2f5316 2033
Charles MacNeill 5:89031b2f5316 2034 VL53LX_Error VL53L3CX_enable_powerforce();
Charles MacNeill 5:89031b2f5316 2035
Charles MacNeill 5:89031b2f5316 2036 VL53LX_Error VL53L3CX_disable_powerforce();
Charles MacNeill 5:89031b2f5316 2037
Charles MacNeill 5:89031b2f5316 2038 VL53LX_Error VL53L3CX_clear_interrupt();
Charles MacNeill 5:89031b2f5316 2039
Charles MacNeill 5:89031b2f5316 2040 VL53LX_Error VL53L3CX_force_shadow_stream_count_to_zero();
Charles MacNeill 5:89031b2f5316 2041
Charles MacNeill 5:89031b2f5316 2042 uint32_t VL53L3CX_calc_macro_period_us(
Charles MacNeill 5:89031b2f5316 2043 uint16_t fast_osc_frequency,
Charles MacNeill 5:89031b2f5316 2044 uint8_t VL53LX_p_005);
Charles MacNeill 5:89031b2f5316 2045
Charles MacNeill 5:89031b2f5316 2046 uint16_t VL53L3CX_calc_range_ignore_threshold(
Charles MacNeill 5:89031b2f5316 2047 uint32_t central_rate,
Charles MacNeill 5:89031b2f5316 2048 int16_t x_gradient,
Charles MacNeill 5:89031b2f5316 2049 int16_t y_gradient,
Charles MacNeill 5:89031b2f5316 2050 uint8_t rate_mult);
Charles MacNeill 5:89031b2f5316 2051
Charles MacNeill 5:89031b2f5316 2052 uint32_t VL53L3CX_calc_timeout_mclks(
Charles MacNeill 5:89031b2f5316 2053 uint32_t timeout_us,
Charles MacNeill 5:89031b2f5316 2054 uint32_t macro_period_us);
Charles MacNeill 5:89031b2f5316 2055
Charles MacNeill 5:89031b2f5316 2056 uint16_t VL53L3CX_calc_encoded_timeout(
Charles MacNeill 5:89031b2f5316 2057 uint32_t timeout_us,
Charles MacNeill 5:89031b2f5316 2058 uint32_t macro_period_us);
Charles MacNeill 5:89031b2f5316 2059
Charles MacNeill 5:89031b2f5316 2060 uint32_t VL53L3CX_calc_timeout_us(
Charles MacNeill 5:89031b2f5316 2061 uint32_t timeout_mclks,
Charles MacNeill 5:89031b2f5316 2062 uint32_t macro_period_us);
Charles MacNeill 5:89031b2f5316 2063
Charles MacNeill 5:89031b2f5316 2064 uint32_t VL53L3CX_calc_decoded_timeout_us(
Charles MacNeill 5:89031b2f5316 2065 uint16_t timeout_encoded,
Charles MacNeill 5:89031b2f5316 2066 uint32_t macro_period_us);
Charles MacNeill 5:89031b2f5316 2067
Charles MacNeill 5:89031b2f5316 2068 uint16_t VL53L3CX_encode_timeout(
Charles MacNeill 5:89031b2f5316 2069 uint32_t timeout_mclks);
Charles MacNeill 5:89031b2f5316 2070
Charles MacNeill 5:89031b2f5316 2071 uint32_t VL53L3CX_decode_timeout(
Charles MacNeill 5:89031b2f5316 2072 uint16_t encoded_timeout);
Charles MacNeill 5:89031b2f5316 2073
Charles MacNeill 5:89031b2f5316 2074 VL53LX_Error VL53L3CX_calc_timeout_register_values(
Charles MacNeill 5:89031b2f5316 2075 uint32_t phasecal_config_timeout_us,
Charles MacNeill 5:89031b2f5316 2076 uint32_t mm_config_timeout_us,
Charles MacNeill 5:89031b2f5316 2077 uint32_t range_config_timeout_us,
Charles MacNeill 5:89031b2f5316 2078 uint16_t fast_osc_frequency,
Charles MacNeill 5:89031b2f5316 2079 VL53LX_general_config_t *pgeneral,
Charles MacNeill 5:89031b2f5316 2080 VL53LX_timing_config_t *ptiming);
Charles MacNeill 5:89031b2f5316 2081
Charles MacNeill 5:89031b2f5316 2082 uint8_t VL53L3CX_encode_vcsel_period(
Charles MacNeill 5:89031b2f5316 2083 uint8_t VL53LX_p_030);
Charles MacNeill 5:89031b2f5316 2084
Charles MacNeill 5:89031b2f5316 2085 uint32_t VL53L3CX_decode_unsigned_integer(
Charles MacNeill 5:89031b2f5316 2086 uint8_t *pbuffer,
Charles MacNeill 5:89031b2f5316 2087 uint8_t no_of_bytes);
Charles MacNeill 5:89031b2f5316 2088
Charles MacNeill 5:89031b2f5316 2089 void VL53L3CX_encode_unsigned_integer(
Charles MacNeill 5:89031b2f5316 2090 uint32_t ip_value,
Charles MacNeill 5:89031b2f5316 2091 uint8_t no_of_bytes,
Charles MacNeill 5:89031b2f5316 2092 uint8_t *pbuffer);
Charles MacNeill 5:89031b2f5316 2093
Charles MacNeill 5:89031b2f5316 2094 VL53LX_Error VL53L3CX_hist_copy_and_scale_ambient_info(
Charles MacNeill 5:89031b2f5316 2095 VL53LX_zone_hist_info_t *pidata,
Charles MacNeill 5:89031b2f5316 2096 VL53LX_histogram_bin_data_t *podata);
Charles MacNeill 5:89031b2f5316 2097
Charles MacNeill 5:89031b2f5316 2098 void VL53L3CX_hist_get_bin_sequence_config(
Charles MacNeill 5:89031b2f5316 2099 VL53LX_histogram_bin_data_t *pdata);
Charles MacNeill 5:89031b2f5316 2100
Charles MacNeill 5:89031b2f5316 2101 VL53LX_Error VL53L3CX_hist_phase_consistency_check(
Charles MacNeill 5:89031b2f5316 2102 VL53LX_zone_hist_info_t *phist_prev,
Charles MacNeill 5:89031b2f5316 2103 VL53LX_zone_objects_t *prange_prev,
Charles MacNeill 5:89031b2f5316 2104 VL53LX_range_results_t *prange_curr);
Charles MacNeill 5:89031b2f5316 2105
Charles MacNeill 5:89031b2f5316 2106 VL53LX_Error VL53L3CX_hist_events_consistency_check(
Charles MacNeill 5:89031b2f5316 2107 uint8_t event_sigma,
Charles MacNeill 5:89031b2f5316 2108 uint16_t min_effective_spad_count,
Charles MacNeill 5:89031b2f5316 2109 VL53LX_zone_hist_info_t *phist_prev,
Charles MacNeill 5:89031b2f5316 2110 VL53LX_object_data_t *prange_prev,
Charles MacNeill 5:89031b2f5316 2111 VL53LX_range_data_t *prange_curr,
Charles MacNeill 5:89031b2f5316 2112 int32_t *pevents_tolerance,
Charles MacNeill 5:89031b2f5316 2113 int32_t *pevents_delta,
Charles MacNeill 5:89031b2f5316 2114 VL53LX_DeviceError *prange_status);
Charles MacNeill 5:89031b2f5316 2115
Charles MacNeill 5:89031b2f5316 2116 VL53LX_Error VL53L3CX_hist_merged_pulse_check(
Charles MacNeill 5:89031b2f5316 2117 int16_t min_max_tolerance_mm,
Charles MacNeill 5:89031b2f5316 2118 VL53LX_range_data_t *pdata,
Charles MacNeill 5:89031b2f5316 2119 VL53LX_DeviceError *prange_status);
Charles MacNeill 5:89031b2f5316 2120
Charles MacNeill 5:89031b2f5316 2121 VL53LX_Error VL53L3CX_hist_xmonitor_consistency_check(
Charles MacNeill 5:89031b2f5316 2122 VL53LX_zone_hist_info_t *phist_prev,
Charles MacNeill 5:89031b2f5316 2123 VL53LX_zone_objects_t *prange_prev,
Charles MacNeill 5:89031b2f5316 2124 VL53LX_range_data_t *prange_curr);
Charles MacNeill 5:89031b2f5316 2125
Charles MacNeill 5:89031b2f5316 2126 VL53LX_Error VL53L3CX_hist_wrap_dmax(
Charles MacNeill 5:89031b2f5316 2127 VL53LX_hist_post_process_config_t *phistpostprocess,
Charles MacNeill 5:89031b2f5316 2128 VL53LX_histogram_bin_data_t *pcurrent,
Charles MacNeill 5:89031b2f5316 2129 int16_t *pwrap_dmax_mm);
Charles MacNeill 5:89031b2f5316 2130
Charles MacNeill 5:89031b2f5316 2131 void VL53L3CX_hist_combine_mm1_mm2_offsets(
Charles MacNeill 5:89031b2f5316 2132 int16_t mm1_offset_mm,
Charles MacNeill 5:89031b2f5316 2133 int16_t mm2_offset_mm,
Charles MacNeill 5:89031b2f5316 2134 uint8_t encoded_mm_roi_centre,
Charles MacNeill 5:89031b2f5316 2135 uint8_t encoded_mm_roi_size,
Charles MacNeill 5:89031b2f5316 2136 uint8_t encoded_zone_centre,
Charles MacNeill 5:89031b2f5316 2137 uint8_t encoded_zone_size,
Charles MacNeill 5:89031b2f5316 2138 VL53LX_additional_offset_cal_data_t *pcal_data,
Charles MacNeill 5:89031b2f5316 2139 uint8_t *pgood_spads,
Charles MacNeill 5:89031b2f5316 2140 uint16_t aperture_attenuation,
Charles MacNeill 5:89031b2f5316 2141 int16_t *prange_offset_mm);
Charles MacNeill 5:89031b2f5316 2142
Charles MacNeill 5:89031b2f5316 2143 VL53LX_Error VL53L3CX_hist_xtalk_extract_calc_window(
Charles MacNeill 5:89031b2f5316 2144 int16_t target_distance_mm,
Charles MacNeill 5:89031b2f5316 2145 uint16_t target_width_oversize,
Charles MacNeill 5:89031b2f5316 2146 VL53LX_histogram_bin_data_t *phist_bins,
Charles MacNeill 5:89031b2f5316 2147 VL53LX_hist_xtalk_extract_data_t *pxtalk_data);
Charles MacNeill 5:89031b2f5316 2148
Charles MacNeill 5:89031b2f5316 2149 VL53LX_Error VL53L3CX_hist_xtalk_extract_calc_event_sums(
Charles MacNeill 5:89031b2f5316 2150 VL53LX_histogram_bin_data_t *phist_bins,
Charles MacNeill 5:89031b2f5316 2151 VL53LX_hist_xtalk_extract_data_t *pxtalk_data);
Charles MacNeill 5:89031b2f5316 2152
Charles MacNeill 5:89031b2f5316 2153 VL53LX_Error VL53L3CX_hist_xtalk_extract_calc_rate_per_spad(
Charles MacNeill 5:89031b2f5316 2154 VL53LX_hist_xtalk_extract_data_t *pxtalk_data);
Charles MacNeill 5:89031b2f5316 2155
Charles MacNeill 5:89031b2f5316 2156 VL53LX_Error VL53L3CX_hist_xtalk_extract_calc_shape(
Charles MacNeill 5:89031b2f5316 2157 VL53LX_hist_xtalk_extract_data_t *pxtalk_data,
Charles MacNeill 5:89031b2f5316 2158 VL53LX_xtalk_histogram_shape_t *pxtalk_shape);
Charles MacNeill 5:89031b2f5316 2159
Charles MacNeill 5:89031b2f5316 2160 VL53LX_Error VL53L3CX_hist_xtalk_shape_model(
Charles MacNeill 5:89031b2f5316 2161 uint16_t events_per_bin,
Charles MacNeill 5:89031b2f5316 2162 uint16_t pulse_centre,
Charles MacNeill 5:89031b2f5316 2163 uint16_t pulse_width,
Charles MacNeill 5:89031b2f5316 2164 VL53LX_xtalk_histogram_shape_t *pxtalk_shape);
Charles MacNeill 5:89031b2f5316 2165
Charles MacNeill 5:89031b2f5316 2166 uint16_t VL53L3CX_hist_xtalk_shape_model_interp(
Charles MacNeill 5:89031b2f5316 2167 uint16_t events_per_bin,
Charles MacNeill 5:89031b2f5316 2168 uint32_t phase_delta);
Charles MacNeill 5:89031b2f5316 2169
Charles MacNeill 5:89031b2f5316 2170 void VL53L3CX_spad_number_to_byte_bit_index(
Charles MacNeill 5:89031b2f5316 2171 uint8_t spad_number,
Charles MacNeill 5:89031b2f5316 2172 uint8_t *pbyte_index,
Charles MacNeill 5:89031b2f5316 2173 uint8_t *pbit_index,
Charles MacNeill 5:89031b2f5316 2174 uint8_t *pbit_mask);
Charles MacNeill 5:89031b2f5316 2175
Charles MacNeill 5:89031b2f5316 2176 void VL53L3CX_encode_row_col(
Charles MacNeill 5:89031b2f5316 2177 uint8_t row,
Charles MacNeill 5:89031b2f5316 2178 uint8_t col,
Charles MacNeill 5:89031b2f5316 2179 uint8_t *pspad_number);
Charles MacNeill 5:89031b2f5316 2180
Charles MacNeill 5:89031b2f5316 2181 void VL53L3CX_decode_zone_size(
Charles MacNeill 5:89031b2f5316 2182 uint8_t encoded_xy_size,
Charles MacNeill 5:89031b2f5316 2183 uint8_t *pwidth,
Charles MacNeill 5:89031b2f5316 2184 uint8_t *pheight);
Charles MacNeill 5:89031b2f5316 2185
Charles MacNeill 5:89031b2f5316 2186 void VL53L3CX_encode_zone_size(
Charles MacNeill 5:89031b2f5316 2187 uint8_t width,
Charles MacNeill 5:89031b2f5316 2188 uint8_t height,
Charles MacNeill 5:89031b2f5316 2189 uint8_t *pencoded_xy_size);
Charles MacNeill 5:89031b2f5316 2190
Charles MacNeill 5:89031b2f5316 2191 void VL53L3CX_decode_zone_limits(
Charles MacNeill 5:89031b2f5316 2192 uint8_t encoded_xy_centre,
Charles MacNeill 5:89031b2f5316 2193 uint8_t encoded_xy_size,
Charles MacNeill 5:89031b2f5316 2194 int16_t *px_ll,
Charles MacNeill 5:89031b2f5316 2195 int16_t *py_ll,
Charles MacNeill 5:89031b2f5316 2196 int16_t *px_ur,
Charles MacNeill 5:89031b2f5316 2197 int16_t *py_ur);
Charles MacNeill 5:89031b2f5316 2198
Charles MacNeill 5:89031b2f5316 2199 uint8_t VL53L3CX_is_aperture_location(
Charles MacNeill 5:89031b2f5316 2200 uint8_t row,
Charles MacNeill 5:89031b2f5316 2201 uint8_t col);
Charles MacNeill 5:89031b2f5316 2202
Charles MacNeill 5:89031b2f5316 2203 void VL53L3CX_calc_max_effective_spads(
Charles MacNeill 5:89031b2f5316 2204 uint8_t encoded_zone_centre,
Charles MacNeill 5:89031b2f5316 2205 uint8_t encoded_zone_size,
Charles MacNeill 5:89031b2f5316 2206 uint8_t *pgood_spads,
Charles MacNeill 5:89031b2f5316 2207 uint16_t aperture_attenuation,
Charles MacNeill 5:89031b2f5316 2208 uint16_t *pmax_effective_spads);
Charles MacNeill 5:89031b2f5316 2209
Charles MacNeill 5:89031b2f5316 2210 void VL53L3CX_calc_mm_effective_spads(
Charles MacNeill 5:89031b2f5316 2211 uint8_t encoded_mm_roi_centre,
Charles MacNeill 5:89031b2f5316 2212 uint8_t encoded_mm_roi_size,
Charles MacNeill 5:89031b2f5316 2213 uint8_t encoded_zone_centre,
Charles MacNeill 5:89031b2f5316 2214 uint8_t encoded_zone_size,
Charles MacNeill 5:89031b2f5316 2215 uint8_t *pgood_spads,
Charles MacNeill 5:89031b2f5316 2216 uint16_t aperture_attenuation,
Charles MacNeill 5:89031b2f5316 2217 uint16_t *pmm_inner_effective_spads,
Charles MacNeill 5:89031b2f5316 2218 uint16_t *pmm_outer_effective_spads);
Charles MacNeill 5:89031b2f5316 2219
Charles MacNeill 5:89031b2f5316 2220 void VL53L3CX_hist_copy_results_to_sys_and_core(
Charles MacNeill 5:89031b2f5316 2221 VL53LX_histogram_bin_data_t *pbins,
Charles MacNeill 5:89031b2f5316 2222 VL53LX_range_results_t *phist,
Charles MacNeill 5:89031b2f5316 2223 VL53LX_system_results_t *psys,
Charles MacNeill 5:89031b2f5316 2224 VL53LX_core_results_t *pcore);
Charles MacNeill 5:89031b2f5316 2225
Charles MacNeill 5:89031b2f5316 2226
Charles MacNeill 5:89031b2f5316 2227
Charles MacNeill 5:89031b2f5316 2228
Charles MacNeill 5:89031b2f5316 2229 VL53LX_Error VL53L3CX_save_cfg_data();
Charles MacNeill 5:89031b2f5316 2230
Charles MacNeill 5:89031b2f5316 2231 VL53LX_Error VL53L3CX_dynamic_zone_update(
Charles MacNeill 5:89031b2f5316 2232 VL53LX_range_results_t *presults);
Charles MacNeill 5:89031b2f5316 2233
Charles MacNeill 5:89031b2f5316 2234 VL53LX_Error VL53L3CX_update_internal_stream_counters(
Charles MacNeill 5:89031b2f5316 2235 uint8_t external_stream_count,
Charles MacNeill 5:89031b2f5316 2236 uint8_t *pinternal_stream_count,
Charles MacNeill 5:89031b2f5316 2237 uint8_t *pinternal_stream_count_val
Charles MacNeill 5:89031b2f5316 2238 );
Charles MacNeill 5:89031b2f5316 2239
Charles MacNeill 5:89031b2f5316 2240 VL53LX_Error VL53L3CX_multizone_hist_bins_update();
Charles MacNeill 5:89031b2f5316 2241
Charles MacNeill 5:89031b2f5316 2242 VL53LX_Error VL53L3CX_set_histogram_multizone_initial_bin_config(
Charles MacNeill 5:89031b2f5316 2243 VL53LX_zone_config_t *pzone_cfg,
Charles MacNeill 5:89031b2f5316 2244 VL53LX_histogram_config_t *phist_cfg,
Charles MacNeill 5:89031b2f5316 2245 VL53LX_histogram_config_t *pmulti_hist
Charles MacNeill 5:89031b2f5316 2246 );
Charles MacNeill 5:89031b2f5316 2247
Charles MacNeill 5:89031b2f5316 2248 uint8_t VL53L3CX_encode_GPIO_interrupt_config(
Charles MacNeill 5:89031b2f5316 2249 VL53LX_GPIO_interrupt_config_t *pintconf);
Charles MacNeill 5:89031b2f5316 2250
Charles MacNeill 5:89031b2f5316 2251 VL53LX_GPIO_interrupt_config_t VL53L3CX_decode_GPIO_interrupt_config(
Charles MacNeill 5:89031b2f5316 2252 uint8_t system__interrupt_config);
Charles MacNeill 5:89031b2f5316 2253
Charles MacNeill 5:89031b2f5316 2254 VL53LX_Error VL53L3CX_set_GPIO_distance_threshold(
Charles MacNeill 5:89031b2f5316 2255 uint16_t threshold_high,
Charles MacNeill 5:89031b2f5316 2256 uint16_t threshold_low);
Charles MacNeill 5:89031b2f5316 2257
Charles MacNeill 5:89031b2f5316 2258 VL53LX_Error VL53L3CX_set_GPIO_rate_threshold(
Charles MacNeill 5:89031b2f5316 2259 uint16_t threshold_high,
Charles MacNeill 5:89031b2f5316 2260 uint16_t threshold_low);
Charles MacNeill 5:89031b2f5316 2261
Charles MacNeill 5:89031b2f5316 2262 VL53LX_Error VL53L3CX_set_GPIO_thresholds_from_struct(
Charles MacNeill 5:89031b2f5316 2263 VL53LX_GPIO_interrupt_config_t *pintconf);
Charles MacNeill 5:89031b2f5316 2264
Charles MacNeill 5:89031b2f5316 2265 VL53LX_Error VL53L3CX_set_ref_spad_char_config(
Charles MacNeill 5:89031b2f5316 2266 uint8_t vcsel_period_a,
Charles MacNeill 5:89031b2f5316 2267 uint32_t phasecal_timeout_us,
Charles MacNeill 5:89031b2f5316 2268 uint16_t total_rate_target_mcps,
Charles MacNeill 5:89031b2f5316 2269 uint16_t max_count_rate_rtn_limit_mcps,
Charles MacNeill 5:89031b2f5316 2270 uint16_t min_count_rate_rtn_limit_mcps,
Charles MacNeill 5:89031b2f5316 2271 uint16_t fast_osc_frequency);
Charles MacNeill 5:89031b2f5316 2272
Charles MacNeill 5:89031b2f5316 2273 VL53LX_Error VL53L3CX_set_ssc_config(
Charles MacNeill 5:89031b2f5316 2274 VL53LX_ssc_config_t *pssc_cfg,
Charles MacNeill 5:89031b2f5316 2275 uint16_t fast_osc_frequency);
Charles MacNeill 5:89031b2f5316 2276
Charles MacNeill 5:89031b2f5316 2277 VL53LX_Error VL53L3CX_get_spad_rate_data(
Charles MacNeill 5:89031b2f5316 2278 VL53LX_spad_rate_data_t *pspad_rates);
Charles MacNeill 5:89031b2f5316 2279
Charles MacNeill 5:89031b2f5316 2280 uint32_t VL53L3CX_calc_crosstalk_plane_offset_with_margin(
Charles MacNeill 5:89031b2f5316 2281 uint32_t plane_offset_kcps,
Charles MacNeill 5:89031b2f5316 2282 int16_t margin_offset_kcps);
Charles MacNeill 5:89031b2f5316 2283
Charles MacNeill 5:89031b2f5316 2284 VL53LX_Error VL53L3CX_low_power_auto_data_init();
Charles MacNeill 5:89031b2f5316 2285
Charles MacNeill 5:89031b2f5316 2286 VL53LX_Error VL53L3CX_low_power_auto_data_stop_range();
Charles MacNeill 5:89031b2f5316 2287
Charles MacNeill 5:89031b2f5316 2288 VL53LX_Error VL53L3CX_dynamic_xtalk_correction_calc_required_samples();
Charles MacNeill 5:89031b2f5316 2289
Charles MacNeill 5:89031b2f5316 2290 VL53LX_Error VL53L3CX_dynamic_xtalk_correction_calc_new_xtalk(
Charles MacNeill 5:89031b2f5316 2291 uint32_t xtalk_offset_out,
Charles MacNeill 5:89031b2f5316 2292 VL53LX_smudge_corrector_config_t *pconfig,
Charles MacNeill 5:89031b2f5316 2293 VL53LX_smudge_corrector_data_t *pout,
Charles MacNeill 5:89031b2f5316 2294 uint8_t add_smudge,
Charles MacNeill 5:89031b2f5316 2295 uint8_t soft_update
Charles MacNeill 5:89031b2f5316 2296 );
Charles MacNeill 5:89031b2f5316 2297
Charles MacNeill 5:89031b2f5316 2298 VL53LX_Error VL53L3CX_dynamic_xtalk_correction_corrector();
Charles MacNeill 5:89031b2f5316 2299
Charles MacNeill 5:89031b2f5316 2300 VL53LX_Error VL53L3CX_dynamic_xtalk_correction_data_init();
Charles MacNeill 5:89031b2f5316 2301
Charles MacNeill 5:89031b2f5316 2302 VL53LX_Error VL53L3CX_dynamic_xtalk_correction_output_init(
Charles MacNeill 5:89031b2f5316 2303 VL53LX_LLDriverResults_t *pres
Charles MacNeill 5:89031b2f5316 2304 );
Charles MacNeill 5:89031b2f5316 2305
Charles MacNeill 5:89031b2f5316 2306 VL53LX_Error VL53L3CX_xtalk_cal_data_init();
Charles MacNeill 5:89031b2f5316 2307
Charles MacNeill 5:89031b2f5316 2308 VL53LX_Error VL53L3CX_config_low_power_auto_mode(
Charles MacNeill 5:89031b2f5316 2309 VL53LX_general_config_t *pgeneral,
Charles MacNeill 5:89031b2f5316 2310 VL53LX_dynamic_config_t *pdynamic,
Charles MacNeill 5:89031b2f5316 2311 VL53LX_low_power_auto_data_t *plpadata
Charles MacNeill 5:89031b2f5316 2312 );
Charles MacNeill 5:89031b2f5316 2313
Charles MacNeill 5:89031b2f5316 2314 VL53LX_Error VL53L3CX_low_power_auto_setup_manual_calibration();
Charles MacNeill 5:89031b2f5316 2315
Charles MacNeill 5:89031b2f5316 2316 VL53LX_Error VL53L3CX_low_power_auto_update_DSS();
Charles MacNeill 5:89031b2f5316 2317
Charles MacNeill 5:89031b2f5316 2318 VL53LX_Error VL53L3CX_compute_histo_merge_nb(uint8_t *histo_merge_nb);
Charles MacNeill 5:89031b2f5316 2319
Charles MacNeill 5:89031b2f5316 2320
Charles MacNeill 5:89031b2f5316 2321
Charles MacNeill 5:89031b2f5316 2322 /* vl53lx_wait.h */
Charles MacNeill 5:89031b2f5316 2323
Charles MacNeill 5:89031b2f5316 2324 VL53LX_Error VL53L3CX_wait_for_boot_completion();
Charles MacNeill 5:89031b2f5316 2325
Charles MacNeill 5:89031b2f5316 2326 VL53LX_Error VL53L3CX_wait_for_firmware_ready();
Charles MacNeill 5:89031b2f5316 2327
Charles MacNeill 5:89031b2f5316 2328 VL53LX_Error VL53L3CX_wait_for_range_completion();
Charles MacNeill 5:89031b2f5316 2329
Charles MacNeill 5:89031b2f5316 2330 VL53LX_Error VL53L3CX_wait_for_test_completion();
Charles MacNeill 5:89031b2f5316 2331
Charles MacNeill 5:89031b2f5316 2332 VL53LX_Error VL53L3CX_is_boot_complete(uint8_t *pready);
Charles MacNeill 5:89031b2f5316 2333
Charles MacNeill 5:89031b2f5316 2334 VL53LX_Error VL53L3CX_is_firmware_ready(uint8_t *pready);
Charles MacNeill 5:89031b2f5316 2335
Charles MacNeill 5:89031b2f5316 2336 VL53LX_Error VL53L3CX_is_new_data_ready(uint8_t *pready);
Charles MacNeill 5:89031b2f5316 2337
Charles MacNeill 5:89031b2f5316 2338 VL53LX_Error VL53L3CX_poll_for_boot_completion(uint32_t timeout_ms);
Charles MacNeill 5:89031b2f5316 2339
Charles MacNeill 5:89031b2f5316 2340 VL53LX_Error VL53L3CX_poll_for_firmware_ready(uint32_t timeout_ms);
Charles MacNeill 5:89031b2f5316 2341
Charles MacNeill 5:89031b2f5316 2342 VL53LX_Error VL53L3CX_poll_for_range_completion(uint32_t timeout_ms);
Charles MacNeill 5:89031b2f5316 2343
Charles MacNeill 5:89031b2f5316 2344
Charles MacNeill 5:89031b2f5316 2345 /* vl53lx_zone_presets.h */
Charles MacNeill 5:89031b2f5316 2346
Charles MacNeill 5:89031b2f5316 2347 VL53LX_Error VL53L3CX_init_zone_config_structure(
Charles MacNeill 5:89031b2f5316 2348 uint8_t x_off,
Charles MacNeill 5:89031b2f5316 2349 uint8_t x_inc,
Charles MacNeill 5:89031b2f5316 2350 uint8_t x_zones,
Charles MacNeill 5:89031b2f5316 2351 uint8_t y_off,
Charles MacNeill 5:89031b2f5316 2352 uint8_t y_inc,
Charles MacNeill 5:89031b2f5316 2353 uint8_t y_zones,
Charles MacNeill 5:89031b2f5316 2354 uint8_t width,
Charles MacNeill 5:89031b2f5316 2355 uint8_t height,
Charles MacNeill 5:89031b2f5316 2356 VL53LX_zone_config_t *pdata);
Charles MacNeill 5:89031b2f5316 2357
Charles MacNeill 5:89031b2f5316 2358
Charles MacNeill 5:89031b2f5316 2359 VL53LX_Error VL53L3CX_init_zone_config_histogram_bins(
Charles MacNeill 5:89031b2f5316 2360 VL53LX_zone_config_t *pdata);
Charles MacNeill 5:89031b2f5316 2361
Charles MacNeill 5:89031b2f5316 2362
Charles MacNeill 5:89031b2f5316 2363 /* vl53lx_api_preset_modes.h */
Charles MacNeill 5:89031b2f5316 2364
Charles MacNeill 5:89031b2f5316 2365 VL53LX_Error VL53L3CX_init_refspadchar_config_struct(
Charles MacNeill 5:89031b2f5316 2366 VL53LX_refspadchar_config_t *pdata);
Charles MacNeill 5:89031b2f5316 2367
Charles MacNeill 5:89031b2f5316 2368 VL53LX_Error VL53L3CX_init_ssc_config_struct(
Charles MacNeill 5:89031b2f5316 2369 VL53LX_ssc_config_t *pdata);
Charles MacNeill 5:89031b2f5316 2370
Charles MacNeill 5:89031b2f5316 2371 VL53LX_Error VL53L3CX_init_xtalk_config_struct(
Charles MacNeill 5:89031b2f5316 2372 VL53LX_customer_nvm_managed_t *pnvm,
Charles MacNeill 5:89031b2f5316 2373 VL53LX_xtalk_config_t *pdata);
Charles MacNeill 5:89031b2f5316 2374
Charles MacNeill 5:89031b2f5316 2375 VL53LX_Error VL53L3CX_init_xtalk_extract_config_struct(
Charles MacNeill 5:89031b2f5316 2376 VL53LX_xtalkextract_config_t *pdata);
Charles MacNeill 5:89031b2f5316 2377
Charles MacNeill 5:89031b2f5316 2378 VL53LX_Error VL53L3CX_init_offset_cal_config_struct(
Charles MacNeill 5:89031b2f5316 2379 VL53LX_offsetcal_config_t *pdata);
Charles MacNeill 5:89031b2f5316 2380
Charles MacNeill 5:89031b2f5316 2381 VL53LX_Error VL53L3CX_init_zone_cal_config_struct(
Charles MacNeill 5:89031b2f5316 2382 VL53LX_zonecal_config_t *pdata);
Charles MacNeill 5:89031b2f5316 2383
Charles MacNeill 5:89031b2f5316 2384 VL53LX_Error VL53L3CX_init_hist_post_process_config_struct(
Charles MacNeill 5:89031b2f5316 2385 uint8_t xtalk_compensation_enable,
Charles MacNeill 5:89031b2f5316 2386 VL53LX_hist_post_process_config_t *pdata);
Charles MacNeill 5:89031b2f5316 2387
Charles MacNeill 5:89031b2f5316 2388 VL53LX_Error VL53L3CX_init_dmax_calibration_data_struct(
Charles MacNeill 5:89031b2f5316 2389 VL53LX_dmax_calibration_data_t *pdata);
Charles MacNeill 5:89031b2f5316 2390
Charles MacNeill 5:89031b2f5316 2391 VL53LX_Error VL53L3CX_init_tuning_parm_storage_struct(
Charles MacNeill 5:89031b2f5316 2392 VL53LX_tuning_parm_storage_t *pdata);
Charles MacNeill 5:89031b2f5316 2393
Charles MacNeill 5:89031b2f5316 2394 VL53LX_Error VL53L3CX_init_hist_gen3_dmax_config_struct(
Charles MacNeill 5:89031b2f5316 2395 VL53LX_hist_gen3_dmax_config_t *pdata);
Charles MacNeill 5:89031b2f5316 2396
Charles MacNeill 5:89031b2f5316 2397 VL53LX_Error VL53L3CX_preset_mode_standard_ranging(
Charles MacNeill 5:89031b2f5316 2398 VL53LX_static_config_t *pstatic,
Charles MacNeill 5:89031b2f5316 2399 VL53LX_histogram_config_t *phistogram,
Charles MacNeill 5:89031b2f5316 2400 VL53LX_general_config_t *pgeneral,
Charles MacNeill 5:89031b2f5316 2401 VL53LX_timing_config_t *ptiming,
Charles MacNeill 5:89031b2f5316 2402 VL53LX_dynamic_config_t *pdynamic,
Charles MacNeill 5:89031b2f5316 2403 VL53LX_system_control_t *psystem,
Charles MacNeill 5:89031b2f5316 2404 VL53LX_tuning_parm_storage_t *ptuning_parms,
Charles MacNeill 5:89031b2f5316 2405 VL53LX_zone_config_t *pzone_cfg);
Charles MacNeill 5:89031b2f5316 2406
Charles MacNeill 5:89031b2f5316 2407
Charles MacNeill 5:89031b2f5316 2408
Charles MacNeill 5:89031b2f5316 2409 VL53LX_Error VL53L3CX_preset_mode_histogram_ranging(
Charles MacNeill 5:89031b2f5316 2410 VL53LX_hist_post_process_config_t *phistpostprocess,
Charles MacNeill 5:89031b2f5316 2411 VL53LX_static_config_t *pstatic,
Charles MacNeill 5:89031b2f5316 2412 VL53LX_histogram_config_t *phistogram,
Charles MacNeill 5:89031b2f5316 2413 VL53LX_general_config_t *pgeneral,
Charles MacNeill 5:89031b2f5316 2414 VL53LX_timing_config_t *ptiming,
Charles MacNeill 5:89031b2f5316 2415 VL53LX_dynamic_config_t *pdynamic,
Charles MacNeill 5:89031b2f5316 2416 VL53LX_system_control_t *psystem,
Charles MacNeill 5:89031b2f5316 2417 VL53LX_tuning_parm_storage_t *ptuning_parms,
Charles MacNeill 5:89031b2f5316 2418 VL53LX_zone_config_t *pzone_cfg);
Charles MacNeill 5:89031b2f5316 2419
Charles MacNeill 5:89031b2f5316 2420
Charles MacNeill 5:89031b2f5316 2421 VL53LX_Error VL53L3CX_preset_mode_histogram_characterisation(
Charles MacNeill 5:89031b2f5316 2422 VL53LX_hist_post_process_config_t *phistpostprocess,
Charles MacNeill 5:89031b2f5316 2423 VL53LX_static_config_t *pstatic,
Charles MacNeill 5:89031b2f5316 2424 VL53LX_histogram_config_t *phistogram,
Charles MacNeill 5:89031b2f5316 2425 VL53LX_general_config_t *pgeneral,
Charles MacNeill 5:89031b2f5316 2426 VL53LX_timing_config_t *ptiming,
Charles MacNeill 5:89031b2f5316 2427 VL53LX_dynamic_config_t *pdynamic,
Charles MacNeill 5:89031b2f5316 2428 VL53LX_system_control_t *psystem,
Charles MacNeill 5:89031b2f5316 2429 VL53LX_tuning_parm_storage_t *ptuning_parms,
Charles MacNeill 5:89031b2f5316 2430 VL53LX_zone_config_t *pzone_cfg);
Charles MacNeill 5:89031b2f5316 2431
Charles MacNeill 5:89031b2f5316 2432 VL53LX_Error VL53L3CX_preset_mode_histogram_xtalk_planar(
Charles MacNeill 5:89031b2f5316 2433 VL53LX_hist_post_process_config_t *phistpostprocess,
Charles MacNeill 5:89031b2f5316 2434 VL53LX_static_config_t *pstatic,
Charles MacNeill 5:89031b2f5316 2435 VL53LX_histogram_config_t *phistogram,
Charles MacNeill 5:89031b2f5316 2436 VL53LX_general_config_t *pgeneral,
Charles MacNeill 5:89031b2f5316 2437 VL53LX_timing_config_t *ptiming,
Charles MacNeill 5:89031b2f5316 2438 VL53LX_dynamic_config_t *pdynamic,
Charles MacNeill 5:89031b2f5316 2439 VL53LX_system_control_t *psystem,
Charles MacNeill 5:89031b2f5316 2440 VL53LX_tuning_parm_storage_t *ptuning_parms,
Charles MacNeill 5:89031b2f5316 2441 VL53LX_zone_config_t *pzone_cfg);
Charles MacNeill 5:89031b2f5316 2442
Charles MacNeill 5:89031b2f5316 2443
Charles MacNeill 5:89031b2f5316 2444 VL53LX_Error VL53L3CX_preset_mode_histogram_long_range(
Charles MacNeill 5:89031b2f5316 2445 VL53LX_hist_post_process_config_t *phistpostprocess,
Charles MacNeill 5:89031b2f5316 2446 VL53LX_static_config_t *pstatic,
Charles MacNeill 5:89031b2f5316 2447 VL53LX_histogram_config_t *phistogram,
Charles MacNeill 5:89031b2f5316 2448 VL53LX_general_config_t *pgeneral,
Charles MacNeill 5:89031b2f5316 2449 VL53LX_timing_config_t *ptiming,
Charles MacNeill 5:89031b2f5316 2450 VL53LX_dynamic_config_t *pdynamic,
Charles MacNeill 5:89031b2f5316 2451 VL53LX_system_control_t *psystem,
Charles MacNeill 5:89031b2f5316 2452 VL53LX_tuning_parm_storage_t *ptuning_parms,
Charles MacNeill 5:89031b2f5316 2453 VL53LX_zone_config_t *pzone_cfg);
Charles MacNeill 5:89031b2f5316 2454
Charles MacNeill 5:89031b2f5316 2455 VL53LX_Error VL53L3CX_preset_mode_histogram_medium_range(
Charles MacNeill 5:89031b2f5316 2456 VL53LX_hist_post_process_config_t *phistpostprocess,
Charles MacNeill 5:89031b2f5316 2457 VL53LX_static_config_t *pstatic,
Charles MacNeill 5:89031b2f5316 2458 VL53LX_histogram_config_t *phistogram,
Charles MacNeill 5:89031b2f5316 2459 VL53LX_general_config_t *pgeneral,
Charles MacNeill 5:89031b2f5316 2460 VL53LX_timing_config_t *ptiming,
Charles MacNeill 5:89031b2f5316 2461 VL53LX_dynamic_config_t *pdynamic,
Charles MacNeill 5:89031b2f5316 2462 VL53LX_system_control_t *psystem,
Charles MacNeill 5:89031b2f5316 2463 VL53LX_tuning_parm_storage_t *ptuning_parms,
Charles MacNeill 5:89031b2f5316 2464 VL53LX_zone_config_t *pzone_cfg);
Charles MacNeill 5:89031b2f5316 2465
Charles MacNeill 5:89031b2f5316 2466 VL53LX_Error VL53L3CX_preset_mode_histogram_short_range(
Charles MacNeill 5:89031b2f5316 2467 VL53LX_hist_post_process_config_t *phistpostprocess,
Charles MacNeill 5:89031b2f5316 2468 VL53LX_static_config_t *pstatic,
Charles MacNeill 5:89031b2f5316 2469 VL53LX_histogram_config_t *phistogram,
Charles MacNeill 5:89031b2f5316 2470 VL53LX_general_config_t *pgeneral,
Charles MacNeill 5:89031b2f5316 2471 VL53LX_timing_config_t *ptiming,
Charles MacNeill 5:89031b2f5316 2472 VL53LX_dynamic_config_t *pdynamic,
Charles MacNeill 5:89031b2f5316 2473 VL53LX_system_control_t *psystem,
Charles MacNeill 5:89031b2f5316 2474 VL53LX_tuning_parm_storage_t *ptuning_parms,
Charles MacNeill 5:89031b2f5316 2475 VL53LX_zone_config_t *pzone_cfg);
Charles MacNeill 5:89031b2f5316 2476
Charles MacNeill 5:89031b2f5316 2477
Charles MacNeill 5:89031b2f5316 2478
Charles MacNeill 5:89031b2f5316 2479
Charles MacNeill 5:89031b2f5316 2480 void VL53L3CX_copy_hist_cfg_to_static_cfg(
Charles MacNeill 5:89031b2f5316 2481 VL53LX_histogram_config_t *phistogram,
Charles MacNeill 5:89031b2f5316 2482 VL53LX_static_config_t *pstatic,
Charles MacNeill 5:89031b2f5316 2483 VL53LX_general_config_t *pgeneral,
Charles MacNeill 5:89031b2f5316 2484 VL53LX_timing_config_t *ptiming,
Charles MacNeill 5:89031b2f5316 2485 VL53LX_dynamic_config_t *pdynamic);
Charles MacNeill 5:89031b2f5316 2486
Charles MacNeill 5:89031b2f5316 2487 void VL53L3CX_copy_hist_bins_to_static_cfg(
Charles MacNeill 5:89031b2f5316 2488 VL53LX_histogram_config_t *phistogram,
Charles MacNeill 5:89031b2f5316 2489 VL53LX_static_config_t *pstatic,
Charles MacNeill 5:89031b2f5316 2490 VL53LX_timing_config_t *ptiming);
Charles MacNeill 5:89031b2f5316 2491
Charles MacNeill 5:89031b2f5316 2492
Charles MacNeill 5:89031b2f5316 2493 /* vl53lx_silicon_core.h */
Charles MacNeill 5:89031b2f5316 2494 VL53LX_Error VL53L3CX_is_firmware_ready_silicon(
Charles MacNeill 5:89031b2f5316 2495 uint8_t *pready);
Charles MacNeill 5:89031b2f5316 2496
Charles MacNeill 5:89031b2f5316 2497
Charles MacNeill 5:89031b2f5316 2498
Charles MacNeill 5:89031b2f5316 2499
Charles MacNeill 5:89031b2f5316 2500 /* vl53lx_xtalk.h */
Charles MacNeill 5:89031b2f5316 2501
Charles MacNeill 5:89031b2f5316 2502 VL53LX_Error VL53L3CX_xtalk_calibration_process_data(
Charles MacNeill 5:89031b2f5316 2503 VL53LX_xtalk_range_results_t *pxtalk_ranges,
Charles MacNeill 5:89031b2f5316 2504 VL53LX_xtalk_histogram_data_t *pxtalk_shape,
Charles MacNeill 5:89031b2f5316 2505 VL53LX_xtalk_calibration_results_t *pxtalk_cal);
Charles MacNeill 5:89031b2f5316 2506
Charles MacNeill 5:89031b2f5316 2507
Charles MacNeill 5:89031b2f5316 2508
Charles MacNeill 5:89031b2f5316 2509 /* vl53lx_api_calibration.h */
Charles MacNeill 5:89031b2f5316 2510
Charles MacNeill 5:89031b2f5316 2511 VL53LX_Error VL53L3CX_run_ref_spad_char(
Charles MacNeill 5:89031b2f5316 2512 VL53LX_Error *pcal_status);
Charles MacNeill 5:89031b2f5316 2513
Charles MacNeill 5:89031b2f5316 2514
Charles MacNeill 5:89031b2f5316 2515
Charles MacNeill 5:89031b2f5316 2516
Charles MacNeill 5:89031b2f5316 2517 VL53LX_Error VL53L3CX_run_device_test(
Charles MacNeill 5:89031b2f5316 2518 VL53LX_DeviceTestMode device_test_mode);
Charles MacNeill 5:89031b2f5316 2519
Charles MacNeill 5:89031b2f5316 2520
Charles MacNeill 5:89031b2f5316 2521
Charles MacNeill 5:89031b2f5316 2522 VL53LX_Error VL53L3CX_run_xtalk_extraction(
Charles MacNeill 5:89031b2f5316 2523 VL53LX_Error *pcal_status);
Charles MacNeill 5:89031b2f5316 2524
Charles MacNeill 5:89031b2f5316 2525
Charles MacNeill 5:89031b2f5316 2526
Charles MacNeill 5:89031b2f5316 2527 VL53LX_Error VL53L3CX_get_and_avg_xtalk_samples(
Charles MacNeill 5:89031b2f5316 2528 uint8_t num_of_samples,
Charles MacNeill 5:89031b2f5316 2529 uint8_t measurement_mode,
Charles MacNeill 5:89031b2f5316 2530 int16_t xtalk_filter_thresh_max_mm,
Charles MacNeill 5:89031b2f5316 2531 int16_t xtalk_filter_thresh_min_mm,
Charles MacNeill 5:89031b2f5316 2532 uint16_t xtalk_max_valid_rate_kcps,
Charles MacNeill 5:89031b2f5316 2533 uint8_t xtalk_result_id,
Charles MacNeill 5:89031b2f5316 2534 uint8_t xtalk_histo_id,
Charles MacNeill 5:89031b2f5316 2535 VL53LX_xtalk_range_results_t *pxtalk_results,
Charles MacNeill 5:89031b2f5316 2536 VL53LX_histogram_bin_data_t *psum_histo,
Charles MacNeill 5:89031b2f5316 2537 VL53LX_histogram_bin_data_t *pavg_histo);
Charles MacNeill 5:89031b2f5316 2538
Charles MacNeill 5:89031b2f5316 2539
Charles MacNeill 5:89031b2f5316 2540
Charles MacNeill 5:89031b2f5316 2541 VL53LX_Error VL53L3CX__run_phasecal_average(
Charles MacNeill 5:89031b2f5316 2542 uint8_t measurement_mode,
Charles MacNeill 5:89031b2f5316 2543 uint8_t phasecal_result__vcsel_start,
Charles MacNeill 5:89031b2f5316 2544 uint16_t phasecal_num_of_samples,
Charles MacNeill 5:89031b2f5316 2545 VL53LX_range_results_t *prange_results,
Charles MacNeill 5:89031b2f5316 2546 uint16_t *pphasecal_result__reference_phase,
Charles MacNeill 5:89031b2f5316 2547 uint16_t *pzero_distance_phase);
Charles MacNeill 5:89031b2f5316 2548
Charles MacNeill 5:89031b2f5316 2549
Charles MacNeill 5:89031b2f5316 2550 void VL53L3CX_hist_xtalk_extract_data_init(
Charles MacNeill 5:89031b2f5316 2551 VL53LX_hist_xtalk_extract_data_t *pxtalk_data);
Charles MacNeill 5:89031b2f5316 2552
Charles MacNeill 5:89031b2f5316 2553
Charles MacNeill 5:89031b2f5316 2554
Charles MacNeill 5:89031b2f5316 2555 VL53LX_Error VL53L3CX_hist_xtalk_extract_update(
Charles MacNeill 5:89031b2f5316 2556 int16_t target_distance_mm,
Charles MacNeill 5:89031b2f5316 2557 uint16_t target_width_oversize,
Charles MacNeill 5:89031b2f5316 2558 VL53LX_histogram_bin_data_t *phist_bins,
Charles MacNeill 5:89031b2f5316 2559 VL53LX_hist_xtalk_extract_data_t *pxtalk_data);
Charles MacNeill 5:89031b2f5316 2560
Charles MacNeill 5:89031b2f5316 2561
Charles MacNeill 5:89031b2f5316 2562
Charles MacNeill 5:89031b2f5316 2563 VL53LX_Error VL53L3CX_hist_xtalk_extract_fini(
Charles MacNeill 5:89031b2f5316 2564 VL53LX_histogram_bin_data_t *phist_bins,
Charles MacNeill 5:89031b2f5316 2565 VL53LX_hist_xtalk_extract_data_t *pxtalk_data,
Charles MacNeill 5:89031b2f5316 2566 VL53LX_xtalk_calibration_results_t *pxtalk_cal,
Charles MacNeill 5:89031b2f5316 2567 VL53LX_xtalk_histogram_shape_t *pxtalk_shape);
Charles MacNeill 5:89031b2f5316 2568
Charles MacNeill 5:89031b2f5316 2569
Charles MacNeill 5:89031b2f5316 2570
Charles MacNeill 5:89031b2f5316 2571
Charles MacNeill 5:89031b2f5316 2572 VL53LX_Error VL53L3CX_run_hist_xtalk_extraction(
Charles MacNeill 5:89031b2f5316 2573 int16_t cal_distance_mm,
Charles MacNeill 5:89031b2f5316 2574 VL53LX_Error *pcal_status);
Charles MacNeill 5:89031b2f5316 2575
Charles MacNeill 5:89031b2f5316 2576 /* vl53lx_api_core.c static functions */
Charles MacNeill 5:89031b2f5316 2577 void VL53L3CX_histo_merge(VL53LX_histogram_bin_data_t *pdata);
Charles MacNeill 5:89031b2f5316 2578
Charles MacNeill 5:89031b2f5316 2579 /* vl53lx_api.c static functions */
Charles MacNeill 5:89031b2f5316 2580
Charles MacNeill 5:89031b2f5316 2581 int BDTable[11];
Charles MacNeill 5:89031b2f5316 2582
Charles MacNeill 5:89031b2f5316 2583
Charles MacNeill 5:89031b2f5316 2584
Charles MacNeill 5:89031b2f5316 2585 /* Write and read functions from I2C */
Charles MacNeill 5:89031b2f5316 2586
Charles MacNeill 5:89031b2f5316 2587 VL53LX_Error VL53L3CX_WrByte(VL53LX_DEV Dev, uint16_t index, uint8_t data);
Charles MacNeill 5:89031b2f5316 2588 VL53LX_Error VL53L3CX_WrWord(VL53LX_DEV Dev, uint16_t index, uint16_t data);
Charles MacNeill 5:89031b2f5316 2589 VL53LX_Error VL53L3CX_WrDWord(VL53LX_DEV Dev, uint16_t index, uint32_t data);
Charles MacNeill 5:89031b2f5316 2590 VL53LX_Error VL53L3CX_RdByte(VL53LX_DEV Dev, uint16_t index, uint8_t *data);
Charles MacNeill 5:89031b2f5316 2591 // VL53LX_Error VL53L3CX_RdWord(VL53LX_DEV Dev, uint16_t index, uint16_t *data);
Charles MacNeill 5:89031b2f5316 2592 VL53LX_Error VL53L3CX_RdDWord(VL53LX_DEV Dev, uint16_t index, uint32_t *data);
Charles MacNeill 5:89031b2f5316 2593 VL53LX_Error VL53L3CX_UpdateByte(VL53LX_DEV Dev, uint16_t index, uint8_t AndData, uint8_t OrData);
Charles MacNeill 5:89031b2f5316 2594
Charles MacNeill 5:89031b2f5316 2595 VL53LX_Error VL53L3CX_WriteMulti(VL53LX_DEV Dev, uint16_t index, uint8_t *pdata, uint32_t count);
Charles MacNeill 5:89031b2f5316 2596 VL53LX_Error VL53L3CX_ReadMulti(VL53LX_DEV Dev, uint16_t index, uint8_t *pdata, uint32_t count);
Charles MacNeill 5:89031b2f5316 2597
Charles MacNeill 5:89031b2f5316 2598 VL53LX_Error VL53L3CX_I2CWrite(uint8_t DeviceAddr, uint16_t RegisterAddr, uint8_t *pBuffer, uint16_t NumByteToWrite);
Charles MacNeill 5:89031b2f5316 2599 VL53LX_Error VL53L3CX_I2CRead(uint8_t DeviceAddr, uint16_t RegisterAddr, uint8_t *pBuffer, uint16_t NumByteToRead);
Charles MacNeill 5:89031b2f5316 2600 VL53LX_Error VL53L3CX_GetTickCount(uint32_t *ptick_count_ms);
Charles MacNeill 5:89031b2f5316 2601 VL53LX_Error VL53L3CX_WaitUs(VL53LX_Dev_t *pdev, int32_t wait_us);
Charles MacNeill 5:89031b2f5316 2602 VL53LX_Error VL53L3CX_WaitMs(VL53LX_DEV Dev, int32_t wait_ms);
Charles MacNeill 5:89031b2f5316 2603
Charles MacNeill 5:89031b2f5316 2604 VL53LX_Error VL53L3CX_WaitValueMaskEx(VL53LX_DEV dev, uint32_t timeout_ms, uint16_t index, uint8_t value, uint8_t mask, uint32_t poll_delay_ms);
Charles MacNeill 5:89031b2f5316 2605
Charles MacNeill 5:89031b2f5316 2606 // dummy routines needed for inherited functions
Charles MacNeill 5:89031b2f5316 2607 int read_id(uint8_t *id)
Charles MacNeill 5:89031b2f5316 2608 {
Charles MacNeill 5:89031b2f5316 2609 printf("dwwdji");
Charles MacNeill 5:89031b2f5316 2610 return 26;
Charles MacNeill 5:89031b2f5316 2611 }
Charles MacNeill 5:89031b2f5316 2612
Charles MacNeill 5:89031b2f5316 2613
Charles MacNeill 5:89031b2f5316 2614
Charles MacNeill 5:89031b2f5316 2615 int get_distance(uint32_t *pi_data)
Charles MacNeill 5:89031b2f5316 2616 {
Charles MacNeill 5:89031b2f5316 2617 return 43;
Charles MacNeill 5:89031b2f5316 2618 }
Charles MacNeill 5:89031b2f5316 2619
Charles MacNeill 5:89031b2f5316 2620
Charles MacNeill 5:89031b2f5316 2621 //protected:
Charles MacNeill 5:89031b2f5316 2622
Charles MacNeill 5:89031b2f5316 2623 /* IO Device */
Charles MacNeill 5:89031b2f5316 2624 vl53L3_DevI2C *dev_i2c;
Charles MacNeill 5:89031b2f5316 2625 /* Digital out pin */
Charles MacNeill 5:89031b2f5316 2626 int gpio0;
Charles MacNeill 5:89031b2f5316 2627
Charles MacNeill 5:89031b2f5316 2628 /* Device data */
Charles MacNeill 5:89031b2f5316 2629 VL53LX_Dev_t MyDevice;
Charles MacNeill 5:89031b2f5316 2630 VL53LX_DEV Dev;
Charles MacNeill 5:89031b2f5316 2631
Charles MacNeill 5:89031b2f5316 2632 vl53L3_DevI2C *i2c_inst;
Charles MacNeill 5:89031b2f5316 2633
Charles MacNeill 5:89031b2f5316 2634 /* Digital out pin */
Charles MacNeill 5:89031b2f5316 2635 DigitalOut *_gpio0;
Charles MacNeill 5:89031b2f5316 2636 /* GPIO expander */
Charles MacNeill 5:89031b2f5316 2637 Stmpe1600DigiOut *_expgpio0;
Charles MacNeill 5:89031b2f5316 2638 /* Measure detection IRQ */
Charles MacNeill 5:89031b2f5316 2639 InterruptIn *_gpio1Int;
Charles MacNeill 5:89031b2f5316 2640 int I2cDevAddr;
Charles MacNeill 5:89031b2f5316 2641 };
Charles MacNeill 5:89031b2f5316 2642
Charles MacNeill 5:89031b2f5316 2643 #endif /* _VL53LX_CLASS_H_ */
Charles MacNeill 5:89031b2f5316 2644