Workshop example

Dependencies:   X_NUCLEO_COMMON ST_INTERFACES

Committer:
JimCarver
Date:
Tue May 21 21:16:24 2019 +0000
Revision:
35:42b3fba640b1
Parent:
18:a15bfe7aaebd
Simple version for workshop

Who changed what in which revision?

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