/** ##########################################################################
**     Filename  : keyboard_drive_cfg.c
**     Project   : RGB LED
**     Module    :
**     Processor : Cypress CY8C4147AZI-S475
**     Version   : V1.0
**     Compiler  : PSoC Creator 4.2
**     Date/Time : 2019/10/08
**     Abstract  :
**
**     Contents  :
**
**
**     (c) Copyright dmdz Co.,Ltd
**  --------------------------------------------------------------------------
**               R E V I S I O N   H I S T O R Y
**  --------------------------------------------------------------------------
**  Date       Ver   Author             Description

**  ---------  ----  -----------------  --------------------------------------
** #########################################################################*/

/*****************************************************************************
* I N C L U D E   F I L E S
*****************************************************************************/


#include "adc.h"

#include "key_adc_driver.h"



//各通道，各物理按键的ad取值范围
const key_adc_range_cfg_s g_key_adc_range_cfg[KEY_ADC_CHANNEL_TOTALS][KEY_ADC_1CHANNEL_JUDGE_TOTALS] =
{
	//逻辑通道2  ,AD3, 物理AN3,  S11，S12，S13
	{
		{KEY_ADC_ORIGINAL_K3_IDLE_MIN,KEY_ADC_ORIGINAL_K3_IDLE_MAX,KEY_ADC_DEBOUNCE_TIME,0x00u},   /*不按的范围*/
		{KEY_ADC_ORIGINAL_K31_MIN,KEY_ADC_ORIGINAL_K31_MAX,KEY_ADC_DEBOUNCE_TIME,0x01u},		//S11有效
		{KEY_ADC_ORIGINAL_K32_MIN,KEY_ADC_ORIGINAL_K32_MAX,KEY_ADC_DEBOUNCE_TIME,0x02u},		//S12有效
		{KEY_ADC_ORIGINAL_K33_MIN,KEY_ADC_ORIGINAL_K33_MAX,KEY_ADC_DEBOUNCE_TIME,0x04u},		//S13有效
		{KEY_ADC_ORIGINAL_K3_FAULT1_MIN,KEY_ADC_ORIGINAL_K3_FAULT1_MAX,KEY_ADC_FAULT_TIME,0x80u},	//
		{KEY_ADC_ORIGINAL_K3_FAULT2_MIN,KEY_ADC_ORIGINAL_K3_FAULT2_MAX,KEY_ADC_FAULT_TIME,0x80u}	//
	},
	//逻辑通道3  AD2,物理AN2,  S9，S10
	{
		{KEY_ADC_ORIGINAL_K4_IDLE_MIN,KEY_ADC_ORIGINAL_K4_IDLE_MAX,KEY_ADC_DEBOUNCE_TIME,0x00u},   /*不按的范围*/
		{KEY_ADC_ORIGINAL_K41_MIN,KEY_ADC_ORIGINAL_K41_MAX,KEY_ADC_DEBOUNCE_TIME,0x01u},  	// S9有效
		{KEY_ADC_ORIGINAL_K42_MIN,KEY_ADC_ORIGINAL_K42_MAX,KEY_ADC_DEBOUNCE_TIME,0x02u},	//S10有效
		{KEY_ADC_ORIGINAL_K43_MIN,KEY_ADC_ORIGINAL_K43_MAX,KEY_ADC_DEBOUNCE_TIME,0x04u},	//S14有效
		{KEY_ADC_ORIGINAL_K4_FAULT1_MIN,KEY_ADC_ORIGINAL_K4_FAULT1_MAX,KEY_ADC_DEBOUNCE_TIME,0x80u},
		{KEY_ADC_ORIGINAL_K4_FAULT2_MIN,KEY_ADC_ORIGINAL_K4_FAULT2_MAX,KEY_ADC_DEBOUNCE_TIME,0x80u},
	},

	//逻辑通道4  AD1,物理AN1,	S7，S8
	{
		{KEY_ADC_ORIGINAL_K5_IDLE_MIN,KEY_ADC_ORIGINAL_K5_IDLE_MAX,KEY_ADC_DEBOUNCE_TIME,0x00u},   /*不按的范围*/
		{KEY_ADC_ORIGINAL_K51_MIN,KEY_ADC_ORIGINAL_K51_MAX,KEY_ADC_DEBOUNCE_TIME,0x01u},  	// S7有效
		{KEY_ADC_ORIGINAL_K52_MIN,KEY_ADC_ORIGINAL_K52_MAX,KEY_ADC_DEBOUNCE_TIME,0x02u},	//S8有效
		{KEY_ADC_ORIGINAL_K5_FAULT1_MIN,KEY_ADC_ORIGINAL_K5_FAULT1_MAX,KEY_ADC_DEBOUNCE_TIME,0x80u},
		{KEY_ADC_ORIGINAL_K5_FAULT1_MIN,KEY_ADC_ORIGINAL_K5_FAULT1_MAX,KEY_ADC_DEBOUNCE_TIME,0x80u},
		{KEY_ADC_ORIGINAL_K5_FAULT2_MIN,KEY_ADC_ORIGINAL_K5_FAULT2_MAX,KEY_ADC_DEBOUNCE_TIME,0x80u},
	},
	#if 0
	//逻辑通道5  AD1,物理AN0,	S8，S9
	{
		{KEY_ADC_ORIGINAL_K6_IDLE_MIN,KEY_ADC_ORIGINAL_K6_IDLE_MAX,KEY_ADC_DEBOUNCE_TIME,0x00u},   /*不按的范围*/
		{KEY_ADC_ORIGINAL_K61_MIN,KEY_ADC_ORIGINAL_K61_MAX,KEY_ADC_DEBOUNCE_TIME,0x01u},  	// S8有效
		{KEY_ADC_ORIGINAL_K62_MIN,KEY_ADC_ORIGINAL_K62_MAX,KEY_ADC_DEBOUNCE_TIME,0x02u},	//S9有效
		{KEY_ADC_ORIGINAL_K63_MIN,KEY_ADC_ORIGINAL_K63_MAX,KEY_ADC_DEBOUNCE_TIME,0x03u},	//S8,S9同时有效
		{KEY_ADC_ORIGINAL_K6_FAULT1_MIN,KEY_ADC_ORIGINAL_K6_FAULT1_MAX,KEY_ADC_DEBOUNCE_TIME,0x80u},
		{KEY_ADC_ORIGINAL_K6_FAULT2_MIN,KEY_ADC_ORIGINAL_K6_FAULT2_MAX,KEY_ADC_DEBOUNCE_TIME,0x80u},
	},
	//逻辑通道0--每个通道下有几个物理按键，取决于 硬件原理图上，AD7, 物理AN5,S4 S3 S1
	{
		{KEY_ADC_ORIGINAL_K1_IDLE_MIN,KEY_ADC_ORIGINAL_K1_IDLE_MAX,KEY_ADC_DEBOUNCE_TIME,0x00u},   /*空闲*/
		{KEY_ADC_ORIGINAL_K11_MIN,KEY_ADC_ORIGINAL_K11_MAX,KEY_ADC_DEBOUNCE_TIME,0x01u},		// S4有效
		{KEY_ADC_ORIGINAL_K12_MIN,KEY_ADC_ORIGINAL_K12_MAX,KEY_ADC_DEBOUNCE_TIME,0x02u},		// S3有效
		{KEY_ADC_ORIGINAL_K13_MIN,KEY_ADC_ORIGINAL_K13_MAX,KEY_ADC_DEBOUNCE_TIME,0x04u},		// S1有效
		{KEY_ADC_ORIGINAL_K1_FAULT1_MIN,KEY_ADC_ORIGINAL_K1_FAULT1_MAX,KEY_ADC_FAULT_TIME,0x80u},
		{KEY_ADC_ORIGINAL_K1_FAULT2_MIN,KEY_ADC_ORIGINAL_K1_FAULT2_MAX,KEY_ADC_FAULT_TIME,0x80u}
	},

	//逻辑通道1   AD8,物理AN8, S2,S5,S6,S7
	{
		{KEY_ADC_ORIGINAL_K2_IDLE_MIN,KEY_ADC_ORIGINAL_K2_IDLE_MAX,KEY_ADC_DEBOUNCE_TIME,0x00u},   /*空闲*/
		{KEY_ADC_ORIGINAL_K21_MIN,KEY_ADC_ORIGINAL_K21_MAX,KEY_ADC_DEBOUNCE_TIME,0x01u},	// S2有效
		{KEY_ADC_ORIGINAL_K22_MIN,KEY_ADC_ORIGINAL_K22_MAX,KEY_ADC_DEBOUNCE_TIME,0x02u},	//  S5有效
		{KEY_ADC_ORIGINAL_K23_MIN,KEY_ADC_ORIGINAL_K23_MAX,KEY_ADC_DEBOUNCE_TIME,0x04u},	//   S6有效
		{KEY_ADC_ORIGINAL_K24_MIN,KEY_ADC_ORIGINAL_K24_MAX,KEY_ADC_DEBOUNCE_TIME,0x08u},	//   S7有效
	//	{KEY_ADC_ORIGINAL_K2_FAULT1_MIN,KEY_ADC_ORIGINAL_K2_FAULT1_MAX,KEY_ADC_FAULT_TIME,0x80u}, //
		{KEY_ADC_ORIGINAL_K2_FAULT2_MIN,KEY_ADC_ORIGINAL_K2_FAULT2_MAX,KEY_ADC_FAULT_TIME,0x80u}   //
	},
	//AD5,物理AN7,	预留
	{
		{KEY_ADC_ORIGINAL_K7_IDLE_MIN,KEY_ADC_ORIGINAL_K7_IDLE_MAX,KEY_ADC_DEBOUNCE_TIME,0x00u},   /*不按的范围*/
		{KEY_ADC_ORIGINAL_K71_MIN,KEY_ADC_ORIGINAL_K71_MAX,KEY_ADC_DEBOUNCE_TIME,0x01u},  	// 有效
		{KEY_ADC_ORIGINAL_K72_MIN,KEY_ADC_ORIGINAL_K72_MAX,KEY_ADC_DEBOUNCE_TIME,0x02u},	//有效
		{KEY_ADC_ORIGINAL_K73_MIN,KEY_ADC_ORIGINAL_K73_MAX,KEY_ADC_DEBOUNCE_TIME,0x03u},	//同时有效
		{KEY_ADC_ORIGINAL_K7_FAULT1_MIN,KEY_ADC_ORIGINAL_K7_FAULT1_MAX,KEY_ADC_DEBOUNCE_TIME,0x80u},
		{KEY_ADC_ORIGINAL_K7_FAULT2_MIN,KEY_ADC_ORIGINAL_K7_FAULT2_MAX,KEY_ADC_DEBOUNCE_TIME,0x80u},
	},

	//AD6,物理AN6,	预留
	{
		{KEY_ADC_ORIGINAL_K8_IDLE_MIN,KEY_ADC_ORIGINAL_K8_IDLE_MAX,KEY_ADC_DEBOUNCE_TIME,0x00u},   /*不按的范围*/
		{KEY_ADC_ORIGINAL_K81_MIN,KEY_ADC_ORIGINAL_K81_MAX,KEY_ADC_DEBOUNCE_TIME,0x01u},  	// 有效
		{KEY_ADC_ORIGINAL_K82_MIN,KEY_ADC_ORIGINAL_K82_MAX,KEY_ADC_DEBOUNCE_TIME,0x02u},	//有效
		{KEY_ADC_ORIGINAL_K83_MIN,KEY_ADC_ORIGINAL_K83_MAX,KEY_ADC_DEBOUNCE_TIME,0x03u},	//同时有效
		{KEY_ADC_ORIGINAL_K8_FAULT1_MIN,KEY_ADC_ORIGINAL_K8_FAULT1_MAX,KEY_ADC_DEBOUNCE_TIME,0x80u},
		{KEY_ADC_ORIGINAL_K8_FAULT2_MIN,KEY_ADC_ORIGINAL_K8_FAULT2_MAX,KEY_ADC_DEBOUNCE_TIME,0x80u},
	},
	#endif
};







/*****************************************************************************
|Prototype		: void key_adc_drive_task(void)
|Called by		: None
|Preconditions		: None
|Input parameters	: None
|Output parameters	: None
|Return value		: None
|Description		: cycle task
*****************************************************************************/
void key_adc_driver_cfg_get_value(uint8_t channel_max,adc_result_t *p_value)
{
	u8 i;
	if(channel_max <= KEY_ADC_CHANNEL_TOTALS)
	{
		for(i=0u;i<KEY_ADC_CHANNEL_TOTALS;i++)
		{
			p_value[i] =adc_manage_get_voltage(i+ADC0_LOGIC_CHN_NORMAL_KEY_START);	/*PRQA S 2985*/  /*宏暫時為0*/  //adc_manage_get_adckey_vol
		}
	}
}


