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

📄 fmschedule.c

📁 SI4702
💻 C
📖 第 1 页 / 共 3 页
字号:
                FmStationName[i] = '\0';
                break;
            }
            
            FmStationName[i] = pFmStationName[i];
            FmStationName[FM_STATION_NAME_LENGTH - 1] = '\0';
        }
    }
    else
    {
        FmStationName[0] = '\0';
    }
    
    // 关闭列表文件
    if (NOT_OPEN_FILE != hSlaveFile)
    {
        FileClose(hSlaveFile);
    }
    
    return iStatus;
}
#endif
//--------------------------------------------------FM 电台列表 结束----------------------------------------------------------


/*
********************************************************************************
*  Copyright (C),2004-2007, Fuzhou Rockchip Electronics Co.,Ltd.
*  Function name :  FmTimerDec()
*  Author:          ZHengYongzhi
*  Description:     FM 定时计数器减1操作
*                  
*  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 FmTimerDec(void)
{
    if (FmTimerCount != 0) {
        FmTimerCount -- ;
    }
}

/*
********************************************************************************
*  Copyright (C),2004-2007, Fuzhou Rockchip Electronics Co.,Ltd.
*  Function name :  FmModuleProc()
*  Author:          ZHengYongzhi
*  Description:     FM模块处理主程序
*                   1) 功能调度
*                   2) 背光、显示、按键等处理程序调用
*                  
*  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 FmModuleProc(void)
{
	unsigned int i, j;
    
	switch(Fun1MsgArray[1])
	{
		case MSG_FUNCTION1_FM_INIT:             //Fm Cpu / Variable / Codec Init
			FmModuleInitial();
			break;
        
		case MSG_FUNCTION1_FM_START:
			FmPlayStart();                      //恢复上次电台设置
			break;
        
		case MSG_FUNCTION1_FM_PLAY:             //收音机调台处理
			FmPlay();
			break;
        
		case MSG_FUNCTION1_FM_MENU:
			break;

		case MSG_FUNCTION1_FM_DEL:
		case MSG_FUNCTION1_FM_SAVE:
			break;

		default:
			break;
	}
    

	if (DisplayFlag == DISP_FM)
	{
		if (SystemInfo.bc.bBackLightOffStart)
		{
			bitclear_creg(%imask,5);
			SystemInfo.bc.bBackLightOffStart = 0;
			LcdBackLightOff();
			bitset_creg(%imask,5);
	        }
        
		if (SystemInfo.bc.bBackLightOnStart == 0)
		{
			FmKeyProc();
		}
		else
		{
			bitclear_creg(%imask,5);
			SystemInfo.bc.bBackLightOnStart = 0;
			bitset_creg(%imask,5);
			SystemInfo.bc.bBackLightOnStart1 = 1;
			LCD_SDRAM_Standby_Return();
		}
        
		if (SystemInfo.bc.bHoldDisplay)
		{
			bitclear_creg(%imask,5);
			SystemInfo.bc.bHoldDisplay = 0;
			bitset_creg(%imask,5);
            
			DisplayRecoveryTime = 0;
			PreDisplayFlag = DisplayFlag;
			DisplayFlag = DISP_HOLD;
            
			DisplayPicture(0, 0, MAX_PIC_XSIZE, MAX_PIC_YSIZE, HOLD_OFF_PIC + (unsigned long)(SystemInfo.bc.bHoldOn) * MAX_PIC_SIZE);
			
			FmDisplayFlag |= FM_DISPFLAG_HOLD;    //Ver1.7  2007-01-22 解决收音机界面没有Hold图标显示的问题

			return;
		}
            
		if (SysBatteryFlag.bc.bBatteryDisplay)
		{
			SysBatteryFlag.bc.bBatteryDisplay = 0;
			FmDisplayFlag |= FM_DISPFLAG_BATT;
		}
        
		if (SystemInfo.bc.bDisplayRecovery)
		{
			SystemInfo.bc.bDisplayRecovery = 0;
//-------------------------------------------------------------
//Ver1.8 2007-03-08 zyz 解决FM在hold或黑屏后返回到之前的状态
            //if (Fun1MsgArray[1] != MSG_FUNCTION1_FM_PLAY) Fun1MsgArray[1] = MSG_FUNCTION1_FM_PLAY;
            
            //Ver1.7  2007-01-22 解决收音机界面没有Hold图标显示的问题
			FmDisplayFlag = (FM_DISPFLAG_NULL | FM_DISPFLAG_BACKGROUND | FM_DISPFLAG_BATT | 
					FM_DISPFLAG_CH | FM_DISPFLAG_FREQ | FM_DISPFLAG_GUAGE | FM_DISPFLAG_REGION |
					FM_DISPFLAG_VOL | FM_DISPFLAG_SENS | FM_DISPFLAG_STEREO | FM_DISPFLAG_HOLD);
			DISP_Fm();
			
			if (Fun1MsgArray[1] == MSG_FUNCTION1_FM_MENU)
			{
				FmDisplayFlag |= (FM_DISPFLAG_SUBMENU_BK | FM_DISPFLAG_SUBMENU_SEL);
			}
			else if ((Fun1MsgArray[1] == MSG_FUNCTION1_FM_SAVE) || (Fun1MsgArray[1] == MSG_FUNCTION1_FM_DEL))
			{
				FmDisplayFlag |= (FM_DISPFLAG_SUBMENU_BK | FM_DISPFLAG_SUBMENU_SEL);
				DisplayFmMenu();
				FmDisplayFlag |= (FM_DISPFLAG_LIST_BK | FM_DISPFLAG_LIST_SEL);
			}
		}
//Ver1.8 End---------------------------------------------------
            
		if ((FmDisplayFlag != FM_DISPFLAG_NULL) && (SystemInfo.bc.bBackLightStatus != 2))
		{
			if (Fun1MsgArray[1] == MSG_FUNCTION1_FM_MENU)
			{
				DisplayFmMenu();
			}
			else if ((Fun1MsgArray[1] == MSG_FUNCTION1_FM_SAVE) || (Fun1MsgArray[1] == MSG_FUNCTION1_FM_DEL))
			{
				DisplayFmList();
			}
			else
			{
				DISP_Fm();
			}
		}
        
		if (SystemInfo.bc.bBackLightOnStart1)
		{
			SystemInfo.bc.bBackLightOnStart1 = 0;
			DmaFillImage2Lcd();
			LcdBackLightOn();
			KeyReset();
		}
	}
}

/*
********************************************************************************
*  Copyright (C),2004-2007, Fuzhou Rockchip Electronics Co.,Ltd.
*  Function name :  FmModuleInitial()
*  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 FmModuleInitial(void)
{
	unsigned int i,j;
	
	switch (Fun1MsgArray[2]) 
	{
		case MSG_FUNCTION1_FM_INIT_READY:
		{
			bitclear_creg(%imask,5);
			FmTimerCount = 0;
			bitset_creg(%imask,5);

			FmInitReady();
			
			PostFun1Message(MSG_FUNCTION1_FM,MSG_FUNCTION1_FM_INIT,MSG_FUNCTION1_FM_INIT_POWER,0,0);	
        
			break;
		}
			
		case MSG_FUNCTION1_FM_INIT_POWER:
		{
			if (FmTimerCount > 0)
			{
				break;
			}
			
			bitclear_creg(%imask,5);
			FmTimerCount = 20;
			bitset_creg(%imask,5);			

			FmInitPowerOn(); 
			
			PostFun1Message(MSG_FUNCTION1_FM,MSG_FUNCTION1_FM_INIT,MSG_FUNCTION1_FM_INIT_DATA,0,0);

			break;
		}
    	
		case MSG_FUNCTION1_FM_INIT_DATA:
		{
			if (FmTimerCount > 0)
			{
				break;
			}
			
			bitclear_creg(%imask,5);
			FmTimerCount = 10;
			bitset_creg(%imask,5);			

			FmInitData((char)(GlobalFmVar.FmArea));
							
			PostFun1Message(MSG_FUNCTION1_FM,MSG_FUNCTION1_FM_INIT,MSG_FUNCTION1_FM_INIT_STC,0,0);		

			break;
		}
    	
		case MSG_FUNCTION1_FM_INIT_STC:
		{
			if (FmTimerCount > 0)
			{
				break;
			}

			if(FmWaitSTC()==1)
			{
				bitclear_creg(%imask,5);
				FmTimerCount = 3;
				bitset_creg(%imask,5);

				PostFun1Message(MSG_FUNCTION1_FM,MSG_FUNCTION1_FM_INIT,MSG_FUNCTION1_FM_INIT_STC,0,0);
			}
			else
			{ 
				bitclear_creg(%imask,5);
				FmTimerCount = 3;
				bitset_creg(%imask,5);

				FmInitClrSTC();
					
				PostFun1Message(MSG_FUNCTION1_FM,MSG_FUNCTION1_FM_INIT,MSG_FUNCTION1_FM_INIT_END,0,0);
			}
			
			break;
		}
		
		case MSG_FUNCTION1_FM_INIT_END:  
		{
			if (FmTimerCount > 0)
			{
				break;
			}

			PostFun1Message(MSG_FUNCTION1_FM,MSG_FUNCTION1_FM_START,0,0,0);

			break;
		}

		default: 
		{
			if (GlobalFmVar.FmArea == FM_AREA_JAPAN)
			{
				FmFreqMaxVal = 9100;
				FmFreqMinVal = 7600;
			} 
			else
			{
				FmFreqMaxVal = 10800;
				FmFreqMinVal = 8750;
			}

			if (Sys1InitFlag.bc.bFmSysInitEnable) 
			{
				FmCPUInit();
				LCD_Init(0);
				AmplifierOff();
				FmCodecInit();
				FmVariableInit();
				
				if (SystemInfo.bc.bMusicMenuSet == 1)
				{     
					SystemInfo.bc.bMusicMenuSet = 0;
				}
								
				PostFun1Message(MSG_FUNCTION1_FM,MSG_FUNCTION1_FM_INIT,MSG_FUNCTION1_FM_INIT_READY,0,0);
			} 
			else
			{
				if (SystemInfo.bc.bMusicMenuSet == 1)
				{     
					SystemInfo.bc.bMusicMenuSet = 0;
        
					if (GlobalFmVar.FmArea == FM_AREA_JAPAN)
					{
						FmFreqMaxVal = 9100;
						FmFreqMinVal = 7600;
					}
					else
					{
						FmFreqMaxVal = 10800;
						FmFreqMinVal = 8750;
					}
		
					j = 0;
					
					for (i = 0; i < FREQMAXNUMBLE; i++)
					{
						if ((GlobalFmVar.FmFreqArray[i] < FmFreqMinVal) || (GlobalFmVar.FmFreqArray[i] > FmFreqMaxVal))
						{
							GlobalFmVar.FmFreqArray[i] = 0;
							j ++ ;
						}
					}

					if (j >= FREQMAXNUMBLE -1 )
					{
					GlobalFmVar.FmSaveNum = 0;
					}
					
					if ((GlobalFmVar.FmFreq < FmFreqMinVal) || (GlobalFmVar.FmFreq > FmFreqMaxVal))
					{
						GlobalFmVar.FmFreq = FmFreqMinVal;
					}
		
					FmGuageVal = (unsigned int)((unsigned long)(FM_GUAGE_CONST) * (GlobalFmVar.FmFreq - FmFreqMinVal) / (FmFreqMaxVal - FmFreqMinVal));
					FmGuageX = FmGuageVal;

					PostFun1Message(MSG_FUNCTION1_FM,MSG_FUNCTION1_FM_START,0,0,0);

					break;
				}
        
				FmDisplayFlag = (FM_DISPFLAG_NULL | FM_DISPFLAG_BACKGROUND | FM_DISPFLAG_BATT | 
							FM_DISPFLAG_CH | FM_DISPFLAG_FREQ | FM_DISPFLAG_GUAGE | FM_DISPFLAG_REGION |
							FM_DISPFLAG_VOL | FM_DISPFLAG_SENS | FM_DISPFLAG_STEREO);
				FmStereoCount = 0;
				FmStereoCount1 = 0;

				PostFun1Message(MSG_FUNCTION1_FM,MSG_FUNCTION1_FM_PLAY,MSG_FUNCTION1_FM_READ_ST,0,0);
			}
			
			if ((GlobalFmVar.FmFreq < FmFreqMinVal) || (GlobalFmVar.FmFreq > FmFreqMaxVal))
			{
				GlobalFmVar.FmFreq = FmFreqMinVal; 
			}
			
			break;
		}
	}
	KeyReset();
}
	
/*
********************************************************************************
*  Copyright (C),2004-2007, Fuzhou Rockchip Electronics Co.,Ltd.
*  Function name :  FmCPUInit()
*  Author:          ZHengYongzhi
*  Description:     进入FM模块时的CPU初始化
*                  
*  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\"")))

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -