/** * \file b_drv_mcp4018.c * \version v0.0.1 * \date 2024-05-21 * \author miniminiminini (405553848@qq.com) * \brief * * Copyright (c) 2024 by miniminiminini. All Rights Reserved. */ /* Includes ----------------------------------------------*/ #include "drivers/inc/b_drv_mcp4018.h" #include "utils/inc/b_util_log.h" /** * \defgroup MCP4018_Private_FunctionPrototypes * \{ */ /** * } */ /** * \defgroup MCP4018_Exported_Variables * \{ */ /** * } */ /** * \defgroup MCP4018_Private_TypesDefinitions * \{ */ /** * } */ /** * \defgroup MCP4018_Private_Defines * \{ */ #define DRIVER_NAME MCP4018 /** * } */ /** * \defgroup MCP4018_Private_Macros * \{ */ /** * } */ /** * \defgroup MCP4018_Private_Variables * \{ */ bDRIVER_HALIF_TABLE(bMCP4018_HalIf_t, DRIVER_NAME); static uint8_t mcp4018_default_buf[1] = {MCP4018_DEFAULT_LEVEL}; /** * } */ /** * \defgroup MCP4018_Private_Functions * \{ */ static int _bMCP4018Write(bDriverInterface_t *pdrv, uint32_t off, uint8_t *pbuf, uint32_t len) { uint8_t tmp[1] = {0}; bDRIVER_GET_HALIF(_if, bMCP4018_HalIf_t, pdrv); if (len != 1) { b_log_e("len!= 1!!!"); return -1; } bHalI2CReadByte(_if, tmp, 1); if (tmp[0] == pbuf[0]) { b_log("MCP4018=%d,no need to write", tmp[0]); return len; } bHalI2CWriteByte(_if, pbuf, 1); return len; } static int _bMCP4018Read(bDriverInterface_t *pdrv, uint32_t off, uint8_t *pbuf, uint32_t len) { bDRIVER_GET_HALIF(_if, bMCP4018_HalIf_t, pdrv); if (len != 1) { b_log_e("len!= 1!!!"); return -1; } bHalI2CReadByte(_if, pbuf, 1); return len; } static int _bMCP4018Open(bDriverInterface_t *pdrv) { _bMCP4018Write(pdrv, 0, mcp4018_default_buf, 1); return 0; } static int _bMCP4018Close(bDriverInterface_t *pdrv) { _bMCP4018Write(pdrv, 0, mcp4018_default_buf, 1); return 0; } /** * } */ /** * \defgroup MCP4018_Exported_Functions * \{ */ int bMCP4018_Init(bDriverInterface_t *pdrv) { bDRIVER_STRUCT_INIT(pdrv, DRIVER_NAME, bMCP4018_Init); pdrv->read = _bMCP4018Read; pdrv->write = _bMCP4018Write; pdrv->open = _bMCP4018Open; pdrv->close = _bMCP4018Close; return 0; } bDRIVER_REG_INIT(B_DRIVER_MCP4018, bMCP4018_Init); /** * } */ /** * } */ /** * } */ /** * } */ /***** Copyright (c) 2024 miniminiminini *****END OF FILE*****/