/**
* @file AD5245_ATY.c
*
* @param Project DEVICE_GENERAL_ATY_LIB
*
* @author ATY
*
* @copyright
* - Copyright 2017 - 2023 MZ-ATY
* - This code follows:
* - MZ-ATY Various Contents Joint Statement -
*
* https://mengze.top/MZ-ATY_VCJS
* - CC 4.0 BY-NC-SA -
*
* https://creativecommons.org/licenses/by-nc-sa/4.0/
* - Your use will be deemed to have accepted the terms of this statement.
*
* @brief Familiar functions of AD5245 for all embedded device
*
* @version
* - 1_01_220927 > ATY
* -# Preliminary version, first Release
* - 1_02_231229 > ATY
* -# add multy addr and channel
* - 1_01_240111 > ATY
* -# add lock
********************************************************************************
*/
#ifndef __AD5245_ATY_C
#define __AD5245_ATY_C
#include "AD5245_ATY.h"
/******************************* For user *************************************/
/******************************************************************************/
/**
* @brief set AD5245 value
*
* @param value value of resistor
* @param dev device
* @return uint8_t
*/
uint8_t AD5245_SetValue(uint8_t value, struct AD5245_ATY_Dev* dev)
{
uint8_t errCode = 0;
uint8_t data_t[2] = {0};
__ATY_LOCK(dev);
// data_t[1] = value;
data_t[1] = (0xFF - value);
if(dev->addr != 0x2C && dev->addr != 0x2D)
dev->addr = (0x2C | dev->ad0);
errCode = dev->i2cProcess(dev->addr, data_t, 2, _ATY_RW_W);
if(dev->debugEnable == 1){
dev->LOG("\r\nAD5245 %02X ResSet: %03d | %d Ohm", dev->addr, value, (uint16_t)(((0xFF - value) * 1.0f * 10.0f / 256.0f) * 1000));
dev->LOG("\r\nAD5245 %02X set : %03d | %03d", dev->addr, data_t[0], data_t[1]);
}
__ATY_UNLOCK(dev);
return errCode;
}
/**
* @brief get AD5245 value
*
* @param value value of resistor
* @param dev device
* @return uint8_t
*/
uint8_t AD5245_GetValue(uint8_t* value, struct AD5245_ATY_Dev* dev)
{
uint8_t errCode = 0;
uint8_t data_t[2] = {0};
__ATY_LOCK(dev);
if(dev->addr != 0x2C && dev->addr != 0x2D)
dev->addr = (0x2C | dev->ad0);
errCode = dev->i2cProcess(dev->addr, data_t, 2, _ATY_RW_R);
*value = data_t[1];
if(dev->debugEnable == 1)
dev->LOG("\r\nAD5245 %02X receive: %03d | %03d", dev->addr, data_t[0], data_t[1]);
__ATY_UNLOCK(dev);
return errCode;
}
#endif /* __AD5245_ATY_C */
/************************************ etc *************************************/
// void LOG_ALL(uint8_t* str){ printf((const char*)str); }
/* init */
// uint8_t AD5245_1_I2C(uint8_t addr, uint8_t* data_t, uint8_t len, uint8_t rw){
// if(rw == _ATY_RW_W)
// return (uint8_t)HAL_I2C_Master_Transmit(&hi2c1, (addr << 1 | 0), data_t, len, 1000);
// else if(rw == _ATY_RW_R)
// return (uint8_t)HAL_I2C_Master_Receive(&hi2c1, (addr << 1 | 1), data_t, len, 1000);
// }
// struct AD5245_ATY_Dev AD5245_ATY_t_1 = {
// .addr = AD5245_ADDRESS,
// .i2cProcess = AD5245_1_I2C,
// .lock = _ATY_UNLOCKED,
// .debugEnable = 0,
// .LOG = printf
// };
/* use */
// AD5245_SetValue(0xF0, &AD5245_ATY_t_1);
// AD5245_GetValue(&getValue, &AD5245_ATY_t_1);
/******************************************************************************/
/******************************** End Of File *********************************/