Rename library

Dependencies:   X_NUCLEO_COMMON ST_INTERFACES

Dependents:   VL53L3CX_NoShield_1Sensor_poll_Mb06x VL53L3_NoShield_1Sensor_polling_Mb63 X_NUCLEO_53L3A2 53L3A2_Ranging

Committer:
charlesmn
Date:
Wed Jul 21 14:07:59 2021 +0000
Revision:
7:7f1bbf370283
Parent:
5:89031b2f5316
Moved vl53l3cx_class.cpp and .h to 53l3a2_RangingClass

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Charles MacNeill 5:89031b2f5316 1
Charles MacNeill 5:89031b2f5316 2 /* SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause */
Charles MacNeill 5:89031b2f5316 3 /******************************************************************************
Charles MacNeill 5:89031b2f5316 4 * Copyright (c) 2020, STMicroelectronics - All Rights Reserved
Charles MacNeill 5:89031b2f5316 5
Charles MacNeill 5:89031b2f5316 6 This file is part of VL53LX and is dual licensed,
Charles MacNeill 5:89031b2f5316 7 either GPL-2.0+
Charles MacNeill 5:89031b2f5316 8 or 'BSD 3-clause "New" or "Revised" License' , at your option.
Charles MacNeill 5:89031b2f5316 9 ******************************************************************************
Charles MacNeill 5:89031b2f5316 10 */
Charles MacNeill 5:89031b2f5316 11
Charles MacNeill 5:89031b2f5316 12 #ifndef _VL53LX_PLATFORM_H_
Charles MacNeill 5:89031b2f5316 13 #define _VL53LX_PLATFORM_H_
Charles MacNeill 5:89031b2f5316 14
Charles MacNeill 5:89031b2f5316 15 #include "vl53lx_ll_def.h"
Charles MacNeill 5:89031b2f5316 16 #include "vl53lx_platform_log.h"
Charles MacNeill 5:89031b2f5316 17
Charles MacNeill 5:89031b2f5316 18 #define VL53LX_IPP_API
Charles MacNeill 5:89031b2f5316 19 #include "vl53lx_platform_ipp_imports.h"
Charles MacNeill 5:89031b2f5316 20 #include "vl53lx_platform_user_data.h"
Charles MacNeill 5:89031b2f5316 21
Charles MacNeill 5:89031b2f5316 22 #ifdef __cplusplus
Charles MacNeill 5:89031b2f5316 23 extern "C"
Charles MacNeill 5:89031b2f5316 24 {
Charles MacNeill 5:89031b2f5316 25 #endif
Charles MacNeill 5:89031b2f5316 26
Charles MacNeill 5:89031b2f5316 27 /**
Charles MacNeill 5:89031b2f5316 28 * @file vl53lx_platform.h
Charles MacNeill 5:89031b2f5316 29 *
Charles MacNeill 5:89031b2f5316 30 * @brief All end user OS/platform/application porting
Charles MacNeill 5:89031b2f5316 31 */
Charles MacNeill 5:89031b2f5316 32
Charles MacNeill 5:89031b2f5316 33
Charles MacNeill 5:89031b2f5316 34
Charles MacNeill 5:89031b2f5316 35 /**
Charles MacNeill 5:89031b2f5316 36 * @brief Initialise platform comms.
Charles MacNeill 5:89031b2f5316 37 *
Charles MacNeill 5:89031b2f5316 38 * @param[in] pdev : pointer to device structure (device handle)
Charles MacNeill 5:89031b2f5316 39 * @param[in] comms_type : selects between I2C and SPI
Charles MacNeill 5:89031b2f5316 40 * @param[in] comms_speed_khz : unsigned short containing the I2C speed in kHz
Charles MacNeill 5:89031b2f5316 41 *
Charles MacNeill 5:89031b2f5316 42 * @return VL53LX_ERROR_NONE Success
Charles MacNeill 5:89031b2f5316 43 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 44 */
Charles MacNeill 5:89031b2f5316 45
Charles MacNeill 5:89031b2f5316 46 VL53LX_Error VL53LX_CommsInitialise(
Charles MacNeill 5:89031b2f5316 47 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 48 uint8_t comms_type,
Charles MacNeill 5:89031b2f5316 49 uint16_t comms_speed_khz);
Charles MacNeill 5:89031b2f5316 50
Charles MacNeill 5:89031b2f5316 51
Charles MacNeill 5:89031b2f5316 52 /**
Charles MacNeill 5:89031b2f5316 53 * @brief Close platform comms.
Charles MacNeill 5:89031b2f5316 54 *
Charles MacNeill 5:89031b2f5316 55 * @param[in] pdev : pointer to device structure (device handle)
Charles MacNeill 5:89031b2f5316 56 *
Charles MacNeill 5:89031b2f5316 57 * @return VL53LX_ERROR_NONE Success
Charles MacNeill 5:89031b2f5316 58 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 59 */
Charles MacNeill 5:89031b2f5316 60
Charles MacNeill 5:89031b2f5316 61 VL53LX_Error VL53LX_CommsClose(
Charles MacNeill 5:89031b2f5316 62 VL53LX_DEV Dev);
Charles MacNeill 5:89031b2f5316 63
Charles MacNeill 5:89031b2f5316 64
Charles MacNeill 5:89031b2f5316 65 /**
Charles MacNeill 5:89031b2f5316 66 * @brief Writes the supplied byte buffer to the device
Charles MacNeill 5:89031b2f5316 67 *
Charles MacNeill 5:89031b2f5316 68 * @param[in] pdev : pointer to device structure (device handle)
Charles MacNeill 5:89031b2f5316 69 * @param[in] index : uint16_t register index value
Charles MacNeill 5:89031b2f5316 70 * @param[in] pdata : pointer to uint8_t (byte) buffer containing the data to be written
Charles MacNeill 5:89031b2f5316 71 * @param[in] count : number of bytes in the supplied byte buffer
Charles MacNeill 5:89031b2f5316 72 *
Charles MacNeill 5:89031b2f5316 73 * @return VL53LX_ERROR_NONE Success
Charles MacNeill 5:89031b2f5316 74 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 75 */
Charles MacNeill 5:89031b2f5316 76
Charles MacNeill 5:89031b2f5316 77 VL53LX_Error VL53LX_WriteMulti(
Charles MacNeill 5:89031b2f5316 78 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 79 uint16_t index,
Charles MacNeill 5:89031b2f5316 80 uint8_t *pdata,
Charles MacNeill 5:89031b2f5316 81 uint32_t count);
Charles MacNeill 5:89031b2f5316 82
Charles MacNeill 5:89031b2f5316 83
Charles MacNeill 5:89031b2f5316 84 /**
Charles MacNeill 5:89031b2f5316 85 * @brief Reads the requested number of bytes from the device
Charles MacNeill 5:89031b2f5316 86 *
Charles MacNeill 5:89031b2f5316 87 * @param[in] pdev : pointer to device structure (device handle)
Charles MacNeill 5:89031b2f5316 88 * @param[in] index : uint16_t register index value
Charles MacNeill 5:89031b2f5316 89 * @param[out] pdata : pointer to the uint8_t (byte) buffer to store read data
Charles MacNeill 5:89031b2f5316 90 * @param[in] count : number of bytes to read
Charles MacNeill 5:89031b2f5316 91 *
Charles MacNeill 5:89031b2f5316 92 * @return VL53LX_ERROR_NONE Success
Charles MacNeill 5:89031b2f5316 93 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 94 */
Charles MacNeill 5:89031b2f5316 95
Charles MacNeill 5:89031b2f5316 96 VL53LX_Error VL53LX_ReadMulti(
Charles MacNeill 5:89031b2f5316 97 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 98 uint16_t index,
Charles MacNeill 5:89031b2f5316 99 uint8_t *pdata,
Charles MacNeill 5:89031b2f5316 100 uint32_t count);
Charles MacNeill 5:89031b2f5316 101
Charles MacNeill 5:89031b2f5316 102
Charles MacNeill 5:89031b2f5316 103 /**
Charles MacNeill 5:89031b2f5316 104 * @brief Writes a single byte to the device
Charles MacNeill 5:89031b2f5316 105 *
Charles MacNeill 5:89031b2f5316 106 * @param[in] pdev : pointer to device structure (device handle)
Charles MacNeill 5:89031b2f5316 107 * @param[in] index : uint16_t register index value
Charles MacNeill 5:89031b2f5316 108 * @param[in] data : uint8_t data value to write
Charles MacNeill 5:89031b2f5316 109 *
Charles MacNeill 5:89031b2f5316 110 * @return VL53LX_ERROR_NONE Success
Charles MacNeill 5:89031b2f5316 111 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 112 */
Charles MacNeill 5:89031b2f5316 113
Charles MacNeill 5:89031b2f5316 114 VL53LX_Error VL53LX_WrByte(
Charles MacNeill 5:89031b2f5316 115 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 116 uint16_t index,
Charles MacNeill 5:89031b2f5316 117 uint8_t data);
Charles MacNeill 5:89031b2f5316 118
Charles MacNeill 5:89031b2f5316 119
Charles MacNeill 5:89031b2f5316 120 /**
Charles MacNeill 5:89031b2f5316 121 * @brief Writes a single word (16-bit unsigned) to the device
Charles MacNeill 5:89031b2f5316 122 *
Charles MacNeill 5:89031b2f5316 123 * Manages the big-endian nature of the device register map
Charles MacNeill 5:89031b2f5316 124 * (first byte written is the MS byte).
Charles MacNeill 5:89031b2f5316 125 *
Charles MacNeill 5:89031b2f5316 126 * @param[in] pdev : pointer to device structure (device handle)
Charles MacNeill 5:89031b2f5316 127 * @param[in] index : uint16_t register index value
Charles MacNeill 5:89031b2f5316 128 * @param[in] data : uin16_t data value write
Charles MacNeill 5:89031b2f5316 129 *
Charles MacNeill 5:89031b2f5316 130 * @return VL53LX_ERROR_NONE Success
Charles MacNeill 5:89031b2f5316 131 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 132 */
Charles MacNeill 5:89031b2f5316 133
Charles MacNeill 5:89031b2f5316 134 VL53LX_Error VL53LX_WrWord(
Charles MacNeill 5:89031b2f5316 135 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 136 uint16_t index,
Charles MacNeill 5:89031b2f5316 137 uint16_t data);
Charles MacNeill 5:89031b2f5316 138
Charles MacNeill 5:89031b2f5316 139
Charles MacNeill 5:89031b2f5316 140 /**
Charles MacNeill 5:89031b2f5316 141 * @brief Writes a single dword (32-bit unsigned) to the device
Charles MacNeill 5:89031b2f5316 142 *
Charles MacNeill 5:89031b2f5316 143 * Manages the big-endian nature of the device register map
Charles MacNeill 5:89031b2f5316 144 * (first byte written is the MS byte).
Charles MacNeill 5:89031b2f5316 145 *
Charles MacNeill 5:89031b2f5316 146 * @param[in] pdev : pointer to device structure (device handle)
Charles MacNeill 5:89031b2f5316 147 * @param[in] index : uint16_t register index value
Charles MacNeill 5:89031b2f5316 148 * @param[in] data : uint32_t data value to write
Charles MacNeill 5:89031b2f5316 149 *
Charles MacNeill 5:89031b2f5316 150 * @return VL53LX_ERROR_NONE Success
Charles MacNeill 5:89031b2f5316 151 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 152 */
Charles MacNeill 5:89031b2f5316 153
Charles MacNeill 5:89031b2f5316 154 VL53LX_Error VL53LX_WrDWord(
Charles MacNeill 5:89031b2f5316 155 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 156 uint16_t index,
Charles MacNeill 5:89031b2f5316 157 uint32_t data);
Charles MacNeill 5:89031b2f5316 158
Charles MacNeill 5:89031b2f5316 159
Charles MacNeill 5:89031b2f5316 160
Charles MacNeill 5:89031b2f5316 161 /**
Charles MacNeill 5:89031b2f5316 162 * @brief Reads a single byte from the device
Charles MacNeill 5:89031b2f5316 163 *
Charles MacNeill 5:89031b2f5316 164 * @param[in] pdev : pointer to device structure (device handle)
Charles MacNeill 5:89031b2f5316 165 * @param[in] index : uint16_t register index
Charles MacNeill 5:89031b2f5316 166 * @param[out] pdata : pointer to uint8_t data value
Charles MacNeill 5:89031b2f5316 167 *
Charles MacNeill 5:89031b2f5316 168 * @return VL53LX_ERROR_NONE Success
Charles MacNeill 5:89031b2f5316 169 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 170 *
Charles MacNeill 5:89031b2f5316 171 */
Charles MacNeill 5:89031b2f5316 172
Charles MacNeill 5:89031b2f5316 173 VL53LX_Error VL53LX_RdByte(
Charles MacNeill 5:89031b2f5316 174 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 175 uint16_t index,
Charles MacNeill 5:89031b2f5316 176 uint8_t *pdata);
Charles MacNeill 5:89031b2f5316 177
Charles MacNeill 5:89031b2f5316 178
Charles MacNeill 5:89031b2f5316 179 /**
Charles MacNeill 5:89031b2f5316 180 * @brief Reads a single word (16-bit unsigned) from the device
Charles MacNeill 5:89031b2f5316 181 *
Charles MacNeill 5:89031b2f5316 182 * Manages the big-endian nature of the device (first byte read is the MS byte).
Charles MacNeill 5:89031b2f5316 183 *
Charles MacNeill 5:89031b2f5316 184 * @param[in] pdev : pointer to device structure (device handle)
Charles MacNeill 5:89031b2f5316 185 * @param[in] index : uint16_t register index value
Charles MacNeill 5:89031b2f5316 186 * @param[out] pdata : pointer to uint16_t data value
Charles MacNeill 5:89031b2f5316 187 *
Charles MacNeill 5:89031b2f5316 188 * @return VL53LX_ERROR_NONE Success
Charles MacNeill 5:89031b2f5316 189 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 190 */
Charles MacNeill 5:89031b2f5316 191
Charles MacNeill 5:89031b2f5316 192 VL53LX_Error VL53LX_RdWord(
Charles MacNeill 5:89031b2f5316 193 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 194 uint16_t index,
Charles MacNeill 5:89031b2f5316 195 uint16_t *pdata);
Charles MacNeill 5:89031b2f5316 196
Charles MacNeill 5:89031b2f5316 197
Charles MacNeill 5:89031b2f5316 198 /**
Charles MacNeill 5:89031b2f5316 199 * @brief Reads a single dword (32-bit unsigned) from the device
Charles MacNeill 5:89031b2f5316 200 *
Charles MacNeill 5:89031b2f5316 201 * Manages the big-endian nature of the device (first byte read is the MS byte).
Charles MacNeill 5:89031b2f5316 202 *
Charles MacNeill 5:89031b2f5316 203 * @param[in] pdev : pointer to device structure (device handle)
Charles MacNeill 5:89031b2f5316 204 * @param[in] index : uint16_t register index value
Charles MacNeill 5:89031b2f5316 205 * @param[out] pdata : pointer to uint32_t data value
Charles MacNeill 5:89031b2f5316 206 *
Charles MacNeill 5:89031b2f5316 207 * @return VL53LX_ERROR_NONE Success
Charles MacNeill 5:89031b2f5316 208 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 209 */
Charles MacNeill 5:89031b2f5316 210
Charles MacNeill 5:89031b2f5316 211 VL53LX_Error VL53LX_RdDWord(
Charles MacNeill 5:89031b2f5316 212 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 213 uint16_t index,
Charles MacNeill 5:89031b2f5316 214 uint32_t *pdata);
Charles MacNeill 5:89031b2f5316 215
Charles MacNeill 5:89031b2f5316 216
Charles MacNeill 5:89031b2f5316 217
Charles MacNeill 5:89031b2f5316 218 /**
Charles MacNeill 5:89031b2f5316 219 * @brief Implements a programmable wait in us
Charles MacNeill 5:89031b2f5316 220 *
Charles MacNeill 5:89031b2f5316 221 * @param[in] pdev : pointer to device structure (device handle)
Charles MacNeill 5:89031b2f5316 222 * @param[in] wait_us : integer wait in micro seconds
Charles MacNeill 5:89031b2f5316 223 *
Charles MacNeill 5:89031b2f5316 224 * @return VL53LX_ERROR_NONE Success
Charles MacNeill 5:89031b2f5316 225 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 226 */
Charles MacNeill 5:89031b2f5316 227
Charles MacNeill 5:89031b2f5316 228 VL53LX_Error VL53LX_WaitUs(
Charles MacNeill 5:89031b2f5316 229 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 230 int32_t wait_us);
Charles MacNeill 5:89031b2f5316 231
Charles MacNeill 5:89031b2f5316 232
Charles MacNeill 5:89031b2f5316 233 /**
Charles MacNeill 5:89031b2f5316 234 * @brief Implements a programmable wait in ms
Charles MacNeill 5:89031b2f5316 235 *
Charles MacNeill 5:89031b2f5316 236 * @param[in] pdev : pointer to device structure (device handle)
Charles MacNeill 5:89031b2f5316 237 * @param[in] wait_ms : integer wait in milliseconds
Charles MacNeill 5:89031b2f5316 238 *
Charles MacNeill 5:89031b2f5316 239 * @return VL53LX_ERROR_NONE Success
Charles MacNeill 5:89031b2f5316 240 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 241 */
Charles MacNeill 5:89031b2f5316 242
Charles MacNeill 5:89031b2f5316 243
Charles MacNeill 5:89031b2f5316 244
Charles MacNeill 5:89031b2f5316 245 VL53LX_Error VL53LX_WaitMs(
Charles MacNeill 5:89031b2f5316 246 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 247 int32_t wait_ms);
Charles MacNeill 5:89031b2f5316 248
Charles MacNeill 5:89031b2f5316 249
Charles MacNeill 5:89031b2f5316 250
Charles MacNeill 5:89031b2f5316 251 /**
Charles MacNeill 5:89031b2f5316 252 * @brief Get the frequency of the timer used for ranging results time stamps
Charles MacNeill 5:89031b2f5316 253 *
Charles MacNeill 5:89031b2f5316 254 * @param[out] ptimer_freq_hz : pointer for timer frequency
Charles MacNeill 5:89031b2f5316 255 *
Charles MacNeill 5:89031b2f5316 256 * @return VL53LX_ERROR_NONE Success
Charles MacNeill 5:89031b2f5316 257 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 258 */
Charles MacNeill 5:89031b2f5316 259
Charles MacNeill 5:89031b2f5316 260 VL53LX_Error VL53LX_GetTimerFrequency(int32_t *ptimer_freq_hz);
Charles MacNeill 5:89031b2f5316 261
Charles MacNeill 5:89031b2f5316 262 /**
Charles MacNeill 5:89031b2f5316 263 * @brief Get the timer value in units of timer_freq_hz (see VL53LX_get_timestamp_frequency())
Charles MacNeill 5:89031b2f5316 264 *
Charles MacNeill 5:89031b2f5316 265 * @param[out] ptimer_count : pointer for timer count value
Charles MacNeill 5:89031b2f5316 266 *
Charles MacNeill 5:89031b2f5316 267 * @return VL53LX_ERROR_NONE Success
Charles MacNeill 5:89031b2f5316 268 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 269 */
Charles MacNeill 5:89031b2f5316 270
Charles MacNeill 5:89031b2f5316 271 VL53LX_Error VL53LX_GetTimerValue(int32_t *ptimer_count);
Charles MacNeill 5:89031b2f5316 272
Charles MacNeill 5:89031b2f5316 273
Charles MacNeill 5:89031b2f5316 274 /**
Charles MacNeill 5:89031b2f5316 275 * @brief Set the mode of a specified GPIO pin
Charles MacNeill 5:89031b2f5316 276 *
Charles MacNeill 5:89031b2f5316 277 * @param pin - an identifier specifying the pin being modified - defined per platform
Charles MacNeill 5:89031b2f5316 278 *
Charles MacNeill 5:89031b2f5316 279 * @param mode - an identifier specifying the requested mode - defined per platform
Charles MacNeill 5:89031b2f5316 280 *
Charles MacNeill 5:89031b2f5316 281 * @return VL53LX_ERROR_NONE Success
Charles MacNeill 5:89031b2f5316 282 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 283 */
Charles MacNeill 5:89031b2f5316 284
Charles MacNeill 5:89031b2f5316 285 VL53LX_Error VL53LX_GpioSetMode(uint8_t pin, uint8_t mode);
Charles MacNeill 5:89031b2f5316 286
Charles MacNeill 5:89031b2f5316 287
Charles MacNeill 5:89031b2f5316 288 /**
Charles MacNeill 5:89031b2f5316 289 * @brief Set the value of a specified GPIO pin
Charles MacNeill 5:89031b2f5316 290 *
Charles MacNeill 5:89031b2f5316 291 * @param pin - an identifier specifying the pin being modified - defined per platform
Charles MacNeill 5:89031b2f5316 292 *
Charles MacNeill 5:89031b2f5316 293 * @param value - a value to set on the GPIO pin - typically 0 or 1
Charles MacNeill 5:89031b2f5316 294 *
Charles MacNeill 5:89031b2f5316 295 * @return VL53LX_ERROR_NONE Success
Charles MacNeill 5:89031b2f5316 296 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 297 */
Charles MacNeill 5:89031b2f5316 298
Charles MacNeill 5:89031b2f5316 299 VL53LX_Error VL53LX_GpioSetValue(uint8_t pin, uint8_t value);
Charles MacNeill 5:89031b2f5316 300
Charles MacNeill 5:89031b2f5316 301
Charles MacNeill 5:89031b2f5316 302 /**
Charles MacNeill 5:89031b2f5316 303 * @brief Get the value of a specified GPIO pin
Charles MacNeill 5:89031b2f5316 304 *
Charles MacNeill 5:89031b2f5316 305 * @param pin - an identifier specifying the pin being modified - defined per platform
Charles MacNeill 5:89031b2f5316 306 *
Charles MacNeill 5:89031b2f5316 307 * @param pvalue - a value retrieved from the GPIO pin - typically 0 or 1
Charles MacNeill 5:89031b2f5316 308 *
Charles MacNeill 5:89031b2f5316 309 * @return VL53LX_ERROR_NONE Success
Charles MacNeill 5:89031b2f5316 310 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 311 */
Charles MacNeill 5:89031b2f5316 312
Charles MacNeill 5:89031b2f5316 313 VL53LX_Error VL53LX_GpioGetValue(uint8_t pin, uint8_t *pvalue);
Charles MacNeill 5:89031b2f5316 314
Charles MacNeill 5:89031b2f5316 315
Charles MacNeill 5:89031b2f5316 316 /**
Charles MacNeill 5:89031b2f5316 317 * @brief Sets and clears the XShutdown pin on the Ewok
Charles MacNeill 5:89031b2f5316 318 *
Charles MacNeill 5:89031b2f5316 319 * @param value - the value for xshutdown - 0 = in reset, 1 = operational
Charles MacNeill 5:89031b2f5316 320 *
Charles MacNeill 5:89031b2f5316 321 * @return VL53LX_ERROR_NONE Success
Charles MacNeill 5:89031b2f5316 322 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 323 */
Charles MacNeill 5:89031b2f5316 324
Charles MacNeill 5:89031b2f5316 325 VL53LX_Error VL53LX_GpioXshutdown(uint8_t value);
Charles MacNeill 5:89031b2f5316 326
Charles MacNeill 5:89031b2f5316 327
Charles MacNeill 5:89031b2f5316 328 /**
Charles MacNeill 5:89031b2f5316 329 * @brief Sets and clears the Comms Mode pin (NCS) on the Ewok
Charles MacNeill 5:89031b2f5316 330 *
Charles MacNeill 5:89031b2f5316 331 * @param value - the value for comms select - 0 = I2C, 1 = SPI
Charles MacNeill 5:89031b2f5316 332 *
Charles MacNeill 5:89031b2f5316 333 * @return VL53LX_ERROR_NONE Success
Charles MacNeill 5:89031b2f5316 334 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 335 */
Charles MacNeill 5:89031b2f5316 336
Charles MacNeill 5:89031b2f5316 337 VL53LX_Error VL53LX_GpioCommsSelect(uint8_t value);
Charles MacNeill 5:89031b2f5316 338
Charles MacNeill 5:89031b2f5316 339
Charles MacNeill 5:89031b2f5316 340 /**
Charles MacNeill 5:89031b2f5316 341 * @brief Enables and disables the power to the Ewok module
Charles MacNeill 5:89031b2f5316 342 *
Charles MacNeill 5:89031b2f5316 343 * @param value - the state of the power supply - 0 = power off, 1 = power on
Charles MacNeill 5:89031b2f5316 344 *
Charles MacNeill 5:89031b2f5316 345 * @return VL53LX_ERROR_NONE Success
Charles MacNeill 5:89031b2f5316 346 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 347 */
Charles MacNeill 5:89031b2f5316 348
Charles MacNeill 5:89031b2f5316 349 VL53LX_Error VL53LX_GpioPowerEnable(uint8_t value);
Charles MacNeill 5:89031b2f5316 350
Charles MacNeill 5:89031b2f5316 351 /**
Charles MacNeill 5:89031b2f5316 352 * @brief Enables callbacks to the supplied funtion pointer when Ewok interrupts ocurr
Charles MacNeill 5:89031b2f5316 353 *
Charles MacNeill 5:89031b2f5316 354 * @param function - a function callback supplies by the caller, for interrupt notification
Charles MacNeill 5:89031b2f5316 355 * @param edge_type - falling edge or rising edge interrupt detection
Charles MacNeill 5:89031b2f5316 356 *
Charles MacNeill 5:89031b2f5316 357 * @return VL53LX_ERROR_NONE Success
Charles MacNeill 5:89031b2f5316 358 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 359 */
Charles MacNeill 5:89031b2f5316 360
Charles MacNeill 5:89031b2f5316 361 VL53LX_Error VL53LX_GpioInterruptEnable(void (*function)(void), uint8_t edge_type);
Charles MacNeill 5:89031b2f5316 362
Charles MacNeill 5:89031b2f5316 363
Charles MacNeill 5:89031b2f5316 364 /**
Charles MacNeill 5:89031b2f5316 365 * @brief Disables the callback on Ewok interrupts
Charles MacNeill 5:89031b2f5316 366 *
Charles MacNeill 5:89031b2f5316 367 * @return VL53LX_ERROR_NONE Success
Charles MacNeill 5:89031b2f5316 368 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 369 */
Charles MacNeill 5:89031b2f5316 370
Charles MacNeill 5:89031b2f5316 371 VL53LX_Error VL53LX_GpioInterruptDisable(void);
Charles MacNeill 5:89031b2f5316 372
Charles MacNeill 5:89031b2f5316 373
Charles MacNeill 5:89031b2f5316 374 /*
Charles MacNeill 5:89031b2f5316 375 * @brief Gets current system tick count in [ms]
Charles MacNeill 5:89031b2f5316 376 *
Charles MacNeill 5:89031b2f5316 377 * @param[in] pdev : pointer to device structure (device handle)
Charles MacNeill 5:89031b2f5316 378 * @return time_ms : current time in [ms]
Charles MacNeill 5:89031b2f5316 379 *
Charles MacNeill 5:89031b2f5316 380 * @return VL53LX_ERROR_NONE Success
Charles MacNeill 5:89031b2f5316 381 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 382 */
Charles MacNeill 5:89031b2f5316 383
Charles MacNeill 5:89031b2f5316 384 VL53LX_Error VL53LX_GetTickCount(
Charles MacNeill 5:89031b2f5316 385 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 386 uint32_t *ptime_ms);
Charles MacNeill 5:89031b2f5316 387
Charles MacNeill 5:89031b2f5316 388
Charles MacNeill 5:89031b2f5316 389 /**
Charles MacNeill 5:89031b2f5316 390 * @brief Register "wait for value" polling routine
Charles MacNeill 5:89031b2f5316 391 *
Charles MacNeill 5:89031b2f5316 392 * Port of the V2WReg Script function WaitValueMaskEx()
Charles MacNeill 5:89031b2f5316 393 *
Charles MacNeill 5:89031b2f5316 394 * @param[in] pdev : pointer to device structure (device handle)
Charles MacNeill 5:89031b2f5316 395 * @param[in] timeout_ms : timeout in [ms]
Charles MacNeill 5:89031b2f5316 396 * @param[in] index : uint16_t register index value
Charles MacNeill 5:89031b2f5316 397 * @param[in] value : value to wait for
Charles MacNeill 5:89031b2f5316 398 * @param[in] mask : mask to be applied before comparison with value
Charles MacNeill 5:89031b2f5316 399 * @param[in] poll_delay_ms : polling delay been each read transaction in [ms]
Charles MacNeill 5:89031b2f5316 400 *
Charles MacNeill 5:89031b2f5316 401 * @return VL53LX_ERROR_NONE Success
Charles MacNeill 5:89031b2f5316 402 * @return "Other error code" See ::VL53LX_Error
Charles MacNeill 5:89031b2f5316 403 */
Charles MacNeill 5:89031b2f5316 404
Charles MacNeill 5:89031b2f5316 405 VL53LX_Error VL53LX_WaitValueMaskEx(
Charles MacNeill 5:89031b2f5316 406 VL53LX_DEV Dev,
Charles MacNeill 5:89031b2f5316 407 uint32_t timeout_ms,
Charles MacNeill 5:89031b2f5316 408 uint16_t index,
Charles MacNeill 5:89031b2f5316 409 uint8_t value,
Charles MacNeill 5:89031b2f5316 410 uint8_t mask,
Charles MacNeill 5:89031b2f5316 411 uint32_t poll_delay_ms);
Charles MacNeill 5:89031b2f5316 412
Charles MacNeill 5:89031b2f5316 413 int32_t GetTickCountMs();
Charles MacNeill 5:89031b2f5316 414
Charles MacNeill 5:89031b2f5316 415 #ifdef __cplusplus
Charles MacNeill 5:89031b2f5316 416 }
Charles MacNeill 5:89031b2f5316 417 #endif
Charles MacNeill 5:89031b2f5316 418
Charles MacNeill 5:89031b2f5316 419 #endif
Charles MacNeill 5:89031b2f5316 420