blob: 8b1b2a0f37f4636db0d8cf22d10d0dcd07309e48 [file] [log] [blame]
/* vl53l1_platform.h - Zephyr customization of ST vl53l1x library. */
/*
* Copyright (c) 2017 STMicroelectronics
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef ZEPHYR_DRIVERS_SENSOR_VL53L1X_VL53L1_PLATFORM_H_
#define ZEPHYR_DRIVERS_SENSOR_VL53L1X_VL53L1_PLATFORM_H_
#include <string.h>
#include "vl53l1_ll_def.h"
#include "vl53l1_platform_log.h"
#include "vl53l1_platform_user_data.h"
#ifdef __cplusplus
extern "C" {
#endif
/**
* Writes the supplied byte buffer to the device
* @param pdev Pointer to device structure (device handle)
* @param index Register index value
* @param pdata Pointer to uint8_t (byte) buffer containing the data to be written
* @param count Number of bytes in the supplied byte buffer
* @return VL53L1_ERROR_NONE Success
* @return "Other error code" See ::VL53L1_Error
*/
VL53L1_Error VL53L1_WriteMulti(VL53L1_Dev_t *pdev, uint16_t index,
uint8_t *pdata, uint32_t count);
/**
* Reads the requested number of bytes from the device
* @param pdev Pointer to device structure (device handle)
* @param index Register index value
* @param pdata Pointer to the uint8_t (byte) buffer to store read data
* @param count Number of bytes to read
* @return VL53L1_ERROR_NONE Success
* @return "Other error code" See ::VL53L1_Error
*/
VL53L1_Error VL53L1_ReadMulti(VL53L1_Dev_t *pdev, uint16_t index,
uint8_t *pdata, uint32_t count);
/**
* Writes a single byte to the device
* @param pdev Pointer to device structure (device handle)
* @param index Register index value
* @param data Data value to write
* @return VL53L1_ERROR_NONE Success
* @return "Other error code" See ::VL53L1_Error
*/
VL53L1_Error VL53L1_WrByte(VL53L1_Dev_t *pdev, uint16_t index, uint8_t data);
/**
* Writes a single word (16-bit unsigned) to the device
* @param pdev Pointer to device structure (device handle)
* @param index Register index value
* @param data Data value write
* @return VL53L1_ERROR_NONE Success
* @return "Other error code" See ::VL53L1_Error
*/
VL53L1_Error VL53L1_WrWord(VL53L1_Dev_t *pdev, uint16_t index, uint16_t data);
/**
* Writes a single dword (32-bit unsigned) to the device
* @param pdev Pointer to device structure (device handle)
* @param index Register index value
* @param data Data value to write
* @return VL53L1_ERROR_NONE Success
* @return "Other error code" See ::VL53L1_Error
*/
VL53L1_Error VL53L1_WrDWord(VL53L1_Dev_t *pdev, uint16_t index, uint32_t data);
/**
* Reads a single byte from the device
* @param pdev Pointer to device structure (device handle)
* @param index Register index
* @param pdata Pointer to uint8_t data value
* @return VL53L1_ERROR_NONE Success
* @return "Other error code" See ::VL53L1_Error
*/
VL53L1_Error VL53L1_RdByte(VL53L1_Dev_t *pdev, uint16_t index, uint8_t *pdata);
/**
* Reads a single word (16-bit unsigned) from the device
* @param pdev Pointer to device structure (device handle)
* @param index Register index value
* @param pdata Pointer to uint16_t data value
* @return VL53L1_ERROR_NONE Success
* @return "Other error code" See ::VL53L1_Error
*/
VL53L1_Error VL53L1_RdWord(VL53L1_Dev_t *pdev, uint16_t index, uint16_t *pdata);
/**
* Reads a single double word (32-bit unsigned) from the device
* @param pdev Pointer to device structure (device handle)
* @param index Register index value
* @param pdata Pointer to uint32_t data value
* @return VL53L1_ERROR_NONE Success
* @return "Other error code" See ::VL53L1_Error
*/
VL53L1_Error VL53L1_RdDWord(VL53L1_Dev_t *pdev, uint16_t index, uint32_t *pdata);
/**
* Implements a programmable wait in us
* @param pdev Pointer to device structure (device handle)
* @param wait_us Integer wait in micro seconds
* @return VL53L1_ERROR_NONE Success
* @return "Other error code" See ::VL53L1_Error
*/
VL53L1_Error VL53L1_WaitUs(VL53L1_Dev_t *pdev, int32_t wait_us);
/**
* Implements a programmable wait in ms
* @param pdev Pointer to device structure (device handle)
* @param wait_ms Integer wait in milliseconds
* @return VL53L1_ERROR_NONE Success
* @return "Other error code" See ::VL53L1_Error
*/
VL53L1_Error VL53L1_WaitMs(VL53L1_Dev_t *pdev, int32_t wait_ms);
/**
* Gets current system tick count in [ms]
* @param Pointer to current time in [ms]
* @return VL53L1_ERROR_NONE Success
* @return "Other error code" See ::VL53L1_Error
*/
VL53L1_Error VL53L1_GetTickCount(uint32_t *ptime_ms);
/**
* Register "wait for value" polling routine
* @param dev Pointer to device structure (device handle)
* @param timeout Timeout in [ms]
* @param i Register index value
* @param val Value to wait for
* @param mask Mask to be applied before comparison with value
* @param delay Polling delay between each read transaction in [ms]
* @return VL53L1_ERROR_NONE Success
* @return "Other error code" See ::VL53L1_Error
*/
VL53L1_Error VL53L1_WaitValueMaskEx(VL53L1_Dev_t *dev, uint32_t timeout, uint16_t i, uint8_t val,
uint8_t mask, uint32_t delay);
#ifdef __cplusplus
}
#endif
#endif