vl53l1_ll_device.h 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698
  1. /*
  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. * @file vl53l1_ll_device.h
  64. *
  65. * @brief LL Driver Device specific defines. To be adapted by implementer for the
  66. * targeted device.
  67. */
  68. #ifndef _VL53L1_LL_DEVICE_H_
  69. #define _VL53L1_LL_DEVICE_H_
  70. #include "vl53l1_types.h"
  71. #include "vl53l1_platform_user_config.h"
  72. #define VL53L1_I2C 0x01
  73. #define VL53L1_SPI 0x00
  74. /** @defgroup VL53L1_DevSpecDefines_group VL53L1 Device Specific Defines
  75. * @brief VL53L1 cut1.0 Device Specific Defines
  76. * @{
  77. */
  78. /** @defgroup VL53L1_define_WaitMethod_group Defines Wait method used
  79. * For example blocking versus non blocking
  80. * @{
  81. */
  82. typedef uint8_t VL53L1_WaitMethod;
  83. #define VL53L1_WAIT_METHOD_BLOCKING ((VL53L1_WaitMethod) 0)
  84. #define VL53L1_WAIT_METHOD_NON_BLOCKING ((VL53L1_WaitMethod) 1)
  85. /** @} end of VL53L1_define_WaitMethod_group */
  86. /** @defgroup VL53L1_define_DeviceState_group Device State
  87. *
  88. * @brief Defines all possible device states for the device
  89. * @{
  90. */
  91. typedef uint8_t VL53L1_DeviceState;
  92. #define VL53L1_DEVICESTATE_POWERDOWN ((VL53L1_DeviceState) 0)
  93. #define VL53L1_DEVICESTATE_HW_STANDBY ((VL53L1_DeviceState) 1)
  94. #define VL53L1_DEVICESTATE_FW_COLDBOOT ((VL53L1_DeviceState) 2)
  95. #define VL53L1_DEVICESTATE_SW_STANDBY ((VL53L1_DeviceState) 3)
  96. #define VL53L1_DEVICESTATE_RANGING_DSS_AUTO ((VL53L1_DeviceState) 4)
  97. #define VL53L1_DEVICESTATE_RANGING_DSS_MANUAL ((VL53L1_DeviceState) 5)
  98. #define VL53L1_DEVICESTATE_RANGING_WAIT_GPH_SYNC ((VL53L1_DeviceState) 6)
  99. #define VL53L1_DEVICESTATE_RANGING_GATHER_DATA ((VL53L1_DeviceState) 7)
  100. #define VL53L1_DEVICESTATE_RANGING_OUTPUT_DATA ((VL53L1_DeviceState) 8)
  101. #define VL53L1_DEVICESTATE_UNKNOWN ((VL53L1_DeviceState) 98)
  102. #define VL53L1_DEVICESTATE_ERROR ((VL53L1_DeviceState) 99)
  103. /** @} end of VL53L1_define_DeviceState_group */
  104. /** @defgroup VL53L1_define_DevicePresetModes_group Device Preset Modes
  105. *
  106. * @brief Defines all possible device preset modes. The integer values are
  107. * kept the same as main EwokPlus driver branch
  108. * @{
  109. */
  110. typedef uint8_t VL53L1_DevicePresetModes;
  111. #define VL53L1_DEVICEPRESETMODE_NONE ((VL53L1_DevicePresetModes) 0)
  112. #define VL53L1_DEVICEPRESETMODE_STANDARD_RANGING ((VL53L1_DevicePresetModes) 1)
  113. #define VL53L1_DEVICEPRESETMODE_STANDARD_RANGING_SHORT_RANGE ((VL53L1_DevicePresetModes) 2)
  114. #define VL53L1_DEVICEPRESETMODE_STANDARD_RANGING_LONG_RANGE ((VL53L1_DevicePresetModes) 3)
  115. #define VL53L1_DEVICEPRESETMODE_STANDARD_RANGING_MM1_CAL ((VL53L1_DevicePresetModes) 4)
  116. #define VL53L1_DEVICEPRESETMODE_STANDARD_RANGING_MM2_CAL ((VL53L1_DevicePresetModes) 5)
  117. #define VL53L1_DEVICEPRESETMODE_TIMED_RANGING ((VL53L1_DevicePresetModes) 6)
  118. #define VL53L1_DEVICEPRESETMODE_TIMED_RANGING_SHORT_RANGE ((VL53L1_DevicePresetModes) 7)
  119. #define VL53L1_DEVICEPRESETMODE_TIMED_RANGING_LONG_RANGE ((VL53L1_DevicePresetModes) 8)
  120. #define VL53L1_DEVICEPRESETMODE_OLT ((VL53L1_DevicePresetModes) 17)
  121. #define VL53L1_DEVICEPRESETMODE_SINGLESHOT_RANGING ((VL53L1_DevicePresetModes) 18)
  122. #define VL53L1_DEVICEPRESETMODE_LOWPOWERAUTO_SHORT_RANGE ((VL53L1_DevicePresetModes) 36)
  123. #define VL53L1_DEVICEPRESETMODE_LOWPOWERAUTO_MEDIUM_RANGE ((VL53L1_DevicePresetModes) 37)
  124. #define VL53L1_DEVICEPRESETMODE_LOWPOWERAUTO_LONG_RANGE ((VL53L1_DevicePresetModes) 38)
  125. /** @} end of VL53L1_define_DevicePresetModes_group */
  126. /** @defgroup VL53L1_define_DeviceMeasurementModes_group Device Measurement Modes
  127. *
  128. * @brief Defines all possible measurement modes for the device
  129. * @{
  130. */
  131. typedef uint8_t VL53L1_DeviceMeasurementModes;
  132. #define VL53L1_DEVICEMEASUREMENTMODE_STOP ((VL53L1_DeviceMeasurementModes) 0x00)
  133. #define VL53L1_DEVICEMEASUREMENTMODE_SINGLESHOT ((VL53L1_DeviceMeasurementModes) 0x10)
  134. #define VL53L1_DEVICEMEASUREMENTMODE_BACKTOBACK ((VL53L1_DeviceMeasurementModes) 0x20)
  135. #define VL53L1_DEVICEMEASUREMENTMODE_TIMED ((VL53L1_DeviceMeasurementModes) 0x40)
  136. #define VL53L1_DEVICEMEASUREMENTMODE_ABORT ((VL53L1_DeviceMeasurementModes) 0x80)
  137. /** @} VL53L1_define_DeviceMeasurementModes_group */
  138. /** @defgroup VL53L1_define_OffsetCalibrationModes_group Device Offset Calibration Mode
  139. *
  140. * @brief Defines possible offset calibration modes for the device
  141. * @{
  142. */
  143. typedef uint8_t VL53L1_OffsetCalibrationMode;
  144. #define VL53L1_OFFSETCALIBRATIONMODE__NONE ((VL53L1_OffsetCalibrationMode) 0)
  145. #define VL53L1_OFFSETCALIBRATIONMODE__MM1_MM2__STANDARD ((VL53L1_OffsetCalibrationMode) 1)
  146. #define VL53L1_OFFSETCALIBRATIONMODE__MM1_MM2__HISTOGRAM ((VL53L1_OffsetCalibrationMode) 2)
  147. #define VL53L1_OFFSETCALIBRATIONMODE__MM1_MM2__STANDARD_PRE_RANGE_ONLY ((VL53L1_OffsetCalibrationMode) 3)
  148. #define VL53L1_OFFSETCALIBRATIONMODE__MM1_MM2__HISTOGRAM_PRE_RANGE_ONLY ((VL53L1_OffsetCalibrationMode) 4)
  149. #define VL53L1_OFFSETCALIBRATIONMODE__PER_ZONE ((VL53L1_OffsetCalibrationMode) 5)
  150. /** @} VL53L1_define_OffsetCalibrationModes_group */
  151. /** @defgroup VL53L1_define_OffsetCalibrationModes_group Device Offset Correction Mode
  152. *
  153. * @brief Defines all possible offset correction modes for the device
  154. * @{
  155. */
  156. typedef uint8_t VL53L1_OffsetCorrectionMode;
  157. #define VL53L1_OFFSETCORRECTIONMODE__NONE ((VL53L1_OffsetCorrectionMode) 0)
  158. #define VL53L1_OFFSETCORRECTIONMODE__MM1_MM2_OFFSETS ((VL53L1_OffsetCorrectionMode) 1)
  159. #define VL53L1_OFFSETCORRECTIONMODE__PER_ZONE_OFFSETS ((VL53L1_OffsetCorrectionMode) 2)
  160. /** @} VL53L1_define_OffsetCalibrationModes_group */
  161. /** @defgroup VL53L1_DeviceSequenceConfig_group Device Sequence Config
  162. *
  163. * @brief Individual bit enables for each stage in the ranging scheduler
  164. * The values below encode the bit shift for each bit
  165. * @{
  166. */
  167. typedef uint8_t VL53L1_DeviceSequenceConfig;
  168. #define VL53L1_DEVICESEQUENCECONFIG_VHV ((VL53L1_DeviceSequenceConfig) 0)
  169. #define VL53L1_DEVICESEQUENCECONFIG_PHASECAL ((VL53L1_DeviceSequenceConfig) 1)
  170. #define VL53L1_DEVICESEQUENCECONFIG_REFERENCE_PHASE ((VL53L1_DeviceSequenceConfig) 2)
  171. #define VL53L1_DEVICESEQUENCECONFIG_DSS1 ((VL53L1_DeviceSequenceConfig) 3)
  172. #define VL53L1_DEVICESEQUENCECONFIG_DSS2 ((VL53L1_DeviceSequenceConfig) 4)
  173. #define VL53L1_DEVICESEQUENCECONFIG_MM1 ((VL53L1_DeviceSequenceConfig) 5)
  174. #define VL53L1_DEVICESEQUENCECONFIG_MM2 ((VL53L1_DeviceSequenceConfig) 6)
  175. #define VL53L1_DEVICESEQUENCECONFIG_RANGE ((VL53L1_DeviceSequenceConfig) 7)
  176. /** @} VL53L1_DeviceSequenceConfig_group */
  177. /** @defgroup VL53L1_DeviceInterruptPolarity_group Device Interrupt Polarity
  178. *
  179. * @brief Device Interrupt Polarity
  180. * @{
  181. */
  182. typedef uint8_t VL53L1_DeviceInterruptPolarity;
  183. #define VL53L1_DEVICEINTERRUPTPOLARITY_ACTIVE_HIGH ((VL53L1_DeviceInterruptPolarity) 0x00)
  184. #define VL53L1_DEVICEINTERRUPTPOLARITY_ACTIVE_LOW ((VL53L1_DeviceInterruptPolarity) 0x10)
  185. #define VL53L1_DEVICEINTERRUPTPOLARITY_BIT_MASK ((VL53L1_DeviceInterruptPolarity) 0x10)
  186. #define VL53L1_DEVICEINTERRUPTPOLARITY_CLEAR_MASK ((VL53L1_DeviceInterruptPolarity) 0xEF)
  187. /** @} VL53L1_DeviceInterruptPolarity_group */
  188. /** @defgroup VL53L1_DeviceGpioMode_group Device GPIO Mode
  189. *
  190. * @brief Device Gpio Mode
  191. * @{
  192. */
  193. typedef uint8_t VL53L1_DeviceGpioMode;
  194. #define VL53L1_DEVICEGPIOMODE_OUTPUT_CONSTANT_ZERO ((VL53L1_DeviceGpioMode) 0x00)
  195. #define VL53L1_DEVICEGPIOMODE_OUTPUT_RANGE_AND_ERROR_INTERRUPTS ((VL53L1_DeviceGpioMode) 0x01)
  196. #define VL53L1_DEVICEGPIOMODE_OUTPUT_TIMIER_INTERRUPTS ((VL53L1_DeviceGpioMode) 0x02)
  197. #define VL53L1_DEVICEGPIOMODE_OUTPUT_RANGE_MODE_INTERRUPT_STATUS ((VL53L1_DeviceGpioMode) 0x03)
  198. #define VL53L1_DEVICEGPIOMODE_OUTPUT_SLOW_OSCILLATOR_CLOCK ((VL53L1_DeviceGpioMode) 0x04)
  199. #define VL53L1_DEVICEGPIOMODE_BIT_MASK ((VL53L1_DeviceGpioMode) 0x0F)
  200. #define VL53L1_DEVICEGPIOMODE_CLEAR_MASK ((VL53L1_DeviceGpioMode) 0xF0)
  201. /** @} VL53L1_DeviceGpioMode_group */
  202. /** @defgroup VL53L1_DeviceError_group Device Error
  203. *
  204. * @brief Device Error code in the range status
  205. *
  206. * This enum is Device specific it should be updated in the implementation
  207. * Use @a VL53L1_GetStatusErrorString() to get the string.
  208. * It is related to Status Register of the Device.
  209. * @{
  210. */
  211. typedef uint8_t VL53L1_DeviceError;
  212. #define VL53L1_DEVICEERROR_NOUPDATE ((VL53L1_DeviceError) 0)
  213. /*!< 0 No Update */
  214. #define VL53L1_DEVICEERROR_VCSELCONTINUITYTESTFAILURE ((VL53L1_DeviceError) 1)
  215. #define VL53L1_DEVICEERROR_VCSELWATCHDOGTESTFAILURE ((VL53L1_DeviceError) 2)
  216. #define VL53L1_DEVICEERROR_NOVHVVALUEFOUND ((VL53L1_DeviceError) 3)
  217. #define VL53L1_DEVICEERROR_MSRCNOTARGET ((VL53L1_DeviceError) 4)
  218. #define VL53L1_DEVICEERROR_RANGEPHASECHECK ((VL53L1_DeviceError) 5)
  219. #define VL53L1_DEVICEERROR_SIGMATHRESHOLDCHECK ((VL53L1_DeviceError) 6)
  220. #define VL53L1_DEVICEERROR_PHASECONSISTENCY ((VL53L1_DeviceError) 7)
  221. #define VL53L1_DEVICEERROR_MINCLIP ((VL53L1_DeviceError) 8)
  222. #define VL53L1_DEVICEERROR_RANGECOMPLETE ((VL53L1_DeviceError) 9)
  223. #define VL53L1_DEVICEERROR_ALGOUNDERFLOW ((VL53L1_DeviceError) 10)
  224. #define VL53L1_DEVICEERROR_ALGOOVERFLOW ((VL53L1_DeviceError) 11)
  225. #define VL53L1_DEVICEERROR_RANGEIGNORETHRESHOLD ((VL53L1_DeviceError) 12)
  226. #define VL53L1_DEVICEERROR_USERROICLIP ((VL53L1_DeviceError) 13)
  227. #define VL53L1_DEVICEERROR_REFSPADCHARNOTENOUGHDPADS ((VL53L1_DeviceError) 14)
  228. #define VL53L1_DEVICEERROR_REFSPADCHARMORETHANTARGET ((VL53L1_DeviceError) 15)
  229. #define VL53L1_DEVICEERROR_REFSPADCHARLESSTHANTARGET ((VL53L1_DeviceError) 16)
  230. #define VL53L1_DEVICEERROR_MULTCLIPFAIL ((VL53L1_DeviceError) 17)
  231. #define VL53L1_DEVICEERROR_GPHSTREAMCOUNT0READY ((VL53L1_DeviceError) 18)
  232. #define VL53L1_DEVICEERROR_RANGECOMPLETE_NO_WRAP_CHECK ((VL53L1_DeviceError) 19)
  233. #define VL53L1_DEVICEERROR_EVENTCONSISTENCY ((VL53L1_DeviceError) 20)
  234. #define VL53L1_DEVICEERROR_MINSIGNALEVENTCHECK ((VL53L1_DeviceError) 21)
  235. #define VL53L1_DEVICEERROR_RANGECOMPLETE_MERGED_PULSE ((VL53L1_DeviceError) 22)
  236. /* Patch_NewDeviceErrorCodePrevRangeNoTargets_11786 */
  237. #define VL53L1_DEVICEERROR_PREV_RANGE_NO_TARGETS ((VL53L1_DeviceError) 23)
  238. /** @} end of VL53L1_DeviceError_group */
  239. /** @defgroup VL53L1_DeviceReportStatus_group Device Report Status
  240. * @brief Device Report Status code
  241. *
  242. * @{
  243. */
  244. typedef uint8_t VL53L1_DeviceReportStatus;
  245. #define VL53L1_DEVICEREPORTSTATUS_NOUPDATE ((VL53L1_DeviceReportStatus) 0)
  246. /*!< 0 No Update */
  247. #define VL53L1_DEVICEREPORTSTATUS_ROI_SETUP ((VL53L1_DeviceReportStatus) 1)
  248. #define VL53L1_DEVICEREPORTSTATUS_VHV ((VL53L1_DeviceReportStatus) 2)
  249. #define VL53L1_DEVICEREPORTSTATUS_PHASECAL ((VL53L1_DeviceReportStatus) 3)
  250. #define VL53L1_DEVICEREPORTSTATUS_REFERENCE_PHASE ((VL53L1_DeviceReportStatus) 4)
  251. #define VL53L1_DEVICEREPORTSTATUS_DSS1 ((VL53L1_DeviceReportStatus) 5)
  252. #define VL53L1_DEVICEREPORTSTATUS_DSS2 ((VL53L1_DeviceReportStatus) 6)
  253. #define VL53L1_DEVICEREPORTSTATUS_MM1 ((VL53L1_DeviceReportStatus) 7)
  254. #define VL53L1_DEVICEREPORTSTATUS_MM2 ((VL53L1_DeviceReportStatus) 8)
  255. #define VL53L1_DEVICEREPORTSTATUS_RANGE ((VL53L1_DeviceReportStatus) 9)
  256. #define VL53L1_DEVICEREPORTSTATUS_HISTOGRAM ((VL53L1_DeviceReportStatus) 10)
  257. /** @} end of VL53L1_DeviceReportStatus_group */
  258. /** @defgroup VL53L1_DeviceDssMode_group Dynamic SPAD Selection Mode
  259. * @brief Selects the device Dynamic SPAD Selection Mode
  260. * @{
  261. */
  262. typedef uint8_t VL53L1_DeviceDssMode;
  263. #define VL53L1_DEVICEDSSMODE__DISABLED \
  264. ((VL53L1_DeviceDssMode) 0)
  265. #define VL53L1_DEVICEDSSMODE__TARGET_RATE \
  266. ((VL53L1_DeviceDssMode) 1)
  267. #define VL53L1_DEVICEDSSMODE__REQUESTED_EFFFECTIVE_SPADS \
  268. ((VL53L1_DeviceDssMode) 2)
  269. #define VL53L1_DEVICEDSSMODE__BLOCK_SELECT \
  270. ((VL53L1_DeviceDssMode) 3)
  271. /** @} end of VL53L1_DeviceDssMode_group */
  272. /** @defgroup VL53L1_DeviceConfigLevel_group Device Config Level
  273. *
  274. * @brief Defines the contents of the config & start range I2C multi byte transaction
  275. * @{
  276. */
  277. typedef uint8_t VL53L1_DeviceConfigLevel;
  278. #define VL53L1_DEVICECONFIGLEVEL_SYSTEM_CONTROL \
  279. ((VL53L1_DeviceConfigLevel) 0)
  280. /*!< Configs system control & start range */
  281. #define VL53L1_DEVICECONFIGLEVEL_DYNAMIC_ONWARDS \
  282. ((VL53L1_DeviceConfigLevel) 1)
  283. /*!< Dynamic config onwards (dynamic_config, system_control) & start range */
  284. #define VL53L1_DEVICECONFIGLEVEL_TIMING_ONWARDS \
  285. ((VL53L1_DeviceConfigLevel) 2)
  286. /*!< Dynamic config onwards (timing config, dynamic_config, system_control) &
  287. start range */
  288. #define VL53L1_DEVICECONFIGLEVEL_GENERAL_ONWARDS \
  289. ((VL53L1_DeviceConfigLevel) 3)
  290. /*!< General config onwards (general_config, timing config, dynamic_config,
  291. system_control) & start range */
  292. #define VL53L1_DEVICECONFIGLEVEL_STATIC_ONWARDS \
  293. ((VL53L1_DeviceConfigLevel) 4)
  294. /*!< Static config onwards (static_config, general_config, timing_config,
  295. dynamic_config, system_control) & start range */
  296. #define VL53L1_DEVICECONFIGLEVEL_CUSTOMER_ONWARDS \
  297. ((VL53L1_DeviceConfigLevel) 5)
  298. /*!< Full device config (customer_nvm_managed, static_config, general_config,
  299. timing config, dynamic_config, system_control) & start range */
  300. #define VL53L1_DEVICECONFIGLEVEL_FULL \
  301. ((VL53L1_DeviceConfigLevel) 6)
  302. /*!< Full device config (static_nvm_managed, customer_nvm_managed, static_config,
  303. general_config, timing config, dynamic_config, system_control) & start range */
  304. /** @} end of VL53L1_DeviceConfigLevel_group */
  305. /** @defgroup VL53L1_DeviceResultsLevel_group Device Results Level
  306. *
  307. * @brief Defines the contents of the read results I2C multi byte transaction
  308. * @{
  309. */
  310. typedef uint8_t VL53L1_DeviceResultsLevel;
  311. #define VL53L1_DEVICERESULTSLEVEL_SYSTEM_RESULTS \
  312. ((VL53L1_DeviceResultsLevel) 0)
  313. /*!< Read just system_results */
  314. #define VL53L1_DEVICERESULTSLEVEL_UPTO_CORE \
  315. ((VL53L1_DeviceResultsLevel) 1)
  316. /*!< Read both system and core results */
  317. #define VL53L1_DEVICERESULTSLEVEL_FULL \
  318. ((VL53L1_DeviceResultsLevel) 2)
  319. /*!< Read system, core and debug results */
  320. /** @} end of VL53L1_DeviceResultsLevel_group */
  321. /** @defgroup VL53L1_DeviceTestMode_group Device Test Mode
  322. *
  323. * @brief Values below match the the TEST_MODE__CTRL register
  324. * do not change
  325. * @{
  326. */
  327. typedef uint8_t VL53L1_DeviceTestMode;
  328. #define VL53L1_DEVICETESTMODE_NONE \
  329. ((VL53L1_DeviceTestMode) 0x00)
  330. /*!< Idle */
  331. #define VL53L1_DEVICETESTMODE_NVM_ZERO \
  332. ((VL53L1_DeviceTestMode) 0x01)
  333. /*!< NVM zero */
  334. #define VL53L1_DEVICETESTMODE_NVM_COPY \
  335. ((VL53L1_DeviceTestMode) 0x02)
  336. /*!< NVM copy */
  337. #define VL53L1_DEVICETESTMODE_PATCH \
  338. ((VL53L1_DeviceTestMode) 0x03)
  339. /*!< Patch */
  340. #define VL53L1_DEVICETESTMODE_DCR \
  341. ((VL53L1_DeviceTestMode) 0x04)
  342. /*!< DCR - SPAD Self-Check (Pass if Count Rate is less than Threshold) */
  343. #define VL53L1_DEVICETESTMODE_LCR_VCSEL_OFF \
  344. ((VL53L1_DeviceTestMode) 0x05)
  345. /*!< LCR - SPAD Self-Check (Pass if Count Rate is greater than Threshold
  346. and VCSEL off) */
  347. #define VL53L1_DEVICETESTMODE_LCR_VCSEL_ON \
  348. ((VL53L1_DeviceTestMode) 0x06)
  349. /*!< LCR - SPAD Self-Check (Pass if Count Rate is greater than Threshold
  350. and VCSEL on) */
  351. #define VL53L1_DEVICETESTMODE_SPOT_CENTRE_LOCATE \
  352. ((VL53L1_DeviceTestMode) 0x07)
  353. /*!< Spot centre locate */
  354. #define VL53L1_DEVICETESTMODE_REF_SPAD_CHAR_WITH_PRE_VHV \
  355. ((VL53L1_DeviceTestMode) 0x08)
  356. /*!<Reference SPAD Characterisation with pre-VHV */
  357. #define VL53L1_DEVICETESTMODE_REF_SPAD_CHAR_ONLY \
  358. ((VL53L1_DeviceTestMode) 0x09)
  359. /*!< Reference SPAD Characterisation Only */
  360. /** @} end of VL53L1_DeviceTestMode_group */
  361. /** @defgroup VL53L1_DeviceSscArray_group Device Test Mode
  362. *
  363. * @{
  364. */
  365. typedef uint8_t VL53L1_DeviceSscArray;
  366. #define VL53L1_DEVICESSCARRAY_RTN ((VL53L1_DeviceSscArray) 0x00)
  367. /*!<Return Array Rates */
  368. #define VL53L1_DEVICETESTMODE_REF ((VL53L1_DeviceSscArray) 0x01)
  369. /*!< Reference Array Rates Only */
  370. /** @} end of VL53L1_DeviceSscArray_group */
  371. /** @defgroup VL53L1_SpadArraySelection_group SPAD Array Selection Functionality
  372. * @brief SPAD array selection definitions
  373. * @{
  374. */
  375. #define VL53L1_RETURN_ARRAY_ONLY 0x01
  376. /*!< Return SPAD Array only */
  377. #define VL53L1_REFERENCE_ARRAY_ONLY 0x10
  378. /*!< Reference SPAD Array only */
  379. #define VL53L1_BOTH_RETURN_AND_REFERENCE_ARRAYS 0x11
  380. /*!< Both Return and Reference SPAD Arrays */
  381. #define VL53L1_NEITHER_RETURN_AND_REFERENCE_ARRAYS 0x00
  382. /*!< Neither Return or Reference SPAD Array */
  383. /** @} end of VL53L1_SpadArraySelection_group */
  384. /** @defgroup VL53L1_DeviceInterruptLevel_group Interrupt Level Functionality
  385. * @brief Interrupt Output Level types
  386. * @{
  387. */
  388. #define VL53L1_DEVICEINTERRUPTLEVEL_ACTIVE_HIGH 0x00
  389. /*!< Active High Interrupt */
  390. #define VL53L1_DEVICEINTERRUPTLEVEL_ACTIVE_LOW 0x10
  391. /*!< Active Low Interrupt */
  392. #define VL53L1_DEVICEINTERRUPTLEVEL_ACTIVE_MASK 0x10
  393. /*!< Active Bit Mask */
  394. /** @} end of VL53L1_DeviceInterruptLevel_group */
  395. /** @defgroup VL53L1_ApiCore_group Misc Functionality
  396. * @brief API core specific definitions
  397. * @{
  398. */
  399. #define VL53L1_POLLING_DELAY_US 1000
  400. /*!< 1000us delay for register polling */
  401. #define VL53L1_SOFTWARE_RESET_DURATION_US 100
  402. /*!< 100us software reset duration */
  403. #define VL53L1_FIRMWARE_BOOT_TIME_US 1200
  404. /*!< Duration of firmware boot time for which I2C
  405. access is blocked. Real Device 1ms, FPGA 15ms */
  406. #define VL53L1_ENABLE_POWERFORCE_SETTLING_TIME_US 250
  407. /*!< After enabling power force a delay is required
  408. to bring regulator, bandgap, oscillator time
  409. to power up and settle */
  410. #define VL53L1_SPAD_ARRAY_WIDTH 16
  411. /*!< SPAD array width */
  412. #define VL53L1_SPAD_ARRAY_HEIGHT 16
  413. /*!< SPAD array height */
  414. #define VL53L1_NVM_SIZE_IN_BYTES 512
  415. /*!< NVM (OTP) size in bytes */
  416. #define VL53L1_NO_OF_SPAD_ENABLES 256
  417. /*!< Number of SPADs each SPAD array */
  418. #define VL53L1_RTN_SPAD_BUFFER_SIZE 32
  419. /*!< Number of Return SPAD enable registers (bytes) */
  420. #define VL53L1_REF_SPAD_BUFFER_SIZE 6
  421. /*!< Number of Reference SPAD enable registers (bytes) */
  422. #define VL53L1_AMBIENT_WINDOW_VCSEL_PERIODS 256
  423. /*!< Sigma Delta Ambient window in VCSEL Periods */
  424. #define VL53L1_RANGING_WINDOW_VCSEL_PERIODS 2048
  425. /*!< Sigma Delta Ranging window in VCSEL periods */
  426. #define VL53L1_MACRO_PERIOD_VCSEL_PERIODS \
  427. (VL53L1_AMBIENT_WINDOW_VCSEL_PERIODS + VL53L1_RANGING_WINDOW_VCSEL_PERIODS)
  428. /*!< Macro Period in VCSEL periods */
  429. #define VL53L1_MAX_ALLOWED_PHASE 0xFFFF
  430. /*!< Maximum Allowed phase 0xFFFF means 31.999 PLL Clocks */
  431. #define VL53L1_RTN_SPAD_UNITY_TRANSMISSION 0x0100
  432. /*!< SPAD unity transmission value - 1.0 in 8.8 format */
  433. #define VL53L1_RTN_SPAD_APERTURE_TRANSMISSION 0x0038
  434. /*!< Apertured SPAD transmission value - 8.8 format
  435. Nominal: 5x -> 0.200000 * 256 = 51 = 0x33
  436. Measured: 4.6x -> 0.217391 * 256 = 56 = 0x38 */
  437. #define VL53L1_SPAD_TOTAL_COUNT_MAX ((0x01 << 29) - 1)
  438. /*!< Maximum SPAD count - 512Mcps * 1sec = 29bits) */
  439. #define VL53L1_SPAD_TOTAL_COUNT_RES_THRES (0x01 << 24)
  440. /*!< SPAD count threshold for reduced 3-bit fractional resolution */
  441. #define VL53L1_COUNT_RATE_INTERNAL_MAX ((0x01 << 24) - 1)
  442. /*!< Maximum internal count rate is a 17.7 (24-b) value */
  443. #define VL53L1_SPEED_OF_LIGHT_IN_AIR 299704
  444. /*!< Speed of light in air in mm/sec */
  445. #define VL53L1_SPEED_OF_LIGHT_IN_AIR_DIV_8 (299704 >> 3)
  446. /*!< Speed of light in air in divided by 8, 2 for round trip
  447. and 4 as an additional scaling factor */
  448. /** @} end of VL53L1_ApiCore_group */
  449. /** @} end of VL53L1_DevSpecDefines_group */
  450. /** @defgroup VL53L1_GPIO_Interrupt_Mode_group Interrupt modes
  451. * @brief Selects between four interrupt modes
  452. * @{
  453. */
  454. typedef uint8_t VL53L1_GPIO_Interrupt_Mode;
  455. #define VL53L1_GPIOINTMODE_LEVEL_LOW \
  456. ((VL53L1_GPIO_Interrupt_Mode) 0)
  457. /*!< Trigger interupt if value < thresh_low */
  458. #define VL53L1_GPIOINTMODE_LEVEL_HIGH \
  459. ((VL53L1_GPIO_Interrupt_Mode) 1)
  460. /*!< Trigger interupt if value > thresh_high */
  461. #define VL53L1_GPIOINTMODE_OUT_OF_WINDOW \
  462. ((VL53L1_GPIO_Interrupt_Mode) 2)
  463. /*!< Trigger interupt if value < thresh_low OR value > thresh_high */
  464. #define VL53L1_GPIOINTMODE_IN_WINDOW \
  465. ((VL53L1_GPIO_Interrupt_Mode) 3)
  466. /*!< Trigger interupt if value > thresh_low AND value < thresh_high */
  467. /** @} end of VL53L1_GPIO_Interrupt_Mode_group */
  468. /** @defgroup VL53L1_TuningParms_group Tuning Parameters
  469. * @brief Selects specific tuning parameter inputs to get/set \
  470. * Added as part of Patch_AddedTuningParms_11761
  471. * @{
  472. */
  473. typedef uint16_t VL53L1_TuningParms;
  474. #define VL53L1_TUNINGPARMS_LLD_PUBLIC_MIN_ADDRESS \
  475. ((VL53L1_TuningParms) VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS)
  476. #define VL53L1_TUNINGPARMS_LLD_PUBLIC_MAX_ADDRESS \
  477. ((VL53L1_TuningParms) VL53L1_TUNINGPARM_LOWPOWERAUTO_RANGE_CONFIG_TIMEOUT_US)
  478. #define VL53L1_TUNINGPARMS_LLD_PRIVATE_MIN_ADDRESS \
  479. ((VL53L1_TuningParms) VL53L1_TUNINGPARM_PRIVATE_PAGE_BASE_ADDRESS)
  480. #define VL53L1_TUNINGPARMS_LLD_PRIVATE_MAX_ADDRESS \
  481. ((VL53L1_TuningParms) VL53L1_TUNINGPARMS_LLD_PRIVATE_MIN_ADDRESS)
  482. #define VL53L1_TUNINGPARM_VERSION \
  483. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 0))
  484. #define VL53L1_TUNINGPARM_KEY_TABLE_VERSION \
  485. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 1))
  486. #define VL53L1_TUNINGPARM_LLD_VERSION \
  487. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 2))
  488. #define VL53L1_TUNINGPARM_CONSISTENCY_LITE_PHASE_TOLERANCE \
  489. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 3))
  490. #define VL53L1_TUNINGPARM_PHASECAL_TARGET \
  491. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 4))
  492. #define VL53L1_TUNINGPARM_LITE_CAL_REPEAT_RATE \
  493. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 5))
  494. #define VL53L1_TUNINGPARM_LITE_RANGING_GAIN_FACTOR \
  495. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 6))
  496. #define VL53L1_TUNINGPARM_LITE_MIN_CLIP_MM \
  497. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 7))
  498. #define VL53L1_TUNINGPARM_LITE_LONG_SIGMA_THRESH_MM \
  499. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 8))
  500. #define VL53L1_TUNINGPARM_LITE_MED_SIGMA_THRESH_MM \
  501. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 9))
  502. #define VL53L1_TUNINGPARM_LITE_SHORT_SIGMA_THRESH_MM \
  503. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 10))
  504. #define VL53L1_TUNINGPARM_LITE_LONG_MIN_COUNT_RATE_RTN_MCPS \
  505. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 11))
  506. #define VL53L1_TUNINGPARM_LITE_MED_MIN_COUNT_RATE_RTN_MCPS \
  507. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 12))
  508. #define VL53L1_TUNINGPARM_LITE_SHORT_MIN_COUNT_RATE_RTN_MCPS \
  509. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 13))
  510. #define VL53L1_TUNINGPARM_LITE_SIGMA_EST_PULSE_WIDTH \
  511. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 14))
  512. #define VL53L1_TUNINGPARM_LITE_SIGMA_EST_AMB_WIDTH_NS \
  513. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 15))
  514. #define VL53L1_TUNINGPARM_LITE_SIGMA_REF_MM \
  515. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 16))
  516. #define VL53L1_TUNINGPARM_LITE_RIT_MULT \
  517. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 17))
  518. #define VL53L1_TUNINGPARM_LITE_SEED_CONFIG \
  519. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 18))
  520. #define VL53L1_TUNINGPARM_LITE_QUANTIFIER \
  521. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 19))
  522. #define VL53L1_TUNINGPARM_LITE_FIRST_ORDER_SELECT \
  523. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 20))
  524. #define VL53L1_TUNINGPARM_LITE_XTALK_MARGIN_KCPS \
  525. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 21))
  526. #define VL53L1_TUNINGPARM_INITIAL_PHASE_RTN_LITE_LONG_RANGE \
  527. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 22))
  528. #define VL53L1_TUNINGPARM_INITIAL_PHASE_RTN_LITE_MED_RANGE \
  529. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 23))
  530. #define VL53L1_TUNINGPARM_INITIAL_PHASE_RTN_LITE_SHORT_RANGE \
  531. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 24))
  532. #define VL53L1_TUNINGPARM_INITIAL_PHASE_REF_LITE_LONG_RANGE \
  533. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 25))
  534. #define VL53L1_TUNINGPARM_INITIAL_PHASE_REF_LITE_MED_RANGE \
  535. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 26))
  536. #define VL53L1_TUNINGPARM_INITIAL_PHASE_REF_LITE_SHORT_RANGE \
  537. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 27))
  538. #define VL53L1_TUNINGPARM_TIMED_SEED_CONFIG \
  539. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 28))
  540. #define VL53L1_TUNINGPARM_VHV_LOOPBOUND \
  541. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 29))
  542. #define VL53L1_TUNINGPARM_REFSPADCHAR_DEVICE_TEST_MODE \
  543. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 30))
  544. #define VL53L1_TUNINGPARM_REFSPADCHAR_VCSEL_PERIOD \
  545. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 31))
  546. #define VL53L1_TUNINGPARM_REFSPADCHAR_PHASECAL_TIMEOUT_US \
  547. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 32))
  548. #define VL53L1_TUNINGPARM_REFSPADCHAR_TARGET_COUNT_RATE_MCPS \
  549. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 33))
  550. #define VL53L1_TUNINGPARM_REFSPADCHAR_MIN_COUNTRATE_LIMIT_MCPS \
  551. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 34))
  552. #define VL53L1_TUNINGPARM_REFSPADCHAR_MAX_COUNTRATE_LIMIT_MCPS \
  553. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 35))
  554. #define VL53L1_TUNINGPARM_OFFSET_CAL_DSS_RATE_MCPS \
  555. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 36))
  556. #define VL53L1_TUNINGPARM_OFFSET_CAL_PHASECAL_TIMEOUT_US \
  557. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 37))
  558. #define VL53L1_TUNINGPARM_OFFSET_CAL_MM_TIMEOUT_US \
  559. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 38))
  560. #define VL53L1_TUNINGPARM_OFFSET_CAL_RANGE_TIMEOUT_US \
  561. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 39))
  562. #define VL53L1_TUNINGPARM_OFFSET_CAL_PRE_SAMPLES \
  563. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 40))
  564. #define VL53L1_TUNINGPARM_OFFSET_CAL_MM1_SAMPLES \
  565. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 41))
  566. #define VL53L1_TUNINGPARM_OFFSET_CAL_MM2_SAMPLES \
  567. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 42))
  568. #define VL53L1_TUNINGPARM_SPADMAP_VCSEL_PERIOD \
  569. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 43))
  570. #define VL53L1_TUNINGPARM_SPADMAP_VCSEL_START \
  571. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 44))
  572. #define VL53L1_TUNINGPARM_SPADMAP_RATE_LIMIT_MCPS \
  573. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 45))
  574. #define VL53L1_TUNINGPARM_LITE_DSS_CONFIG_TARGET_TOTAL_RATE_MCPS \
  575. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 46))
  576. #define VL53L1_TUNINGPARM_TIMED_DSS_CONFIG_TARGET_TOTAL_RATE_MCPS \
  577. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 47))
  578. #define VL53L1_TUNINGPARM_LITE_PHASECAL_CONFIG_TIMEOUT_US \
  579. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 48))
  580. #define VL53L1_TUNINGPARM_TIMED_PHASECAL_CONFIG_TIMEOUT_US \
  581. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 49))
  582. #define VL53L1_TUNINGPARM_LITE_MM_CONFIG_TIMEOUT_US \
  583. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 50))
  584. #define VL53L1_TUNINGPARM_TIMED_MM_CONFIG_TIMEOUT_US \
  585. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 51))
  586. #define VL53L1_TUNINGPARM_LITE_RANGE_CONFIG_TIMEOUT_US \
  587. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 52))
  588. #define VL53L1_TUNINGPARM_TIMED_RANGE_CONFIG_TIMEOUT_US \
  589. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 53))
  590. #define VL53L1_TUNINGPARM_LOWPOWERAUTO_VHV_LOOP_BOUND \
  591. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 54))
  592. #define VL53L1_TUNINGPARM_LOWPOWERAUTO_MM_CONFIG_TIMEOUT_US \
  593. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 55))
  594. #define VL53L1_TUNINGPARM_LOWPOWERAUTO_RANGE_CONFIG_TIMEOUT_US \
  595. ((VL53L1_TuningParms) (VL53L1_TUNINGPARM_PUBLIC_PAGE_BASE_ADDRESS + 56))
  596. /** @} end of VL53L1_TuningParms_group */
  597. #endif
  598. /* _VL53L1_DEVICE_H_ */