Files
TAIXIN/sdk/include/hal/adc.h

202 lines
3.8 KiB
C
Raw Permalink Normal View History

#ifndef _HAL_ADC_H_
#define _HAL_ADC_H_
#ifdef __cplusplus
extern "C" {
#endif
/**
* @brief ADC ioctl_cmd type
*/
enum adc_ioctl_cmd {
ADC_IOCTL_SET_REF_TMP,
ADC_IOCTL_GET_VREF,
};
/**
* @brief ADC irq_flag type
*/
enum adc_irq_flag {
/*! Compatible version: V0;
*@ Describe:
*
*/
ADC_IRQ_FLAG_SAMPLE_DONE = BIT(0),
};
/* User interrupt handle */
typedef void (*adc_irq_hdl)(uint32 irq, uint32 channel, uint32 irq_data);
/* ADC api for user */
struct adc_device {
struct dev_obj dev;
};
struct adc_hal_ops{
struct devobj_ops ops;
int32(*open)(struct adc_device *adc);
int32(*close)(struct adc_device *adc);
int32(*add_channel)(struct adc_device *adc, uint32 channel);
int32(*delete_channel)(struct adc_device *adc, uint32 channel);
int32(*get_value)(struct adc_device *adc, uint32 channel, uint32 *raw_data);
int32(*ioctl)(struct adc_device *adc, enum adc_ioctl_cmd ioctl_cmd, uint32 param1, uint32 param2);
int32(*request_irq)(struct adc_device *adc, enum adc_irq_flag irq_flag, adc_irq_hdl irq_hdl, uint32 irq_data);
int32(*release_irq)(struct adc_device *adc, enum adc_irq_flag irq_flag);
};
/* ADC API functions */
/**
* @brief adc_open
*
* @Compatible version: V0;
*
* @note .
*
* @param adc The address of adc device in the RTOS.
* @param .
* @param .
*
* @return
* - RET_OK Success
* - RET_ERR Fail
*/
int32 adc_open(struct adc_device *adc);
/**
* @brief adc_close
*
* @Compatible version: V0;
*
* @note .
*
* @param adc The address of adc device in the RTOS.
* @param .
* @param .
*
* @return
* - RET_OK Success
* - RET_ERR Fail
*/
int32 adc_close(struct adc_device *adc);
/**
* @brief adc_add_channel
*
* @Compatible version: V0;
*
* @note .
*
* @param adc The address of adc device in the RTOS.
* @param .
* @param .
*
* @return
* - RET_OK Success
* - RET_ERR Fail
*/
int32 adc_add_channel(struct adc_device *adc, uint32 channel);
/**
* @brief adc_delete_channel
*
* @Compatible version: V0;
*
* @note .
*
* @param adc The address of adc device in the RTOS.
* @param .
* @param .
*
* @return
* - RET_OK Success
* - RET_ERR Fail
*/
int32 adc_delete_channel(struct adc_device *adc, uint32 channel);
/**
* @brief adc_get_value
*
* @Compatible version: V0;
*
* @note .
*
* @param adc The address of adc device in the RTOS.
* @param .
* @param .
*
* @return
* - RET_OK Success
* - RET_ERR Fail
*/
int32 adc_get_value(struct adc_device *adc, uint32 channel, uint32 *raw_data);
/**
* @brief adc_ioctl
*
* @Compatible version: V0;
*
* @note .
*
* @param adc The address of adc device in the RTOS.
* @param .
* @param .
*
* @return
* - RET_OK Success
* - RET_ERR Fail
*/
int32 adc_ioctl(struct adc_device *adc, enum adc_ioctl_cmd ioctl_cmd, uint32 param1, uint32 param2);
/**
* @brief adc_request_irq
*
* @Compatible version: V0;
*
* @note .
*
* @param adc The address of adc device in the RTOS.
* @param .
* @param .
*
* @return
* - RET_OK Success
* - RET_ERR Fail
*/
int32 adc_request_irq(struct adc_device *adc, enum adc_irq_flag irq_flag, adc_irq_hdl irq_hdl, uint32 irq_data);
/**
* @brief adc_release_irq
*
* @Compatible version: V0;
*
* @note .
*
* @param adc The address of adc device in the RTOS.
* @param .
* @param .
*
* @return
* - RET_OK Success
* - RET_ERR Fail
*/
int32 adc_release_irq(struct adc_device *adc, enum adc_irq_flag irq_flag);
int32 adc_get_vref(struct adc_device *adc, float *vref);
#ifdef __cplusplus
}
#endif
#endif