[Feature][Modem]Update MTK MODEM V1.6 baseline version: MOLY.NR15.R3.MD700.IVT.MP1MR3.MP.V1.6
MTK modem version: MT2735_IVT_MOLY.NR15.R3.MD700.IVT.MP1MR3.MP.V1.6.tar.gz
RF modem version: NA
Change-Id: I45a4c2752fa9d1a618beacd5d40737fb39ab64fb
diff --git a/mcu/interface/driver/peripheral/dcl_adc.h b/mcu/interface/driver/peripheral/dcl_adc.h
new file mode 100644
index 0000000..643502d
--- /dev/null
+++ b/mcu/interface/driver/peripheral/dcl_adc.h
@@ -0,0 +1,693 @@
+/*****************************************************************************
+* Copyright Statement:
+* --------------------
+* This software is protected by Copyright and the information contained
+* herein is confidential. The software may not be copied and the information
+* contained herein may not be used or disclosed except with the written
+* permission of MediaTek Inc. (C) 2001
+*
+*****************************************************************************/
+
+/*****************************************************************************
+ *
+ * Filename:
+ * ---------
+ * dcl_adc.h
+ *
+ * Project:
+ * --------
+ * Maui
+ *
+ * Description:
+ * ------------
+ * Header file of DCL (Driver Common Layer) for ADC.
+ *
+ * Author:
+ * -------
+ * -------
+ *
+ *============================================================================
+ * HISTORY
+ * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *------------------------------------------------------------------------------
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ * removed!
+ * removed!
+ * removed!
+ *
+ *------------------------------------------------------------------------------
+ * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
+ *============================================================================
+ ****************************************************************************/
+#ifdef DCL_DEFINITION_STRUCT
+#ifndef __DCL_ADC_H_STRUCT__
+#define __DCL_ADC_H_STRUCT__
+
+#define DCL_ADC_ERR_CHANNEL_NO 50
+/*******************************************************************************
+ * DCL_OPTIONS for ADC
+ *******************************************************************************/
+#define ADC_OPTIONS
+
+ /*******************************************************************************
+ * DCL_CONFIGURE_T for ADC
+ *******************************************************************************/
+
+#define ADC_CONFIGS
+
+/*******************************************************************************
+ * DCL_EVENT for ADC
+ *******************************************************************************/
+#define ADC_EVENTS
+
+/*******************************************************************************
+ * DCL_CTRL_CMD for ADC
+ *******************************************************************************/
+#define ADC_CMDS \
+ ADC_CMD_CREATE_OBJECT, \
+ ADC_CMD_MODIFY_PARAM, \
+ ADC_CMD_START_MEASURE, \
+ ADC_CMD_STOP_MEASURE, \
+ ADC_CMD_SET_TIMER_PAGE_ALIGN, \
+ ADC_CMD_REGISTER_MEASURE_CB, \
+ ADC_CMD_REGISTER_COMPLETE_CB, \
+ ADC_CMD_GET_CHANNEL, \
+ ADC_CMD_SCHE_ID_GET_HANDLE, \
+ ADC_CMD_TRANSFORM_INTO_VOLT, \
+ ADC_CMD_TRANSFORM_INTO_TEMP, \
+ ADC_CMD_TRANSFORM_INTO_CURR, \
+ ADC_CMD_GET_SCHEDULER_PARAMETER, \
+ ADC_CMD_SET_CALIBRATION_DATA, \
+ ADC_CMD_READ_CALIBRATION_DATA, \
+ ADC_CMD_READ_CALIBRATION_INFORM_IN_USBBOOT, \
+ ADC_CMD_SET_MULTI_CHANNEL_READ,
+
+#define HADC_CMDS \
+ ADC_CMD_IMM_MEASURE, \
+ ADC_CMD_SYNC_MEASURE, \
+ ADC_CMD_TDMA_SYNC_SETUP, \
+ ADC_CMD_POWER, \
+ ADC_CMD_GET_DATA_2_META, \
+ ADC_CMD_GET_DATA, \
+ ADC_CMD_GET_META_DATA, \
+ ADC_CMD_GET_MAX_PHYSICAL_CH, \
+ ADC_CMD_GET_IMM_DATA_ON_BOOTING, \
+ ADC_CMD_GET_TEMP, \
+ ADC_CMD_GET_PHYSICAL_CHANNEL,
+
+/*******************************************************************************
+ * DCL_CTRL_DATA_T: Define the Control data structure for each module's command
+ *******************************************************************************/
+/* For ADC_CMD_CREATE_OBJECT command. */
+typedef struct
+{
+ DCL_UINT32 u4Period; // Measurement period (Uint is in Tick)
+ DCL_UINT32 u4Sapid;
+ DCL_UINT8 u1OwnerId; // Indicate the module to for ADC driver to notify the result
+ DCL_UINT8 u1AdcChannel; // To be measured physical ADC channel
+ DCL_UINT8 u1EvaluateCount; // Measurement count
+ DCL_BOOL fgSendPrimitive; // Whether to send message to owner module or NOT
+} ADC_CTRL_CREATE_OBJECT_T;
+
+/* For ADC_CMD_MODIFY_PARAM command. */
+typedef struct
+{
+ DCL_UINT32 u4Period; // Measurement period (Uint is in Tick)
+ DCL_UINT8 u1EvaluateCount; // Measurement count
+} ADC_CTRL_MODIFY_PARAM_T;
+/* For ADC_CMD_START_MEASURE command. */
+// ADC_CMD_START_MEASURE does NOT need parameters
+/* For ADC_CMD_STOP_MEASURE command. */
+// ADC_CMD_STOP_MEASURE does NOT need parameters
+/* For ADC_CMD_IMM_MEASURE command. */
+typedef struct
+{
+ DCL_UINT16 u2Channel; // The channel to be measured
+ DCL_UINT16 u2ADCValue; // Measured ADC value
+} ADC_CTRL_IMM_MEASURE_T;
+/* For ADC_CMD_SYNC_MEASURE command. */
+typedef struct
+{
+ DCL_UINT16 u2Channel; // The channel to be measured
+ DCL_UINT16 u2ADCValue; // Measured ADC value
+} ADC_CTRL_SYNC_MEASURE_T;
+/* For ADC_CMD_TDMA_SYNC_SETUP command. */
+typedef struct
+{
+ DCL_UINT16 u2Event0; // Event 0
+ DCL_UINT16 u2Event1; // Event 1
+} ADC_CTRL_TDMA_SYNC_SETUP_T;
+/* For ADC_CMD_POWER command. */
+typedef struct
+{
+ DCL_BOOL fgEnable; // TRUE: Power on ADC module, FALSE: Power off ADC module
+} ADC_CTRL_POWER_T;
+
+/* For ADC_CMD_GET_DATA_2_META command. */
+typedef struct
+{
+ DCL_UINT8 u1Channel; //measure physical channel
+ DCL_UINT16 u2MeaCount; //the counts of measurement
+ DCL_UINT32 u4ADCData; //return ADC value
+} ADC_CTRL_GET_DATA_2_META_T;
+
+/* For ADC_CMD_GET_DATA command. */
+typedef struct
+{
+ DCL_UINT8 u1Channel; //measure physical channel
+ DCL_UINT32 u4ADCData; //return ADC value
+} ADC_CTRL_GET_DATA_T;
+
+/* For ADC_CMD_GET_META_DATA command. */
+typedef struct
+{
+ DCL_UINT8 u1Channel; //measure physical channel
+ DCL_UINT16 u2MeaCount; //the counts of measurement
+ DCL_UINT32 u4ADCData; //return ADC value
+} ADC_CTRL_GET_META_DATA_T;
+
+/* For ADC_CMD_GET_IMM_DATA_ON_BOOTING command. */
+typedef struct
+{
+ DCL_UINT32 u4Channel; // Measure physical channel
+ DCL_UINT32 u4MeaCount; // The counts of measurement
+ DCL_UINT16 *u2ADCData; // Store ADC Value
+} ADC_CTRL_GET_IMM_DATA_ON_BOOTING_T;
+
+/* For ADC_CMD_GET_TEMP command. */
+typedef struct
+{
+ DCL_UINT16 u2Channel;
+ DCL_INT16 i2Temp; /* Signed integer for temperature show */
+} ADC_CTRL_GET_TEMP_T;
+
+//ADC_CMD_SET_TIMER_PAGE_ALIGN
+typedef struct
+{
+ DCL_BOOL fgPageAlign; // TRUE: set stack timer page alignment
+} ADC_CTRL_TIMER_ALIGN_T;
+
+//ADC_CMD_GET_CHANNEL
+typedef enum {
+ DCL_VBAT_ADC_CHANNEL = 0,
+ DCL_VISENSE_ADC_CHANNEL,
+ DCL_VBATTMP_ADC_CHANNEL,
+ DCL_BATTYPE_ADC_CHANNEL,
+ DCL_VCHARGER_ADC_CHANNEL,
+ DCL_PCBTMP_ADC_CHANNEL,
+ DCL_AUX_ADC_CHANNEL,
+ DCL_CHR_USB_ADC_CHANNEL,
+ DCL_OTG_VBUS_ADC_CHANNEL,
+ DCL_RFTMP_ADC_CHANNEL,
+ DCL_MDTMP_ADC_CHANNEL,
+ DCL_PMICTMP_ADC_CHANNEL,
+ DCL_MAX_ADC_CHANNEL
+} DCL_ADC_CHANNEL_TYPE_ENUM;
+
+typedef struct
+{
+ DCL_UINT8 u1AdcPhyCh;
+ DCL_UINT16 u2AdcName;
+} ADC_CTRL_GET_PHYSICAL_CHANNEL_T;
+
+//ADC_CMD_TRANSFORM_INTO_VOLT
+typedef struct
+{
+ DCL_DOUBLE d8AdcValue;
+ DCL_UINT32 u4Volt;
+ DCL_UINT8 u1AdcPhyCh;
+} ADC_CTRL_TRANSFORM_INTO_VOLT_T;
+
+//ADC_CMD_TRANSFORM_INTO_TEMP
+typedef struct
+{
+ DCL_UINT32 u4Volt;
+ DCL_UINT32 u4Temp;
+} ADC_CTRL_TRANSFORM_INTO_TEMP_T;
+
+//ADC_CMD_TRANSFORM_INTO_CURR
+typedef struct
+{
+ DCL_UINT32 u4Volt;
+ DCL_UINT32 u4Curr;
+} ADC_CTRL_TRANSFORM_INTO_CURR_T;
+
+//typedef void (*PFN_DCLSADC_MEASURE_CALLBACK)(DCL_INT32 handle);
+//ADC_CMD_REGISTER_MEASURE_CB
+typedef struct
+{
+ kal_timer_func_ptr pfMeasure_cb;
+} ADC_CTRL_REGISTER_MEASURE_CB_T;
+
+typedef void (*PFN_DCLSADC_COMPLETE_CALLBACK)(DCL_INT32 handle, DCL_INT32 volt_result, DCL_DOUBLE adc_result);
+typedef void (*PFN_DCLSADC_COMPLETE_MULTI_CALLBACK)(DCL_INT32 handle, DCL_INT32 *volt_array_result, DCL_DOUBLE *adc_array_result);
+//ADC_CMD_REGISTER_COMPLETE_CB;
+typedef struct
+{
+ PFN_DCLSADC_COMPLETE_CALLBACK pfComplete_cb;
+} ADC_CTRL_REGISTER_COMPLETE_CB_T;
+
+typedef struct
+{
+ PFN_DCLSADC_COMPLETE_MULTI_CALLBACK pfComplete_cb;
+} ADC_CTRL_REGISTER_COMPLETE_MULTI_CB_T;
+
+
+//ADC_CMD_GET_SCHEDULER_PARAMETER
+typedef struct{
+ DCL_UINT32 u4Ownerid;
+ DCL_UINT32 u4Sapid;
+ DCL_UINT32 u4Period;
+ DCL_UINT8 u1Adc_phy_id;
+ DCL_UINT8 u1Adc_logic_id;
+ DCL_UINT8 u1Evaluate_count; /*how many to average*/
+ DCL_BOOL bSend_primitive;
+ DCL_BOOL bConti_measure;
+ DCL_UINT32 u4Adc_sche_event_id;
+ void (*complete)(DCL_INT32 adc_handle, DCL_INT32 volt_result, DCL_DOUBLE adc_result);/*callback for upper layer*/
+}DCL_ADC_SCHEDULER_PARA_T;
+typedef struct
+{
+ DCL_UINT32 u4Handle;
+ DCL_ADC_SCHEDULER_PARA_T pPara;
+} ADC_CTRL_GET_SCHEDULER_PARAMETER_T;
+
+//ADC_CMD_GET_MAX_PHYSICAL_CH
+typedef struct
+{
+ DCL_UINT32 u4Adc_max_ch;
+} ADC_CTRL_GET_MAX_PHYSICAL_CH_T;
+
+//ADC_CMD_SET_CALIBRATION_DATA:
+typedef struct
+{
+ void *ilm_ptr;
+}ADC_CTRL_SET_CALIBRATION_DATA_T;
+
+//ADC_CMD_READ_CALIBRATION_DATA
+typedef struct
+{
+ DCL_INT32 i4ADCSlope[16]; //we do not want to include adc_hw.h here
+ DCL_INT32 i4ADCOffset[16]; //use 16 instead of ADC_MAX_CHANNEL
+}ADC_CTRL_READ_CALIBRATION_DATA_T;
+
+//ADC_CMD_SCHE_ID_GET_HANDLE
+typedef struct{
+ DCL_UINT32 u4Handle;
+ DCL_UINT32 u4Adc_sche_id;
+}DCL_CTRL_SCHE_ID_GET_HANDLE_T;
+
+typedef struct{
+ DCL_UINT8 bEnable;
+ DCL_UINT8 *u4ADC_ch_number;
+ DCL_UINT8 u4Adc_max_ch_number;
+ PFN_DCLSADC_COMPLETE_MULTI_CALLBACK complete_multi_cb;
+}DCL_MULTI_CHANNEL_PARA_T;
+
+#define ADC_CTRLS \
+ ADC_CTRL_CREATE_OBJECT_T rADCCreateObj; \
+ ADC_CTRL_MODIFY_PARAM_T rADCModifyParam; \
+ ADC_CTRL_IMM_MEASURE_T rADCImmMeasure; \
+ ADC_CTRL_SYNC_MEASURE_T rADCSyncMeasure; \
+ ADC_CTRL_TDMA_SYNC_SETUP_T rADCTDMASyncSetup; \
+ ADC_CTRL_POWER_T rADCPower; \
+ ADC_CTRL_TIMER_ALIGN_T rADCTimerAlign; \
+ ADC_CTRL_REGISTER_MEASURE_CB_T rADCRegisterMeasureCB; \
+ ADC_CTRL_REGISTER_COMPLETE_CB_T rADCRegisterCompleteCB; \
+ ADC_CTRL_GET_PHYSICAL_CHANNEL_T rADCGetPhyChannel; \
+ DCL_CTRL_SCHE_ID_GET_HANDLE_T rADCScheIdGetHandle; \
+ ADC_CTRL_TRANSFORM_INTO_VOLT_T rADCTransformVolt; \
+ ADC_CTRL_TRANSFORM_INTO_TEMP_T rADCTransformTemp; \
+ ADC_CTRL_TRANSFORM_INTO_CURR_T rADCTransformCurr; \
+ ADC_CTRL_GET_DATA_2_META_T rADCGetData2Meta; \
+ ADC_CTRL_GET_DATA_T rADCGetData; \
+ ADC_CTRL_GET_META_DATA_T rADCGetMetaData; \
+ ADC_CTRL_GET_SCHEDULER_PARAMETER_T rGetSchedulerPara; \
+ ADC_CTRL_GET_MAX_PHYSICAL_CH_T rADCGetMaxPhyCh; \
+ ADC_CTRL_SET_CALIBRATION_DATA_T rSetCalibrationData; \
+ ADC_CTRL_READ_CALIBRATION_DATA_T rReadCalibrationData; \
+ ADC_CTRL_GET_IMM_DATA_ON_BOOTING_T rGetImmDataOnBooting; \
+ ADC_CTRL_GET_TEMP_T rGetTempData; \
+ DCL_MULTI_CHANNEL_PARA_T rMultiChannelPara;
+#endif // #ifndef __DCL_ADC_H_STRUCT__
+#endif // #ifdef DCL_DEFINITION_STRUCT
+
+#ifdef DCL_DEFINITION_PROTOTYPE
+#ifndef __DCL_ADC_H_PROTOTYPE__
+#define __DCL_ADC_H_PROTOTYPE__
+
+/*************************************************************************
+* FUNCTION
+* DclSADC_Initialize
+*
+* DESCRIPTION
+* This function is to initialize SW ADC module
+*
+* PARAMETERS
+* None
+*
+* RETURNS
+* STATUS_OK
+*
+*************************************************************************/
+extern DCL_STATUS DclSADC_Initialize(void);
+/*************************************************************************
+* FUNCTION
+* DclSADC_Open
+*
+* DESCRIPTION
+* This function is to open the SW ADC module and return a handle
+*
+* PARAMETERS
+* dev: only valid for DCL_ADC
+* flags: no sepcial flags is needed. Please use FLAGS_NONE
+*
+* RETURNS
+* DCL_HANDLE_INVALID: Open failed
+* Other value: A valid handle
+*
+*************************************************************************/
+extern DCL_HANDLE DclSADC_Open(DCL_DEV dev, DCL_FLAGS flags);
+/*************************************************************************
+* FUNCTION
+* DclSADC_ReadData
+*
+* DESCRIPTION
+* This function is not supported for the ADC module now.
+*
+* PARAMETERS
+* N/A
+*
+* RETURNS
+* STATUS_UNSUPPORTED
+*
+*************************************************************************/
+extern DCL_STATUS DclSADC_ReadData(DCL_HANDLE handle, DCL_BUFF *buff, DCL_BUFF_LEN buf_len, DCL_OPTIONS options);
+/*************************************************************************
+* FUNCTION
+* DclSADC_WriteData
+*
+* DESCRIPTION
+* This function is not supported for the ADC module now.
+*
+* PARAMETERS
+* N/A
+*
+* RETURNS
+* STATUS_UNSUPPORTED
+*
+*************************************************************************/
+extern DCL_STATUS DclSADC_WriteData(DCL_HANDLE handle, DCL_BUFF *buff, DCL_BUFF_LEN buf_len, DCL_OPTIONS options);
+/*************************************************************************
+* FUNCTION
+* DclSADC_Configure
+*
+* DESCRIPTION
+* This function is not supported for the ADC module now.
+*
+* PARAMETERS
+* N/A
+*
+* RETURNS
+* STATUS_UNSUPPORTED
+*
+*************************************************************************/
+extern DCL_STATUS DclSADC_Configure(DCL_HANDLE handle, DCL_CONFIGURE_T *configure);
+/*************************************************************************
+* FUNCTION
+* DclSADC_RegisterCallback
+*
+* DESCRIPTION
+* This function is not supported for the ADC module now.
+*
+* PARAMETERS
+* N/A
+*
+* RETURNS
+* STATUS_UNSUPPORTED
+*
+*************************************************************************/
+extern DCL_STATUS DclSADC_RegisterCallback(DCL_HANDLE handle, DCL_EVENT event, PFN_DCL_CALLBACK callback);
+/*************************************************************************
+* FUNCTION
+* DclSADC_Control
+*
+* DESCRIPTION
+* This function is to send command to control the SW ADC module.
+*
+* PARAMETERS
+* handle: A valid handle return by DclSADC_Open()
+* cmd: A control command for ADC module
+* 1. ADC_CMD_CREATE_OBJECT: to create measurement object
+* 2. ADC_CMD_MODIFY_PARAM: to change measurement parameters
+* 3. ADC_CMD_START_MEASURE: to start measurement item
+* 4. ADC_CMD_STOP_MEASURE: to stop measurement item
+* data: The data of the control command
+* 1. ADC_CMD_CREATE_OBJECT: pointer to a ADC_CTRL_CREATE_OBJECT_T structure
+* 2. ADC_CMD_MODIFY_PARAM: pointer to a ADC_CTRL_MODIFY_PARAM_T structure
+* 3. ADC_CMD_START_MEASURE: a null pointer
+* 4. ADC_CMD_STOP_MEASURE: a null pointer
+*
+* RETURNS
+* STATUS_OK: command is executed successfully.
+* STATUS_FAIL: command is failed.
+* STATUS_INVALID_CMD: It's a invalid command.
+*
+*************************************************************************/
+extern DCL_STATUS DclSADC_Control(DCL_HANDLE handle, DCL_CTRL_CMD cmd, DCL_CTRL_DATA_T *data);
+/*************************************************************************
+* FUNCTION
+* DclSADC_Close
+*
+* DESCRIPTION
+* This function is to close the SW ADC module.
+*
+* PARAMETERS
+* handle: the returned handle value of DclSADC_Open
+*
+* RETURNS
+* STATUS_OK
+*
+*************************************************************************/
+extern DCL_STATUS DclSADC_Close(DCL_HANDLE handle);
+
+/*************************************************************************
+* FUNCTION
+* DclHADC_Initialize
+*
+* DESCRIPTION
+* This function is to initialize Hardware ADC module
+*
+* PARAMETERS
+* None
+*
+* RETURNS
+* STATUS_OK
+*
+*************************************************************************/
+extern DCL_STATUS DclHADC_Initialize(void);
+/*************************************************************************
+* FUNCTION
+* DclHADC_Open
+*
+* DESCRIPTION
+* This function is to open the Hardware ADC module and return a handle
+*
+* PARAMETERS
+* dev: only valid for Hardware DCL_ADC
+* flags: no sepcial flags is needed. Please use FLAGS_NONE
+*
+* RETURNS
+* DCL_HANDLE_INVALID: Open failed
+* Other value: A valid handle
+*
+*************************************************************************/
+extern DCL_HANDLE DclHADC_Open(DCL_DEV dev, DCL_FLAGS flags);
+/*************************************************************************
+* FUNCTION
+* DclHADC_ReadData
+*
+* DESCRIPTION
+* This function is not supported for the ADC module now.
+*
+* PARAMETERS
+* N/A
+*
+* RETURNS
+* STATUS_UNSUPPORTED
+*
+*************************************************************************/
+extern DCL_STATUS DclHADC_ReadData(DCL_HANDLE handle, DCL_BUFF *buff, DCL_BUFF_LEN buf_len, DCL_OPTIONS options);
+/*************************************************************************
+* FUNCTION
+* DclHADC_WriteData
+*
+* DESCRIPTION
+* This function is not supported for the ADC module now.
+*
+* PARAMETERS
+* N/A
+*
+* RETURNS
+* STATUS_UNSUPPORTED
+*
+*************************************************************************/
+extern DCL_STATUS DclHADC_WriteData(DCL_HANDLE handle, DCL_BUFF *buff, DCL_BUFF_LEN buf_len, DCL_OPTIONS options);
+/*************************************************************************
+* FUNCTION
+* DclHADC_Configure
+*
+* DESCRIPTION
+* This function is not supported for the ADC module now.
+*
+* PARAMETERS
+* N/A
+*
+* RETURNS
+* STATUS_UNSUPPORTED
+*
+*************************************************************************/
+extern DCL_STATUS DclHADC_Configure(DCL_HANDLE handle, DCL_CONFIGURE_T *configure);
+/*************************************************************************
+* FUNCTION
+* DclHADC_RegisterCallback
+*
+* DESCRIPTION
+* This function is not supported for the ADC module now.
+*
+* PARAMETERS
+* N/A
+*
+* RETURNS
+* STATUS_UNSUPPORTED
+*
+*************************************************************************/
+extern DCL_STATUS DclHADC_RegisterCallback(DCL_HANDLE handle, DCL_EVENT event, PFN_DCL_CALLBACK callback);
+/*************************************************************************
+* FUNCTION
+* DclHADC_Control
+*
+* DESCRIPTION
+* This function is to send command to control the Hardware ADC module.
+*
+* PARAMETERS
+* handle: A valid handle return by DclHADC_Open()
+* cmd: A control command for ADC module
+* 1. ADC_CMD_IMM_MEASURE: to perform a immediate mode measurement (Register control only, not include power setting)
+* 2. ADC_CMD_SYNC_MEASURE: to perform a sync mode measurement (Register control only, not include power setting)
+* 3. ADC_CMD_TDMA_SYNC_SETUP: to setup TDMA sync mode parameters
+* 4. ADC_CMD_POWER: to turn on/off ADC module power
+* data: The data of the control command
+* 1. ADC_CMD_IMM_MEASURE: pointer to a ADC_CTRL_IMM_MEASURE_T structure
+* 2. ADC_CMD_SYNC_MEASURE: pointer to a ADC_CTRL_SYNC_MEASURE_T structure
+* 3. ADC_CMD_TDMA_SYNC_SETUP: pointer to a ADC_CTRL_TDMA_SYNC_SETUP_T structure
+* 4. ADC_CMD_POWER: pointer to a ADC_CTRL_POWER_T structure
+*
+* RETURNS
+* STATUS_OK: command is executed successfully.
+* STATUS_FAIL: command is failed.
+* STATUS_INVALID_CMD: It's a invalid command.
+*
+*************************************************************************/
+extern DCL_STATUS DclHADC_Control(DCL_HANDLE handle, DCL_CTRL_CMD cmd, DCL_CTRL_DATA_T *data);
+/*************************************************************************
+* FUNCTION
+* DclHADC_Close
+*
+* DESCRIPTION
+* This function is to close the Hardware ADC module.
+*
+* PARAMETERS
+* handle: the returned handle value of HDclADC_Open
+*
+* RETURNS
+* STATUS_OK
+*
+*************************************************************************/
+extern DCL_STATUS DclHADC_Close(DCL_HANDLE handle);
+
+#endif // #ifndef __DCL_ADC_H_PROTOTYPE__
+#endif // #ifdef DCL_DEFINITION_PROTOTYPE