/** * @file hv_drv_I2c.c * @brief i2c driver layer file. * @details This file provides the following functions: \n * (1) i2c master tx/rx \n * (2) i2c savle tx/rx \n * (3) i2c init \n * * @author HiView SoC Software Team * @version 1.0.0 * @date 2023-05-08 * @copyright Copyright(c),2023-5, Hiview Software. All rights reserved. * @par History: * *
Author Date Change Description *
HiView SoC Software Team 2023-05-08 init *
*/ #include "Common/hv_comm_DataType.h" #include "hv_comm_Define.h" #include "hv_cal_I2c.h" #include "hv_drv_I2c.h" #include "hv_chip_Config.h" #include "hv_vos_Comm.h" /** Initialize i2c * @param pstInitParam pointer to i2c configuration parameters * @return i2c handler */ HvCalI2c* Hv_Drv_I2C_Init(I2cInitParam *pstInitParam) { return Hv_Cal_I2C_Init(pstInitParam); } /** Set i2c transfer speed * @param pstSelf i2c handler * @param enI2cSpeed i2c transfer speed */ void Hv_Drv_I2c_Setpeed(HvCalI2c *pstSelf, I2cSpeed enI2cSpeed) { return Hv_Cal_I2C_Setpeed(pstSelf, enI2cSpeed); } /** De-initialize i2c * @param pstSelf i2c handler * @return result */ Status Hv_Drv_I2C_Cleanup(HvCalI2c *pstSelf) { return Hv_Cal_I2C_Cleanup(pstSelf); } USHORT16 Hv_Drv_I2C_GetRxDataCount(HvCalI2c *pstSelf) { return Hv_Cal_I2C_GetRxDataCount(pstSelf); } /** Transmits in master mode an amount of data in blocking mode. * @param pstSelf i2c handler * @param pstParam target device address * pointer to command data buffer * command length * pointer to data buffer to be transmited * amount of data to be sent * @param uiTimeout uiTimeout duration * @retval Status */ Status Hv_Drv_I2C_MasterPollingTransmit(HvCalI2c *pstSelf, I2cFuncParam *pstParam, UINT32 uiTimeout) { return Hv_Cal_I2C_MasterPollingTransmit(pstSelf, pstParam, uiTimeout); } /** Transmit in master mode an amount of data in non-blocking mode with interrupt * @param pstSelf i2c handler * @param pstParam target device address * pointer to command data buffer * command length * pointer to data buffer to be transmited * amount of data to be sent * @retval Status */ Status Hv_Drv_I2C_MasterIntTransmit(HvCalI2c *pstSelf, I2cFuncParam *pstParam) { return Hv_Cal_I2C_MasterIntTransmit(pstSelf, pstParam); } /** Receives in master mode an amount of data in blocking mode. * @param pstSelf i2c handler * @param pstParam target device address * pointer to command data buffer * command length * pointer to data buffer to be receive * amount of data to be receive * @param uiTimeout uiTimeout duration * @retval Status */ Status Hv_Drv_I2C_MasterPollingReceive(HvCalI2c *pstSelf, I2cFuncParam *pstParam, UINT32 uiTimeout) { return Hv_Cal_I2C_MasterPollingReceive(pstSelf, pstParam, uiTimeout); } /** Receive in master mode an amount of data in non-blocking mode with interrupt * @param pstSelf i2c handler * @param pstParam target device address * pointer to command data buffer * command length * pointer to data buffer to be receive * amount of data to be receive * @retval Status */ Status Hv_Drv_I2C_MasterIntReceive(HvCalI2c *pstSelf, I2cFuncParam *pstParam) { return Hv_Cal_I2C_MasterIntReceive(pstSelf, pstParam); } /** Transmits in slave mode an amount of data in blocking mode. * @param pstSelf i2c handler * @param pucData pointer to data buffer * @param usSize amount of data to be sent * @param uiTimeout uiTimeout duration * @retval Status */ Status Hv_Drv_I2C_SlavePollingTransmit(HvCalI2c *pstSelf, UCHAR8 *pucData, USHORT16 usSize, UINT32 uiTimeout) { return Hv_Cal_I2C_SlavePollingTransmit(pstSelf, pucData, usSize, uiTimeout); } /** Transmit in slave mode an amount of data in non-blocking mode with interrupt * @param pstSelf i2c handler * @param pucData pointer to data buffer * @param usSize amount of data to be sent * @retval Status */ Status Hv_Drv_I2C_SlaveIntTransmit(HvCalI2c *pstSelf, UCHAR8 *pucData, USHORT16 usSize) { return Hv_Cal_I2C_SlaveIntTransmit(pstSelf, pucData, usSize); } /** Receive in slave mode an amount of data in blocking mode * @param pstSelf i2c handler * @param pucData pointer to data buffer * @param usSize amount of data to be sent * @param uiTimeout uiTimeout duration * @retval Status */ Status Hv_Drv_I2C_SlavePollingReceive(HvCalI2c *pstSelf, UCHAR8 *pucData, USHORT16 usSize, UINT32 uiTimeout) { return Hv_Cal_I2C_SlavePollingReceive(pstSelf, pucData, usSize, uiTimeout); } /** Receive in slave mode an amount of data in non-blocking mode with interrupt * @param pstSelf i2c handler * @param pucData pointer to data buffer * @param usSize amount of data to be sent * @retval Status */ Status Hv_Drv_I2C_SlaveIntReceive(HvCalI2c *pstSelf, UCHAR8 *pucData) { return Hv_Cal_I2C_SlaveIntReceive(pstSelf, pucData); } /** Receive in slave mode an amount of data in non-blocking mode with interrupt * @param pstSelf i2c handler * @retval is or not */ BOOL Hv_Drv_I2C_TransferIsComplete(HvCalI2c *pstSelf) { return Hv_Cal_I2C_TransferIsComplete(pstSelf); }