NorthStar-Endurance-TestBench/EnduranceTestBench/nms_hal/hal_i2c.c

98 lines
3.7 KiB
C

/******************************************************************************
* @file hal_i2c.c
* @copyright Nehemis SARL reserves all rights even in the event of industrial
* property rights. We reserve all rights of disposal such as
* copying and passing on to third parties.
*
* @brief STM HAL layer wrapper class for I2C.
*
******************************************************************************/
/******************************************************************************
* Include Header Files
******************************************************************************/
#include "hal_i2c.h"
/* CubeMX */
#include "i2c.h"
/******************************************************************************
* Function Definitions
******************************************************************************/
uint32 HalI2CInit(void)
{
return NMS_ERR_NONE;
}
uint32 HalI2CWrite(MapHalI2cModule_en module_en, uint16 devAddr_u16, uint16 memAddr_u16, uint16 memAddrSize_u16, uint8 *pData_pu8, uint16 size_u16)
{
uint32 error_u32 = NMS_ERR_NONE;
HAL_StatusTypeDef halStatus_en = HAL_OK;
I2C_HandleTypeDef *targetModule_pst;
error_u32 = MapHalI2cModule(module_en, &targetModule_pst);
if (error_u32 == NMS_ERR_NONE)
{
halStatus_en = HAL_I2C_Mem_Write(targetModule_pst, devAddr_u16, memAddr_u16, memAddrSize_u16, pData_pu8, size_u16, HAL_MAX_DELAY);
switch (halStatus_en)
{
case HAL_BUSY: error_u32 = NMS_ERR_BUSY; break;
case HAL_TIMEOUT: error_u32 = NMS_ERR_TIMEOUT; break;
case HAL_ERROR: error_u32 = NMS_ERR_INTERNAL; break;
case HAL_OK: error_u32 = NMS_ERR_NONE; break;
default: error_u32 = NMS_ERR_UNKNOWN; break;
}
}
return error_u32;
}
uint32 HalI2CRead(MapHalI2cModule_en module_en, uint16 devAddr_u16, uint16 memAddr_u16, uint16 memAddrSize_u16, uint8 *pData_pu8, uint16 size_u16)
{
uint32 error_u32 = NMS_ERR_NONE;
HAL_StatusTypeDef halStatus_en = HAL_OK;
I2C_HandleTypeDef *targetModule_pst;
error_u32 = MapHalI2cModule(module_en, &targetModule_pst);
if (error_u32 == NMS_ERR_NONE)
{
halStatus_en = HAL_I2C_Mem_Read(targetModule_pst, devAddr_u16, memAddr_u16, memAddrSize_u16, pData_pu8, size_u16, HAL_MAX_DELAY);
switch (halStatus_en)
{
case HAL_BUSY: error_u32 = NMS_ERR_BUSY; break;
case HAL_TIMEOUT: error_u32 = NMS_ERR_TIMEOUT; break;
case HAL_ERROR: error_u32 = NMS_ERR_INTERNAL; break;
case HAL_OK: error_u32 = NMS_ERR_NONE; break;
default: error_u32 = NMS_ERR_UNKNOWN; break;
}
}
return error_u32;
}
uint32 HalI2CMasterTransmit(MapHalI2cModule_en module_en, uint16 devAddr_u16, uint8 *pData_pu8, uint16 size_u16)
{
uint32 error_u32 = NMS_ERR_NONE;
HAL_StatusTypeDef halStatus_en = HAL_OK;
I2C_HandleTypeDef *targetModule_pst;
error_u32 = MapHalI2cModule(module_en, &targetModule_pst);
if (error_u32 == NMS_ERR_NONE)
{
halStatus_en = HAL_I2C_Master_Transmit(targetModule_pst, devAddr_u16, pData_pu8, size_u16, HAL_MAX_DELAY);
switch (halStatus_en)
{
case HAL_BUSY: error_u32 = NMS_ERR_BUSY; break;
case HAL_TIMEOUT: error_u32 = NMS_ERR_TIMEOUT; break;
case HAL_ERROR: error_u32 = NMS_ERR_INTERNAL; break;
case HAL_OK: error_u32 = NMS_ERR_NONE; break;
default: error_u32 = NMS_ERR_UNKNOWN; break;
}
}
return error_u32;
}