VL53L0X World smallest Time-of-Flight (ToF) ranging sensor

Dependencies:   X_NUCLEO_COMMON ST_INTERFACES

Dependents:   HelloWorld_ST_Sensors mbed-os-mqtt-client Multi_VL53L0X DISCO-IOT01_HomeEnv ... more

Fork of VL53L0X by Nicola Capovilla

Committer:
Davidroid
Date:
Fri Oct 13 15:31:04 2017 +0000
Revision:
2:d07edeaff6f1
Parent:
0:a1a69d32f310
Astyle reformatting.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nikapov 0:a1a69d32f310 1 /*
nikapov 0:a1a69d32f310 2 * COPYRIGHT (C) STMicroelectronics 2014. All rights reserved.
nikapov 0:a1a69d32f310 3 *
nikapov 0:a1a69d32f310 4 * This software is the confidential and proprietary information of
nikapov 0:a1a69d32f310 5 * STMicroelectronics ("Confidential Information"). You shall not
nikapov 0:a1a69d32f310 6 * disclose such Confidential Information and shall use it only in
nikapov 0:a1a69d32f310 7 * accordance with the terms of the license agreement you entered into
nikapov 0:a1a69d32f310 8 * with STMicroelectronics
nikapov 0:a1a69d32f310 9 *
nikapov 0:a1a69d32f310 10 * Programming Golden Rule: Keep it Simple!
nikapov 0:a1a69d32f310 11 *
nikapov 0:a1a69d32f310 12 */
nikapov 0:a1a69d32f310 13
nikapov 0:a1a69d32f310 14 /**
nikapov 0:a1a69d32f310 15 * @file VL53L0X_platform.h
nikapov 0:a1a69d32f310 16 * @brief Function prototype definitions for Ewok Platform layer.
nikapov 0:a1a69d32f310 17 *
nikapov 0:a1a69d32f310 18 */
nikapov 0:a1a69d32f310 19
nikapov 0:a1a69d32f310 20
nikapov 0:a1a69d32f310 21 #ifndef _VL53L0X_I2C_PLATFORM_H_
nikapov 0:a1a69d32f310 22 #define _VL53L0X_I2C_PLATFORM_H_
nikapov 0:a1a69d32f310 23
nikapov 0:a1a69d32f310 24 #include "VL53L0X_def.h"
nikapov 0:a1a69d32f310 25
nikapov 0:a1a69d32f310 26 #ifdef __cplusplus
nikapov 0:a1a69d32f310 27 extern "C" {
nikapov 0:a1a69d32f310 28 #endif
nikapov 0:a1a69d32f310 29
nikapov 0:a1a69d32f310 30 // Include uint8_t, unit16_t etc definitions
nikapov 0:a1a69d32f310 31
nikapov 0:a1a69d32f310 32 #include <stdint.h>
nikapov 0:a1a69d32f310 33 #include <stdarg.h>
nikapov 0:a1a69d32f310 34
nikapov 0:a1a69d32f310 35
nikapov 0:a1a69d32f310 36 /**
nikapov 0:a1a69d32f310 37 * @brief Typedef defining .\n
nikapov 0:a1a69d32f310 38 * The developer shoud modify this to suit the platform being deployed.
nikapov 0:a1a69d32f310 39 *
nikapov 0:a1a69d32f310 40 */
nikapov 0:a1a69d32f310 41
nikapov 0:a1a69d32f310 42 // enum {TRUE = true, FALSE = false};
nikapov 0:a1a69d32f310 43
nikapov 0:a1a69d32f310 44 /**
nikapov 0:a1a69d32f310 45 * @brief Typedef defining 8 bit unsigned char type.\n
nikapov 0:a1a69d32f310 46 * The developer shoud modify this to suit the platform being deployed.
nikapov 0:a1a69d32f310 47 *
nikapov 0:a1a69d32f310 48 */
nikapov 0:a1a69d32f310 49
nikapov 0:a1a69d32f310 50 #ifndef bool_t
nikapov 0:a1a69d32f310 51 typedef unsigned char bool_t;
nikapov 0:a1a69d32f310 52 #endif
nikapov 0:a1a69d32f310 53
nikapov 0:a1a69d32f310 54
nikapov 0:a1a69d32f310 55 #define I2C 0x01
nikapov 0:a1a69d32f310 56 #define SPI 0x00
nikapov 0:a1a69d32f310 57
nikapov 0:a1a69d32f310 58 #define COMMS_BUFFER_SIZE 64 // MUST be the same size as the SV task buffer
nikapov 0:a1a69d32f310 59
nikapov 0:a1a69d32f310 60 #define BYTES_PER_WORD 2
nikapov 0:a1a69d32f310 61 #define BYTES_PER_DWORD 4
nikapov 0:a1a69d32f310 62
nikapov 0:a1a69d32f310 63 #define VL53L0X_MAX_STRING_LENGTH_PLT 256
nikapov 0:a1a69d32f310 64
nikapov 0:a1a69d32f310 65 /**
nikapov 0:a1a69d32f310 66 * @brief Initialise platform comms.
nikapov 0:a1a69d32f310 67 *
nikapov 0:a1a69d32f310 68 * @param comms_type - selects between I2C and SPI
nikapov 0:a1a69d32f310 69 * @param comms_speed_khz - unsigned short containing the I2C speed in kHz
nikapov 0:a1a69d32f310 70 *
nikapov 0:a1a69d32f310 71 * @return status - status 0 = ok, 1 = error
nikapov 0:a1a69d32f310 72 *
nikapov 0:a1a69d32f310 73 */
nikapov 0:a1a69d32f310 74
nikapov 0:a1a69d32f310 75 int32_t VL53L0X_comms_initialise(uint8_t comms_type,
Davidroid 2:d07edeaff6f1 76 uint16_t comms_speed_khz);
nikapov 0:a1a69d32f310 77
Davidroid 2:d07edeaff6f1 78 /**
Davidroid 2:d07edeaff6f1 79 * @brief Initialise platform serial comms.
Davidroid 2:d07edeaff6f1 80 *
Davidroid 2:d07edeaff6f1 81 * @param comPortStr - String to indicate the comm port
Davidroid 2:d07edeaff6f1 82 * @param baudRate - Bau rate
Davidroid 2:d07edeaff6f1 83 *
Davidroid 2:d07edeaff6f1 84 * @return status - status 0 = ok, 1 = error
Davidroid 2:d07edeaff6f1 85 *
Davidroid 2:d07edeaff6f1 86 */
nikapov 0:a1a69d32f310 87 int VL53L0_i2c_init(char *comPortStr, unsigned int baudRate);
nikapov 0:a1a69d32f310 88
Davidroid 2:d07edeaff6f1 89
nikapov 0:a1a69d32f310 90 /**
nikapov 0:a1a69d32f310 91 * @brief Close platform comms.
nikapov 0:a1a69d32f310 92 *
nikapov 0:a1a69d32f310 93 * @return status - status 0 = ok, 1 = error
nikapov 0:a1a69d32f310 94 *
nikapov 0:a1a69d32f310 95 */
nikapov 0:a1a69d32f310 96
nikapov 0:a1a69d32f310 97 int32_t VL53L0X_comms_close(void);
nikapov 0:a1a69d32f310 98
nikapov 0:a1a69d32f310 99 /**
nikapov 0:a1a69d32f310 100 * @brief Cycle Power to Device
nikapov 0:a1a69d32f310 101 *
nikapov 0:a1a69d32f310 102 * @return status - status 0 = ok, 1 = error
nikapov 0:a1a69d32f310 103 *
nikapov 0:a1a69d32f310 104 */
nikapov 0:a1a69d32f310 105
nikapov 0:a1a69d32f310 106 int32_t VL53L0X_cycle_power(void);
nikapov 0:a1a69d32f310 107
nikapov 0:a1a69d32f310 108
nikapov 0:a1a69d32f310 109 /**
nikapov 0:a1a69d32f310 110 * @brief Writes the supplied byte buffer to the device
nikapov 0:a1a69d32f310 111 *
nikapov 0:a1a69d32f310 112 * Wrapper for SystemVerilog Write Multi task
nikapov 0:a1a69d32f310 113 *
nikapov 0:a1a69d32f310 114 * @code
nikapov 0:a1a69d32f310 115 *
nikapov 0:a1a69d32f310 116 * Example:
nikapov 0:a1a69d32f310 117 *
nikapov 0:a1a69d32f310 118 * uint8_t *spad_enables;
nikapov 0:a1a69d32f310 119 *
nikapov 0:a1a69d32f310 120 * int status = VL53L0X_write_multi(RET_SPAD_EN_0, spad_enables, 36);
nikapov 0:a1a69d32f310 121 *
nikapov 0:a1a69d32f310 122 * @endcode
nikapov 0:a1a69d32f310 123 *
nikapov 0:a1a69d32f310 124 * @param address - uint8_t device address value
nikapov 0:a1a69d32f310 125 * @param index - uint8_t register index value
nikapov 0:a1a69d32f310 126 * @param pdata - pointer to uint8_t buffer containing the data to be written
nikapov 0:a1a69d32f310 127 * @param count - number of bytes in the supplied byte buffer
nikapov 0:a1a69d32f310 128 *
nikapov 0:a1a69d32f310 129 * @return status - SystemVerilog status 0 = ok, 1 = error
nikapov 0:a1a69d32f310 130 *
nikapov 0:a1a69d32f310 131 */
nikapov 0:a1a69d32f310 132
nikapov 0:a1a69d32f310 133 int32_t VL53L0X_write_multi(uint8_t address, uint8_t index, uint8_t *pdata, int32_t count);
nikapov 0:a1a69d32f310 134
nikapov 0:a1a69d32f310 135
nikapov 0:a1a69d32f310 136 /**
nikapov 0:a1a69d32f310 137 * @brief Reads the requested number of bytes from the device
nikapov 0:a1a69d32f310 138 *
nikapov 0:a1a69d32f310 139 * Wrapper for SystemVerilog Read Multi task
nikapov 0:a1a69d32f310 140 *
nikapov 0:a1a69d32f310 141 * @code
Davidroid 2:d07edeaff6f1 142 *
nikapov 0:a1a69d32f310 143 * Example:
nikapov 0:a1a69d32f310 144 *
nikapov 0:a1a69d32f310 145 * uint8_t buffer[COMMS_BUFFER_SIZE];
nikapov 0:a1a69d32f310 146 *
nikapov 0:a1a69d32f310 147 * int status = status = VL53L0X_read_multi(DEVICE_ID, buffer, 2)
nikapov 0:a1a69d32f310 148 *
nikapov 0:a1a69d32f310 149 * @endcode
nikapov 0:a1a69d32f310 150 *
nikapov 0:a1a69d32f310 151 * @param address - uint8_t device address value
nikapov 0:a1a69d32f310 152 * @param index - uint8_t register index value
nikapov 0:a1a69d32f310 153 * @param pdata - pointer to the uint8_t buffer to store read data
nikapov 0:a1a69d32f310 154 * @param count - number of uint8_t's to read
nikapov 0:a1a69d32f310 155 *
nikapov 0:a1a69d32f310 156 * @return status - SystemVerilog status 0 = ok, 1 = error
nikapov 0:a1a69d32f310 157 *
nikapov 0:a1a69d32f310 158 */
nikapov 0:a1a69d32f310 159
nikapov 0:a1a69d32f310 160 int32_t VL53L0X_read_multi(uint8_t address, uint8_t index, uint8_t *pdata, int32_t count);
nikapov 0:a1a69d32f310 161
nikapov 0:a1a69d32f310 162
nikapov 0:a1a69d32f310 163 /**
nikapov 0:a1a69d32f310 164 * @brief Writes a single byte to the device
nikapov 0:a1a69d32f310 165 *
nikapov 0:a1a69d32f310 166 * Wrapper for SystemVerilog Write Byte task
nikapov 0:a1a69d32f310 167 *
nikapov 0:a1a69d32f310 168 * @code
Davidroid 2:d07edeaff6f1 169 *
nikapov 0:a1a69d32f310 170 * Example:
nikapov 0:a1a69d32f310 171 *
nikapov 0:a1a69d32f310 172 * uint8_t page_number = MAIN_SELECT_PAGE;
nikapov 0:a1a69d32f310 173 *
nikapov 0:a1a69d32f310 174 * int status = VL53L0X_write_byte(PAGE_SELECT, page_number);
nikapov 0:a1a69d32f310 175 *
nikapov 0:a1a69d32f310 176 * @endcode
nikapov 0:a1a69d32f310 177 *
nikapov 0:a1a69d32f310 178 * @param address - uint8_t device address value
nikapov 0:a1a69d32f310 179 * @param index - uint8_t register index value
nikapov 0:a1a69d32f310 180 * @param data - uint8_t data value to write
nikapov 0:a1a69d32f310 181 *
nikapov 0:a1a69d32f310 182 * @return status - SystemVerilog status 0 = ok, 1 = error
nikapov 0:a1a69d32f310 183 *
nikapov 0:a1a69d32f310 184 */
nikapov 0:a1a69d32f310 185
nikapov 0:a1a69d32f310 186 int32_t VL53L0X_write_byte(uint8_t address, uint8_t index, uint8_t data);
nikapov 0:a1a69d32f310 187
nikapov 0:a1a69d32f310 188
nikapov 0:a1a69d32f310 189 /**
nikapov 0:a1a69d32f310 190 * @brief Writes a single word (16-bit unsigned) to the device
nikapov 0:a1a69d32f310 191 *
nikapov 0:a1a69d32f310 192 * Manages the big-endian nature of the device (first byte written is the MS byte).
nikapov 0:a1a69d32f310 193 * Uses SystemVerilog Write Multi task.
nikapov 0:a1a69d32f310 194 *
nikapov 0:a1a69d32f310 195 * @code
nikapov 0:a1a69d32f310 196 *
nikapov 0:a1a69d32f310 197 * Example:
nikapov 0:a1a69d32f310 198 *
nikapov 0:a1a69d32f310 199 * uint16_t nvm_ctrl_pulse_width = 0x0004;
nikapov 0:a1a69d32f310 200 *
nikapov 0:a1a69d32f310 201 * int status = VL53L0X_write_word(NVM_CTRL__PULSE_WIDTH_MSB, nvm_ctrl_pulse_width);
nikapov 0:a1a69d32f310 202 *
nikapov 0:a1a69d32f310 203 * @endcode
nikapov 0:a1a69d32f310 204 *
nikapov 0:a1a69d32f310 205 * @param address - uint8_t device address value
nikapov 0:a1a69d32f310 206 * @param index - uint8_t register index value
nikapov 0:a1a69d32f310 207 * @param data - uin16_t data value write
nikapov 0:a1a69d32f310 208 *
nikapov 0:a1a69d32f310 209 * @return status - SystemVerilog status 0 = ok, 1 = error
nikapov 0:a1a69d32f310 210 *
nikapov 0:a1a69d32f310 211 */
nikapov 0:a1a69d32f310 212
nikapov 0:a1a69d32f310 213 int32_t VL53L0X_write_word(uint8_t address, uint8_t index, uint16_t data);
nikapov 0:a1a69d32f310 214
nikapov 0:a1a69d32f310 215
nikapov 0:a1a69d32f310 216 /**
nikapov 0:a1a69d32f310 217 * @brief Writes a single dword (32-bit unsigned) to the device
nikapov 0:a1a69d32f310 218 *
nikapov 0:a1a69d32f310 219 * Manages the big-endian nature of the device (first byte written is the MS byte).
nikapov 0:a1a69d32f310 220 * Uses SystemVerilog Write Multi task.
nikapov 0:a1a69d32f310 221 *
nikapov 0:a1a69d32f310 222 * @code
nikapov 0:a1a69d32f310 223 *
nikapov 0:a1a69d32f310 224 * Example:
nikapov 0:a1a69d32f310 225 *
nikapov 0:a1a69d32f310 226 * uint32_t nvm_data = 0x0004;
nikapov 0:a1a69d32f310 227 *
nikapov 0:a1a69d32f310 228 * int status = VL53L0X_write_dword(NVM_CTRL__DATAIN_MMM, nvm_data);
nikapov 0:a1a69d32f310 229 *
nikapov 0:a1a69d32f310 230 * @endcode
nikapov 0:a1a69d32f310 231 *
nikapov 0:a1a69d32f310 232 * @param address - uint8_t device address value
nikapov 0:a1a69d32f310 233 * @param index - uint8_t register index value
nikapov 0:a1a69d32f310 234 * @param data - uint32_t data value to write
nikapov 0:a1a69d32f310 235 *
nikapov 0:a1a69d32f310 236 * @return status - SystemVerilog status 0 = ok, 1 = error
nikapov 0:a1a69d32f310 237 *
nikapov 0:a1a69d32f310 238 */
nikapov 0:a1a69d32f310 239
nikapov 0:a1a69d32f310 240 int32_t VL53L0X_write_dword(uint8_t address, uint8_t index, uint32_t data);
nikapov 0:a1a69d32f310 241
nikapov 0:a1a69d32f310 242
nikapov 0:a1a69d32f310 243
nikapov 0:a1a69d32f310 244 /**
nikapov 0:a1a69d32f310 245 * @brief Reads a single byte from the device
nikapov 0:a1a69d32f310 246 *
nikapov 0:a1a69d32f310 247 * Uses SystemVerilog Read Byte task.
nikapov 0:a1a69d32f310 248 *
nikapov 0:a1a69d32f310 249 * @code
nikapov 0:a1a69d32f310 250 *
nikapov 0:a1a69d32f310 251 * Example:
nikapov 0:a1a69d32f310 252 *
nikapov 0:a1a69d32f310 253 * uint8_t device_status = 0;
nikapov 0:a1a69d32f310 254 *
nikapov 0:a1a69d32f310 255 * int status = VL53L0X_read_byte(STATUS, &device_status);
nikapov 0:a1a69d32f310 256 *
nikapov 0:a1a69d32f310 257 * @endcode
nikapov 0:a1a69d32f310 258 *
nikapov 0:a1a69d32f310 259 * @param address - uint8_t device address value
nikapov 0:a1a69d32f310 260 * @param index - uint8_t register index value
nikapov 0:a1a69d32f310 261 * @param pdata - pointer to uint8_t data value
nikapov 0:a1a69d32f310 262 *
nikapov 0:a1a69d32f310 263 * @return status - SystemVerilog status 0 = ok, 1 = error
nikapov 0:a1a69d32f310 264 *
nikapov 0:a1a69d32f310 265 */
nikapov 0:a1a69d32f310 266
nikapov 0:a1a69d32f310 267 int32_t VL53L0X_read_byte(uint8_t address, uint8_t index, uint8_t *pdata);
nikapov 0:a1a69d32f310 268
nikapov 0:a1a69d32f310 269
nikapov 0:a1a69d32f310 270 /**
nikapov 0:a1a69d32f310 271 * @brief Reads a single word (16-bit unsigned) from the device
nikapov 0:a1a69d32f310 272 *
nikapov 0:a1a69d32f310 273 * Manages the big-endian nature of the device (first byte read is the MS byte).
nikapov 0:a1a69d32f310 274 * Uses SystemVerilog Read Multi task.
nikapov 0:a1a69d32f310 275 *
nikapov 0:a1a69d32f310 276 * @code
nikapov 0:a1a69d32f310 277 *
nikapov 0:a1a69d32f310 278 * Example:
nikapov 0:a1a69d32f310 279 *
nikapov 0:a1a69d32f310 280 * uint16_t timeout = 0;
nikapov 0:a1a69d32f310 281 *
nikapov 0:a1a69d32f310 282 * int status = VL53L0X_read_word(TIMEOUT_OVERALL_PERIODS_MSB, &timeout);
nikapov 0:a1a69d32f310 283 *
nikapov 0:a1a69d32f310 284 * @endcode
nikapov 0:a1a69d32f310 285 *
nikapov 0:a1a69d32f310 286 * @param address - uint8_t device address value
nikapov 0:a1a69d32f310 287 * @param index - uint8_t register index value
nikapov 0:a1a69d32f310 288 * @param pdata - pointer to uint16_t data value
nikapov 0:a1a69d32f310 289 *
nikapov 0:a1a69d32f310 290 * @return status - SystemVerilog status 0 = ok, 1 = error
nikapov 0:a1a69d32f310 291 *
nikapov 0:a1a69d32f310 292 */
nikapov 0:a1a69d32f310 293
nikapov 0:a1a69d32f310 294 int32_t VL53L0X_read_word(uint8_t address, uint8_t index, uint16_t *pdata);
nikapov 0:a1a69d32f310 295
nikapov 0:a1a69d32f310 296
nikapov 0:a1a69d32f310 297 /**
nikapov 0:a1a69d32f310 298 * @brief Reads a single dword (32-bit unsigned) from the device
nikapov 0:a1a69d32f310 299 *
nikapov 0:a1a69d32f310 300 * Manages the big-endian nature of the device (first byte read is the MS byte).
nikapov 0:a1a69d32f310 301 * Uses SystemVerilog Read Multi task.
nikapov 0:a1a69d32f310 302 *
nikapov 0:a1a69d32f310 303 * @code
nikapov 0:a1a69d32f310 304 *
nikapov 0:a1a69d32f310 305 * Example:
nikapov 0:a1a69d32f310 306 *
nikapov 0:a1a69d32f310 307 * uint32_t range_1 = 0;
nikapov 0:a1a69d32f310 308 *
nikapov 0:a1a69d32f310 309 * int status = VL53L0X_read_dword(RANGE_1_MMM, &range_1);
nikapov 0:a1a69d32f310 310 *
nikapov 0:a1a69d32f310 311 * @endcode
nikapov 0:a1a69d32f310 312 *
nikapov 0:a1a69d32f310 313 * @param address - uint8_t device address value
nikapov 0:a1a69d32f310 314 * @param index - uint8_t register index value
nikapov 0:a1a69d32f310 315 * @param pdata - pointer to uint32_t data value
nikapov 0:a1a69d32f310 316 *
nikapov 0:a1a69d32f310 317 * @return status - SystemVerilog status 0 = ok, 1 = error
nikapov 0:a1a69d32f310 318 *
nikapov 0:a1a69d32f310 319 */
nikapov 0:a1a69d32f310 320
nikapov 0:a1a69d32f310 321 int32_t VL53L0X_read_dword(uint8_t address, uint8_t index, uint32_t *pdata);
nikapov 0:a1a69d32f310 322
nikapov 0:a1a69d32f310 323
nikapov 0:a1a69d32f310 324 /**
nikapov 0:a1a69d32f310 325 * @brief Implements a programmable wait in us
nikapov 0:a1a69d32f310 326 *
nikapov 0:a1a69d32f310 327 * Wrapper for SystemVerilog Wait in micro seconds task
nikapov 0:a1a69d32f310 328 *
nikapov 0:a1a69d32f310 329 * @param wait_us - integer wait in micro seconds
nikapov 0:a1a69d32f310 330 *
nikapov 0:a1a69d32f310 331 * @return status - SystemVerilog status 0 = ok, 1 = error
nikapov 0:a1a69d32f310 332 *
nikapov 0:a1a69d32f310 333 */
nikapov 0:a1a69d32f310 334
nikapov 0:a1a69d32f310 335 int32_t VL53L0X_platform_wait_us(int32_t wait_us);
nikapov 0:a1a69d32f310 336
nikapov 0:a1a69d32f310 337
nikapov 0:a1a69d32f310 338 /**
nikapov 0:a1a69d32f310 339 * @brief Implements a programmable wait in ms
nikapov 0:a1a69d32f310 340 *
nikapov 0:a1a69d32f310 341 * Wrapper for SystemVerilog Wait in milli seconds task
nikapov 0:a1a69d32f310 342 *
nikapov 0:a1a69d32f310 343 * @param wait_ms - integer wait in milli seconds
nikapov 0:a1a69d32f310 344 *
nikapov 0:a1a69d32f310 345 * @return status - SystemVerilog status 0 = ok, 1 = error
nikapov 0:a1a69d32f310 346 *
nikapov 0:a1a69d32f310 347 */
nikapov 0:a1a69d32f310 348
nikapov 0:a1a69d32f310 349 int32_t VL53L0X_wait_ms(int32_t wait_ms);
nikapov 0:a1a69d32f310 350
nikapov 0:a1a69d32f310 351
nikapov 0:a1a69d32f310 352 /**
nikapov 0:a1a69d32f310 353 * @brief Set GPIO value
nikapov 0:a1a69d32f310 354 *
nikapov 0:a1a69d32f310 355 * @param level - input level - either 0 or 1
nikapov 0:a1a69d32f310 356 *
nikapov 0:a1a69d32f310 357 * @return status - SystemVerilog status 0 = ok, 1 = error
nikapov 0:a1a69d32f310 358 *
nikapov 0:a1a69d32f310 359 */
nikapov 0:a1a69d32f310 360
nikapov 0:a1a69d32f310 361 int32_t VL53L0X_set_gpio(uint8_t level);
nikapov 0:a1a69d32f310 362
nikapov 0:a1a69d32f310 363
nikapov 0:a1a69d32f310 364 /**
nikapov 0:a1a69d32f310 365 * @brief Get GPIO value
nikapov 0:a1a69d32f310 366 *
nikapov 0:a1a69d32f310 367 * @param plevel - uint8_t pointer to store GPIO level (0 or 1)
nikapov 0:a1a69d32f310 368 *
nikapov 0:a1a69d32f310 369 * @return status - SystemVerilog status 0 = ok, 1 = error
nikapov 0:a1a69d32f310 370 *
nikapov 0:a1a69d32f310 371 */
nikapov 0:a1a69d32f310 372
nikapov 0:a1a69d32f310 373 int32_t VL53L0X_get_gpio(uint8_t *plevel);
nikapov 0:a1a69d32f310 374
nikapov 0:a1a69d32f310 375 /**
nikapov 0:a1a69d32f310 376 * @brief Release force on GPIO
nikapov 0:a1a69d32f310 377 *
nikapov 0:a1a69d32f310 378 * @return status - SystemVerilog status 0 = ok, 1 = error
nikapov 0:a1a69d32f310 379 *
nikapov 0:a1a69d32f310 380 */
nikapov 0:a1a69d32f310 381
nikapov 0:a1a69d32f310 382 int32_t VL53L0X_release_gpio(void);
nikapov 0:a1a69d32f310 383
nikapov 0:a1a69d32f310 384
nikapov 0:a1a69d32f310 385 /**
nikapov 0:a1a69d32f310 386 * @brief Get the frequency of the timer used for ranging results time stamps
nikapov 0:a1a69d32f310 387 *
nikapov 0:a1a69d32f310 388 * @param[out] ptimer_freq_hz : pointer for timer frequency
nikapov 0:a1a69d32f310 389 *
nikapov 0:a1a69d32f310 390 * @return status : 0 = ok, 1 = error
nikapov 0:a1a69d32f310 391 *
nikapov 0:a1a69d32f310 392 */
nikapov 0:a1a69d32f310 393
nikapov 0:a1a69d32f310 394 int32_t VL53L0X_get_timer_frequency(int32_t *ptimer_freq_hz);
nikapov 0:a1a69d32f310 395
nikapov 0:a1a69d32f310 396 /**
nikapov 0:a1a69d32f310 397 * @brief Get the timer value in units of timer_freq_hz (see VL53L0X_get_timestamp_frequency())
nikapov 0:a1a69d32f310 398 *
nikapov 0:a1a69d32f310 399 * @param[out] ptimer_count : pointer for timer count value
nikapov 0:a1a69d32f310 400 *
nikapov 0:a1a69d32f310 401 * @return status : 0 = ok, 1 = error
nikapov 0:a1a69d32f310 402 *
nikapov 0:a1a69d32f310 403 */
nikapov 0:a1a69d32f310 404
nikapov 0:a1a69d32f310 405 int32_t VL53L0X_get_timer_value(int32_t *ptimer_count);
nikapov 0:a1a69d32f310 406
nikapov 0:a1a69d32f310 407
nikapov 0:a1a69d32f310 408
nikapov 0:a1a69d32f310 409
nikapov 0:a1a69d32f310 410
nikapov 0:a1a69d32f310 411 #ifdef __cplusplus
nikapov 0:a1a69d32f310 412 }
nikapov 0:a1a69d32f310 413 #endif
nikapov 0:a1a69d32f310 414
nikapov 0:a1a69d32f310 415 #endif //_VL53L0X_I2C_PLATFORM_H_
nikapov 0:a1a69d32f310 416
nikapov 0:a1a69d32f310 417