#include "yc11xx_ks.h" #include "yc11xx_gpio.h" #define KS_KEY_MAP_LEN 158 #define KS_SEL_MAP_LEN 20 #define KS_RAW_MAX 8 #define KB_KSCAN_COL_NUM 20 #define KB_KSCAN_ROW_NUM 7 #define KB_DELAY_COUNT 5 #define GET_RAW_KEY_SEL(y, n) HWRITE(CORE_GPIO_CONF + n, GPCFG_OUTPUT_LOW); \ hw_delay();\ y = ~ HREAD(CORE_GPIO_IN); \ hw_delay();\ HWRITE(CORE_GPIO_CONF + n, GPCFG_PULLUP);\ hw_delay(); tKSEVENT ksEvtPool = {0}; uint8_t *ksMap; uint8_t kscurrmult; uint8_t ksSelMapOld[KS_SEL_MAP_LEN] = {0}; uint8_t ksSelMapCheck[KS_SEL_MAP_LEN] = {0}; uint8_t ksSelMapCurr[KS_SEL_MAP_LEN] = {0}; uint8_t *col; uint8_t ghost = 0; uint8_t gRowSize = 0; uint8_t gColSize = 0; #define MAX(a,b) ((a)>(b)?(a):(b)) static uint8_t bit_count(uint8_t v) { unsigned char c; for (c = 0; v; c++) { v &= v - 1; } return c; } static void keyIn(uint8_t key) { uint8_t i = 0; for (i=0 ; i> 3; tgpionum = 1 << (col[i] & 7); REG_GPIO_PUP (tgroup) &= ~tgpionum; REG_GPIO_OE(tgroup) |= tgpionum; REG_GPIO_OUT(tgroup) &= ~tgpionum; } temp = REG_GPIO_IN(0); YC_GPIOWakeupL[0] = temp; YC_GPIOWakeupH[0] = ~temp; } */ void KS_ScanMatrix() { uint8_t i = 0; uint8_t j = 0; uint8_t temp = 0; uint8_t check = 0; uint8_t rawSel = 0; for (i=0; i2 && keyCount > MAX(colCount, rawCount)) { ghost = 1; } else { ghost = 0; } for (i=0; i>1; state = state>>1; } flag = 1; } } if (ksEvtPool.ksPool[0] ==0) { //scan for same row } else { //scan for same row } if (flag) { return &ksEvtPool; } else { return NULL; } }