📄 fmkey.c
字号:
/********************************************************************************** Copyright (C),2004-2007, Fuzhou Rockchip Electronics Co.,Ltd.* All Rights Reserved**Description: FM Module 按键处理程序*$Header: /cvs_server/mp3_project/RK2608_4G_DEMO/FM/FmKey.c,v 1.3 2007/04/30 03:31:29 zyz Exp $$Author: Eric Xie$Date: 2007/04/30 03:31:29 $ $Revision: 1.9 Release$*********************************************************************************/#include <creg.h>#include "Macro.h"#include "Global.h"#include "MsgDef.h"#include "Resource.h"#include "KeyMacro.h"#include "KeyGlobal.h"#include "BrowserMacro.h"#ifdef FM_MODULE#define _IN_FM_KEY#include "FmGlobal.h"//******************************************************************************/*GlobalFmVar.FmState = 0 手动GlobalFmVar.FmState = 1 自动GlobalFmVar.FmState = 2 存台GlobalFmVar.FmState = 3 预设GlobalFmVar.FmState = 4 删除GlobalFmVar.FmState = 255 菜单*/void FmFunKeyProc(void);void FmMenuKeyProc(void);void FmListKeyProc(void);void FmDialogKeyProc(void);/********************************************************************************** Copyright (C),2004-2007, Fuzhou Rockchip Electronics Co.,Ltd.* Function name : FmKeyProc()* Author: ZHengYongzhi* Description: FM 模块按键处理程序* * Input: * Output: * Return: * Calls: FmMenuKeyProc(),FmListKeyProc(),FmDialogKeyProc(),FmFunKeyProc()** History: <author> <time> <version> * ZhengYongzhi 2006/01/01 Ver1.0* desc: ORG* --------------------------------------------------------------------* ZhengYongzhi 2007-5-7 Ver1.9* desc: 添加注释*********************************************************************************/__attribute__((section(".fm_text,\"ax\"")))void FmKeyProc(void){ if(KeyFlag.bc.bKeyProssed == 0) { return; } KeyFlag.bc.bKeyProssed = 0; if (SystemInfo.bc.bHoldOn) { return; } if (Fun1MsgArray[1] == MSG_FUNCTION1_FM_MENU) { FmMenuKeyProc(); } else if ((Fun1MsgArray[1] == MSG_FUNCTION1_FM_SAVE) || (Fun1MsgArray[1] == MSG_FUNCTION1_FM_DEL)) { FmListKeyProc(); } else if (Fun1MsgArray[1] == MSG_FUNCTION1_FM_DIALOG) { FmDialogKeyProc(); } else { FmFunKeyProc(); }}/********************************************************************************** Copyright (C),2004-2007, Fuzhou Rockchip Electronics Co.,Ltd.* Function name : FmFunKeyProc()* Author: ZHengYongzhi* Description: FM 主界面按键操作处理程序* * Input: * Output: * Return: * Calls: ** History: <author> <time> <version> * ZhengYongzhi 2006/01/01 Ver1.0* desc: ORG* --------------------------------------------------------------------* ZhengYongzhi 2007-5-7 Ver1.9* desc: 添加注释*********************************************************************************/__attribute__((section(".fm_text,\"ax\"")))void FmFunKeyProc(void){ unsigned int i; switch(KeyVal) {//---------------------- REC KEY ---------------------------//---------------------- POWER KEY --------------------------- case KEY_VAL_POWER_SHORT_UP: { if (GlobalFmVar.FmState == FM_STATE_AUTO) { break; } DisplayFlag = DISP_ENCODE; Fun1MsgArray[0] = MSG_FUNCTION1_NONE; Sche1MsgArray[0] = MSG_SCHEDULER1_NONE; PreviousScheduler1Msg = MSG_SCHEDULER1_NONE; Sys1InitFlag.bc.bFmSysInitEnable = 1; Fun2ModuleChange(); PostSche1Message(MSG_SCHEDULER1_ENCODE); PostFun1Message(MSG_FUNCTION1_ENCODE_PROC , MSG_FUNCTION1_ENC_INIT , ENCODE_FM_REC ,0,0); break; }//--------------------- MENU KEY --------------------------- case KEY_VAL_MENU_PRESS_START: { if (GlobalFmVar.FmState == FM_STATE_AUTO) { break; } Sys1InitFlag.bc.bFmSysInitEnable = 1; Fun1ModuleChange();//Added by Eric Xie,2007.8.6. MainMenuState = 0; DisplayFlag = DISP_MENU; PreDisplayFlag = DisplayFlag; break; } case KEY_VAL_MENU_SHORT_UP: //进入FM菜单 { if (GlobalFmVar.FmState == FM_STATE_AUTO) { break; } KeyReset(); FmFunctionSele = GlobalFmVar.FmState;//FM_STATE_MANUAL; FmDisplayFlag |= (FM_DISPFLAG_SUBMENU_BK | FM_DISPFLAG_SUBMENU_SEL); PostFun1Message(MSG_FUNCTION1_FM, MSG_FUNCTION1_FM_MENU,0,0,0); break; }//--------------------- UP KEY ----------------------------- case KEY_VAL_UP_DOWN: case KEY_VAL_UP_PRESS: { if (GlobalFmVar.FmState == FM_STATE_AUTO) { break; } FmDisplayFlag |= FM_DISPFLAG_VOL;//_INC; OutputVolumeInc(); break; }//--------------------- DOWN KEY ---------------------------- case KEY_VAL_DOWN_DOWN: case KEY_VAL_DOWN_PRESS: { if (GlobalFmVar.FmState == FM_STATE_AUTO) { break; } FmDisplayFlag |= FM_DISPFLAG_VOL;//_DEC; OutputVolumeDec(); break; }//--------------------- FFD KEY ---------------------------- case KEY_VAL_FFD_DOWN: { if (GlobalFmVar.FmState == FM_STATE_MANUAL) { bitclear_creg(%imask,5); FmTimerCount = 5; bitset_creg(%imask,5); Tuner_MuteControl(1); AmplifierOff(); Tuner_FreqChange(TUN_UP,TUNERFREQSTEP); FmGuageVal = (unsigned int)((unsigned long)(FM_GUAGE_CONST) * (GlobalFmVar.FmFreq - FmFreqMinVal) / (FmFreqMaxVal - FmFreqMinVal)); FmDisplayFlag |= (FM_DISPFLAG_FREQ | FM_DISPFLAG_GUAGE); PostFun1Message(MSG_FUNCTION1_FM,MSG_FUNCTION1_FM_START,0,0,0); break; } if (GlobalFmVar.FmState == FM_STATE_PRESET) { bitclear_creg(%imask,5); FmTimerCount = 20; bitset_creg(%imask,5); Tuner_MuteControl(1); AmplifierOff(); GetNextStation(); FmGuageVal = (unsigned int)((unsigned long)(FM_GUAGE_CONST) * (GlobalFmVar.FmFreq - FmFreqMinVal) / (FmFreqMaxVal - FmFreqMinVal)); FmDisplayFlag |= (FM_DISPFLAG_FREQ | FM_DISPFLAG_GUAGE | FM_DISPFLAG_CH); PostFun1Message(MSG_FUNCTION1_FM,MSG_FUNCTION1_FM_START,0,0,0); } if (GlobalFmVar.FmState == FM_STATE_AUTO) { GlobalFmVar.FmState = FM_STATE_PRESET; bitclear_creg(%imask,5); FmTimerCount = 20; bitset_creg(%imask,5); GlobalFmVar.FmSaveNum = 0; GlobalFmVar.FmFreq = GlobalFmVar.FmFreqArray[GlobalFmVar.FmSaveNum]; if((GlobalFmVar.FmFreq < FmFreqMinVal) || (GlobalFmVar.FmFreq > FmFreqMaxVal)) { GlobalFmVar.FmFreq = FmFreqMinVal; } FmGuageVal = (unsigned int)((unsigned long)(FM_GUAGE_CONST) * (GlobalFmVar.FmFreq - FmFreqMinVal) / (FmFreqMaxVal - FmFreqMinVal)); FmDisplayFlag |= (FM_DISPFLAG_GUAGE | FM_DISPFLAG_FREQ | FM_DISPFLAG_CH); PostFun1Message(MSG_FUNCTION1_FM,MSG_FUNCTION1_FM_START,0,0,0); } break; } case KEY_VAL_FFD_PRESS: { if (GlobalFmVar.FmState == FM_STATE_AUTO) { break; } if (GlobalFmVar.FmState == FM_STATE_MANUAL) { Tuner_FreqChange(TUN_UP,TUNERFREQSTEP); FmGuageVal = (unsigned int)((unsigned long)(FM_GUAGE_CONST) * (GlobalFmVar.FmFreq - FmFreqMinVal) / (FmFreqMaxVal - FmFreqMinVal)); FmDisplayFlag |= (FM_DISPFLAG_FREQ | FM_DISPFLAG_GUAGE); PostFun1Message(MSG_FUNCTION1_FM,MSG_FUNCTION1_FM_START,0,0,0); } break; } case KEY_VAL_FFD_LONG_UP: { if (GlobalFmVar.FmState == FM_STATE_AUTO) { break; } if (GlobalFmVar.FmState == FM_STATE_MANUAL) { bitclear_creg(%imask,5); FmTimerCount = 0; bitset_creg(%imask,5); //Tuner_MuteControl(1); AmplifierOff(); FmStereoState = 0; FmDisplayFlag |= FM_DISPFLAG_STEREO; UpDownFlag = TUN_UP; PostFun1Message(MSG_FUNCTION1_FM,MSG_FUNCTION1_FM_PLAY,MSG_FUNCTION1_FM_SEEK,0,0); } break; }//--------------------- FFW KEY ---------------------------- case KEY_VAL_FFW_DOWN: { if (GlobalFmVar.FmState == FM_STATE_MANUAL) { bitclear_creg(%imask,5); FmTimerCount = 5; bitset_creg(%imask,5); Tuner_MuteControl(1); AmplifierOff(); Tuner_FreqChange(TUN_DOWN,TUNERFREQSTEP); FmGuageVal = (unsigned int)((unsigned long)(FM_GUAGE_CONST) * (GlobalFmVar.FmFreq - FmFreqMinVal) / (FmFreqMaxVal - FmFreqMinVal)); FmDisplayFlag |= (FM_DISPFLAG_FREQ | FM_DISPFLAG_GUAGE); PostFun1Message(MSG_FUNCTION1_FM,MSG_FUNCTION1_FM_START,0,0,0); break; } if (GlobalFmVar.FmState == FM_STATE_PRESET) { bitclear_creg(%imask,5); FmTimerCount = 20; bitset_creg(%imask,5); Tuner_MuteControl(1); AmplifierOff(); GetPrevStation(); FmGuageVal = (unsigned int)((unsigned long)(FM_GUAGE_CONST) * (GlobalFmVar.FmFreq - FmFreqMinVal) / (FmFreqMaxVal - FmFreqMinVal)); FmDisplayFlag |= (FM_DISPFLAG_FREQ | FM_DISPFLAG_GUAGE | FM_DISPFLAG_CH); PostFun1Message(MSG_FUNCTION1_FM,MSG_FUNCTION1_FM_START,0,0,0); } if (GlobalFmVar.FmState == FM_STATE_AUTO) { GlobalFmVar.FmState = FM_STATE_PRESET; bitclear_creg(%imask,5); FmTimerCount = 20; bitset_creg(%imask,5); GlobalFmVar.FmSaveNum = 0; GlobalFmVar.FmFreq = GlobalFmVar.FmFreqArray[GlobalFmVar.FmSaveNum]; if((GlobalFmVar.FmFreq < FmFreqMinVal) || (GlobalFmVar.FmFreq > FmFreqMaxVal)) { GlobalFmVar.FmFreq = FmFreqMinVal; } FmGuageVal = (unsigned int)((unsigned long)(FM_GUAGE_CONST) * (GlobalFmVar.FmFreq - FmFreqMinVal) / (FmFreqMaxVal - FmFreqMinVal)); FmDisplayFlag |= (FM_DISPFLAG_GUAGE | FM_DISPFLAG_FREQ | FM_DISPFLAG_CH); PostFun1Message(MSG_FUNCTION1_FM,MSG_FUNCTION1_FM_START,0,0,0); } break; } case KEY_VAL_FFW_PRESS: { if (GlobalFmVar.FmState == FM_STATE_AUTO) { break; } if (GlobalFmVar.FmState == FM_STATE_MANUAL) { Tuner_FreqChange(TUN_DOWN,TUNERFREQSTEP); FmGuageVal = (unsigned int)((unsigned long)(FM_GUAGE_CONST) * (GlobalFmVar.FmFreq - FmFreqMinVal) / (FmFreqMaxVal - FmFreqMinVal)); FmDisplayFlag |= (FM_DISPFLAG_FREQ | FM_DISPFLAG_GUAGE); PostFun1Message(MSG_FUNCTION1_FM,MSG_FUNCTION1_FM_START,0,0,0); } break; } case KEY_VAL_FFW_LONG_UP: { if (GlobalFmVar.FmState == FM_STATE_AUTO) { break; } if (GlobalFmVar.FmState == FM_STATE_MANUAL) { bitclear_creg(%imask,5); FmTimerCount = 0; bitset_creg(%imask,5); AmplifierOff(); FmStereoState = 0; FmDisplayFlag |= FM_DISPFLAG_STEREO; UpDownFlag = TUN_DOWN;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -