📄 fmkey.c
字号:
/*
********************************************************************************
* Copyright (C),2004-2006, Fuzhou Rockchip Co.,Ltd.
* All Rights Reserved
* V1.00
* FileName : FMKey.c
* Author : HuangJiliu
* Description:
* History :
* <author> <time> <version> <desc>
* HuangJiliu 06/03/24 1.0 ORG
*
********************************************************************************
*/
#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);
/*------------------------------------------------------------------------------
Function:
Input:
Output:
------------------------------------------------------------------------------*/
__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();
}
}
/*------------------------------------------------------------------------------
Function:
Input:
Output:
------------------------------------------------------------------------------*/
__attribute__((section(".fm_text,\"ax\"")))
void FmFunKeyProc(void)
{
unsigned int i;
switch(KeyVal) {
//---------------------- REC KEY ---------------------------
/*case KEY_VAL_REC_DOWN:
case KEY_VAL_REC_PRESS_START:
case KEY_VAL_REC_PRESS:
case KEY_VAL_REC_LONG_UP:*/
case KEY_VAL_REC_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;
//Fun1ModuleChange();
//Fun2MsgArray[0] = MSG_FUNCTION2_NONE;
Fun2ModuleChange();
PostSche1Message(MSG_SCHEDULER1_ENCODE/*,0,0,0,0,0,0,0*/);
PostFun1Message(MSG_FUNCTION1_ENCODE_PROC , MSG_FUNCTION1_ENC_INIT , ENCODE_FM_REC ,0,0/*,0,0,0*/);
break;
}
//--------------------- MENU KEY ---------------------------
/*case KEY_VAL_MENU_PRESS:
case KEY_VAL_MENU_LONG_UP:
case KEY_VAL_MENU_DOWN:*/
case KEY_VAL_MENU_PRESS_START:
{
if (GlobalFmVar.FmState == FM_STATE_AUTO) break;
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,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_SHORT_UP:*/
case KEY_VAL_FFD_DOWN:
{
if (GlobalFmVar.FmState == FM_STATE_MANUAL) {
Tuner_FreqStepUp(10);
PostFun1Message(MSG_FUNCTION1_FM,MSG_FUNCTION1_FM_PLAY,MSG_FUNCTION1_FM_MUTE_ON,MSG_FUNCTION1_FM_FREQ_STEP,0/*,0,0,0*/);
}
if (GlobalFmVar.FmState == FM_STATE_PRESET) {
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_PLAY,MSG_FUNCTION1_FM_MUTE_ON,MSG_FUNCTION1_FM_FREQ_SET,0);
}
if (GlobalFmVar.FmState == FM_STATE_AUTO) {
GlobalFmVar.FmState = FM_STATE_PRESET;
FmDisplayFlag |= (FM_DISPFLAG_GUAGE | FM_DISPFLAG_FREQ | FM_DISPFLAG_CH);
GlobalFmVar.FmSaveNum = 0;
GlobalFmVar.FmFreq = GlobalFmVar.FmFreqArray[GlobalFmVar.FmSaveNum];
if((GlobalFmVar.FmFreq < FmFreqMinVal) || (GlobalFmVar.FmFreq > FmFreqMaxVal)){
GlobalFmVar.FmFreq = FmFreqMinVal;
}
FmDisplayFlag |= (FM_DISPFLAG_GUAGE | FM_DISPFLAG_FREQ | FM_DISPFLAG_CH);
PostFun1Message(MSG_FUNCTION1_FM,MSG_FUNCTION1_FM_PLAY,MSG_FUNCTION1_FM_MUTE_ON,MSG_FUNCTION1_FM_FREQ_SET,0);
}
// DisplayTestDecNum(100,0,Tuner_ReadSTOStatus(0)) ;
break;
}
case KEY_VAL_FFD_PRESS_START:
{
if (GlobalFmVar.FmState == FM_STATE_AUTO) break;
if (GlobalFmVar.FmState == FM_STATE_MANUAL) {
FmStereoState = 0;
FmDisplayFlag |= FM_DISPFLAG_STEREO;
PostFun1Message(MSG_FUNCTION1_FM,MSG_FUNCTION1_FM_NONE,0,0,0/*,0,0,0*/);
PostFun1Message(MSG_FUNCTION1_FM,MSG_FUNCTION1_FM_PLAY,MSG_FUNCTION1_FM_MUTE_ON,MSG_FUNCTION1_FM_NONE,0);
}
break;
}
case KEY_VAL_FFD_PRESS:
{
if (GlobalFmVar.FmState == FM_STATE_AUTO) break;
if (GlobalFmVar.FmState == FM_STATE_MANUAL) {
Tuner_FreqStepUp(10);
PostFun1Message(MSG_FUNCTION1_FM,MSG_FUNCTION1_FM_PLAY,MSG_FUNCTION1_FM_MUTE_ON,MSG_FUNCTION1_FM_FREQ_STEP,0/*,0,0,0*/);
}
break;
}
case KEY_VAL_FFD_LONG_UP:
{
if (GlobalFmVar.FmState == FM_STATE_AUTO) break;
if (GlobalFmVar.FmState == FM_STATE_MANUAL) {
UpDownFlag = TUN_UP;
PostFun1Message(MSG_FUNCTION1_FM,MSG_FUNCTION1_FM_PLAY,MSG_FUNCTION1_FM_MUTE_ON,MSG_FUNCTION1_FM_AUTO_SEEK,0);
}
break;
}
//--------------------- FFW KEY ----------------------------
/*case KEY_VAL_FFW_SHORT_UP:*/
case KEY_VAL_FFW_DOWN:
{
if (GlobalFmVar.FmState == FM_STATE_MANUAL) {
Tuner_FreqStepDown(10);
PostFun1Message(MSG_FUNCTION1_FM,MSG_FUNCTION1_FM_PLAY,MSG_FUNCTION1_FM_MUTE_ON,MSG_FUNCTION1_FM_FREQ_STEP,0/*,0,0,0*/);
}
if (GlobalFmVar.FmState == FM_STATE_PRESET) {
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_PLAY,MSG_FUNCTION1_FM_MUTE_ON,MSG_FUNCTION1_FM_FREQ_SET,0);
}
if (GlobalFmVar.FmState == FM_STATE_AUTO) {
GlobalFmVar.FmState = FM_STATE_PRESET;
FmDisplayFlag |= (FM_DISPFLAG_GUAGE | FM_DISPFLAG_FREQ | FM_DISPFLAG_CH);
GlobalFmVar.FmSaveNum = 0;
GlobalFmVar.FmFreq = GlobalFmVar.FmFreqArray[GlobalFmVar.FmSaveNum];
if((GlobalFmVar.FmFreq < FmFreqMinVal) || (GlobalFmVar.FmFreq > FmFreqMaxVal)){
GlobalFmVar.FmFreq = FmFreqMinVal;
}
FmDisplayFlag |= (FM_DISPFLAG_GUAGE | FM_DISPFLAG_FREQ | FM_DISPFLAG_CH);
PostFun1Message(MSG_FUNCTION1_FM,MSG_FUNCTION1_FM_PLAY,MSG_FUNCTION1_FM_MUTE_ON,MSG_FUNCTION1_FM_FREQ_SET,0);
}
break;
}
case KEY_VAL_FFW_PRESS_START:
{
if (GlobalFmVar.FmState == FM_STATE_AUTO) break;
if (GlobalFmVar.FmState == FM_STATE_MANUAL) {
FmStereoState = 0;
FmDisplayFlag |= FM_DISPFLAG_STEREO;
PostFun1Message(MSG_FUNCTION1_FM,MSG_FUNCTION1_FM_NONE,0,0,0/*,0,0,0*/);
PostFun1Message(MSG_FUNCTION1_FM,MSG_FUNCTION1_FM_PLAY,MSG_FUNCTION1_FM_MUTE_ON,MSG_FUNCTION1_FM_NONE,0);
}
break;
}
case KEY_VAL_FFW_PRESS:
{
if (GlobalFmVar.FmState == FM_STATE_AUTO) break;
if (GlobalFmVar.FmState == FM_STATE_MANUAL) {
Tuner_FreqStepDown(10);
PostFun1Message(MSG_FUNCTION1_FM,MSG_FUNCTION1_FM_PLAY,MSG_FUNCTION1_FM_MUTE_ON,MSG_FUNCTION1_FM_FREQ_STEP,0/*,0,0,0*/);
}
break;
}
case KEY_VAL_FFW_LONG_UP:
{
if (GlobalFmVar.FmState == FM_STATE_AUTO) break;
if (GlobalFmVar.FmState == FM_STATE_MANUAL) {
UpDownFlag = TUN_DOWN;
PostFun1Message(MSG_FUNCTION1_FM,MSG_FUNCTION1_FM_PLAY,MSG_FUNCTION1_FM_MUTE_ON,MSG_FUNCTION1_FM_AUTO_SEEK,0);
}
break;
}
//--------------------- OTHER KEY --------------------------
default:
break;
}
}
/*------------------------------------------------------------------------------
Function:
Input:
Output:
------------------------------------------------------------------------------*/
__attribute__((section(".fm_text,\"ax\"")))
void FmMenuKeyProc(void)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -