amiro-lld / drivers / VL53L1X / v1 / api / core / vl53l1_def.h @ f0dd1ac4
History | View | Annotate | Download (22.07 KB)
1 | 4dba9195 | galberding | /*
|
---|---|---|---|
2 | * Copyright (c) 2017, STMicroelectronics - All Rights Reserved
|
||
3 | *
|
||
4 | * This file is part of VL53L1 Core and is dual licensed,
|
||
5 | * either 'STMicroelectronics
|
||
6 | * Proprietary license'
|
||
7 | * or 'BSD 3-clause "New" or "Revised" License' , at your option.
|
||
8 | *
|
||
9 | ********************************************************************************
|
||
10 | *
|
||
11 | * 'STMicroelectronics Proprietary license'
|
||
12 | *
|
||
13 | ********************************************************************************
|
||
14 | *
|
||
15 | * License terms: STMicroelectronics Proprietary in accordance with licensing
|
||
16 | * terms at www.st.com/sla0081
|
||
17 | *
|
||
18 | * STMicroelectronics confidential
|
||
19 | * Reproduction and Communication of this document is strictly prohibited unless
|
||
20 | * specifically authorized in writing by STMicroelectronics.
|
||
21 | *
|
||
22 | *
|
||
23 | ********************************************************************************
|
||
24 | *
|
||
25 | * Alternatively, VL53L1 Core may be distributed under the terms of
|
||
26 | * 'BSD 3-clause "New" or "Revised" License', in which case the following
|
||
27 | * provisions apply instead of the ones mentioned above :
|
||
28 | *
|
||
29 | ********************************************************************************
|
||
30 | *
|
||
31 | * License terms: BSD 3-clause "New" or "Revised" License.
|
||
32 | *
|
||
33 | * Redistribution and use in source and binary forms, with or without
|
||
34 | * modification, are permitted provided that the following conditions are met:
|
||
35 | *
|
||
36 | * 1. Redistributions of source code must retain the above copyright notice, this
|
||
37 | * list of conditions and the following disclaimer.
|
||
38 | *
|
||
39 | * 2. Redistributions in binary form must reproduce the above copyright notice,
|
||
40 | * this list of conditions and the following disclaimer in the documentation
|
||
41 | * and/or other materials provided with the distribution.
|
||
42 | *
|
||
43 | * 3. Neither the name of the copyright holder nor the names of its contributors
|
||
44 | * may be used to endorse or promote products derived from this software
|
||
45 | * without specific prior written permission.
|
||
46 | *
|
||
47 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||
48 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||
49 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||
50 | * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||
51 | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||
52 | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||
53 | * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||
54 | * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||
55 | * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||
56 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||
57 | *
|
||
58 | *
|
||
59 | ********************************************************************************
|
||
60 | *
|
||
61 | */
|
||
62 | |||
63 | /**
|
||
64 | * @file vl53l1_def.h
|
||
65 | *
|
||
66 | * @brief Type definitions for VL53L1 API.
|
||
67 | *
|
||
68 | */
|
||
69 | |||
70 | |||
71 | #ifndef _VL53L1_DEF_H_
|
||
72 | #define _VL53L1_DEF_H_
|
||
73 | |||
74 | #include "vl53l1_ll_def.h" |
||
75 | |||
76 | #ifdef __cplusplus
|
||
77 | extern "C" { |
||
78 | #endif
|
||
79 | |||
80 | /** @defgroup VL53L1_globaldefine_group VL53L1 Defines
|
||
81 | * @brief VL53L1 Defines
|
||
82 | * @{
|
||
83 | */
|
||
84 | |||
85 | |||
86 | /** VL53L1 IMPLEMENTATION major version */
|
||
87 | #define VL53L1_IMPLEMENTATION_VER_MAJOR 2 |
||
88 | /** VL53L1 IMPLEMENTATION minor version */
|
||
89 | #define VL53L1_IMPLEMENTATION_VER_MINOR 3 |
||
90 | /** VL53L1 IMPLEMENTATION sub version */
|
||
91 | #define VL53L1_IMPLEMENTATION_VER_SUB 3 |
||
92 | /** VL53L1 IMPLEMENTATION sub version */
|
||
93 | #define VL53L1_IMPLEMENTATION_VER_REVISION 1885 |
||
94 | |||
95 | /****************************************
|
||
96 | * PRIVATE define do not edit
|
||
97 | ****************************************/
|
||
98 | |||
99 | /** @brief Defines the parameters of the Get Version Functions
|
||
100 | */
|
||
101 | typedef struct { |
||
102 | uint32_t revision; /*!< revision number */
|
||
103 | uint8_t major; /*!< major number */
|
||
104 | uint8_t minor; /*!< minor number */
|
||
105 | uint8_t build; /*!< build number */
|
||
106 | } VL53L1_Version_t; |
||
107 | |||
108 | |||
109 | #define VL53L1_DEVINFO_STRLEN 32 |
||
110 | |||
111 | /** @brief Defines the parameters of the Get Device Info Functions
|
||
112 | */
|
||
113 | typedef struct { |
||
114 | char Name[VL53L1_DEVINFO_STRLEN];
|
||
115 | /*!< Name of the Device e.g. Left_Distance */
|
||
116 | char Type[VL53L1_DEVINFO_STRLEN];
|
||
117 | /*!< Type of the Device e.g VL53L1 */
|
||
118 | char ProductId[VL53L1_DEVINFO_STRLEN];
|
||
119 | /*!< Product Identifier String
|
||
120 | * @warning Not yet implemented
|
||
121 | */
|
||
122 | uint8_t ProductType; |
||
123 | /*!< Product Type, VL53L1 = 1, VL53L1 = 2*/
|
||
124 | uint8_t ProductRevisionMajor; |
||
125 | /*!< Product revision major */
|
||
126 | uint8_t ProductRevisionMinor; |
||
127 | /*!< Product revision minor */
|
||
128 | } VL53L1_DeviceInfo_t; |
||
129 | |||
130 | |||
131 | |||
132 | /** @defgroup VL53L1_define_PresetModes_group Defines Preset modes
|
||
133 | * Defines all possible preset modes for the device
|
||
134 | * @{
|
||
135 | */
|
||
136 | typedef uint8_t VL53L1_PresetModes;
|
||
137 | |||
138 | #define VL53L1_PRESETMODE_AUTONOMOUS ((VL53L1_PresetModes) 3) |
||
139 | #define VL53L1_PRESETMODE_LITE_RANGING ((VL53L1_PresetModes) 4) |
||
140 | #define VL53L1_PRESETMODE_LOWPOWER_AUTONOMOUS ((VL53L1_PresetModes) 8) |
||
141 | |||
142 | /* ... Modes to be added depending on device */
|
||
143 | /** @} VL53L1_define_PresetModes_group */
|
||
144 | |||
145 | |||
146 | /** @defgroup VL53L1_define_DistanceModes_group Defines Distance modes
|
||
147 | * Defines all possible Distance modes for the device
|
||
148 | * @{
|
||
149 | */
|
||
150 | typedef uint8_t VL53L1_DistanceModes;
|
||
151 | |||
152 | #define VL53L1_DISTANCEMODE_SHORT ((VL53L1_DistanceModes) 1) |
||
153 | #define VL53L1_DISTANCEMODE_MEDIUM ((VL53L1_DistanceModes) 2) |
||
154 | #define VL53L1_DISTANCEMODE_LONG ((VL53L1_DistanceModes) 3) |
||
155 | /** @} VL53L1_define_DistanceModes_group */
|
||
156 | |||
157 | |||
158 | /** @defgroup VL53L1_define_XtalkCal_group Defines Xtalk Calibration modes
|
||
159 | * Defines all possible Offset Calibration modes for the device
|
||
160 | * @{
|
||
161 | */
|
||
162 | typedef uint8_t VL53L1_XtalkCalibrationModes;
|
||
163 | |||
164 | #define VL53L1_XTALKCALIBRATIONMODE_NO_TARGET \
|
||
165 | ((VL53L1_OffsetCalibrationModes) 0)
|
||
166 | /*!< To perform Xtalk calibration with no target below 80 cm */
|
||
167 | #define VL53L1_XTALKCALIBRATIONMODE_SINGLE_TARGET \
|
||
168 | ((VL53L1_OffsetCalibrationModes) 1)
|
||
169 | /*!< To perform Xtalk calibration with one target */
|
||
170 | #define VL53L1_XTALKCALIBRATIONMODE_FULL_ROI \
|
||
171 | ((VL53L1_OffsetCalibrationModes) 2)
|
||
172 | /*!< To perform Xtalk calibration based on histogram with full ROI */
|
||
173 | |||
174 | /** @} VL53L1_define_XtalkCal_group */
|
||
175 | |||
176 | /** @defgroup VL53L1_define_OffsetCal_group Defines Offset Calibration modes
|
||
177 | * Defines all possible Offset Calibration modes for the device
|
||
178 | * @{
|
||
179 | */
|
||
180 | typedef uint8_t VL53L1_OffsetCalibrationModes;
|
||
181 | |||
182 | #define VL53L1_OFFSETCALIBRATIONMODE_STANDARD \
|
||
183 | ((VL53L1_OffsetCalibrationModes) 1)
|
||
184 | #define VL53L1_OFFSETCALIBRATIONMODE_PRERANGE_ONLY \
|
||
185 | ((VL53L1_OffsetCalibrationModes) 2)
|
||
186 | |||
187 | /** @} VL53L1_define_OffsetCal_group */
|
||
188 | |||
189 | |||
190 | |||
191 | |||
192 | |||
193 | /** @defgroup VL53L1_CheckEnable_group Check Enable list
|
||
194 | * @brief Check Enable code
|
||
195 | *
|
||
196 | * Define used to specify the LimitCheckId.
|
||
197 | * Use @a VL53L1_GetLimitCheckInfo() to get the string.
|
||
198 | * @{
|
||
199 | */
|
||
200 | |||
201 | #define VL53L1_CHECKENABLE_SIGMA_FINAL_RANGE 0 |
||
202 | #define VL53L1_CHECKENABLE_SIGNAL_RATE_FINAL_RANGE 1 |
||
203 | |||
204 | #define VL53L1_CHECKENABLE_NUMBER_OF_CHECKS 2 |
||
205 | |||
206 | /** @} end of VL53L1_CheckEnable_group */
|
||
207 | |||
208 | |||
209 | /** @defgroup VL53L1_ThresholdMode_gropup Detection Functionality
|
||
210 | * @brief Defines the different functionalities for the detection feature
|
||
211 | * @{
|
||
212 | */
|
||
213 | typedef uint8_t VL53L1_ThresholdMode;
|
||
214 | |||
215 | #define VL53L1_THRESHOLD_CROSSED_LOW \
|
||
216 | ((VL53L1_ThresholdMode) 0)
|
||
217 | /*!< Trigger interrupt if value < thresh_low */
|
||
218 | #define VL53L1_THRESHOLD_CROSSED_HIGH \
|
||
219 | ((VL53L1_ThresholdMode) 1)
|
||
220 | /*!< Trigger interrupt if value > thresh_high */
|
||
221 | #define VL53L1_THRESHOLD_OUT_OF_WINDOW \
|
||
222 | ((VL53L1_ThresholdMode) 2)
|
||
223 | /*!< Trigger interrupt if value < thresh_low OR value > thresh_high */
|
||
224 | #define VL53L1_THRESHOLD_IN_WINDOW \
|
||
225 | ((VL53L1_ThresholdMode) 3)
|
||
226 | /*!< Trigger interrupt if value > thresh_low AND value < thresh_high */
|
||
227 | |||
228 | /** @} end of VL53L1_ThresholdMode_gropup */
|
||
229 | |||
230 | /** @brief Defines parameters for Distance detection Thresholds configuration
|
||
231 | */
|
||
232 | typedef struct { |
||
233 | VL53L1_ThresholdMode CrossMode; |
||
234 | uint16_t High; /*!< Distance threshold high limit in mm */
|
||
235 | uint16_t Low; /*!< Distance threshold low limit in mm */
|
||
236 | } VL53L1_DistanceThreshold_t; |
||
237 | |||
238 | /** @brief Defines parameters for Signal rate detection Thresholds configuration
|
||
239 | */
|
||
240 | typedef struct { |
||
241 | VL53L1_ThresholdMode CrossMode; |
||
242 | FixPoint1616_t High; /*!< Signal rate threshold high limit */
|
||
243 | FixPoint1616_t Low; /*!< Signal rate threshold low limit */
|
||
244 | } VL53L1_RateThreshold_t; |
||
245 | |||
246 | /** @defgroup VL53L1_DetectionMode_group Gpio Functionality
|
||
247 | * @brief Defines conditions leading to device's IT on GPIO
|
||
248 | * @{
|
||
249 | */
|
||
250 | typedef uint8_t VL53L1_DetectionMode;
|
||
251 | |||
252 | #define VL53L1_DETECTION_NORMAL_RUN \
|
||
253 | ((VL53L1_DetectionMode) 0)
|
||
254 | /*!< Trigger interrupt on new measurement regardless of threshold
|
||
255 | * just like after a VL53L1_SetPresetMode() call
|
||
256 | */
|
||
257 | #define VL53L1_DETECTION_DISTANCE_ONLY \
|
||
258 | ((VL53L1_DetectionMode) 1)
|
||
259 | /*!< Trigger interrupt if "threshold event" occurs on distance */
|
||
260 | #define VL53L1_DETECTION_RATE_ONLY \
|
||
261 | ((VL53L1_DetectionMode) 2)
|
||
262 | /*!< Trigger interrupt if "threshold event" occurs on signal rate */
|
||
263 | #define VL53L1_DETECTION_DISTANCE_AND_RATE \
|
||
264 | ((VL53L1_DetectionMode) 3)
|
||
265 | /*!< Trigger interrupt if "threshold event" occurs on distance AND rate
|
||
266 | */
|
||
267 | #define VL53L1_DETECTION_DISTANCE_OR_RATE \
|
||
268 | ((VL53L1_DetectionMode) 4)
|
||
269 | /*!< Trigger interrupt if "threshold event" occurs on distance OR rate
|
||
270 | */
|
||
271 | |||
272 | /** @} end of VL53L1_DetectionMode_group */
|
||
273 | |||
274 | /** @brief Defines parameters for User/object Detection configuration
|
||
275 | */
|
||
276 | typedef struct { |
||
277 | VL53L1_DetectionMode DetectionMode; /*!< See #VL53L1_DetectionMode*/
|
||
278 | uint8_t IntrNoTarget; /*!< 1 to trigger IT in case of no target found */
|
||
279 | VL53L1_DistanceThreshold_t Distance; /*!< limits in mm */
|
||
280 | VL53L1_RateThreshold_t Rate;/*!< limits in FixPoint1616_t */
|
||
281 | } VL53L1_DetectionConfig_t; |
||
282 | |||
283 | |||
284 | /** @brief Defines all parameters for the device
|
||
285 | */
|
||
286 | typedef struct { |
||
287 | VL53L1_PresetModes PresetMode; |
||
288 | /*!< Defines the operating mode to be used for the next measure */
|
||
289 | VL53L1_DistanceModes DistanceMode; |
||
290 | /*!< Defines the operating mode to be used for the next measure */
|
||
291 | VL53L1_DistanceModes InternalDistanceMode; |
||
292 | /*!< Defines the internal operating mode to be used for the next
|
||
293 | * measure
|
||
294 | */
|
||
295 | VL53L1_DistanceModes NewDistanceMode; |
||
296 | /*!< Defines the new operating mode to be programmed for the next
|
||
297 | * measure
|
||
298 | */
|
||
299 | uint32_t MeasurementTimingBudgetMicroSeconds; |
||
300 | /*!< Defines the allowed total time for a single measurement */
|
||
301 | uint8_t LimitChecksEnable[VL53L1_CHECKENABLE_NUMBER_OF_CHECKS]; |
||
302 | /*!< This Array store all the Limit Check enable for this device. */
|
||
303 | uint8_t LimitChecksStatus[VL53L1_CHECKENABLE_NUMBER_OF_CHECKS]; |
||
304 | /*!< This Array stores all the Status of the check linked to last
|
||
305 | * measurement.
|
||
306 | */
|
||
307 | FixPoint1616_t LimitChecksValue[VL53L1_CHECKENABLE_NUMBER_OF_CHECKS]; |
||
308 | /*!< This Array stores all the Limit Check value for this device */
|
||
309 | FixPoint1616_t LimitChecksCurrent[VL53L1_CHECKENABLE_NUMBER_OF_CHECKS]; |
||
310 | /*!< This Array stores all the Limit Check current value from latest
|
||
311 | * ranging
|
||
312 | */
|
||
313 | } VL53L1_DeviceParameters_t; |
||
314 | |||
315 | |||
316 | /** @defgroup VL53L1_define_State_group Defines the current status of the device
|
||
317 | * Defines the current status of the device
|
||
318 | * @{
|
||
319 | */
|
||
320 | |||
321 | typedef uint8_t VL53L1_State;
|
||
322 | |||
323 | #define VL53L1_STATE_POWERDOWN ((VL53L1_State) 0) |
||
324 | /*!< Device is in HW reset */
|
||
325 | #define VL53L1_STATE_WAIT_STATICINIT ((VL53L1_State) 1) |
||
326 | /*!< Device is initialized and wait for static initialization */
|
||
327 | #define VL53L1_STATE_STANDBY ((VL53L1_State) 2) |
||
328 | /*!< Device is in Low power Standby mode */
|
||
329 | #define VL53L1_STATE_IDLE ((VL53L1_State) 3) |
||
330 | /*!< Device has been initialized and ready to do measurements */
|
||
331 | #define VL53L1_STATE_RUNNING ((VL53L1_State) 4) |
||
332 | /*!< Device is performing measurement */
|
||
333 | #define VL53L1_STATE_RESET ((VL53L1_State) 5) |
||
334 | /*!< Soft reset has been run on Device */
|
||
335 | #define VL53L1_STATE_UNKNOWN ((VL53L1_State) 98) |
||
336 | /*!< Device is in unknown state and need to be rebooted */
|
||
337 | #define VL53L1_STATE_ERROR ((VL53L1_State) 99) |
||
338 | /*!< Device is in error state and need to be rebooted */
|
||
339 | |||
340 | /** @} VL53L1_define_State_group */
|
||
341 | |||
342 | |||
343 | |||
344 | /**
|
||
345 | * @struct VL53L1_RangingMeasurementData_t
|
||
346 | * @brief Single Range measurement data.
|
||
347 | */
|
||
348 | typedef struct { |
||
349 | uint32_t TimeStamp; |
||
350 | /*!< 32-bit time stamp.
|
||
351 | * @warning Not yet implemented
|
||
352 | */
|
||
353 | |||
354 | uint8_t StreamCount; |
||
355 | /*!< 8-bit Stream Count. */
|
||
356 | |||
357 | uint8_t RangeQualityLevel; |
||
358 | /*!< indicate a quality level in percentage from 0 to 100
|
||
359 | * @warning Not yet implemented
|
||
360 | */
|
||
361 | |||
362 | FixPoint1616_t SignalRateRtnMegaCps; |
||
363 | /*!< Return signal rate (MCPS)\n these is a 16.16 fix point
|
||
364 | * value, which is effectively a measure of target
|
||
365 | * reflectance.
|
||
366 | */
|
||
367 | |||
368 | FixPoint1616_t AmbientRateRtnMegaCps; |
||
369 | /*!< Return ambient rate (MCPS)\n these is a 16.16 fix point
|
||
370 | * value, which is effectively a measure of the ambien
|
||
371 | * t light.
|
||
372 | */
|
||
373 | |||
374 | uint16_t EffectiveSpadRtnCount; |
||
375 | /*!< Return the effective SPAD count for the return signal.
|
||
376 | * To obtain Real value it should be divided by 256
|
||
377 | */
|
||
378 | |||
379 | FixPoint1616_t SigmaMilliMeter; |
||
380 | /*!< Return the Sigma value in millimeter */
|
||
381 | |||
382 | int16_t RangeMilliMeter; |
||
383 | /*!< range distance in millimeter. This should be between
|
||
384 | * RangeMinMilliMeter and RangeMaxMilliMeter
|
||
385 | */
|
||
386 | |||
387 | uint8_t RangeFractionalPart; |
||
388 | /*!< Fractional part of range distance. Final value is a
|
||
389 | * RangeMilliMeter + RangeFractionalPart/256.
|
||
390 | * @warning Not yet implemented
|
||
391 | */
|
||
392 | |||
393 | uint8_t RangeStatus; |
||
394 | /*!< Range Status for the current measurement. This is device
|
||
395 | * dependent. Value = 0 means value is valid.
|
||
396 | */
|
||
397 | } VL53L1_RangingMeasurementData_t; |
||
398 | |||
399 | |||
400 | |||
401 | /** @brief Defines User Zone(ROI) parameters
|
||
402 | *
|
||
403 | */
|
||
404 | typedef struct { |
||
405 | |||
406 | uint8_t TopLeftX; /*!< Top Left x coordinate: 0-15 range */
|
||
407 | uint8_t TopLeftY; /*!< Top Left y coordinate: 0-15 range */
|
||
408 | uint8_t BotRightX; /*!< Bot Right x coordinate: 0-15 range */
|
||
409 | uint8_t BotRightY; /*!< Bot Right y coordinate: 0-15 range */
|
||
410 | |||
411 | } VL53L1_UserRoi_t; |
||
412 | |||
413 | |||
414 | /** @brief Defines ROI configuration parameters
|
||
415 | *
|
||
416 | * Support up a max of 16 zones, Each Zone has the same size
|
||
417 | *
|
||
418 | */
|
||
419 | |||
420 | /**
|
||
421 | * @struct VL53L1_CustomerNvmManaged_t
|
||
422 | *
|
||
423 | */
|
||
424 | |||
425 | typedef struct { |
||
426 | uint8_t global_config__spad_enables_ref_0; |
||
427 | uint8_t global_config__spad_enables_ref_1; |
||
428 | uint8_t global_config__spad_enables_ref_2; |
||
429 | uint8_t global_config__spad_enables_ref_3; |
||
430 | uint8_t global_config__spad_enables_ref_4; |
||
431 | uint8_t global_config__spad_enables_ref_5; |
||
432 | uint8_t global_config__ref_en_start_select; |
||
433 | uint8_t ref_spad_man__num_requested_ref_spads; |
||
434 | uint8_t ref_spad_man__ref_location; |
||
435 | uint32_t algo__crosstalk_compensation_plane_offset_kcps; |
||
436 | int16_t algo__crosstalk_compensation_x_plane_gradient_kcps; |
||
437 | int16_t algo__crosstalk_compensation_y_plane_gradient_kcps; |
||
438 | uint16_t ref_spad_char__total_rate_target_mcps; |
||
439 | int16_t algo__part_to_part_range_offset_mm; |
||
440 | int16_t mm_config__inner_offset_mm; |
||
441 | int16_t mm_config__outer_offset_mm; |
||
442 | } VL53L1_CustomerNvmManaged_t; |
||
443 | |||
444 | /**
|
||
445 | * @struct VL53L1_CalibrationData_t
|
||
446 | * @brief Structure for storing the Calibration Data
|
||
447 | *
|
||
448 | */
|
||
449 | |||
450 | typedef struct { |
||
451 | |||
452 | uint32_t struct_version; |
||
453 | VL53L1_CustomerNvmManaged_t customer; |
||
454 | VL53L1_additional_offset_cal_data_t add_off_cal_data; |
||
455 | VL53L1_optical_centre_t optical_centre; |
||
456 | VL53L1_gain_calibration_data_t gain_cal; |
||
457 | VL53L1_cal_peak_rate_map_t cal_peak_rate_map; |
||
458 | |||
459 | } VL53L1_CalibrationData_t; |
||
460 | |||
461 | #define VL53L1_ADDITIONAL_CALIBRATION_DATA_STRUCT_VERSION 0x10 |
||
462 | /** VL53L1 additional Calibration Data struct version final struct version
|
||
463 | * is given by adding it to VL53L1_LL_CALIBRATION_DATA_STRUCT_VERSION
|
||
464 | */
|
||
465 | |||
466 | #define VL53L1_CALIBRATION_DATA_STRUCT_VERSION \
|
||
467 | (VL53L1_LL_CALIBRATION_DATA_STRUCT_VERSION + \ |
||
468 | VL53L1_ADDITIONAL_CALIBRATION_DATA_STRUCT_VERSION) |
||
469 | /* VL53L1 Calibration Data struct version */
|
||
470 | |||
471 | /**
|
||
472 | * @struct VL53L1_AdditionalData_t
|
||
473 | * @brief Structure for storing the Additional Data
|
||
474 | *
|
||
475 | */
|
||
476 | typedef VL53L1_additional_data_t VL53L1_AdditionalData_t;
|
||
477 | |||
478 | |||
479 | typedef uint8_t VL53L1_SequenceStepId;
|
||
480 | |||
481 | #define VL53L1_SEQUENCESTEP_VHV ((VL53L1_SequenceStepId) 0) |
||
482 | /*!<VHV. */
|
||
483 | #define VL53L1_SEQUENCESTEP_PHASECAL ((VL53L1_SequenceStepId) 1) |
||
484 | /*!<Phase Calibration. */
|
||
485 | #define VL53L1_SEQUENCESTEP_REFPHASE ((VL53L1_SequenceStepId) 2) |
||
486 | /*!<Reference Phase. */
|
||
487 | #define VL53L1_SEQUENCESTEP_DSS1 ((VL53L1_SequenceStepId) 3) |
||
488 | /*!<DSS1. */
|
||
489 | #define VL53L1_SEQUENCESTEP_DSS2 ((VL53L1_SequenceStepId) 4) |
||
490 | /*!<DSS2. */
|
||
491 | #define VL53L1_SEQUENCESTEP_MM1 ((VL53L1_SequenceStepId) 5) |
||
492 | /*!<Mode Mitigation 1. */
|
||
493 | #define VL53L1_SEQUENCESTEP_MM2 ((VL53L1_SequenceStepId) 6) |
||
494 | /*!<Mode Mitigation 2. */
|
||
495 | #define VL53L1_SEQUENCESTEP_RANGE ((VL53L1_SequenceStepId) 7) |
||
496 | /*!<Final Range step. */
|
||
497 | |||
498 | #define VL53L1_SEQUENCESTEP_NUMBER_OF_ITEMS 8 |
||
499 | /*!<Number of Sequence Step Managed by the API. */
|
||
500 | |||
501 | |||
502 | /** @defgroup VL53L1_define_RangeStatus_group Defines the Range Status
|
||
503 | * @{
|
||
504 | */
|
||
505 | #define VL53L1_RANGESTATUS_RANGE_VALID 0 |
||
506 | /*!<The Range is valid. */
|
||
507 | #define VL53L1_RANGESTATUS_SIGMA_FAIL 1 |
||
508 | /*!<Sigma Fail. */
|
||
509 | #define VL53L1_RANGESTATUS_SIGNAL_FAIL 2 |
||
510 | /*!<Signal fail. */
|
||
511 | #define VL53L1_RANGESTATUS_RANGE_VALID_MIN_RANGE_CLIPPED 3 |
||
512 | /*!<Target is below minimum detection threshold. */
|
||
513 | #define VL53L1_RANGESTATUS_OUTOFBOUNDS_FAIL 4 |
||
514 | /*!<Phase out of valid limits - different to a wrap exit. */
|
||
515 | #define VL53L1_RANGESTATUS_HARDWARE_FAIL 5 |
||
516 | /*!<Hardware fail. */
|
||
517 | #define VL53L1_RANGESTATUS_RANGE_VALID_NO_WRAP_CHECK_FAIL 6 |
||
518 | /*!<The Range is valid but the wraparound check has not been done. */
|
||
519 | #define VL53L1_RANGESTATUS_WRAP_TARGET_FAIL 7 |
||
520 | /*!<Wrapped target - no matching phase in other VCSEL period timing. */
|
||
521 | #define VL53L1_RANGESTATUS_PROCESSING_FAIL 8 |
||
522 | /*!<Internal algo underflow or overflow in lite ranging. */
|
||
523 | #define VL53L1_RANGESTATUS_XTALK_SIGNAL_FAIL 9 |
||
524 | /*!<Specific to lite ranging. */
|
||
525 | #define VL53L1_RANGESTATUS_SYNCRONISATION_INT 10 |
||
526 | /*!<1st interrupt when starting ranging in back to back mode. Ignore data. */
|
||
527 | #define VL53L1_RANGESTATUS_RANGE_VALID_MERGED_PULSE 11 |
||
528 | /*!<All Range ok but object is result of multiple pulses merging together.
|
||
529 | * Used by RQL for merged pulse detection
|
||
530 | */
|
||
531 | #define VL53L1_RANGESTATUS_TARGET_PRESENT_LACK_OF_SIGNAL 12 |
||
532 | /*!<Used by RQL as different to phase fail. */
|
||
533 | #define VL53L1_RANGESTATUS_MIN_RANGE_FAIL 13 |
||
534 | /*!<User ROI input is not valid e.g. beyond SPAD Array.*/
|
||
535 | #define VL53L1_RANGESTATUS_RANGE_INVALID 14 |
||
536 | /*!<lld returned valid range but negative value ! */
|
||
537 | #define VL53L1_RANGESTATUS_NONE 255 |
||
538 | /*!<No Update. */
|
||
539 | |||
540 | /** @} VL53L1_define_RangeStatus_group */
|
||
541 | |||
542 | |||
543 | /** @brief Contains the Internal data of the Bare Driver
|
||
544 | */
|
||
545 | |||
546 | typedef struct { |
||
547 | VL53L1_LLDriverData_t LLData; |
||
548 | /*!< Low Level Driver data structure */
|
||
549 | |||
550 | VL53L1_LLDriverResults_t llresults; |
||
551 | /*!< Low Level Driver data structure */
|
||
552 | |||
553 | VL53L1_State PalState; /* Store the pal state */
|
||
554 | VL53L1_DeviceParameters_t CurrentParameters; |
||
555 | /*!< Current Device Parameter */
|
||
556 | |||
557 | } VL53L1_DevData_t; |
||
558 | |||
559 | |||
560 | /* MACRO Definitions */
|
||
561 | /** @defgroup VL53L1_define_GeneralMacro_group General Macro Defines
|
||
562 | * General Macro Defines
|
||
563 | * @{
|
||
564 | */
|
||
565 | |||
566 | /* Defines */
|
||
567 | #define VL53L1_SETPARAMETERFIELD(Dev, field, value) \
|
||
568 | (VL53L1DevDataSet(Dev, CurrentParameters.field, value)) |
||
569 | |||
570 | #define VL53L1_GETPARAMETERFIELD(Dev, field, variable) \
|
||
571 | (variable = VL53L1DevDataGet(Dev, CurrentParameters).field) |
||
572 | |||
573 | |||
574 | #define VL53L1_SETARRAYPARAMETERFIELD(Dev, field, index, value) \
|
||
575 | (VL53L1DevDataSet(Dev, CurrentParameters.field[index], value)) |
||
576 | |||
577 | #define VL53L1_GETARRAYPARAMETERFIELD(Dev, field, index, variable) \
|
||
578 | (variable = VL53L1DevDataGet(Dev, CurrentParameters).field[index]) |
||
579 | |||
580 | |||
581 | #define VL53L1_SETDEVICESPECIFICPARAMETER(Dev, field, value) \
|
||
582 | (VL53L1DevDataSet(Dev, DeviceSpecificParameters.field, value)) |
||
583 | |||
584 | #define VL53L1_GETDEVICESPECIFICPARAMETER(Dev, field) \
|
||
585 | (VL53L1DevDataGet(Dev, DeviceSpecificParameters).field) |
||
586 | |||
587 | |||
588 | #define VL53L1_FIXPOINT1616TOFIXPOINT44(Value) \
|
||
589 | (uint16_t)((Value>>12)&0xFFFF) |
||
590 | #define VL53L1_FIXPOINT44TOFIXPOINT1616(Value) \
|
||
591 | (FixPoint1616_t)((uint32_t)Value<<12)
|
||
592 | |||
593 | #define VL53L1_FIXPOINT1616TOFIXPOINT72(Value) \
|
||
594 | (uint16_t)((Value>>14)&0xFFFF) |
||
595 | #define VL53L1_FIXPOINT72TOFIXPOINT1616(Value) \
|
||
596 | (FixPoint1616_t)((uint32_t)Value<<14)
|
||
597 | |||
598 | #define VL53L1_FIXPOINT1616TOFIXPOINT97(Value) \
|
||
599 | (uint16_t)((Value>>9)&0xFFFF) |
||
600 | #define VL53L1_FIXPOINT97TOFIXPOINT1616(Value) \
|
||
601 | (FixPoint1616_t)((uint32_t)Value<<9)
|
||
602 | |||
603 | #define VL53L1_FIXPOINT1616TOFIXPOINT88(Value) \
|
||
604 | (uint16_t)((Value>>8)&0xFFFF) |
||
605 | #define VL53L1_FIXPOINT88TOFIXPOINT1616(Value) \
|
||
606 | (FixPoint1616_t)((uint32_t)Value<<8)
|
||
607 | |||
608 | #define VL53L1_FIXPOINT1616TOFIXPOINT412(Value) \
|
||
609 | (uint16_t)((Value>>4)&0xFFFF) |
||
610 | #define VL53L1_FIXPOINT412TOFIXPOINT1616(Value) \
|
||
611 | (FixPoint1616_t)((uint32_t)Value<<4)
|
||
612 | |||
613 | #define VL53L1_FIXPOINT1616TOFIXPOINT313(Value) \
|
||
614 | (uint16_t)((Value>>3)&0xFFFF) |
||
615 | #define VL53L1_FIXPOINT313TOFIXPOINT1616(Value) \
|
||
616 | (FixPoint1616_t)((uint32_t)Value<<3)
|
||
617 | |||
618 | #define VL53L1_FIXPOINT1616TOFIXPOINT08(Value) \
|
||
619 | (uint8_t)((Value>>8)&0x00FF) |
||
620 | #define VL53L1_FIXPOINT08TOFIXPOINT1616(Value) \
|
||
621 | (FixPoint1616_t)((uint32_t)Value<<8)
|
||
622 | |||
623 | #define VL53L1_FIXPOINT1616TOFIXPOINT53(Value) \
|
||
624 | (uint8_t)((Value>>13)&0x00FF) |
||
625 | #define VL53L1_FIXPOINT53TOFIXPOINT1616(Value) \
|
||
626 | (FixPoint1616_t)((uint32_t)Value<<13)
|
||
627 | |||
628 | #define VL53L1_FIXPOINT1616TOFIXPOINT102(Value) \
|
||
629 | (uint16_t)((Value>>14)&0x0FFF) |
||
630 | #define VL53L1_FIXPOINT102TOFIXPOINT1616(Value) \
|
||
631 | (FixPoint1616_t)((uint32_t)Value<<14)
|
||
632 | |||
633 | #define VL53L1_FIXPOINT1616TOFIXPOINT142(Value) \
|
||
634 | (uint16_t)((Value>>14)&0xFFFF) |
||
635 | #define VL53L1_FIXPOINT142TOFIXPOINT1616(Value) \
|
||
636 | (FixPoint1616_t)((uint32_t)Value<<14)
|
||
637 | |||
638 | #define VL53L1_FIXPOINT1616TOFIXPOINT160(Value) \
|
||
639 | (uint16_t)((Value>>16)&0xFFFF) |
||
640 | #define VL53L1_FIXPOINT160TOFIXPOINT1616(Value) \
|
||
641 | (FixPoint1616_t)((uint32_t)Value<<16)
|
||
642 | |||
643 | #define VL53L1_MAKEUINT16(lsb, msb) (uint16_t)((((uint16_t)msb)<<8) + \ |
||
644 | (uint16_t)lsb) |
||
645 | |||
646 | #ifndef SUPPRESS_UNUSED_WARNING
|
||
647 | #define SUPPRESS_UNUSED_WARNING(x) ((void) (x)) |
||
648 | #endif
|
||
649 | |||
650 | #define CHECK_ERROR_GO_ENDFUNC do {\ |
||
651 | if (Status != VL53L1_ERROR_NONE) \
|
||
652 | goto ENDFUNC; \
|
||
653 | } while (0) |
||
654 | |||
655 | /** @} VL53L1_define_GeneralMacro_group */
|
||
656 | |||
657 | /** @} VL53L1_globaldefine_group */
|
||
658 | |||
659 | |||
660 | |||
661 | #ifdef __cplusplus
|
||
662 | } |
||
663 | #endif
|
||
664 | |||
665 | |||
666 | #endif /* _VL53L1_DEF_H_ */ |