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:
Charles MacNeill
Date:
Wed Jul 14 12:45:49 2021 +0100
Revision:
5:89031b2f5316
Child:
6:df30b960b7dc
The class files now just are wrappers for the files in the "MODULES" directory.The porting directory includes the mbed interface

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
Charles MacNeill 5:89031b2f5316 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