Rename library
Dependencies: X_NUCLEO_COMMON ST_INTERFACES
Dependents: VL53L3CX_NoShield_1Sensor_poll_Mb06x VL53L3_NoShield_1Sensor_polling_Mb63 X_NUCLEO_53L3A2 53L3A2_Ranging
modules/vl53lx_def.h@5:89031b2f5316, 2021-07-14 (annotated)
- 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?
User | Revision | Line number | New 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_ */ |