📄 halkey.c
字号:
/****************************************************************
* Viaon Technology (Suzhou) Co.,Ltd
*
* Copyright 2007, Viaon Technology (Suzhou) Co.,Ltd,Suzhou,China
* All rights reserved.
*
*
* Filename: halmatrixkey.c
*
* Programmer: Greg
*
* Created: 1/2/2008
*
* Description: public functions
*
*
* Change History (most recent first): 2008.1.2
****************************************************************/
//Key Scan through GPIO pins.
#include "utiltypedef.h"
#include "va4010reg.h"
#include "common.h"
#include "halkey.h"
extern volatile BYTE data byGap;
extern volatile BYTE data SongLocateTick;
BOOL data IsJumpFlag = FALSE;
static BYTE data gbyKeyFSM = KEY_FSM_IDLE;
void halKeyFSM(void)
{
//#if (DIGITAL_SHOW==DIGITAL_SHOW_DLED)
#if(BOARD_ID == EVB_V1)
//#if 0
KEY_IN_ENABLE();
// KEY_PULL_UP();
switch(gbyKeyFSM){
case KEY_FSM_IDLE:{
byGap = 0; //reset gap counter
if(KEY_Stop == 0){ //key down
gbyKeyFSM = KEY_FSM_STOP;
}else if(KEY_FsVu == 0){
gbyKeyFSM = KEY_FSM_FSVU;
}else if(KEY_RsVd == 0){
gbyKeyFSM = KEY_FSM_RSVD;
}else if(KEY_PlayPause == 0){
gbyKeyFSM = KEY_FSM_PLAYPAUSE;
}
break;
}
case KEY_FSM_STOP:{
if(KEY_Stop == 0){
break; //FSM state not change
}
//key up
gbyKeyFSM = KEY_FSM_IDLE;
if(byGap >=KEY_STABLE_CNT){ // A valid key press
//UartOutText("-I-: KEY_FSM_FMCH \r\n");
keystatus = KEY_STATUS_STOP;
}
break;
}
case KEY_FSM_FSVU:{
if(KEY_FsVu == 0){
#if 0
if(byGap>KEY_STABLE_2S){
//UartOutText("-I-: KEY_FSM_FSVU 2S \r\n");
//gbyKeyFSM = KEY_FSM_FSVU_2S;
keystatus = KEY_STATUS_VOLUP;
byGap = KEY_STABLE_2S -KEY_SAMPLE_CNT; //byGap = 0;
}
#endif
break; //FSM state not change
}
gbyKeyFSM = KEY_FSM_IDLE;
if(byGap >=KEY_STABLE_CNT){
UartOutText("-I-: KEY_FSM_FSVU \r\n");
keystatus = KEY_STATUS_FSEEK;
IsJumpFlag = TRUE;
SongLocateTick = 0;
}
break;
}
case KEY_FSM_RSVD:{
if(KEY_RsVd == 0){
#if 0
if(byGap>KEY_STABLE_2S){
//UartOutText("-I-: KEY_FSM_FSVU 2S \r\n");
//gbyKeyFSM = KEY_FSM_RSVD_2S;
keystatus = KEY_STATUS_VOLDOWN;
byGap = KEY_STABLE_2S -KEY_SAMPLE_CNT; //byGap = 0;
}
#endif
break; //FSM state not change
}
gbyKeyFSM = KEY_FSM_IDLE;
if(byGap >=KEY_STABLE_CNT){
//UartOutText("-I-: KEY_FSM_RSVD \r\n");
keystatus = KEY_STATUS_RSEEK;
IsJumpFlag = TRUE;
SongLocateTick = 0;
}
break;
}
case KEY_FSM_PLAYPAUSE:{
if(KEY_PlayPause == 0){
break; //FSM state not change
}
gbyKeyFSM = KEY_FSM_IDLE;
if(byGap >=KEY_STABLE_CNT){ // A valid key press
//UartOutText("-I-: KEY_FSM_PLAYSTOP \r\n");
keystatus = KEY_STATUS_PLAYPAUSE;
}
break;
}
break;
}
#elif (BOARD_ID == HX_001)
KEY_IN_ENABLE();
switch(gbyKeyFSM){
case KEY_FSM_IDLE:{
byGap = 0; //reset gap counter
if(KEY_Stop == 0){ //key down
gbyKeyFSM = KEY_FSM_STOP;
}else if(KEY_FsVu == 0){
gbyKeyFSM = KEY_FSM_FSVU;
}else if(KEY_RsVd == 0){
gbyKeyFSM = KEY_FSM_RSVD;
}else if(KEY_PlayPause == 0){
gbyKeyFSM = KEY_FSM_PLAYPAUSE;
}
break;
}
case KEY_FSM_STOP:{
if(KEY_Stop == 0){
break; //FSM state not change
}
//key up
gbyKeyFSM = KEY_FSM_IDLE;
if(byGap >=KEY_STABLE_CNT){ // A valid key press
//UartOutText("-I-: KEY_FSM_FMCH \r\n");
keystatus = KEY_STATUS_STOP;
}
break;
}
case KEY_FSM_FSVU:{
if(KEY_FsVu == 0){
#if 0
if(byGap>KEY_STABLE_2S){
//UartOutText("-I-: KEY_FSM_FSVU 2S \r\n");
//gbyKeyFSM = KEY_FSM_FSVU_2S;
keystatus = KEY_STATUS_VOLUP;
byGap = KEY_STABLE_2S -KEY_SAMPLE_CNT; //byGap = 0;
}
#endif
break; //FSM state not change
}
gbyKeyFSM = KEY_FSM_IDLE;
if(byGap >=KEY_STABLE_CNT){
UartOutText("-I-: KEY_FSM_FSVU \r\n");
keystatus = KEY_STATUS_FSEEK;
IsJumpFlag = TRUE;
SongLocateTick = 0;
}
break;
}
case KEY_FSM_RSVD:{
if(KEY_RsVd == 0){
#if 0
if(byGap>KEY_STABLE_2S){
//UartOutText("-I-: KEY_FSM_FSVU 2S \r\n");
//gbyKeyFSM = KEY_FSM_RSVD_2S;
keystatus = KEY_STATUS_VOLDOWN;
byGap = KEY_STABLE_2S -KEY_SAMPLE_CNT; //byGap = 0;
}
#endif
break; //FSM state not change
}
gbyKeyFSM = KEY_FSM_IDLE;
if(byGap >=KEY_STABLE_CNT){
//UartOutText("-I-: KEY_FSM_RSVD \r\n");
keystatus = KEY_STATUS_RSEEK;
IsJumpFlag = TRUE;
SongLocateTick = 0;
}
break;
}
case KEY_FSM_PLAYPAUSE:{
if(KEY_PlayPause == 0){
break; //FSM state not change
}
gbyKeyFSM = KEY_FSM_IDLE;
if(byGap >=KEY_STABLE_CNT){ // A valid key press
//UartOutText("-I-: KEY_FSM_PLAYSTOP \r\n");
keystatus = KEY_STATUS_PLAYPAUSE;
}
break;
}
break;
}
#endif
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -