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
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 /* SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause */
Charles MacNeill 5:89031b2f5316 2 /******************************************************************************
Charles MacNeill 5:89031b2f5316 3 * Copyright (c) 2020, STMicroelectronics - All Rights Reserved
Charles MacNeill 5:89031b2f5316 4
Charles MacNeill 5:89031b2f5316 5 This file is part of VL53LX and is dual licensed,
Charles MacNeill 5:89031b2f5316 6 either GPL-2.0+
Charles MacNeill 5:89031b2f5316 7 or 'BSD 3-clause "New" or "Revised" License' , at your option.
Charles MacNeill 5:89031b2f5316 8 ******************************************************************************
Charles MacNeill 5:89031b2f5316 9 */
Charles MacNeill 5:89031b2f5316 10
Charles MacNeill 5:89031b2f5316 11 /**
Charles MacNeill 5:89031b2f5316 12 * @file vl53lx_def.h
Charles MacNeill 5:89031b2f5316 13 *
Charles MacNeill 5:89031b2f5316 14 * @brief Type definitions for VL53LX API.
Charles MacNeill 5:89031b2f5316 15 *
Charles MacNeill 5:89031b2f5316 16 */
Charles MacNeill 5:89031b2f5316 17
Charles MacNeill 5:89031b2f5316 18
Charles MacNeill 5:89031b2f5316 19 #ifndef _VL53LX_DEF_H_
Charles MacNeill 5:89031b2f5316 20 #define _VL53LX_DEF_H_
Charles MacNeill 5:89031b2f5316 21
Charles MacNeill 5:89031b2f5316 22 #include "vl53lx_ll_def.h"
Charles MacNeill 5:89031b2f5316 23
Charles MacNeill 5:89031b2f5316 24 #ifdef __cplusplus
Charles MacNeill 5:89031b2f5316 25 extern "C" {
Charles MacNeill 5:89031b2f5316 26 #endif
Charles MacNeill 5:89031b2f5316 27
Charles MacNeill 5:89031b2f5316 28 /** @defgroup VL53LX_globaldefine_group VL53LX Defines
Charles MacNeill 5:89031b2f5316 29 * @brief VL53LX Defines
Charles MacNeill 5:89031b2f5316 30 * @{
Charles MacNeill 5:89031b2f5316 31 */
Charles MacNeill 5:89031b2f5316 32
Charles MacNeill 5:89031b2f5316 33
Charles MacNeill 5:89031b2f5316 34 /** VL53LX IMPLEMENTATION major version */
Charles MacNeill 5:89031b2f5316 35 #define VL53LX_IMPLEMENTATION_VER_MAJOR 1
Charles MacNeill 5:89031b2f5316 36 /** VL53LX IMPLEMENTATION minor version */
Charles MacNeill 5:89031b2f5316 37 #define VL53LX_IMPLEMENTATION_VER_MINOR 2
Charles MacNeill 5:89031b2f5316 38 /** VL53LX IMPLEMENTATION sub version */
Charles MacNeill 5:89031b2f5316 39 #define VL53LX_IMPLEMENTATION_VER_SUB 3
Charles MacNeill 5:89031b2f5316 40 /** VL53LX IMPLEMENTATION sub version */
Charles MacNeill 5:89031b2f5316 41 #define VL53LX_IMPLEMENTATION_VER_REVISION 2488
Charles MacNeill 5:89031b2f5316 42
Charles MacNeill 5:89031b2f5316 43 /****************************************
Charles MacNeill 5:89031b2f5316 44 * PRIVATE define do not edit
Charles MacNeill 5:89031b2f5316 45 ****************************************/
Charles MacNeill 5:89031b2f5316 46
Charles MacNeill 5:89031b2f5316 47 /** @brief Defines the parameters of the Get Version Functions
Charles MacNeill 5:89031b2f5316 48 */
Charles MacNeill 5:89031b2f5316 49 typedef struct {
Charles MacNeill 5:89031b2f5316 50 uint32_t revision; /*!< revision number */
Charles MacNeill 5:89031b2f5316 51 uint8_t major; /*!< major number */
Charles MacNeill 5:89031b2f5316 52 uint8_t minor; /*!< minor number */
Charles MacNeill 5:89031b2f5316 53 uint8_t build; /*!< build number */
Charles MacNeill 5:89031b2f5316 54 } VL53LX_Version_t;
Charles MacNeill 5:89031b2f5316 55
Charles MacNeill 5:89031b2f5316 56
Charles MacNeill 5:89031b2f5316 57 /** @brief Defines the parameters of the Get Device Info Functions
Charles MacNeill 5:89031b2f5316 58 */
Charles MacNeill 5:89031b2f5316 59 typedef struct {
Charles MacNeill 5:89031b2f5316 60 uint8_t ProductType;
Charles MacNeill 5:89031b2f5316 61 /*!< Product Type, VL53LX = 0xAA
Charles MacNeill 5:89031b2f5316 62 * Stands as module_type in the datasheet
Charles MacNeill 5:89031b2f5316 63 */
Charles MacNeill 5:89031b2f5316 64 uint8_t ProductRevisionMajor;
Charles MacNeill 5:89031b2f5316 65 /*!< Product revision major */
Charles MacNeill 5:89031b2f5316 66 uint8_t ProductRevisionMinor;
Charles MacNeill 5:89031b2f5316 67 /*!< Product revision minor */
Charles MacNeill 5:89031b2f5316 68 } VL53LX_DeviceInfo_t;
Charles MacNeill 5:89031b2f5316 69
Charles MacNeill 5:89031b2f5316 70 /** @defgroup VL53LX_define_DistanceModes_group Defines Distance modes
Charles MacNeill 5:89031b2f5316 71 * Defines all possible Distance modes for the device
Charles MacNeill 5:89031b2f5316 72 * @{
Charles MacNeill 5:89031b2f5316 73 */
Charles MacNeill 5:89031b2f5316 74 typedef uint8_t VL53LX_DistanceModes;
Charles MacNeill 5:89031b2f5316 75
Charles MacNeill 5:89031b2f5316 76 #define VL53LX_DISTANCEMODE_SHORT ((VL53LX_DistanceModes) 1)
Charles MacNeill 5:89031b2f5316 77 #define VL53LX_DISTANCEMODE_MEDIUM ((VL53LX_DistanceModes) 2)
Charles MacNeill 5:89031b2f5316 78 #define VL53LX_DISTANCEMODE_LONG ((VL53LX_DistanceModes) 3)
Charles MacNeill 5:89031b2f5316 79 /** @} VL53LX_define_DistanceModes_group */
Charles MacNeill 5:89031b2f5316 80
Charles MacNeill 5:89031b2f5316 81 /** @defgroup VL53LX_define_OffsetCorrectionModes_group Defines Offset Correction modes
Charles MacNeill 5:89031b2f5316 82 * Device Offset Correction Mode
Charles MacNeill 5:89031b2f5316 83 *
Charles MacNeill 5:89031b2f5316 84 * @brief Defines all possible offset correction modes for the device
Charles MacNeill 5:89031b2f5316 85 * @{
Charles MacNeill 5:89031b2f5316 86 */
Charles MacNeill 5:89031b2f5316 87 typedef uint8_t VL53LX_OffsetCorrectionModes;
Charles MacNeill 5:89031b2f5316 88
Charles MacNeill 5:89031b2f5316 89 #define VL53LX_OFFSETCORRECTIONMODE_STANDARD ((VL53LX_OffsetCorrectionModes) 1)
Charles MacNeill 5:89031b2f5316 90 #define VL53LX_OFFSETCORRECTIONMODE_PERVCSEL ((VL53LX_OffsetCorrectionModes) 3)
Charles MacNeill 5:89031b2f5316 91
Charles MacNeill 5:89031b2f5316 92 /** @} VL53LX_define_OffsetCorrectionModes_group */
Charles MacNeill 5:89031b2f5316 93
Charles MacNeill 5:89031b2f5316 94 /** @brief Defines all parameters for the device
Charles MacNeill 5:89031b2f5316 95 */
Charles MacNeill 5:89031b2f5316 96 typedef struct {
Charles MacNeill 5:89031b2f5316 97 VL53LX_DistanceModes DistanceMode;
Charles MacNeill 5:89031b2f5316 98 /*!< Defines the operating mode to be used for the next measure */
Charles MacNeill 5:89031b2f5316 99 uint32_t MeasurementTimingBudgetMicroSeconds;
Charles MacNeill 5:89031b2f5316 100 /*!< Defines the allowed total time for a single measurement */
Charles MacNeill 5:89031b2f5316 101 } VL53LX_DeviceParameters_t;
Charles MacNeill 5:89031b2f5316 102
Charles MacNeill 5:89031b2f5316 103
Charles MacNeill 5:89031b2f5316 104 /** @defgroup VL53LX_define_Smudge_Mode_group Defines smudge correction modes
Charles MacNeill 5:89031b2f5316 105 * Defines the smudge correction modes
Charles MacNeill 5:89031b2f5316 106 * @{
Charles MacNeill 5:89031b2f5316 107 */
Charles MacNeill 5:89031b2f5316 108
Charles MacNeill 5:89031b2f5316 109 typedef uint8_t VL53LX_SmudgeCorrectionModes;
Charles MacNeill 5:89031b2f5316 110
Charles MacNeill 5:89031b2f5316 111 #define VL53LX_SMUDGE_CORRECTION_NONE ((VL53LX_SmudgeCorrectionModes) 0)
Charles MacNeill 5:89031b2f5316 112 /*!< Smudge correction is applied continously accross the rangings */
Charles MacNeill 5:89031b2f5316 113 #define VL53LX_SMUDGE_CORRECTION_CONTINUOUS ((VL53LX_SmudgeCorrectionModes) 1)
Charles MacNeill 5:89031b2f5316 114 /*!< Smudge correction is applied continously accross the rangings */
Charles MacNeill 5:89031b2f5316 115 #define VL53LX_SMUDGE_CORRECTION_SINGLE ((VL53LX_SmudgeCorrectionModes) 2)
Charles MacNeill 5:89031b2f5316 116 /*!< Smudge correction is applied only once accross the rangings */
Charles MacNeill 5:89031b2f5316 117 #define VL53LX_SMUDGE_CORRECTION_DEBUG ((VL53LX_SmudgeCorrectionModes) 3)
Charles MacNeill 5:89031b2f5316 118 /*!< Smudge detection is applied continously but Xtalk values are not
Charles MacNeill 5:89031b2f5316 119 * updated automatically within the driver
Charles MacNeill 5:89031b2f5316 120 */
Charles MacNeill 5:89031b2f5316 121
Charles MacNeill 5:89031b2f5316 122 /** @} VL53LX_define_Smudge_Correction_Mode_group */
Charles MacNeill 5:89031b2f5316 123
Charles MacNeill 5:89031b2f5316 124 /**
Charles MacNeill 5:89031b2f5316 125 * @struct VL53LX_TargetRangeData_t
Charles MacNeill 5:89031b2f5316 126 * @brief One Range measurement data for each target.
Charles MacNeill 5:89031b2f5316 127 */
Charles MacNeill 5:89031b2f5316 128 typedef struct {
Charles MacNeill 5:89031b2f5316 129 int16_t RangeMaxMilliMeter;
Charles MacNeill 5:89031b2f5316 130 /*!< Tells what is the maximum detection distance of the object
Charles MacNeill 5:89031b2f5316 131 * in current setup and environment conditions (Filled when
Charles MacNeill 5:89031b2f5316 132 * applicable)
Charles MacNeill 5:89031b2f5316 133 */
Charles MacNeill 5:89031b2f5316 134
Charles MacNeill 5:89031b2f5316 135 int16_t RangeMinMilliMeter;
Charles MacNeill 5:89031b2f5316 136 /*!< Tells what is the minimum detection distance of the object
Charles MacNeill 5:89031b2f5316 137 * in current setup and environment conditions (Filled when
Charles MacNeill 5:89031b2f5316 138 * applicable)
Charles MacNeill 5:89031b2f5316 139 */
Charles MacNeill 5:89031b2f5316 140
Charles MacNeill 5:89031b2f5316 141 FixPoint1616_t SignalRateRtnMegaCps;
Charles MacNeill 5:89031b2f5316 142 /*!< Return signal rate (MCPS)\n these is a 16.16 fix point
Charles MacNeill 5:89031b2f5316 143 * value, which is effectively a measure of target
Charles MacNeill 5:89031b2f5316 144 * reflectance.
Charles MacNeill 5:89031b2f5316 145 */
Charles MacNeill 5:89031b2f5316 146
Charles MacNeill 5:89031b2f5316 147 FixPoint1616_t AmbientRateRtnMegaCps;
Charles MacNeill 5:89031b2f5316 148 /*!< Return ambient rate (MCPS)\n these is a 16.16 fix point
Charles MacNeill 5:89031b2f5316 149 * value, which is effectively a measure of the ambien
Charles MacNeill 5:89031b2f5316 150 * t light.
Charles MacNeill 5:89031b2f5316 151 */
Charles MacNeill 5:89031b2f5316 152
Charles MacNeill 5:89031b2f5316 153 FixPoint1616_t SigmaMilliMeter;
Charles MacNeill 5:89031b2f5316 154 /*!< Return the Sigma value in millimeter */
Charles MacNeill 5:89031b2f5316 155
Charles MacNeill 5:89031b2f5316 156 int16_t RangeMilliMeter;
Charles MacNeill 5:89031b2f5316 157 /*!< range distance in millimeter. This should be between
Charles MacNeill 5:89031b2f5316 158 * RangeMinMilliMeter and RangeMaxMilliMeter
Charles MacNeill 5:89031b2f5316 159 */
Charles MacNeill 5:89031b2f5316 160
Charles MacNeill 5:89031b2f5316 161 uint8_t RangeStatus;
Charles MacNeill 5:89031b2f5316 162 /*!< Range Status for the current measurement. This is device
Charles MacNeill 5:89031b2f5316 163 * dependent. Value = 0 means value is valid.
Charles MacNeill 5:89031b2f5316 164 */
Charles MacNeill 5:89031b2f5316 165
Charles MacNeill 5:89031b2f5316 166 uint8_t ExtendedRange;
Charles MacNeill 5:89031b2f5316 167 /*!< Extended range flag for the current measurement.
Charles MacNeill 5:89031b2f5316 168 * Value = 1 means timings A&B are combined to increase the
Charles MacNeill 5:89031b2f5316 169 * maximum distance range.
Charles MacNeill 5:89031b2f5316 170 */
Charles MacNeill 5:89031b2f5316 171 } VL53LX_TargetRangeData_t;
Charles MacNeill 5:89031b2f5316 172 /**
Charles MacNeill 5:89031b2f5316 173 * @struct VL53LX_MultiRangingData_t
Charles MacNeill 5:89031b2f5316 174 * @brief Structure for storing the set of range results
Charles MacNeill 5:89031b2f5316 175 *
Charles MacNeill 5:89031b2f5316 176 */
Charles MacNeill 5:89031b2f5316 177 typedef struct {
Charles MacNeill 5:89031b2f5316 178 uint32_t TimeStamp;
Charles MacNeill 5:89031b2f5316 179 /*!< 32-bit time stamp.
Charles MacNeill 5:89031b2f5316 180 * @warning Not yet implemented
Charles MacNeill 5:89031b2f5316 181 */
Charles MacNeill 5:89031b2f5316 182
Charles MacNeill 5:89031b2f5316 183 uint8_t StreamCount;
Charles MacNeill 5:89031b2f5316 184 /*!< 8-bit Stream Count. */
Charles MacNeill 5:89031b2f5316 185
Charles MacNeill 5:89031b2f5316 186 uint8_t NumberOfObjectsFound;
Charles MacNeill 5:89031b2f5316 187 /*!< Indicate the number of objects found.
Charles MacNeill 5:89031b2f5316 188 * This is used to know how many ranging data should be get.
Charles MacNeill 5:89031b2f5316 189 * NumberOfObjectsFound is in the range 0 to
Charles MacNeill 5:89031b2f5316 190 * VL53LX_MAX_RANGE_RESULTS.
Charles MacNeill 5:89031b2f5316 191 */
Charles MacNeill 5:89031b2f5316 192 VL53LX_TargetRangeData_t RangeData[VL53LX_MAX_RANGE_RESULTS];
Charles MacNeill 5:89031b2f5316 193 /*!< Range data each target distance */
Charles MacNeill 5:89031b2f5316 194 uint8_t HasXtalkValueChanged;
Charles MacNeill 5:89031b2f5316 195 /*!< set to 1 if a new Xtalk value has been computed whilst
Charles MacNeill 5:89031b2f5316 196 * smudge correction mode enable by with
Charles MacNeill 5:89031b2f5316 197 * VL53LX_SmudgeCorrectionEnable() function is either
Charles MacNeill 5:89031b2f5316 198 * VL53LX_SMUDGE_CORRECTION_CONTINUOUS or
Charles MacNeill 5:89031b2f5316 199 * VL53LX_SMUDGE_CORRECTION_SINGLE.
Charles MacNeill 5:89031b2f5316 200 */
Charles MacNeill 5:89031b2f5316 201 uint16_t EffectiveSpadRtnCount;
Charles MacNeill 5:89031b2f5316 202 /*!< Return the effective SPAD count for the return signal.
Charles MacNeill 5:89031b2f5316 203 * To obtain Real value it should be divided by 256
Charles MacNeill 5:89031b2f5316 204 */
Charles MacNeill 5:89031b2f5316 205 } VL53LX_MultiRangingData_t;
Charles MacNeill 5:89031b2f5316 206
Charles MacNeill 5:89031b2f5316 207
Charles MacNeill 5:89031b2f5316 208 /**
Charles MacNeill 5:89031b2f5316 209 * @struct VL53LX_UserRoi_t
Charles MacNeill 5:89031b2f5316 210 * @brief Defines User Zone(ROI) parameters
Charles MacNeill 5:89031b2f5316 211 *
Charles MacNeill 5:89031b2f5316 212 */
Charles MacNeill 5:89031b2f5316 213 typedef struct {
Charles MacNeill 5:89031b2f5316 214
Charles MacNeill 5:89031b2f5316 215 uint8_t TopLeftX; /*!< Top Left x coordinate: 0-15 range */
Charles MacNeill 5:89031b2f5316 216 uint8_t TopLeftY; /*!< Top Left y coordinate: 0-15 range */
Charles MacNeill 5:89031b2f5316 217 uint8_t BotRightX; /*!< Bot Right x coordinate: 0-15 range */
Charles MacNeill 5:89031b2f5316 218 uint8_t BotRightY; /*!< Bot Right y coordinate: 0-15 range */
Charles MacNeill 5:89031b2f5316 219
Charles MacNeill 5:89031b2f5316 220 } VL53LX_UserRoi_t;
Charles MacNeill 5:89031b2f5316 221
Charles MacNeill 5:89031b2f5316 222
Charles MacNeill 5:89031b2f5316 223 /**
Charles MacNeill 5:89031b2f5316 224 * @struct VL53LX_CustomerNvmManaged_t
Charles MacNeill 5:89031b2f5316 225 *
Charles MacNeill 5:89031b2f5316 226 */
Charles MacNeill 5:89031b2f5316 227
Charles MacNeill 5:89031b2f5316 228 typedef struct {
Charles MacNeill 5:89031b2f5316 229 uint8_t global_config__spad_enables_ref_0;
Charles MacNeill 5:89031b2f5316 230 uint8_t global_config__spad_enables_ref_1;
Charles MacNeill 5:89031b2f5316 231 uint8_t global_config__spad_enables_ref_2;
Charles MacNeill 5:89031b2f5316 232 uint8_t global_config__spad_enables_ref_3;
Charles MacNeill 5:89031b2f5316 233 uint8_t global_config__spad_enables_ref_4;
Charles MacNeill 5:89031b2f5316 234 uint8_t global_config__spad_enables_ref_5;
Charles MacNeill 5:89031b2f5316 235 uint8_t global_config__ref_en_start_select;
Charles MacNeill 5:89031b2f5316 236 uint8_t ref_spad_man__num_requested_ref_spads;
Charles MacNeill 5:89031b2f5316 237 uint8_t ref_spad_man__ref_location;
Charles MacNeill 5:89031b2f5316 238 uint32_t algo__crosstalk_compensation_plane_offset_kcps;
Charles MacNeill 5:89031b2f5316 239 int16_t algo__crosstalk_compensation_x_plane_gradient_kcps;
Charles MacNeill 5:89031b2f5316 240 int16_t algo__crosstalk_compensation_y_plane_gradient_kcps;
Charles MacNeill 5:89031b2f5316 241 uint16_t ref_spad_char__total_rate_target_mcps;
Charles MacNeill 5:89031b2f5316 242 int16_t algo__part_to_part_range_offset_mm;
Charles MacNeill 5:89031b2f5316 243 int16_t mm_config__inner_offset_mm;
Charles MacNeill 5:89031b2f5316 244 int16_t mm_config__outer_offset_mm;
Charles MacNeill 5:89031b2f5316 245 } VL53LX_CustomerNvmManaged_t;
Charles MacNeill 5:89031b2f5316 246
Charles MacNeill 5:89031b2f5316 247 /**
Charles MacNeill 5:89031b2f5316 248 * @struct VL53LX_CalibrationData_t
Charles MacNeill 5:89031b2f5316 249 * @brief Structure for storing the Calibration Data
Charles MacNeill 5:89031b2f5316 250 *
Charles MacNeill 5:89031b2f5316 251 */
Charles MacNeill 5:89031b2f5316 252
Charles MacNeill 5:89031b2f5316 253 typedef struct {
Charles MacNeill 5:89031b2f5316 254
Charles MacNeill 5:89031b2f5316 255 uint32_t struct_version;
Charles MacNeill 5:89031b2f5316 256 VL53LX_CustomerNvmManaged_t customer;
Charles MacNeill 5:89031b2f5316 257 VL53LX_additional_offset_cal_data_t add_off_cal_data;
Charles MacNeill 5:89031b2f5316 258 VL53LX_optical_centre_t optical_centre;
Charles MacNeill 5:89031b2f5316 259 VL53LX_xtalk_histogram_data_t xtalkhisto;
Charles MacNeill 5:89031b2f5316 260 VL53LX_gain_calibration_data_t gain_cal;
Charles MacNeill 5:89031b2f5316 261 VL53LX_cal_peak_rate_map_t cal_peak_rate_map;
Charles MacNeill 5:89031b2f5316 262 VL53LX_per_vcsel_period_offset_cal_data_t per_vcsel_cal_data;
Charles MacNeill 5:89031b2f5316 263 uint32_t algo__xtalk_cpo_HistoMerge_kcps[VL53LX_BIN_REC_SIZE];
Charles MacNeill 5:89031b2f5316 264 } VL53LX_CalibrationData_t;
Charles MacNeill 5:89031b2f5316 265
Charles MacNeill 5:89031b2f5316 266 #define VL53LX_ADDITIONAL_CALIBRATION_DATA_STRUCT_VERSION 0x20
Charles MacNeill 5:89031b2f5316 267 /** VL53LX additional Calibration Data struct version final struct version
Charles MacNeill 5:89031b2f5316 268 * is given by adding it to VL53LX_LL_CALIBRATION_DATA_STRUCT_VERSION
Charles MacNeill 5:89031b2f5316 269 */
Charles MacNeill 5:89031b2f5316 270
Charles MacNeill 5:89031b2f5316 271 #define VL53LX_CALIBRATION_DATA_STRUCT_VERSION \
Charles MacNeill 5:89031b2f5316 272 (VL53LX_LL_CALIBRATION_DATA_STRUCT_VERSION + \
Charles MacNeill 5:89031b2f5316 273 VL53LX_ADDITIONAL_CALIBRATION_DATA_STRUCT_VERSION)
Charles MacNeill 5:89031b2f5316 274 /* VL53LX Calibration Data struct version */
Charles MacNeill 5:89031b2f5316 275
Charles MacNeill 5:89031b2f5316 276 /**
Charles MacNeill 5:89031b2f5316 277 * @struct VL53LX_AdditionalData_t
Charles MacNeill 5:89031b2f5316 278 * @brief Structure for storing the Additional Data
Charles MacNeill 5:89031b2f5316 279 *
Charles MacNeill 5:89031b2f5316 280 */
Charles MacNeill 5:89031b2f5316 281 typedef VL53LX_additional_data_t VL53LX_AdditionalData_t;
Charles MacNeill 5:89031b2f5316 282
Charles MacNeill 5:89031b2f5316 283
Charles MacNeill 5:89031b2f5316 284 /** @defgroup VL53LX_define_RangeStatus_group Defines the Range Status
Charles MacNeill 5:89031b2f5316 285 * @{
Charles MacNeill 5:89031b2f5316 286 */
Charles MacNeill 5:89031b2f5316 287 #define VL53LX_RANGESTATUS_RANGE_VALID 0
Charles MacNeill 5:89031b2f5316 288 /*!<The Range is valid. */
Charles MacNeill 5:89031b2f5316 289 #define VL53LX_RANGESTATUS_SIGMA_FAIL 1
Charles MacNeill 5:89031b2f5316 290 /*!<Sigma Fail. */
Charles MacNeill 5:89031b2f5316 291 #define VL53LX_RANGESTATUS_SIGNAL_FAIL 2
Charles MacNeill 5:89031b2f5316 292 /*!<Signal fail. */
Charles MacNeill 5:89031b2f5316 293 #define VL53LX_RANGESTATUS_RANGE_VALID_MIN_RANGE_CLIPPED 3
Charles MacNeill 5:89031b2f5316 294 /*!<Target is below minimum detection threshold. */
Charles MacNeill 5:89031b2f5316 295 #define VL53LX_RANGESTATUS_OUTOFBOUNDS_FAIL 4
Charles MacNeill 5:89031b2f5316 296 /*!<Phase out of valid limits - different to a wrap exit. */
Charles MacNeill 5:89031b2f5316 297 #define VL53LX_RANGESTATUS_HARDWARE_FAIL 5
Charles MacNeill 5:89031b2f5316 298 /*!<Hardware fail. */
Charles MacNeill 5:89031b2f5316 299 #define VL53LX_RANGESTATUS_RANGE_VALID_NO_WRAP_CHECK_FAIL 6
Charles MacNeill 5:89031b2f5316 300 /*!<The Range is valid but the wraparound check has not been done. */
Charles MacNeill 5:89031b2f5316 301 #define VL53LX_RANGESTATUS_WRAP_TARGET_FAIL 7
Charles MacNeill 5:89031b2f5316 302 /*!<Wrapped target - no matching phase in other VCSEL period timing. */
Charles MacNeill 5:89031b2f5316 303 #define VL53LX_RANGESTATUS_PROCESSING_FAIL 8
Charles MacNeill 5:89031b2f5316 304 /*!<Internal algo underflow or overflow in lite ranging. */
Charles MacNeill 5:89031b2f5316 305 #define VL53LX_RANGESTATUS_XTALK_SIGNAL_FAIL 9
Charles MacNeill 5:89031b2f5316 306 /*!<Specific to lite ranging. */
Charles MacNeill 5:89031b2f5316 307 #define VL53LX_RANGESTATUS_SYNCRONISATION_INT 10
Charles MacNeill 5:89031b2f5316 308 /*!<1st interrupt when starting ranging in back to back mode. Ignore data. */
Charles MacNeill 5:89031b2f5316 309 #define VL53LX_RANGESTATUS_RANGE_VALID_MERGED_PULSE 11
Charles MacNeill 5:89031b2f5316 310 /*!<All Range ok but object is result of multiple pulses merging together.
Charles MacNeill 5:89031b2f5316 311 * Used by RQL for merged pulse detection
Charles MacNeill 5:89031b2f5316 312 */
Charles MacNeill 5:89031b2f5316 313 #define VL53LX_RANGESTATUS_TARGET_PRESENT_LACK_OF_SIGNAL 12
Charles MacNeill 5:89031b2f5316 314 /*!<Used by RQL as different to phase fail. */
Charles MacNeill 5:89031b2f5316 315 #define VL53LX_RANGESTATUS_MIN_RANGE_FAIL 13
Charles MacNeill 5:89031b2f5316 316 /*!<Unexpected error in SPAD Array.*/
Charles MacNeill 5:89031b2f5316 317 #define VL53LX_RANGESTATUS_RANGE_INVALID 14
Charles MacNeill 5:89031b2f5316 318 /*!<lld returned valid range but negative value ! */
Charles MacNeill 5:89031b2f5316 319 #define VL53LX_RANGESTATUS_NONE 255
Charles MacNeill 5:89031b2f5316 320 /*!<No Update. */
Charles MacNeill 5:89031b2f5316 321
Charles MacNeill 5:89031b2f5316 322 /** @} VL53LX_define_RangeStatus_group */
Charles MacNeill 5:89031b2f5316 323
Charles MacNeill 5:89031b2f5316 324
Charles MacNeill 5:89031b2f5316 325 /** @brief Contains the Internal data of the Bare Driver
Charles MacNeill 5:89031b2f5316 326 */
Charles MacNeill 5:89031b2f5316 327
Charles MacNeill 5:89031b2f5316 328 typedef struct {
Charles MacNeill 5:89031b2f5316 329 VL53LX_LLDriverData_t LLData;
Charles MacNeill 5:89031b2f5316 330 /*!< Low Level Driver data structure */
Charles MacNeill 5:89031b2f5316 331
Charles MacNeill 5:89031b2f5316 332 VL53LX_LLDriverResults_t llresults;
Charles MacNeill 5:89031b2f5316 333 /*!< Low Level Driver data structure */
Charles MacNeill 5:89031b2f5316 334
Charles MacNeill 5:89031b2f5316 335 VL53LX_DeviceParameters_t CurrentParameters;
Charles MacNeill 5:89031b2f5316 336 /*!< Current Device Parameter */
Charles MacNeill 5:89031b2f5316 337
Charles MacNeill 5:89031b2f5316 338 } VL53LX_DevData_t;
Charles MacNeill 5:89031b2f5316 339
Charles MacNeill 5:89031b2f5316 340
Charles MacNeill 5:89031b2f5316 341 /* MACRO Definitions */
Charles MacNeill 5:89031b2f5316 342 /** @defgroup VL53LX_define_GeneralMacro_group General Macro Defines
Charles MacNeill 5:89031b2f5316 343 * General Macro Defines
Charles MacNeill 5:89031b2f5316 344 * @{
Charles MacNeill 5:89031b2f5316 345 */
Charles MacNeill 5:89031b2f5316 346
Charles MacNeill 5:89031b2f5316 347 /* Defines */
Charles MacNeill 5:89031b2f5316 348 #define VL53LX_SETPARAMETERFIELD(Dev, field, value) \
Charles MacNeill 5:89031b2f5316 349 (VL53LXDevDataSet(Dev, CurrentParameters.field, value))
Charles MacNeill 5:89031b2f5316 350
Charles MacNeill 5:89031b2f5316 351 #define VL53LX_GETPARAMETERFIELD(Dev, field, variable) \
Charles MacNeill 5:89031b2f5316 352 (variable = VL53LXDevDataGet(Dev, CurrentParameters).field)
Charles MacNeill 5:89031b2f5316 353
Charles MacNeill 5:89031b2f5316 354 #define VL53LX_SETARRAYPARAMETERFIELD(Dev, field, index, value) \
Charles MacNeill 5:89031b2f5316 355 (VL53LXDevDataSet(Dev, CurrentParameters.field[index], value))
Charles MacNeill 5:89031b2f5316 356
Charles MacNeill 5:89031b2f5316 357 #define VL53LX_GETARRAYPARAMETERFIELD(Dev, field, index, variable) \
Charles MacNeill 5:89031b2f5316 358 (variable = VL53LXDevDataGet(Dev, CurrentParameters).field[index])
Charles MacNeill 5:89031b2f5316 359
Charles MacNeill 5:89031b2f5316 360 #define VL53LX_SETDEVICESPECIFICPARAMETER(Dev, field, value) \
Charles MacNeill 5:89031b2f5316 361 (VL53LXDevDataSet(Dev, DeviceSpecificParameters.field, value))
Charles MacNeill 5:89031b2f5316 362
Charles MacNeill 5:89031b2f5316 363 #define VL53LX_GETDEVICESPECIFICPARAMETER(Dev, field) \
Charles MacNeill 5:89031b2f5316 364 (VL53LXDevDataGet(Dev, DeviceSpecificParameters).field)
Charles MacNeill 5:89031b2f5316 365
Charles MacNeill 5:89031b2f5316 366
Charles MacNeill 5:89031b2f5316 367 #define VL53LX_FIXPOINT1616TOFIXPOINT44(Value) \
Charles MacNeill 5:89031b2f5316 368 (uint16_t)((Value>>12)&0xFFFF)
Charles MacNeill 5:89031b2f5316 369 #define VL53LX_FIXPOINT44TOFIXPOINT1616(Value) \
Charles MacNeill 5:89031b2f5316 370 (FixPoint1616_t)((uint32_t)Value<<12)
Charles MacNeill 5:89031b2f5316 371
Charles MacNeill 5:89031b2f5316 372 #define VL53LX_FIXPOINT1616TOFIXPOINT72(Value) \
Charles MacNeill 5:89031b2f5316 373 (uint16_t)((Value>>14)&0xFFFF)
Charles MacNeill 5:89031b2f5316 374 #define VL53LX_FIXPOINT72TOFIXPOINT1616(Value) \
Charles MacNeill 5:89031b2f5316 375 (FixPoint1616_t)((uint32_t)Value<<14)
Charles MacNeill 5:89031b2f5316 376
Charles MacNeill 5:89031b2f5316 377 #define VL53LX_FIXPOINT1616TOFIXPOINT97(Value) \
Charles MacNeill 5:89031b2f5316 378 (uint16_t)((Value>>9)&0xFFFF)
Charles MacNeill 5:89031b2f5316 379 #define VL53LX_FIXPOINT97TOFIXPOINT1616(Value) \
Charles MacNeill 5:89031b2f5316 380 (FixPoint1616_t)((uint32_t)Value<<9)
Charles MacNeill 5:89031b2f5316 381
Charles MacNeill 5:89031b2f5316 382 #define VL53LX_FIXPOINT1616TOFIXPOINT88(Value) \
Charles MacNeill 5:89031b2f5316 383 (uint16_t)((Value>>8)&0xFFFF)
Charles MacNeill 5:89031b2f5316 384 #define VL53LX_FIXPOINT88TOFIXPOINT1616(Value) \
Charles MacNeill 5:89031b2f5316 385 (FixPoint1616_t)((uint32_t)Value<<8)
Charles MacNeill 5:89031b2f5316 386
Charles MacNeill 5:89031b2f5316 387 #define VL53LX_FIXPOINT1616TOFIXPOINT412(Value) \
Charles MacNeill 5:89031b2f5316 388 (uint16_t)((Value>>4)&0xFFFF)
Charles MacNeill 5:89031b2f5316 389 #define VL53LX_FIXPOINT412TOFIXPOINT1616(Value) \
Charles MacNeill 5:89031b2f5316 390 (FixPoint1616_t)((uint32_t)Value<<4)
Charles MacNeill 5:89031b2f5316 391
Charles MacNeill 5:89031b2f5316 392 #define VL53LX_FIXPOINT1616TOFIXPOINT313(Value) \
Charles MacNeill 5:89031b2f5316 393 (uint16_t)((Value>>3)&0xFFFF)
Charles MacNeill 5:89031b2f5316 394 #define VL53LX_FIXPOINT313TOFIXPOINT1616(Value) \
Charles MacNeill 5:89031b2f5316 395 (FixPoint1616_t)((uint32_t)Value<<3)
Charles MacNeill 5:89031b2f5316 396
Charles MacNeill 5:89031b2f5316 397 #define VL53LX_FIXPOINT1616TOFIXPOINT08(Value) \
Charles MacNeill 5:89031b2f5316 398 (uint8_t)((Value>>8)&0x00FF)
Charles MacNeill 5:89031b2f5316 399 #define VL53LX_FIXPOINT08TOFIXPOINT1616(Value) \
Charles MacNeill 5:89031b2f5316 400 (FixPoint1616_t)((uint32_t)Value<<8)
Charles MacNeill 5:89031b2f5316 401
Charles MacNeill 5:89031b2f5316 402 #define VL53LX_FIXPOINT1616TOFIXPOINT53(Value) \
Charles MacNeill 5:89031b2f5316 403 (uint8_t)((Value>>13)&0x00FF)
Charles MacNeill 5:89031b2f5316 404 #define VL53LX_FIXPOINT53TOFIXPOINT1616(Value) \
Charles MacNeill 5:89031b2f5316 405 (FixPoint1616_t)((uint32_t)Value<<13)
Charles MacNeill 5:89031b2f5316 406
Charles MacNeill 5:89031b2f5316 407 #define VL53LX_FIXPOINT1616TOFIXPOINT102(Value) \
Charles MacNeill 5:89031b2f5316 408 (uint16_t)((Value>>14)&0x0FFF)
Charles MacNeill 5:89031b2f5316 409 #define VL53LX_FIXPOINT102TOFIXPOINT1616(Value) \
Charles MacNeill 5:89031b2f5316 410 (FixPoint1616_t)((uint32_t)Value<<14)
Charles MacNeill 5:89031b2f5316 411
Charles MacNeill 5:89031b2f5316 412 #define VL53LX_FIXPOINT1616TOFIXPOINT142(Value) \
Charles MacNeill 5:89031b2f5316 413 (uint16_t)((Value>>14)&0xFFFF)
Charles MacNeill 5:89031b2f5316 414 #define VL53LX_FIXPOINT142TOFIXPOINT1616(Value) \
Charles MacNeill 5:89031b2f5316 415 (FixPoint1616_t)((uint32_t)Value<<14)
Charles MacNeill 5:89031b2f5316 416
Charles MacNeill 5:89031b2f5316 417 #define VL53LX_FIXPOINT1616TOFIXPOINT160(Value) \
Charles MacNeill 5:89031b2f5316 418 (uint16_t)((Value>>16)&0xFFFF)
Charles MacNeill 5:89031b2f5316 419 #define VL53LX_FIXPOINT160TOFIXPOINT1616(Value) \
Charles MacNeill 5:89031b2f5316 420 (FixPoint1616_t)((uint32_t)Value<<16)
Charles MacNeill 5:89031b2f5316 421
Charles MacNeill 5:89031b2f5316 422 #define VL53LX_MAKEUINT16(lsb, msb) (uint16_t)((((uint16_t)msb)<<8) + \
Charles MacNeill 5:89031b2f5316 423 (uint16_t)lsb)
Charles MacNeill 5:89031b2f5316 424
Charles MacNeill 5:89031b2f5316 425 #ifndef SUPPRESS_UNUSED_WARNING
Charles MacNeill 5:89031b2f5316 426 #define SUPPRESS_UNUSED_WARNING(x) ((void) (x))
Charles MacNeill 5:89031b2f5316 427 #endif
Charles MacNeill 5:89031b2f5316 428
Charles MacNeill 5:89031b2f5316 429 /** @} VL53LX_define_GeneralMacro_group */
Charles MacNeill 5:89031b2f5316 430
Charles MacNeill 5:89031b2f5316 431 /** @} VL53LX_globaldefine_group */
Charles MacNeill 5:89031b2f5316 432
Charles MacNeill 5:89031b2f5316 433
Charles MacNeill 5:89031b2f5316 434
Charles MacNeill 5:89031b2f5316 435 #ifdef __cplusplus
Charles MacNeill 5:89031b2f5316 436 }
Charles MacNeill 5:89031b2f5316 437 #endif
Charles MacNeill 5:89031b2f5316 438
Charles MacNeill 5:89031b2f5316 439
Charles MacNeill 5:89031b2f5316 440 #endif /* _VL53LX_DEF_H_ */