⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fmkey.c

📁 SI4702
💻 C
📖 第 1 页 / 共 2 页
字号:
/**********************************************************************************          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 + -