Initial release
Dependencies: X_NUCLEO_COMMON ST_INTERFACES
Diff: VL53L0X_i2c_platform.h
- Revision:
- 5:f16727052990
- Parent:
- 4:d25c4fa216af
--- a/VL53L0X_i2c_platform.h Mon Dec 18 08:27:21 2017 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,417 +0,0 @@ -/* - * COPYRIGHT (C) STMicroelectronics 2014. All rights reserved. - * - * This software is the confidential and proprietary information of - * STMicroelectronics ("Confidential Information"). You shall not - * disclose such Confidential Information and shall use it only in - * accordance with the terms of the license agreement you entered into - * with STMicroelectronics - * - * Programming Golden Rule: Keep it Simple! - * - */ - -/** - * @file VL53L0X_platform.h - * @brief Function prototype definitions for Ewok Platform layer. - * - */ - - -#ifndef _VL53L0X_I2C_PLATFORM_H_ -#define _VL53L0X_I2C_PLATFORM_H_ - -#include "VL53L0X_def.h" - -#ifdef __cplusplus -extern "C" { -#endif - -// Include uint8_t, unit16_t etc definitions - -#include <stdint.h> -#include <stdarg.h> - - -/** - * @brief Typedef defining .\n - * The developer shoud modify this to suit the platform being deployed. - * - */ - -// enum {TRUE = true, FALSE = false}; - -/** - * @brief Typedef defining 8 bit unsigned char type.\n - * The developer shoud modify this to suit the platform being deployed. - * - */ - -#ifndef bool_t -typedef unsigned char bool_t; -#endif - - -#define I2C 0x01 -#define SPI 0x00 - -#define COMMS_BUFFER_SIZE 64 // MUST be the same size as the SV task buffer - -#define BYTES_PER_WORD 2 -#define BYTES_PER_DWORD 4 - -#define VL53L0X_MAX_STRING_LENGTH_PLT 256 - -/** - * @brief Initialise platform comms. - * - * @param comms_type - selects between I2C and SPI - * @param comms_speed_khz - unsigned short containing the I2C speed in kHz - * - * @return status - status 0 = ok, 1 = error - * - */ - -int32_t VL53L0X_comms_initialise(uint8_t comms_type, - uint16_t comms_speed_khz); - -/** -* @brief Initialise platform serial comms. -* -* @param comPortStr - String to indicate the comm port -* @param baudRate - Bau rate -* -* @return status - status 0 = ok, 1 = error -* -*/ -int VL53L0_i2c_init(char *comPortStr, unsigned int baudRate); - - -/** - * @brief Close platform comms. - * - * @return status - status 0 = ok, 1 = error - * - */ - -int32_t VL53L0X_comms_close(void); - -/** - * @brief Cycle Power to Device - * - * @return status - status 0 = ok, 1 = error - * - */ - -int32_t VL53L0X_cycle_power(void); - - -/** - * @brief Writes the supplied byte buffer to the device - * - * Wrapper for SystemVerilog Write Multi task - * - * @code - * - * Example: - * - * uint8_t *spad_enables; - * - * int status = VL53L0X_write_multi(RET_SPAD_EN_0, spad_enables, 36); - * - * @endcode - * - * @param address - uint8_t device address value - * @param index - uint8_t register index value - * @param pdata - pointer to uint8_t buffer containing the data to be written - * @param count - number of bytes in the supplied byte buffer - * - * @return status - SystemVerilog status 0 = ok, 1 = error - * - */ - -int32_t VL53L0X_write_multi(uint8_t address, uint8_t index, uint8_t *pdata, int32_t count); - - -/** - * @brief Reads the requested number of bytes from the device - * - * Wrapper for SystemVerilog Read Multi task - * - * @code - * - * Example: - * - * uint8_t buffer[COMMS_BUFFER_SIZE]; - * - * int status = status = VL53L0X_read_multi(DEVICE_ID, buffer, 2) - * - * @endcode - * - * @param address - uint8_t device address value - * @param index - uint8_t register index value - * @param pdata - pointer to the uint8_t buffer to store read data - * @param count - number of uint8_t's to read - * - * @return status - SystemVerilog status 0 = ok, 1 = error - * - */ - -int32_t VL53L0X_read_multi(uint8_t address, uint8_t index, uint8_t *pdata, int32_t count); - - -/** - * @brief Writes a single byte to the device - * - * Wrapper for SystemVerilog Write Byte task - * - * @code - * - * Example: - * - * uint8_t page_number = MAIN_SELECT_PAGE; - * - * int status = VL53L0X_write_byte(PAGE_SELECT, page_number); - * - * @endcode - * - * @param address - uint8_t device address value - * @param index - uint8_t register index value - * @param data - uint8_t data value to write - * - * @return status - SystemVerilog status 0 = ok, 1 = error - * - */ - -int32_t VL53L0X_write_byte(uint8_t address, uint8_t index, uint8_t data); - - -/** - * @brief Writes a single word (16-bit unsigned) to the device - * - * Manages the big-endian nature of the device (first byte written is the MS byte). - * Uses SystemVerilog Write Multi task. - * - * @code - * - * Example: - * - * uint16_t nvm_ctrl_pulse_width = 0x0004; - * - * int status = VL53L0X_write_word(NVM_CTRL__PULSE_WIDTH_MSB, nvm_ctrl_pulse_width); - * - * @endcode - * - * @param address - uint8_t device address value - * @param index - uint8_t register index value - * @param data - uin16_t data value write - * - * @return status - SystemVerilog status 0 = ok, 1 = error - * - */ - -int32_t VL53L0X_write_word(uint8_t address, uint8_t index, uint16_t data); - - -/** - * @brief Writes a single dword (32-bit unsigned) to the device - * - * Manages the big-endian nature of the device (first byte written is the MS byte). - * Uses SystemVerilog Write Multi task. - * - * @code - * - * Example: - * - * uint32_t nvm_data = 0x0004; - * - * int status = VL53L0X_write_dword(NVM_CTRL__DATAIN_MMM, nvm_data); - * - * @endcode - * - * @param address - uint8_t device address value - * @param index - uint8_t register index value - * @param data - uint32_t data value to write - * - * @return status - SystemVerilog status 0 = ok, 1 = error - * - */ - -int32_t VL53L0X_write_dword(uint8_t address, uint8_t index, uint32_t data); - - - -/** - * @brief Reads a single byte from the device - * - * Uses SystemVerilog Read Byte task. - * - * @code - * - * Example: - * - * uint8_t device_status = 0; - * - * int status = VL53L0X_read_byte(STATUS, &device_status); - * - * @endcode - * - * @param address - uint8_t device address value - * @param index - uint8_t register index value - * @param pdata - pointer to uint8_t data value - * - * @return status - SystemVerilog status 0 = ok, 1 = error - * - */ - -int32_t VL53L0X_read_byte(uint8_t address, uint8_t index, uint8_t *pdata); - - -/** - * @brief Reads a single word (16-bit unsigned) from the device - * - * Manages the big-endian nature of the device (first byte read is the MS byte). - * Uses SystemVerilog Read Multi task. - * - * @code - * - * Example: - * - * uint16_t timeout = 0; - * - * int status = VL53L0X_read_word(TIMEOUT_OVERALL_PERIODS_MSB, &timeout); - * - * @endcode - * - * @param address - uint8_t device address value - * @param index - uint8_t register index value - * @param pdata - pointer to uint16_t data value - * - * @return status - SystemVerilog status 0 = ok, 1 = error - * - */ - -int32_t VL53L0X_read_word(uint8_t address, uint8_t index, uint16_t *pdata); - - -/** - * @brief Reads a single dword (32-bit unsigned) from the device - * - * Manages the big-endian nature of the device (first byte read is the MS byte). - * Uses SystemVerilog Read Multi task. - * - * @code - * - * Example: - * - * uint32_t range_1 = 0; - * - * int status = VL53L0X_read_dword(RANGE_1_MMM, &range_1); - * - * @endcode - * - * @param address - uint8_t device address value - * @param index - uint8_t register index value - * @param pdata - pointer to uint32_t data value - * - * @return status - SystemVerilog status 0 = ok, 1 = error - * - */ - -int32_t VL53L0X_read_dword(uint8_t address, uint8_t index, uint32_t *pdata); - - -/** - * @brief Implements a programmable wait in us - * - * Wrapper for SystemVerilog Wait in micro seconds task - * - * @param wait_us - integer wait in micro seconds - * - * @return status - SystemVerilog status 0 = ok, 1 = error - * - */ - -int32_t VL53L0X_platform_wait_us(int32_t wait_us); - - -/** - * @brief Implements a programmable wait in ms - * - * Wrapper for SystemVerilog Wait in milli seconds task - * - * @param wait_ms - integer wait in milli seconds - * - * @return status - SystemVerilog status 0 = ok, 1 = error - * - */ - -int32_t VL53L0X_wait_ms(int32_t wait_ms); - - -/** - * @brief Set GPIO value - * - * @param level - input level - either 0 or 1 - * - * @return status - SystemVerilog status 0 = ok, 1 = error - * - */ - -int32_t VL53L0X_set_gpio(uint8_t level); - - -/** - * @brief Get GPIO value - * - * @param plevel - uint8_t pointer to store GPIO level (0 or 1) - * - * @return status - SystemVerilog status 0 = ok, 1 = error - * - */ - -int32_t VL53L0X_get_gpio(uint8_t *plevel); - -/** - * @brief Release force on GPIO - * - * @return status - SystemVerilog status 0 = ok, 1 = error - * - */ - -int32_t VL53L0X_release_gpio(void); - - -/** -* @brief Get the frequency of the timer used for ranging results time stamps -* -* @param[out] ptimer_freq_hz : pointer for timer frequency -* -* @return status : 0 = ok, 1 = error -* -*/ - -int32_t VL53L0X_get_timer_frequency(int32_t *ptimer_freq_hz); - -/** -* @brief Get the timer value in units of timer_freq_hz (see VL53L0X_get_timestamp_frequency()) -* -* @param[out] ptimer_count : pointer for timer count value -* -* @return status : 0 = ok, 1 = error -* -*/ - -int32_t VL53L0X_get_timer_value(int32_t *ptimer_count); - - - - - -#ifdef __cplusplus -} -#endif - -#endif //_VL53L0X_I2C_PLATFORM_H_ - -