/**
 *@file    sr_adc.h
 *@brief   ADC抽象接口头文件
 *@details 提供adc相关抽象接口、结构体
 *@copyright Copyright (c) 2024 lierda. All rights reserved.
 *@author  Lierda-RDC
 *@date    2024-04-18
 *@example ZhaoyangSDK\example\pal\hal\adc_example.c
 */
#ifndef _DEV_ADC_H
#define _DEV_ADC_H

#include "sr_device.h"

#include "sr_bsp_adc.h"

/** @defgroup ADC_CHN_ID  ADC通道ID
  * @{
  */
#define SR_ADC_CHN0     BSP_ADC_CHN0   
#define SR_ADC_CHN1     BSP_ADC_CHN1
#define SR_ADC_CHN2     BSP_ADC_CHN2    
#define SR_ADC_CHN3     BSP_ADC_CHN3
#define SR_ADC_CHN4     BSP_ADC_CHN4    
#define SR_ADC_CHN5     BSP_ADC_CHN5
#define SR_ADC_CHN6     BSP_ADC_CHN6    
#define SR_ADC_CHN7     BSP_ADC_CHN7
#define SR_ADC_CHN8     BSP_ADC_CHN8    
#define SR_ADC_CHN9     BSP_ADC_CHN9
#define SR_ADC_CHN10    BSP_ADC_CHN10     
#define SR_ADC_CHN11    BSP_ADC_CHN11
#define SR_ADC_CHN12    BSP_ADC_CHN12     
#define SR_ADC_CHN13    BSP_ADC_CHN13
#define SR_ADC_CHN14    BSP_ADC_CHN14     
#define SR_ADC_CHN15    BSP_ADC_CHN15
#define SR_ADC_CHN16    BSP_ADC_CHN16     
#define SR_ADC_CHN17    BSP_ADC_CHN17
#define SR_ADC_CHN18    BSP_ADC_CHN18     
#define SR_ADC_CHN19    BSP_ADC_CHN19

/**
  * @}
  */

/**
 * @brief ADC设备结构体
 */
typedef struct SR_ADC_DEV
{
	SR_DEVICE_T parent; /*!< 父设备结构体 */
	

} SR_ADC_DEV_T;

/*****************抽象接口*****************************************/
/**
 * @brief 打开指定的ADC设备
 *
 * @param[in] adcId   ADC设备ID，SR_ADC_ID_E枚举类型
 *
 * @return 成功返回ADC设备指针，失败返回SR_NULL
 */
#define SR_HalAdcOpen(adcId) BspAdcOpen(adcId)

/**
 * @brief 关闭指定的ADC设备,释放内部资源
 *
 * @param[in] dev ADC设备指针，SR_DEVICE_T *类型
 *
 * @return 成功返回0，失败返回负值错误码
 */
#define SR_HalAdcClose(dev) BspAdcClose(dev)

/**
 * @brief 从ADC通道读取原始数字量和转换值
 * @note  电压单位：mv        温度通道单位：°C
 * @param[in]  dev    ADC设备指针，SR_DEVICE_T *类型
 * @param[in]  chn    ADC通道
 * @param[out] vRaw   原始数字量
 * @param[out] vCvt   转换值，为电压或温度值
 *
 * @return 0：成功  负值：失败
 */
#define SR_HalAdcRead(dev, chn, vRaw,vCvt) BspAdcRead(dev, chn, vRaw,vCvt)




/**
 * @brief 使能/禁止ADC设备的某个通道
 * @note  一些平台没有通道概念，则不支持该接口
 * @param[in] dev ADC设备指针，SR_DEVICE_T *类型
 * @param[in] chn ADC通道ID
 * @param[in] isEnable  使能/禁止。1：使能   0：禁止
 *
 * @return 成功返回0，失败返回负值错误码
 */
#define SR_HalAdcChnEnable(dev,chn,isEnable)  BspAdcChnEnable(dev,chn,isEnable)



#if  0

/**
 * @brief 从ADC通道读取原始数字量转换后的值
 *        一般为电压值，CPU通道返回的温度值
 *
 * @param[in] dev    ADC设备指针，SR_DEVICE_T *类型
 * @param[in] chn    ADC通道
 * @param[out] value 数字量转换后的值
 *
 * @return 成功返回0，失败返回负值错误码
 */
#define SR_HalAdcReadCvt(dev, chn, value) BspAdcReadCvt(dev, chn, value)

/**
 * @brief 从ADC通道读取原始数字量    
 *
 * @param[in] dev    ADC设备指针，SR_DEVICE_T *类型
 * @param[in] chn    ADC通道
 * @param[out] value 原始数字量
 *
 * @return 成功返回0，失败返回负值错误码
 */
#define SR_HalAdcReadRaw(dev, chn, value) BspAdcReadRaw(dev, chn, value)
#endif




#endif
