- Visual C++源码
- Visual Basic源码
- C++ Builder源码
- Java源码
- Delphi源码
- C/C++源码
- PHP源码
- Perl源码
- Python源码
- Asm源码
- Pascal源码
- Borland C++源码
- Others源码
- SQL源码
- VBScript源码
- JavaScript源码
- ASP/ASPX源码
- C#源码
- Flash/ActionScript源码
- matlab源码
- PowerBuilder源码
- LabView源码
- Flex源码
- MathCAD源码
- VBA源码
- IDL源码
- Lisp/Scheme源码
- VHDL源码
- Objective-C源码
- Fortran源码
- tcl/tk源码
- QT源码
UiFm.c
资源名称:SDK_M5661.rar [点击查看]
上传用户:hjhsjcl
上传日期:2020-09-25
资源大小:11378k
文件大小:51k
源码类别:
压缩解压
开发平台:
C++ Builder
- /*==========================================================================
- Copyright (c) 2004 ALi Corporation. All Rights Reserved
- File: UiCommon.c
- content: user interface for FM module
- History: Created by TNE 2004/8/17
- ==========================================================================*/
- #define _UI_FM_H_
- #include <DP8051XP.H>
- #include "TypeDef.h"
- #include "Const.h"
- #include "Reg5661.h"
- #include "Common.h"
- #include "Key.h"
- #include "NandFlash.h"
- #include "FileSystem.h"
- #include "SaveSetting.h"
- //Dennis Shih 2006/01/17
- //#include "FmChip.h"
- #include "I2C.h"
- #include "FmChipDrv.h"
- //Walace060126#2
- /*
- #include "FmM5181.h"
- #include "FmTEA5767.h"
- */
- //#include "Codec.h"
- //Renshuo050312#1
- #include "ExtCodec.h"
- #include "IntCodec.h"
- #include "IconDefine.h"
- #include "OLED.h"
- #include "UiCommon.h"
- #include "SysStrDef.h"
- #include "UiSysStr.h" //Walace060217#1
- #include "OledString.h"
- #include "UiFm.h"
- #if(USE_RDS_INF)
- #include "UiRDS.h" //WHH0322
- #include "RDS.h" //WHH0322
- #endif
- // Walace060126#2 only used by UiFm.c
- #define FM_INIT_DELAY_TIME 0x15
- #define FM_SEARCH_UP 1
- #define FM_SEARCH_DOWN 0
- //extern void IntCdcSetPaGain(BYTE bVol); //Renshuo041125#A //tne 2006/12/26 #1
- //XBYTE xbFmShowFreqNum[10]; //Show FM Freq Number(EX 103.9 MHz) //Dennis060517#1 //tne 2007/01/11 #1
- //bit gfFmRealSteroSts; //Walace060217#1 //Walace060714#2
- //vicky050131
- //BOOL gfMuteSts;
- XBYTE gfMuteSts; //Walace061219#1 //NandRestore
- XBYTE gxbMuteTime;
- XDWORD gxdwKeepTime;
- XBYTE gxbFmRecPreset; //tne 2006/05/10 #1 (Last Saving Preset Num 1~FM_MAX_PRESET)
- XBYTE gxbFmMaxRecPreset; //tne 2007/01/11 #1 (How many preset have saved 1~FM_MAX_PRESET, 0 mean no preset saveing)
- //tne 2007/01/11 #1 start
- XWORD gxwUiFmSearchDelay;
- XBYTE gxbTotalMenuItemNum;
- xdata PCWORD pcwFmMenuStringPoint;
- //tne 2007/01/11 #1 end
- //================add by Rojam 070117=======================
- #if(FM_MODULE==2)
- extern XWORD FMseekChannels[FMCHANNELSMAX]; //kitty 070103
- #endif
- //========================end============================
- XBYTE gxbTemp; //Walace070106#1
- XBYTE gxbLastUiMenuMain; // modify by Rojam 2007-04-03 09:23
- void UiShowFreq();
- void UiReDrawFM() large;
- void UiShowStereo() large;
- void UiShowPreset(BYTE bPage,BYTE bColNum,BYTE bPresetNum) large; //tne 2006/05/10 #1
- void UiScrollPrset(BYTE bPresetNum) large; //tne 2006/05/10 #1
- void UiFmDelay(BYTE bDelay1,WORD bDelay2) large;
- void UiGoVolMenu(void);
- void UiRedrawStero() large;
- void UiErrHandle(void) large;
- void UiGoFMMute(void); //vicky050131
- void UiGoStereoSetMenu(void); //Walace060217#1
- void UiFmFadeOut(void); //Walace060217#1
- //Dennis Shih 20060309
- void UiShowFreqNum() large;
- BYTE FMFreqSearch(XWORD StartFreq, XWORD EndFreq, BOOL CountUp) large;
- void FMFadeOutVol(BYTE bVol, BYTE Nms) large; //Dennis060511#1
- #if(FM_PRESET_PRESAVE)
- void SaveFmPresetSetting() large; //Walace060714#1
- #endif
- //tne 2007/01/11 #1 start
- void UiShowPresetStateIcon(void);
- BOOL UiFmCheckBreakAutoSearchKey(BYTE bKey) large;
- void UiFmSwapNextMode(void);
- BYTE UiFmAutoSearchFreq(BOOL fSearchUp, BOOL fSaveScanMode) large;
- void UiFmNormalCtrl(BYTE bKey) large;
- void UiSelPresetCtrl(BYTE bKey) large;
- void UiFmVolMenuCtrl(BYTE bKey) large;
- void UiFmNormalMenuCtrl(BYTE bKey) large;
- void UiFmPresetMenuCtrl(BYTE bKey) large;
- void UiFmShowFmChNum(BYTE bNum,BYTE bCol,BYTE bRow, BYTE bType) large;
- //tne 2007/01/11 #1 end
- ////////////////////////////////////////////////////////////////////////////////////
- ///////////////////////////////// Ui Header End ///////////////////////////////////
- ////////////////////////////////////////////////////////////////////////////////////
- /*--------------------------------------------------------------------------
- Description:
- Main program for TARGET Fm
- Arguments:
- Global arguments:
- Returns:
- --------------------------------------------------------------------------*/
- main(void)
- {
- BYTE bKey;
- //BYTE btemp; //Walace070106#1
- //tne 2005/08/24 //use bKey for temp variable to get RTC counter
- //bKey=obDCV_INT_FLAG; //tne 2006/08/08 #1
- #if(ENABLE_SD_FUNCTION&&SD_DET_USE_INT1) //Nick060808
- gbDdmCheck = obGPIO_INT_FLAG&obGPIO_INT_MASK;//use gbDdmCheck as temp, ok la
- if(gbDdmCheck&0x20)//gpiod5 // sd init flase anyway, even SD/MMC plug in
- gfSDinit = FALSE;
- #endif
- #if(UI_USE_MAIN_MENU|SETTING_FOR_ICE_START|UI_USE_ALARM_DISPLAY) //vicky050131
- EX0=1;
- #endif
- EA=1;
- bKey=obDCV_INT_FLAG; //tne 2006/08/08 #1 //Walace061219#1 //NandRestore
- SetSysSpeed(SYS_SPEED_NORMAL); //Walace070106#2
- if((gxbModuleState&MODULE_SUB)==MODULE_NAND_RTN_RESOTRE) //NandRestore
- {
- gxbModuleState=MODULE_FM;
- goto RETURN_FROM_NANDRESTORE;
- }
- OLED_DISP_MASK_INIT();
- OLED_CLEAR_ALL() ;
- //vicky050131
- //Save code size, use gxbFmPreset (D0: FM init status)
- gxbTemp=gxbFmPreset; //Walace070106#1
- //end
- #if(_PM_FM_&FM_MODULE==0) //060809Patrick
- gfFmsetfreqjudge=FALSE; //060809Patrick
- #endif
- //DCV_SET_PWM(); //David050817#2
- //add by tne 2005/01/07 #2
- #define bPresetIdx bKey
- #if(SETTING_FOR_ICE_START)
- gxwFmFreq=FM_DEFAULT_FREQ;
- gxbFmPreset=0;
- for(bPresetIdx=0;bPresetIdx<FM_MAX_PRESET;bPresetIdx++)
- {
- gxwPresetData[bPresetIdx]=FM_DEFAULT_FREQ;
- }
- gxbFmRecPreset=FM_MAX_PRESET;
- gxbFmMaxRecPreset=FM_MAX_PRESET;
- #else
- NandPrivateEn();
- ReadSettingData(FS_DATA_0_0);
- NandPrivateDis();
- gxbFmRecPreset=0; //tne 2007/01/11 #1
- gxbFmMaxRecPreset=0; //tne 2007/01/11 #1
- #if(FM_STEP_100K) //Dennis060517#1 start
- gxwFmFreq=gxbFsData[SRAM_FM_FREQ+gxwOffsetDataSec]+FM_FREQ_MIN;
- #else
- //Walace060931#1
- gxwFmFreq = *((PWORD)(gxbFsData+SRAM_FM_FREQ+gxwOffsetDataSec)) + FM_FREQ_MIN;
- //gxwFmFreq=gxbFsData[SRAM_FM_FREQ+gxwOffsetDataSec]+((((WORD)(gxbFsData[SRAM_FM_FREQ_HIGH+gxwOffsetDataSec]))<<8)&0xFF00)+FM_FREQ_MIN;
- #endif //Dennis060517#1 end
- gxbFmPreset=gxbFsData[SRAM_FM_PRESET_NUM+gxwOffsetDataSec];
- gxbFmState = gxbFsData[SRAM_FM_STATE+gxwOffsetDataSec]; //Walace060217#1
- for(bPresetIdx=0;bPresetIdx<FM_MAX_PRESET;bPresetIdx++)
- {
- //Walace060931#1 start
- #if(FM_STEP_100K) //Dennis060517#1 start
- gxwPresetData[bPresetIdx]=gxbFsData[SRAM_FM_PRESET_START+bPresetIdx+gxwOffsetDataSec]+FM_FREQ_MIN;
- #else
- gxwPresetData[bPresetIdx]=
- (*((PWORD)(gxbFsData+SRAM_FM_PRESET_START+gxwOffsetDataSec)+bPresetIdx))+FM_FREQ_MIN;
- //gxwPresetData[bPresetIdx]=((WORD)(gxbFsData[SRAM_FM_PRESET_START+bPresetIdx+gxwOffsetDataSec]))+(((WORD)gxbFsData[SRAM_FM_PRESET_16+bPresetIdx+gxwOffsetDataSec])<<8)+FM_FREQ_MIN;
- #endif //Dennis060517#1 end
- //Walace060931#1 end
- //tne 2007/01/11 #1
- if(gxwPresetData[bPresetIdx]!=FM_INVALID_FREQ_NUM)
- gxbFmRecPreset=(bPresetIdx+1);
- }
- gxbFmMaxRecPreset=gxbFmRecPreset;
- if( (gxbFmPreset>gxbFmMaxRecPreset) || (gxbFmPreset==0) )
- gxbFmPreset=gxbFmMaxRecPreset;
- #endif
- #undef bPresetIdx
- // set default common value
- #if(USE_SYS_STR_UNICODE)
- gxfSourceUnicode=STRING_TYPE_UNICODE;
- #else
- gxfSourceUnicode=STRING_TYPE_ASCII;
- #endif
- #if(SYS_USE_KEY_HOLD)
- gfLastKeyLocked=KEY_UNLOCK;
- #endif
- UI_SET_DEFAULT();
- #if(USE_ERR_MSG_DISPLAY)
- UiCheckIniErr();
- #endif
- //vicky050131
- //gfMuteMenu=FALSE;
- gxbMuteTime=2; //Mute time (unit=Sec) //vicky050131 #1
- #if(1)//FM_MODULE!=2) //del by Rojam 070117
- if(!(gxbTemp&0x01)) //Walace070106#1
- {
- //WHH070309#2(start)
- ClkCdcEn();
- MCU_ACCESS_CODEC_I2S_EN();
- //obALGPAREG = ((obALGPAREG&0x07)|0xB8);//PA Gain=Min_Vol
- obALGPAREG |= 0x04; //power down PDY
- obALGPAREG |= 0x01; //power down PD
- obALGPAREG |= 0x02; //power down PDX
- MCU_ACCESS_CODEC_I2S_DIS(); //Renshuo050216#A //Ren050312#1
- ClkCdcDis();
- //WHH070309#2(end)
- // WHH070322(start)
- #if(FM_MODULE==2)
- //obSYSSOFTRSTCTRL &= 0xFE; //reset I2C for use GPIOH5 and GPIOH6 // WHH070417#1
- obMODSEL2&=~0x08; //reset I2C for use GPIOH5 and GPIOH6 // WHH070417#1
- FmInit();
- #if(USE_RDS_INF)
- FMsi4700RdsEn();
- #endif
- gxbPreSattion=gxwFmFreq;
- #else
- FmInit();
- gfMuteSts=TRUE;
- FmSetMute();
- #endif
- // WHH070322(end)
- }
- else
- {
- //tne 2006/06/16 #2 start
- gfCdcAlreadyInit=TRUE;
- #if(FM_MODULE==1)
- //FmEnd();
- //FmInit();
- FmSetMute();
- #endif
- //tne 2006/06/16 #2 end
- gfMuteSts=FALSE;
- FmDataInit();
- }
- #endif
- //FmSetStereo(gxbFmState&FM_STATE_STEREO_SET); //Walace060217#1 //mark by tne 2006/11/17 #1
- /* //tne 2007/01/11 #1
- #if(FM_STEP_100K) //Dennis060517#1 start
- xbFmShowFreqNum[5]=' ';
- xbFmShowFreqNum[6]='M';
- xbFmShowFreqNum[7]='H';
- xbFmShowFreqNum[8]='z';
- xbFmShowFreqNum[9]=' ';//[8]='z';
- // gfFmRealSteroSts=FALSE; //Walace060217#1
- #else
- xbFmShowFreqNum[6]=' ';//[6]='M';
- xbFmShowFreqNum[7]='M';//[6]='M';
- xbFmShowFreqNum[8]='H';//[7]='H';
- xbFmShowFreqNum[9]='z';//[8]='z';
- #endif //Dennis060517#1 end
- */
- gxwUiFmSearchDelay=0;
- //xbFmShowFreqNum[3]='.';
- //LCD_CTRL_EN();
- UiReDrawFM();
- gxbLastUiMenuMain=UI_NO_MENU; // modify by Rojam 2007-04-03 09:26
- //vicky050131
- //if(gfMuteSts) //Walace060516#2 //tne 2006/06/16 #2
- {
- //OledClearArea(SEG0,OLED_FM_FREQ1_PAGE,OLED_MAX_COL-SEG0,LINE1) ;
- //StrShowSysString(SYS_STR_FM_SEARCHING,LCD_AUTO_CENTER_COL,OLED_FM_FREQ1_PAGE+PAGE2);
- }
- ClkSdDis();
- ClkSmDis();
- ClkMsDis();
- ClkDspDis();
- ClkI2S1Dis();
- ClkI2S2Dis();
- //delay for wait FM ready
- gxbLcdCounter=0;
- //while(gxbLcdCounter<FM_INIT_DELAY_TIME) { };
- //CdcCtrl(CDC_INIT);
- //CdcCtrl(CDC_FM_START);
- //vicky050131
- // if(gfMuteSts) //Walace060516#2
- // UiGoFMMute();
- {
- #if(FM_MODULE!=2)
- UiGoFMMute();
- #endif
- if(gfMuteSts) //tne 2006/06/16 #2
- {
- CdcCtrl(CDC_INIT); //711Ted
- CdcCtrl(CDC_FM_START);
- }
- }
- #if(FM_MODULE!=2) //Dennis Shih 2006/02/14 //tne 2006/12/06 #1
- FMFadeOutVol(0,50); //Dennis060511#1
- #endif
- // modify by tne 2004/11/17 BL
- //UiFirstBackLight();
- #if(FM_MODULE!=2) //Dennis Shih 2006/02/14 tne 2006/12/06 #1
- CdcSetPaGain(gxbVolume); //tne 2006/12/26 #1
- #endif
- #if(FM_MODULE==2)
- //UiReDrawFM();
- gxbUiMenuMainStates=UI_NO_MENU;
- if(gxwFmFreq!=0xffff)
- FmSetFreq();
- #endif
- //bKey=obDCV_INT_FLAG; //tne 2006/08/08 #1 //Walace061219#1 //NandRestore
- while(1)
- {
- RETURN_FROM_NANDRESTORE: //Walace061219#1
- KeyGet(bKey);
- //vicky060810 start
- if(gxbModuleState==(MODULE_INITIAL|MODULE_PRC_REC_KEY_END))
- {
- if(bKey&KEY_BREAK)
- {
- bKey=KEY_INVALID;
- gxbModuleState=MODULE_INITIAL;
- }
- else
- {
- bKey=KEY_INVALID;
- }
- }
- //vicky060810 end
- #if(FM_MODULE!=2) //Dennis Shih 2006/02/14 //Walace060217#1 //tne 2006/12/06 #1
- //Set vol 0 before system power off
- if(gxbPwOffCounter>UI_PW_OFF_KEY_DELAY_TIME)
- UiFmFadeOut();
- #endif
- UiCheckBackLight(bKey);
- //Renshuo050322#A
- #if(!EXT_ADC | !EXT_DAC | !EXT_PA)
- //IntCdcSetPaGainTask(FALSE); //Renshuo041203#A //Ren050312#1
- CdcSetPaGainTask(PA_TASK_UNIMMEDIATE|PA_TASK_DELAY); //Walace060525#4 //tne 2006/12/26 #1
- #endif
- //tne 2007/01/11 #1 start
- UiNormalCheck();
- if(gxwUiFmSearchDelay>0)
- gxwUiFmSearchDelay--;
- //WHH070322(start)
- #if(USE_RDS_INF)
- if((gxbUiMenuMainStates==UI_NO_MENU)||(gxbUiMenuMainStates==UI_SEL_PRESET_MENU)||(gxbUiMenuMainStates==UI_VOL_MENU))
- UiShowRdsInf( );
- else
- {
- RdsValInit();
- }
- #endif
- //WHH070322(end)
- //UiFmShowFmChNum(gxbFmChip,90,107,TRUE); // modify by Rojam for test 2007-04-23-10:51
- switch(gxbUiMenuMainStates)
- {
- case UI_NO_MENU:
- UiFmNormalCtrl(bKey);
- break;
- case UI_VOL_MENU:
- UiFmVolMenuCtrl(bKey);
- break;
- case UI_SEL_PRESET_MENU:
- UiSelPresetCtrl(bKey);
- break;
- case UI_FM_NORMAL_FUN_MENU:
- UiFmNormalMenuCtrl(bKey);
- break;
- case UI_FM_PRESET_FUN_MENU:
- UiFmPresetMenuCtrl(bKey);
- break;
- }
- //tne 2007/01/11 #1 end
- #if(0) //test debug
- if(bKey==KEY_VOL_BREAK)
- {
- OledShowNumber(gxwPresetData[0],0,0,5);
- OledShowNumber(gxwPresetData[1],40,0,5);
- OledShowNumber(gxwPresetData[2],80,0,5);
- OledShowNumber(gxwPresetData[3],120,0,5);
- OledShowNumber(gxwPresetData[4],0,PAGE2,5);
- OledShowNumber(gxwPresetData[5],40,PAGE2,5);
- OledShowNumber(gxwPresetData[6],80,PAGE2,5);
- OledShowNumber(gxwPresetData[7],120,PAGE2,5);
- OledShowNumber(gxwPresetData[8],0,PAGE4,5);
- OledShowNumber(gxwPresetData[9],40,PAGE4,5);
- OledShowNumber(gxbFmRecPreset,80,PAGE4,2);
- OledShowNumber(gxbFmMaxRecPreset,96,PAGE4,2);
- OledShowNumber(gxbFmPreset,112,PAGE4,2);
- }
- #endif
- //add by tne 2004/12/29 #1
- #if(UI_USE_AUTO_POWER_OFF)
- if(gxwAutoOff&SYS_PLAY_NOT_OFF_EN) // not power save when playback
- gxwAutoOffCounter=0;
- #endif
- //Nick061120 start //NandRestore start //Walace061219#1
- #if(NAND_ECC_DEBUG)//vicky070105#3
- if( (gxwTimeToScanPM > SCAN_PM_DURATION)&&gfMLCMode) //Nick061204
- #else
- if((gxbRestoreBlkNum || (gxwTimeToScanPM > SCAN_PM_DURATION))&&gfMLCMode) //Nick061204
- #endif
- {
- //LCD_CTRL_DIS(); //Walace061126#1
- gxbModuleState=MODULE_FM;
- if(gxwTimeToScanPM > SCAN_PM_DURATION)
- gxbRestoreCMD |= PM_SCAN;
- else
- gxbRestoreCMD = FullStep;
- LoadProgram(PM_PLAY_DATA_RTN_RESTORE, BASIC_CODE_ONLY);
- }
- //Nick061120 end //NandRestore end //Walace061219#1
- }
- }
- #if(FM_MODULE!=2) //modify by Rojam 2007-04-20 14:34
- void UiFmFadeOut(void)
- {
- /*
- BYTE bTemp;
- for(bTemp=gxbVolume;bTemp>=0;bTemp--)
- {
- IntCdcSetPaGain(bTemp);
- IntCdcSetPaGainTask(TRUE);
- CommonDelay(100);
- }
- */
- CdcSetPaGain(0); //tne 2006/12/26 #1
- //IntCdcSetPaGainTask(TRUE);
- CdcSetPaGainTask(PA_TASK_IMMEDIATE); //Walace060525#4 //tne 2006/12/26 #1
- }
- #endif
- /*--------------------------------------------------------------------------
- Description:
- User Interface for TARGET Fm
- Arguments:
- Global arguments:
- Returns:
- --------------------------------------------------------------------------*/
- API void UiDispCtrl(BYTE bStatus) reentrant //Tne051228#reentrant
- {
- //Dennis Shih 20060309 start
- #if (FM_MODULE==1)
- //BYTE bKey;
- //WORD SearchOver;
- #endif
- //Dennis Shih 20060309 end
- //BYTE bI;
- //static bit bShowSearch;
- //#if(FM_MODULE==1) //Dennis Shih 2006/02/14 //tne 2006/12/06 #1
- /* //tne 2007/01/11 #1
- if(bStatus != UI_FM_SEARCH_UP && bStatus != UI_FM_SEARCH_DOWN)
- {
- FMFadeOutVol(0,150); //Dennis060511#1
- CdcSetPaGain(gxbVolume); //tne 2006/12/26 #1
- }
- */
- //#endif
- switch(bStatus)
- {
- case UI_FM_SEARCHING:
- /* //tne 2007/01/11 #1
- if(gxbLcdCounter>=UI_FM_SEARCH_REFLASH_TIME)
- {
- //fix by tne 2004/12/18 #1
- if(gxbUiMenuMainStates==UI_NO_MENU)
- bI=UI_FM_FREQ1_PAGE;
- else
- bI=UI_FM_FREQ2_PAGE;
- if(bShowSearch)
- OledClearArea(SEG0,PAGE2PIXEL(bI),OLED_MAX_COL-SEG0,LINE1) ;
- else
- StrShowSysString(SYS_STR_FM_SEARCHING,LCD_AUTO_CENTER_COL,PAGE2PIXEL(bI));
- bShowSearch^=1;
- gxbLcdCounter=0;
- }
- */
- break;
- /* //remove by tne 2007/01/11 #1
- case UI_SEL_PRESET_START:
- OledClearArea(SEG0,LINE1,OLED_MAX_COL-SEG0,OLED_MAX_ROW-LINE1) ;
- StrShowSysString(SYS_STR_FM_SELECT_PRESET,LCD_AUTO_CENTER_COL,OLED_FM_PRESET_START_PAGE-PAGE2);
- gxwFmFreq=gxwPresetData[gxbFmPreset];
- UiShowFreq();
- UiShowPreset(UI_FM_PRESET_START_PAGE,UI_FM_PRESET_START_COLUMN,gxbFmPreset); //tne 2006/05/10 #1
- FmSetFreq();
- UiRedrawStero(); //Walace060217#1
- gxbLcdCounter=0;
- break;
- case UI_SEL_PRESET_SELECT:
- gxbFmPreset++;
- if(gxbFmPreset>FM_MAX_PRESET) gxbFmPreset=0;
- UiScrollPrset(gxbFmPreset); //tne 2006/05/10 #1
- gxwFmFreq=gxwPresetData[gxbFmPreset];
- UiShowFreq();
- FmSetFreq();
- gxbLcdCounter=0;
- break;
- case UI_SAVE_PRESET_START:
- gxbFmRecPreset=gxbFmPreset; //tne 2006/05/10 #1
- OledClearArea(SEG0,LINE1,OLED_MAX_COL-SEG0,OLED_MAX_ROW-LINE1) ;
- StrShowSysString(SYS_STR_FM_SAVE_PRESET,LCD_AUTO_CENTER_COL,OLED_FM_PRESET_START_PAGE-PAGE2);
- UiShowFreq();
- UiShowPreset(UI_FM_PRESET_START_PAGE,UI_FM_PRESET_START_COLUMN,gxbFmRecPreset); //tne 2006/05/10 #1
- break;
- case UI_SAVE_PRESET_SAVE:
- OledClearArea(SEG0,OLED_FM_PRESET_START_PAGE-PAGE2, OLED_MAX_COL-SEG0,LINE1) ;
- StrShowSysString(SYS_STR_FM_SAVING,LCD_AUTO_CENTER_COL,OLED_FM_PRESET_START_PAGE-PAGE2);
- for(bI=0;bI<6;bI++)
- {
- OledReverse(33,UI_FM_PRESET_BLOCK_PAGE<<3,16,16);
- UiFmDelay(2,UI_FM_PRESET_SAVE_TIME);
- }
- gxwPresetData[gxbFmRecPreset] = gxwFmFreq; //tne 2006/05/10 #1
- //modify by tne 2005/01/07 #2
- bI=gxwFmFreq-FM_FREQ_MIN;
- //SramWrite(SRAM_FM_PRESET_1+gxbFmPreset, &bI); //Walace060309#1
- StrShowSysString(SYS_STR_FM_SAVE_PRESET,LCD_AUTO_CENTER_COL,OLED_FM_PRESET_START_PAGE-PAGE2);
- gxbFmPreset=gxbFmRecPreset; //tne 2006/05/10 #1
- #if(FM_PRESET_PRESAVE) //Walace060714#1
- SaveFmPresetSetting();
- #endif
- case UI_SAVE_PRESET_SELECT:
- //tne 2006/05/10 #1
- gxbFmRecPreset++;
- if(gxbFmRecPreset>FM_MAX_PRESET) gxbFmRecPreset=0;
- UiScrollPrset(gxbFmRecPreset);
- break;
- case UI_FM_SEARCH_UP:
- case UI_FM_SEARCH_DOWN:
- bShowSearch=TRUE;
- //fix by tne 2004/12/18 #1
- if(gxbUiMenuMainStates==UI_NO_MENU)
- {
- OledClearArea(SEG0,OLED_FM_FREQ1_PAGE,OLED_MAX_COL-SEG0,OLED_MAX_ROW-OLED_FM_FREQ1_PAGE) ;
- StrShowSysString(SYS_STR_FM_SEARCHING,LCD_AUTO_CENTER_COL,OLED_FM_FREQ1_PAGE);
- }
- else
- {
- OledClearArea(SEG0,OLED_FM_FREQ2_PAGE,OLED_MAX_COL-SEG0,OLED_MAX_ROW-OLED_FM_FREQ2_PAGE) ;
- StrShowSysString(SYS_STR_FM_SEARCHING,LCD_AUTO_CENTER_COL,OLED_FM_FREQ2_PAGE);
- }
- UiFmDelay(1,0xFFFF);
- bI = (bStatus&0x01); // Get search up or search down
- gxbLcdCounter=0;
- OledClearArea(SEG0,OLED_FM_FREQ1_PAGE,OLED_MAX_COL-SEG0,OLED_MAX_ROW-OLED_FM_FREQ1_PAGE) ; //Dennis Shih 2006/03/06
- */
- }
- }
- #if(USE_ERR_MSG_DISPLAY)
- void UiShowErrMsg(WORD wErrMsg) large
- {
- //if(gxbUiMenuMainStates==UI_NO_MENU) //tne 2007/01/11 #1
- {
- OledShowIconNew(2,IM_RADIO_FREQ_CLEAR_BAR,UI_FM_FREQ_COL,UI_FM_FREQ_ROW);
- StrShowSysString(wErrMsg,LCD_AUTO_CENTER_COL,UI_FM_FREQ_ROW);
- }
- /* //tne 2007/01/11 #1
- else
- {
- OledClearArea(SEG0,OLED_FM_FREQ2_PAGE,OLED_MAX_COL-SEG0,LINE1) ;
- StrShowSysString(wErrMsg,LCD_AUTO_CENTER_COL,UI_FM_FREQ2_PAGE);
- }
- */
- }
- #endif
- void UiErrHandle(void) large
- {
- #if(USE_ERR_MSG_DISPLAY)
- BYTE bErrCode;
- /* //tne 2007/01/13 #3
- if(gxbErrCode==ERR_NO_ERROR)
- return;
- else
- gxbLastErrCode=gxbErrCode;
- */
- //LCD_CTRL_EN();
- switch(gxbErrCode)
- {
- case ERR_FM_SEARCH_ERROR:
- UiShowErrMsg(SYS_STR_NO_STATION);
- break;
- case ERR_FM_NO_PRESET:
- UiShowErrMsg(SYS_STR_NO_FM_PRESET);
- break;
- default:
- bErrCode=(((gxbErrCode&0xF0)>>4)*10)+(gxbErrCode&0x0F);
- UiShowErrMsg(SYS_STR_ERR_CODE);
- //fix by tne 2004/12/18 #1
- OledShowNumber(bErrCode,UI_ERR_MSG_NUM_COLNUM,OLED_FM_FREQ1_PAGE,2);
- }
- gxbLcdCounter=0;
- while(gxbLcdCounter<UI_SHW_FM_ERR_DELAY_TIME) { };
- OledShowIconNew(2,IM_RADIO_FREQ_CLEAR_BAR,UI_FM_FREQ_COL,UI_FM_FREQ_ROW);
- UiShowFreqNum();
- //LCD_CTRL_DIS();
- #else
- return;
- #endif
- }
- API void UiGoNoMenu(void)
- {
- gxbUiMenuMainStates=UI_NO_MENU;
- UiReDrawFM();
- }
- //function modify by tne 2007/01/11 #1
- void UiDrawFreqBar()
- {
- BYTE bColNum;
- bColNum=( ((DWORD)(gxwFmFreq-FM_FREQ_MIN)*UI_FM_FREQ_BAR_WIDTH) / (FM_FREQ_MAX-FM_FREQ_MIN+1) ) + UI_FM_FREQ_BAR_COL+6;
- OledShowIconNew(2,IM_RADIO_PROG_BAR,UI_FM_FREQ_BAR_COL,UI_FM_FREQ_BAR_ROW);
- OledShowIconNew(2,IM_RADIO_BAR_BLOCK,bColNum,UI_FM_FREQ_BAR_ROW);
- }
- //function modify by tne 2007/01/07 #1
- void UiShowFreqNum() large
- {
- BYTE bI;
- WORD wDispNum;
- OledShowIconNew(2,IM_RADIO_NUMBER_FULLSTOP,UI_FM_FREQ_DOT_COL,UI_FM_FREQ_ROW);
- #if(FM_MODULE==2) //Dennis Shih 2006/02/14 //tne 2006/12/06 #1
- wDispNum=gxwFmFreq*10;
- #else
- wDispNum=gxwFmFreq;
- #endif
- for(bI=2;bI>=1;bI--)
- {
- OledShowIconNew(2,
- IM_RADIO_NUMBER_0+((wDispNum%10)*FM_FREQNUM_ICON_OFFSET),
- UI_FM_LOW_FREQ_NUM_COL+((bI-1)*(UI_FM_FREQ_NUM_WIDTH+UI_FM_FREQ_SPACE)),
- UI_FM_FREQ_ROW);
- wDispNum /= 10;
- }
- for(bI=3;bI>=1;bI--)
- {
- OledShowIconNew(2,
- IM_RADIO_NUMBER_0+((wDispNum%10)*FM_FREQNUM_ICON_OFFSET),
- UI_FM_FREQ_COL+((bI-1)*(UI_FM_FREQ_NUM_WIDTH+UI_FM_FREQ_SPACE)),
- UI_FM_FREQ_ROW);
- wDispNum /= 10;
- }
- }
- void UiShowFreq()
- {
- UiShowFreqNum();
- UiDrawFreqBar();
- }
- //tne 2007/01/11 #1
- void UiReDrawFM() large
- {
- if(gxbLastErrCode!=ERR_NO_ERROR)
- {
- gxbErrCode=gxbLastErrCode;
- UiErrHandle();
- }
- OledShowIconNew(2,IM_RADIO_BG,0,0);
- UiShowNormalTitleInfo();
- UiRedrawStero();
- UiShowFreq();
- UiShowPresetStateIcon();
- if(gxbUiMenuMainStates==UI_SEL_PRESET_MENU)
- UiFmShowFmChNum(gxbFmPreset,51,107,TRUE);
- /*
- OLED_CLEAR_ALL();
- OledShowIcon(ICON_LAB_FM,SEG0,PAGE0) ; //Show FM Icon
- UiShowAlarmPic();
- UiRedrawStero();
- UiShowFreq();
- UI_SHOW_BATTERY();
- UiShowStorageSts();
- if(gxbLastErrCode!=ERR_NO_ERROR)
- {
- gxbErrCode=gxbLastErrCode;
- UiErrHandle();
- }
- #if(SYS_USE_KEY_HOLD)
- UiShowKeyHold();
- #endif
- */
- }
- /* //Walace060217#1
- void UiShowStereo() large
- {
- bit fFmNowSteroSts=FmCheckStereo();
- if(gxbUiMenuMainStates==UI_QTY_MENU) return; //not check when select qty
- if(fFmNowSteroSts!=gfFmSteroLastSts)
- {
- gfFmSteroLastSts=fFmNowSteroSts;
- UiRedrawStero();
- }
- }
- */
- //Walace060217#1
- /* //tne 2007/01/11 #1
- void UiGoStereoSetMenu(void)
- {
- UI_CLEAR_MENU_TAG_AREA(); //Nick060504
- StrShowSysString(cwStringOffOnList[gxbUiMenuSubStates],LCD_AUTO_CENTER_COL,PAGE4);
- UiShowSubMenuNum(gxbUiMenuSubStates+1,2);
- }
- */
- //tne 2007/01/11 #1
- void UiRedrawStero(void) large
- {
- if(gxbFmState&FM_STATE_STEREO_SET)
- //OledShowIcon(ICON_STERO,36,8) ; //Stereo Icon
- OledShowIconNew(2,IM_RADIO_STEREO,UI_FM_STEREO_ICON_COL,UI_FM_STEREO_ICON_ROW);
- else
- OledShowIconNew(2,IM_RADIO_MONO,UI_FM_STEREO_ICON_COL,UI_FM_STEREO_ICON_ROW);
- //OledClearArea(36,8,ICON_STERO_W,ICON_STERO_H) ;
- }
- //tne 2006/05/10 #1
- /* //tne 2007/01/11 #1
- void UiShowPreset(BYTE bPage,BYTE bColNum,BYTE bPresetNum) large
- {
- BYTE bI,bJ;
- //tne 2006/05/10 #1
- if(bPresetNum<2)
- bI = bPresetNum + FM_MAX_PRESET - 1;
- else
- bI=bPresetNum-2;
- OledClearArea(SEG0,LINE2,OLED_MAX_COL-SEG0,LINE1) ;
- gxwFGColor = OLED_BLUE;
- for(bJ=0;bJ<6;bJ++)
- {
- //modify by tne 2004/11/12
- OledShowNumber(bI,bColNum+bJ*UI_FM_PRESET_WIDTH_SPACE,PAGE2PIXEL(bPage),2);
- bI++;
- if(bI>FM_MAX_PRESET) bI=0;
- }
- gxwFGColor = OLED_WHITE;
- OledReverse(34,PAGE2PIXEL(UI_FM_PRESET_BLOCK_PAGE),13,PAGE1);
- UI_SHOW_BATTERY();
- }
- */
- //tne 2006/05/10 #1
- /* //tne 2007/01/11 #1
- void UiScrollPrset(BYTE bPresetNum) large
- {
- UiShowPreset(UI_FM_PRESET_START_PAGE,UI_FM_PRESET_START_COLUMN,bPresetNum);
- return ;
- }
- void UiFmDelay(BYTE bDelay1,WORD wDelay2) large
- {
- WORD wI;
- for(;bDelay1>0;bDelay1--)
- {
- for(wI=wDelay2;wI>0;wI--) { };
- }
- }
- */
- //vicky050131
- void UiGoFMMute(void)
- {
- BOOL fShowSearch;
- BYTE bKey;
- gxdwKeepTime=gxdwNowTime; //vicky050131
- FmSetMute();
- //Renshuo050322#A
- #if(!EXT_ADC | !EXT_DAC | !EXT_PA)
- CdcSetPaGain(0); //Ren050312#1 //tne 2006/12/26 #1
- #endif
- while(1)
- {
- KeyGet(bKey);
- //vicky060810 start
- if(gxbModuleState==(MODULE_INITIAL|MODULE_PRC_REC_KEY_END))
- {
- if(bKey&KEY_BREAK)
- {
- bKey=KEY_INVALID;
- gxbModuleState=MODULE_INITIAL;
- }
- else
- {
- bKey=KEY_INVALID;
- }
- }
- //vicky060810 end
- UiCheckBackLight(bKey);
- #if(UI_USE_MODE_KEY)
- //if(bKey==KEY_MODE_BREAK)
- if(bKey==KEY_FUNC_LONG) //tne 2007/01/11 #1
- {
- //#if(FM_MODULE==1) //Dennis Shih 2006/02/14 //Walace060217#1
- //UiFmFadeOut();
- //#endif
- UiFmSwapNextMode();
- }
- #endif
- //Renshuo050322#A
- #if(!EXT_ADC | !EXT_DAC | !EXT_PA)
- //IntCdcSetPaGainTask(FALSE); //Ren050312#1
- CdcSetPaGainTask(PA_TASK_UNIMMEDIATE|PA_TASK_DELAY); //Walace060525#4 //tne 2006/12/26 #1
- #endif
- if(gxbLcdCounter>=UI_FM_SEARCH_REFLASH_TIME)
- {
- if(fShowSearch)
- //OledClearArea(SEG0,OLED_FM_FREQ1_PAGE,OLED_MAX_COL-SEG0,LINE1);
- OledShowIconNew(2,IM_RADIO_FREQ_CLEAR_BAR,UI_FM_FREQ_COL,UI_FM_FREQ_ROW);
- else
- //StrShowSysString(SYS_STR_FM_SEARCHING,LCD_AUTO_CENTER_COL,OLED_FM_FREQ1_PAGE);
- //StrShowSysString(SYS_STR_FM_SEARCHING,LCD_AUTO_CENTER_COL,OLED_FM_FREQ1_PAGE+PAGE2);
- UiShowFreqNum();
- fShowSearch^=1;
- gxbLcdCounter=0;
- }
- #if(!SETTING_FOR_ICE_START)
- if(gxdwNowTime-gxdwKeepTime >gxbMuteTime)
- #endif
- {
- #if(FM_MODULE!=2)
- FmSetStereo(gxbFmState&FM_STATE_STEREO_SET); //tne 2006/11/17 #1
- #endif
- UiShowFreqNum(); //tne 2007/01/11 #1
- break;
- }
- }
- FmSetFreq();
- //Renshuo050322#A
- #if(!EXT_ADC | !EXT_DAC | !EXT_PA)
- CdcSetPaGain(gxbVolume); //Ren050312#1 //tne 2006/12/26 #1
- #endif
- }
- //end
- #if(UI_USE_ALARM_DISPLAY)
- /* //tne 2007/01/15 #1 move to UiCommon.c
- API void UiShowWakeUp(void) large
- */
- #endif
- //Dennis Shih 20060309 start
- #if(FM_MODULE==0)
- //for Cenix second requset, the function is modified from FMFreqCount()
- //StartRreq: the freq is that count start point
- //EndFreq: the freq is that count end point
- //CountUp = 1: count up ; countup =0: count down
- BYTE FMFreqSearch(XWORD StartFreq, XWORD EndFreq, BOOL CountUp) large
- {
- BYTE bKey;
- XWORD TempCounter=0;
- gxwFmFreq=StartFreq;
- // UiShowFreq(FALSE);
- //tne 2007/01/12 #3 //FM debug mode
- #if(FM_DEBUG_SEARCH_MODE==0)
- if(CountUp)
- {
- do
- {
- TempCounter++;
- KeyGet(bKey);
- UiCheckBackLight(bKey);
- // LcdBackLightControl(LCD_BACKLIGHT_OFF);
- UiNormalCheck();
- if(TempCounter>0x0F50)
- {
- #if(FM_STEP_100K) //Dennis060517#1 start
- gxwFmFreq+=1;
- #else
- gxwFmFreq+=FM_SEARCH_STEP;
- #endif //Dennis060517#1 end
- UiShowFreq();
- //tne 2005/07/26
- if(gxwFmFreq>=EndFreq)
- return FALSE;
- // if(gxbUiMenuMainStates!=UI_KEY_HOLD_MENU)
- // UiShowFreq(FALSE);
- if(FmFreqCheck())
- return TRUE;
- TempCounter=0;
- }
- if(UiFmCheckBreakAutoSearchKey(bKey))
- return FM_SEARCH_USER_BREAK; //tne 2007/01/12 #3
- }while(1);
- }
- else
- {
- do
- {
- TempCounter++;
- KeyGet(bKey);
- UiCheckBackLight(bKey);
- // LcdBackLightControl(LCD_BACKLIGHT_OFF);
- UiNormalCheck();
- if(TempCounter>0x0F50)
- {
- #if(FM_STEP_100K) //Dennis060517#1 start
- gxwFmFreq-=1;
- #else
- gxwFmFreq-=FM_SEARCH_STEP;
- #endif //Dennis060517#1 end
- UiShowFreq();
- //tne 2005/07/26
- if(gxwFmFreq<=EndFreq)
- return FALSE;
- // if(gxbUiMenuMainStates!=UI_KEY_HOLD_MENU)
- // UiShowFreq(FALSE);
- if(FmFreqCheck())
- return TRUE;
- TempCounter=0;
- }
- if(UiFmCheckBreakAutoSearchKey(bKey))
- return FM_SEARCH_USER_BREAK; //tne 2007/01/12 #3
- }while(1);
- }
- #elif(FM_DEBUG_SEARCH_MODE==1)
- while(1)
- {
- KeyGet(bKey);
- UiCheckBackLight(bKey);
- UiNormalCheck();
- if(CountUp)
- {
- gxwFmFreq+=FM_SEARCH_STEP;
- if(gxwFmFreq>=EndFreq)
- break;
- }
- else
- {
- gxwFmFreq-=FM_SEARCH_STEP;
- if(gxwFmFreq<=EndFreq)
- break;
- }
- if(UiFmCheckBreakAutoSearchKey(bKey))
- return FM_SEARCH_USER_BREAK;
- }
- return FALSE;
- #elif(FM_DEBUG_SEARCH_MODE==2)
- while(1)
- {
- KeyGet(bKey);
- UiCheckBackLight(bKey);
- UiNormalCheck();
- UiShowFreq();
- CommonDelay(0x4000);
- if(CountUp)
- {
- gxwFmFreq+=FM_SEARCH_STEP;
- if(gxwFmFreq>=EndFreq)
- break;
- }
- else
- {
- gxwFmFreq-=FM_SEARCH_STEP;
- if(gxwFmFreq<=EndFreq)
- break;
- }
- for(TempCounter=0;TempCounter<sizeof(gcwSimFmStation);TempCounter++)
- {
- if(gxwFmFreq==gcwSimFmStation[TempCounter])
- return TRUE;
- }
- if(UiFmCheckBreakAutoSearchKey(bKey))
- return FM_SEARCH_USER_BREAK;
- }
- return FALSE;
- #endif
- }
- #endif
- //Dennis Shih 20060309 end
- //Dennis060511#2 start
- /*--------------------------------------------------------------------------
- Desciption:
- The "Fade In/Out" assistance in M5181 Project
- Arguments:
- bVol : "X" Fad Out Volume to "X"
- Nms : "N" Fade Out with "N" mS.
- Global arguments:
- gxbTargetVolume
- gxbLastVolume
- Returns:
- void
- --------------------------------------------------------------------------*/
- #if(FM_MODULE!=2) //modify by Rojam 2007-04-20 14:41
- void FMFadeOutVol(BYTE bVol, BYTE Nms) large
- {
- XWORD i;
- gxbTargetVolume=gxbLastVolume;
- while(gxbTargetVolume!=bVol)
- {
- for(i=1;i<(17*Nms);i++) {;} //2550/150
- gxbTargetVolume--;
- //IntCdcSetPaGainTask(TRUE);
- CdcSetPaGainTask(PA_TASK_IMMEDIATE); //Walace060525#4 //tne 2006/12/26 #1
- }
- }
- #endif
- //Dennis060511#2 end
- #if(FM_PRESET_PRESAVE) //Walace060714#1
- void SaveFmPresetSetting() large
- {
- BYTE bI,bKeepStorType;
- bKeepStorType=gxbStorage;
- NandPrivateEn();
- ReadSettingData(FS_DATA_0_0);
- for(bI=0;bI<=FM_MAX_PRESET;bI++)
- {
- //Walace060931#1 start
- #if(FM_STEP_100K)
- gxbFsData[SRAM_FM_PRESET_START+bI+gxwOffsetDataSec]=((BYTE)((gxwPresetData[bI]-FM_FREQ_MIN)&0x00FF));
- #else
- *((PWORD)(gxbFsData+SRAM_FM_PRESET_START+gxwOffsetDataSec)+bI) = (gxwPresetData[bI]-FM_FREQ_MIN); //tne 2006/11/17 #2
- //gxbFsData[SRAM_FM_PRESET_1+bI+gxwOffsetDataSec]=((BYTE)((gxwPresetData[bI]-FM_FREQ_MIN)&0x00FF));
- //gxbFsData[SRAM_FM_PRESET_16+bI+gxwOffsetDataSec]=((BYTE)((gxwPresetData[bI]-FM_FREQ_MIN)>>8));
- #endif
- //Walace060931#1 end
- }
- #if(FM_STEP_100K)
- gxbFsData[SRAM_FM_FREQ+gxwOffsetDataSec]=((BYTE)((gxwFmFreq-FM_FREQ_MIN)&0x00FF));
- #else
- //Walace060931#1
- *(PWORD)(gxbFsData+SRAM_FM_FREQ+gxwOffsetDataSec)=gxwFmFreq-FM_FREQ_MIN;
- //gxbFsData[SRAM_FM_FREQ_HIGH+gxwOffsetDataSec]=((BYTE)((gxwFmFreq-FM_FREQ_MIN)>>8));
- #endif
- gxbFsData[SRAM_FM_PRESET_NUM+gxwOffsetDataSec]=gxbFmPreset;
- gxbFsData[SRAM_FM_STATE+gxwOffsetDataSec]=gxbFmState;
- FsWrite(SAVE_SETTING_NAND_ADD,1,FS_DATA_0_0);
- NandPrivateDis();
- NandFinishJob();
- gxbStorType=bKeepStorType;
- gxbStorage=bKeepStorType;
- gxbFmPreset = gxbFmRecPreset;
- }
- #endif
- //tne 2007/01/11 #1 start
- void UiShowPresetStateIcon(void)
- {
- switch(gxbUiMenuMainStates)
- {
- case UI_NO_MENU:
- OledShowIconNew(2,IM_RADIO_NORMAL,UI_PRESET_ICON_COL,UI_PRESET_ICON_ROW);
- OledShowIconNew(2,IM_RADIO_CH_BAR_BG_CLEAR,0,102);
- break;
- case UI_SEL_PRESET_MENU:
- OledShowIconNew(2,IM_RADIO_PRESET,UI_PRESET_ICON_COL,UI_PRESET_ICON_ROW);
- OledShowIconNew(2,IM_RADIO_CH_BAR_BG,0,102);
- OledShowIconNew(2,IM_RADIO_CH_ARROW_LEFT, 36, 111);
- OledShowIconNew(2,IM_RADIO_CH_ARROW_RIGHT, 76, 111);
- break;
- }
- }
- void UiFmSwapNextMode(void)
- {
- #if(_PEDOMETER_Mode_)
- DisableTimer1(); // modify by Rojam 2007-04-02 14:50
- #endif
- FmEnd();
- gxbSettingBuffer[SETTING_NEXT_MODE]=SAVE_AND_SEL_MODE;
- gxbSettingBuffer[SETTING_DISPLAY_SWAPING]=TRUE;
- gxbLastErrCode=ERR_NO_ERROR;
- SaveSetting();
- }
- BOOL UiFmCheckBreakAutoSearchKey(BYTE bKey) large
- {
- switch(bKey)
- {
- case KEY_UP_BREAK:
- case KEY_LEFT_BREAK:
- case KEY_RIGHT_BREAK:
- case KEY_FUNC_BREAK:
- return TRUE;
- case KEY_FUNC_LONG:
- UiFmSwapNextMode();
- break;
- }
- return FALSE;
- }
- //tne 2007/01/12 #3
- //fSaveScanMode: For auto scan and save preset mode
- //Return Value: TRUE - Find a Station
- // FALSE - No Station
- // FM_SEARCH_USER_BREAK - User Break
- BYTE UiFmAutoSearchFreq(BOOL fSearchUp, BOOL fSaveScanMode) large
- {
- BYTE bRetVal;
- #if(FM_MODULE==1) //Dennis Shih 2006/03/06
- WORD wSearchOver;
- wSearchOver=0;
- bRetVal=TRUE;
- while(FmSearch(fSearchUp)==FALSE)
- {
- KeyGet(bKey);
- UiCheckBackLight(bKey);
- UiNormalCheck();
- UiShowFreq();
- if(UiFmCheckBreakAutoSearchKey(bKey))
- {
- bRetVal=FM_SEARCH_USER_BREAK;
- break;
- }
- if(wSearchOver==(FM_FREQ_MAX-FM_FREQ_MIN))
- {
- bRetVal=FALSE;
- break;
- }
- else
- {
- wSearchOver++;
- }
- if( (fSaveScanMode) && (gxwFmFreq>=FM_FREQ_MAX) )
- {
- bRetVal=FALSE;
- break;
- }
- }
- #elif(FM_MODULE==2)
- #if(0) //modify by Rojam 2007-05-18 14:27
- bAutoNum=0;
- FmAutoSeek(&bAutoNum); //Kitty 061101
- if(bAutoNum)
- {
- for(bIndex=0;bIndex<bAutoNum;bIndex++) //kitty 061110
- {
- gxwPresetData[bIndex]=FmChanToFreq(FMseekChannels[bIndex]);
- }
- }
- bRetVal=2;
- gxbFmPreset=1;
- gxbFmRecPreset=bAutoNum;
- gxbFmMaxRecPreset=bAutoNum;
- return bRetVal;
- #else
- BYTE bKey;
- BOOL fShowSearch;
- fShowSearch=TRUE;
- bRetVal=FALSE;
- if(fSaveScanMode==FM_FREQ_SEARCH_NORMAL_MODE)
- {
- OledShowIconNew(2,IM_RADIO_FREQ_CLEAR_BAR,UI_FM_FREQ_COL,UI_FM_FREQ_ROW);
- StrShowSysString(SYS_STR_FM_SEARCHING,LCD_AUTO_CENTER_COL,UI_FM_FREQ_ROW);
- }
- KeyGet(bKey);
- UiCheckBackLight(bKey);
- UiNormalCheck();
- if(UiFmCheckBreakAutoSearchKey(bKey))
- {
- bRetVal=FM_SEARCH_USER_BREAK;
- return bRetVal;
- }
- if(!FmSearch(fSearchUp))
- {
- bRetVal=FALSE;
- return bRetVal;
- }
- else
- {
- if(fSaveScanMode==FM_FREQ_SEARCH_NORMAL_MODE)
- {
- bRetVal=TRUE;
- }
- else
- {
- if(gxwFmFreq< gxbPreSattion)
- {
- bRetVal=FALSE;
- return bRetVal;
- }
- else
- {
- gxbPreSattion=gxwFmFreq;
- bRetVal=TRUE;
- }
- }
- }
- if(fSaveScanMode==FM_FREQ_SEARCH_NORMAL_MODE)
- {
- gxbLcdCounter=0;
- while(gxbLcdCounter<7)
- {
- }
- OledShowIconNew(2,IM_RADIO_FREQ_CLEAR_BAR,UI_FM_FREQ_COL,UI_FM_FREQ_ROW);
- }
- #endif
- #else //Dennis Shih 2006/03/09
- WORD wStartFreq;
- wStartFreq=gxwFmFreq;
- if(fSearchUp)
- {
- #if(FM_MODULE==2) //modify by Rojam 2007-04-18 14:10
- bRetVal=FmSearch(fSearchUp);
- #else
- bRetVal=FMFreqSearch(wStartFreq,FM_FREQ_MAX,1);
- #endif
- if( (fSaveScanMode) && (gxwFmFreq>=FM_FREQ_MAX) )
- {
- //...Do Nothing
- }
- else
- {
- #if(FM_MODULE==2)
- if(bRetVal==FALSE)
- bRetVal=FmSearch(fSearchUp);
- #else
- if(bRetVal==FALSE)
- bRetVal=FMFreqSearch(FM_FREQ_MIN,wStartFreq,1);
- #endif
- }
- }
- else
- {
- #if(FM_MODULE==2)
- bRetVal=FmSearch(fSearchUp);
- if(bRetVal==FALSE)
- bRetVal=FmSearch(fSearchUp);
- #else
- bRetVal=FMFreqSearch(wStartFreq,FM_FREQ_MIN,0);
- if(bRetVal==FALSE)
- bRetVal=FMFreqSearch(FM_FREQ_MAX,wStartFreq,0);
- #endif
- }
- #endif
- UiShowFreq();
- FmSetFreq();
- return bRetVal;
- //Dennis Shih 20060309 end
- }
- void UiShowFmMenu(void) large
- {
- UiShowLargeBackground(5,IM_BROWSER_BG_03_S1);
- StrShowSysString(SYS_STR_MENU, LCD_AUTO_CENTER_COL,ITEM_START_ROW-ITEM_ROW_OFF);
- UiShowNormalTitleInfo();
- UiClearAllMenuItem();
- }
- void UiShowFmMenuText(void) large
- {
- #define TOTAL_DISP_ITEM_NUM (ITEM_NUM_OPAGE)
- BYTE bJ;
- /*
- if(gxbTotalMenuItemNum>=TOTAL_DISP_ITEM_NUM)
- {
- if((gxbUiMenuSubStates+TOTAL_DISP_ITEM_NUM)>gxbTotalMenuItemNum) //Last page
- gxbMenuDispLine=TOTAL_DISP_ITEM_NUM-(gxbTotalMenuItemNum-gxbUiMenuSubStates);
- else
- gxbMenuDispLine=0;
- }
- else
- */
- {
- gxbMenuDispLine=gxbUiMenuSubStates;
- }
- for(bJ=0;( (bJ<TOTAL_DISP_ITEM_NUM) && (bJ<gxbTotalMenuItemNum) );bJ++)
- {
- UiShowMenuItem( bJ,
- IM_EXPLORE_BUTTON_CLEAR_STRING,
- IM_ITEM_UNSELECT,
- pcwFmMenuStringPoint[gxbUiMenuSubStates-gxbMenuDispLine+bJ]);
- }
- UiShowMenuItem(gxbMenuDispLine,IM_EXPLORE_BUTTON_01,IM_ITEM_SELECT,pcwFmMenuStringPoint[gxbUiMenuSubStates-gxbMenuDispLine]);
- #undef TOTAL_DISP_ITEM_NUM
- }
- void UiFmScanAndAddPreset(void) large
- {
- BYTE bRecPreset; //One Base, Last Saved Preset Num, 0 mean no station found
- WORD wKeptFmFreq;
- BYTE bKey;
- #if(FM_MODULE!=2) //modify by Rojam 2007-04-20 14:40
- FMFadeOutVol(0,50);
- #endif
- wKeptFmFreq=gxwFmFreq;
- bRecPreset=0;
- gxwFmFreq=FM_FREQ_MIN;
- #if(FM_MODULE==2) // WHH070322
- gxbPreSattion=FM_FREQ_MIN;
- #endif
- UiShowFreq();
- FmSetFreq();
- while(1)
- {
- switch(UiFmAutoSearchFreq(FM_FREQ_SEARCH_UP,FM_FREQ_SEARCH_SAVE_PRESET_MODE))
- {
- case TRUE:
- if(bRecPreset<FM_MAX_PRESET) // Patrick070307#1
- {
- bRecPreset++;
- gxwPresetData[bRecPreset-1]=gxwFmFreq;
- }
- #if(FM_MODULE!=2) //modify by Rojam 2007-04-20 14:40
- CdcSetPaGain(gxbVolume);
- #endif
- gxbLcdCounter=0;
- while(gxbLcdCounter<FM_AUTO_SCAN_PREST_DELAY_TIME)
- {
- #if(!EXT_ADC | !EXT_DAC | !EXT_PA)
- CdcSetPaGainTask(PA_TASK_UNIMMEDIATE|PA_TASK_DELAY);
- #endif
- }
- if(gxwFmFreq<FM_FREQ_MAX)
- {
- #if(FM_MODULE!=2) //modify by Rojam 2007-04-20 14:40
- FMFadeOutVol(0,50);
- #endif
- break;
- }
- case FALSE:
- CommonDelay(0xFFFF);
- CommonDelay(0xFFFF); //Delay let user watch last freq
- gxwFmFreq=wKeptFmFreq;
- UiShowFreq();
- FmSetFreq();
- case FM_SEARCH_USER_BREAK:
- #if(0)//FM_MODULE==2) //modify by Rojam 2007-04-20 19:24
- bRecPreset=bAutoNum;
- #endif
- goto SCAN_FINISH;
- }
- }
- SCAN_FINISH:
- if(bRecPreset>0)
- {
- if(gxbFmRecPreset<bRecPreset)
- gxbFmRecPreset=bRecPreset;
- if(gxbFmMaxRecPreset<bRecPreset)
- gxbFmMaxRecPreset=bRecPreset;
- #if(FM_PRESET_PRESAVE)
- SaveFmPresetSetting();
- #endif
- }
- #if(FM_MODULE!=2) //modify by Rojam 2007-04-20 14:40
- CdcSetPaGain(gxbVolume);
- #endif
- }
- //tne 2007/01/13 #1
- void UiFmSetFreqFromPreset(void) large
- {
- UiFmShowFmChNum(gxbFmPreset,51,107,TRUE);
- gxwFmFreq = gxwPresetData[gxbFmPreset-1];
- FmSetFreq();
- UiShowFreq();
- }
- void UiFmVolMenuCtrl(BYTE bKey) large
- {
- switch(bKey)
- {
- /*============Del by Rojam 2007-04-02 09:13===============
- #if(FIVEKEY)
- case KEY_RIGHT_BREAK:
- case KEY_RIGHT_LONG:
- #else
- case KEY_VOL_UP_BREAK:
- case KEY_VOL_UP_LONG:
- #endif
- =========================== end Del ========================*/
- case KEY_RIGHT_BREAK:
- case KEY_RIGHT_LONG:
- if(gxbVolume<MAX_VOL_NUM)
- {
- gxbVolume++;
- CdcCtrl(CDC_VOL_UP);
- }
- UiGoVolMenu();
- break;
- /*============Del by Rojam 2007-04-02 09:13===============
- #if(FIVEKEY)
- case KEY_LEFT_BREAK:
- case KEY_LEFT_LONG:
- #else
- case KEY_VOL_DOWN_BREAK:
- case KEY_VOL_DOWN_LONG:
- #endif
- =========================== end Del ========================*/
- case KEY_LEFT_BREAK:
- case KEY_LEFT_LONG:
- if(gxbVolume>MIN_VOL_NUM)
- {
- gxbVolume--;
- #ifdef UI_VOL_DISPLAY_FIX_MODE
- //if(gxbVolume==15) gxbVolume=7; //2004.11.11 Renshuo
- if(gxbVolume==16) gxbVolume=8;
- #endif
- CdcCtrl(CDC_VOL_DOWN);
- }
- UiGoVolMenu();
- break;
- /*============Del by Rojam 2007-04-02 09:14===============
- #if(FIVEKEY)
- case KEY_LEFT:
- case KEY_RIGHT:
- #else
- case KEY_VOL_UP:
- case KEY_VOL_DOWN:
- #endif
- =========================== end Del ========================*/
- case KEY_LEFT:
- case KEY_RIGHT:
- if(gxbUiMenuMainStates==UI_VOL_MENU)
- gxbVolCount=0;
- break;
- default:
- if(gxbVolCount>=UI_VOLUME_DELAY_TIME)
- {
- #if(1)//FIVEKEY) // modify by Rojam 2007-04-02 09:15
- UI_SHOW_VOLUME();
- UI_SHOW_VOLUME_NUM_1(); //TONY070301
- UI_SHOW_VOLUME_NUM_2();
- #endif
- gxbUiMenuMainStates=gxbLastUiMenuMain;
- }
- }
- }
- void UiFmNormalCtrl(BYTE bKey) large
- {
- #if(FM_MODULE==2)
- BOOL fSeek;
- #endif
- switch(bKey)
- {
- case KEY_RIGHT_BREAK:
- #if(FM_MODULE!=2) //Dennis Shih 2006/02/14 //tne 2006/12/06 #1
- {
- FMFadeOutVol(0,50); //Dennis060511#1
- }
- #endif
- #if(FM_STEP_100K) //Dennis060517#1 start
- gxwFmFreq++;
- #else
- gxwFmFreq+=FM_SEARCH_STEP;
- #endif //Dennis060517#1 end
- if(gxwFmFreq>FM_FREQ_MAX)
- gxwFmFreq=FM_FREQ_MIN;
- UiShowFreq();
- FmSetFreq();
- #if(FM_MODULE!=2) //Dennis Shih 2006/02/14 //tne 2006/12/06 #1
- CdcSetPaGain(gxbVolume); //tne 2006/12/26 #1
- #endif
- break;
- case KEY_LEFT_BREAK:
- #if(FM_MODULE!=2) //Dennis Shih 2006/02/14 //tne 2006/12/06 #1
- {
- FMFadeOutVol(0,50); //Dennis060511#1
- }
- #endif
- #if(FM_STEP_100K) //Dennis060517#1 start
- gxwFmFreq--;
- #else
- gxwFmFreq-=FM_SEARCH_STEP;
- #endif //Dennis060517#1 end
- if(gxwFmFreq<FM_FREQ_MIN)
- gxwFmFreq=FM_FREQ_MAX;
- UiShowFreq();
- FmSetFreq();
- #if(FM_MODULE!=2) //Dennis Shih 2006/02/14 //tne 2006/12/06 #1
- CdcSetPaGain(gxbVolume); //tne 2006/12/26 #1
- #endif
- break;
- case KEY_RIGHT_LONG:
- case KEY_LEFT_LONG:
- #if(0)//FM_MODULE==2) // modify by Rojam 2007-05-18 14:26
- if(gxwUiFmSearchDelay==0)
- {
- if(bKey==KEY_RIGHT_LONG)
- fSeek=1; //UP
- else
- fSeek=0; //DOWN
- FmSearch(fSeek);
- /*============Del by Rojam 2007-04-20 17:54===============
- if(!FmSearch(fSeek))
- {
- gxbErrCode=ERR_FM_SEARCH_ERROR;
- UiErrHandle();
- }
- =========================== end Del ========================*/
- UiShowFreq();
- gxwUiFmSearchDelay=0x5000;
- }
- #else
- if(gxwUiFmSearchDelay==0)
- {
- #if(FM_MODULE!=2) // modify by Rojam 2007-05-18 14:26
- FMFadeOutVol(0,50); //Dennis060511#2
- #endif
- if(bKey==KEY_RIGHT_LONG) //Use bKey for temp variable
- bKey=FM_FREQ_SEARCH_UP;
- else
- bKey=FM_FREQ_SEARCH_DOWN;
- if(!UiFmAutoSearchFreq(bKey,FM_FREQ_SEARCH_NORMAL_MODE)) //tne 2007/01/11 #1
- {
- gxbErrCode=ERR_FM_SEARCH_ERROR;
- UiErrHandle();
- }
- //Dennis Shih 2006/02/14 //Walace060217#1
- #if(FM_MODULE!=2) // modify by Rojam 2007-05-18 14:26
- CdcSetPaGain(gxbVolume); //tne 2006/12/26 #1
- #endif
- gxwUiFmSearchDelay=0x1700;
- }
- #endif
- break;
- case KEY_UP_BREAK:
- if(gxbFmMaxRecPreset==0)
- {
- gxbErrCode=ERR_FM_NO_PRESET;
- UiErrHandle();
- }
- else
- {
- gxbUiMenuMainStates=UI_SEL_PRESET_MENU;
- UiShowPresetStateIcon();
- UiFmSetFreqFromPreset();
- }
- break;
- case KEY_FUNC_BREAK:
- gxbUiMenuMainStates=UI_FM_NORMAL_FUN_MENU;
- gxbUiMenuSubStates=UI_NORMAL_ADD_PRESET_MENU;
- gxbTotalMenuItemNum=UI_FM_NORMAL_MENU_MAX_ITEM;
- pcwFmMenuStringPoint=cwStringFmNormalMenuList;
- UiShowFmMenu();
- UiShowFmMenuText();
- break;
- case KEY_FUNC_LONG:
- UiFmSwapNextMode();
- break;
- case KEY_REC_BREAK: // modify by Rojam 2007-04-02 09:9
- gxbLastUiMenuMain=gxbUiMenuMainStates;
- gxbUiMenuMainStates=UI_VOL_MENU;
- UI_SHOW_VOLUME_SELECT();
- gxbVolCount=0;
- break;
- /*============Del by Rojam 2007-04-02 09:7===============
- #if(FIVEKEY)
- case KEY_VOL_LONG:
- // case KEY_VOL_BREAK:
- UiGoVolMenu();
- break;
- #else
- case KEY_VOL_UP:
- case KEY_VOL_DOWN:
- UiGoVolMenu();
- break;
- #endif
- #if(!FIVEKEY)
- case KEY_REC_BREAK:
- #else
- case KEY_VOL_BREAK:
- #endif
- =========================== end Del ========================*/
- case KEY_REC_LONG: // modify by Rojam 2007-04-02 09:8
- case KEY_REC_LONG_BREAK: // modify by Rojam 2007-04-02 09:8
- //obDCVARRD=0x0C; //David050817#2
- //obDCVWRDATA=0x46;
- //Walace060710#1 start
- if(BattCheck()>BATTERY_LV_LOW_FOR_REC)
- {
- //swap to record module
- #if(!SETTING_FOR_ICE_START)
- if(!gbFsUnableUse) //Walace060629#2 start
- {
- //LCD_CTRL_DIS();
- //modify bt tne 2005/01/07 #2
- gxbLastErrCode=ERR_NO_ERROR;
- gxbSettingBuffer[SETTING_NEXT_MODE]=SAVE_AND_REC;
- gxbSettingBuffer[SETTING_DISPLAY_SWAPING]=FALSE;
- SaveSetting();
- } //Walace060629#2 end
- #endif
- }
- else
- {
- OLED_CLEAR_ALL();
- OledShowIconNew(1,ICON_BATT_WARRING,(OLED_MAX_COL-48)/2,(OLED_MAX_ROW-48)/2);
- #if(SHOW_BATT_VALUE)
- OledShowNumber(BattCheck(),0,0,3);
- #endif
- gxbLcdCounter=0;
- while(gxbLcdCounter<UI_SHW_WAKE_UP_DELAY_TIME) { };
- UiGoNoMenu();
- }
- //Walace060710#1 end
- break;
- }
- }
- void UiSelPresetCtrl(BYTE bKey) large
- {
- switch(bKey)
- {
- case KEY_RIGHT_BREAK:
- case KEY_RIGHT_LONG:
- #if(FM_MODULE!=2) //modify by Rojam 2007-04-20 14:40
- FMFadeOutVol(0,50); //Dennis060511#1
- #endif
- if(gxbFmPreset < gxbFmMaxRecPreset)
- gxbFmPreset++;
- else
- gxbFmPreset = 1;
- UiFmSetFreqFromPreset();
- #if(FM_MODULE!=2) //modify by Rojam 2007-04-20 14:40
- CdcSetPaGain(gxbVolume);
- #endif
- break;
- case KEY_LEFT_BREAK:
- case KEY_LEFT_LONG:
- #if(FM_MODULE!=2) //modify by Rojam 2007-04-20 14:39
- FMFadeOutVol(0,50); //Dennis060511#1
- #endif
- if(gxbFmPreset>1)
- gxbFmPreset--;
- else
- gxbFmPreset = gxbFmMaxRecPreset;
- UiFmSetFreqFromPreset();
- #if(FM_MODULE!=2) //modify by Rojam 2007-04-20 14:40
- CdcSetPaGain(gxbVolume);
- #endif
- break;
- case KEY_UP_BREAK:
- gxbUiMenuMainStates=UI_NO_MENU;
- UiShowPresetStateIcon();
- break;
- case KEY_FUNC_BREAK:
- gxbUiMenuMainStates=UI_FM_PRESET_FUN_MENU;
- gxbUiMenuSubStates=UI_PRESET_DEL_PRESET_MENU;
- gxbTotalMenuItemNum=UI_FM_PRESET_MENU_MAX_ITEM;
- pcwFmMenuStringPoint=cwStringFmPresetMenuList;
- UiShowFmMenu();
- UiShowFmMenuText();
- break;
- case KEY_FUNC_LONG:
- UiFmSwapNextMode();
- break;
- case KEY_REC_BREAK: // modify by Rojam 2007-04-02 09:9
- gxbLastUiMenuMain=gxbUiMenuMainStates;
- gxbUiMenuMainStates=UI_VOL_MENU;
- UI_SHOW_VOLUME_SELECT();
- gxbVolCount=0;
- break;
- /*============Del by Rojam 2007-04-02 09:8===============
- #if(!FIVEKEY)
- case KEY_REC_BREAK:
- #else
- case KEY_VOL_BREAK:
- #endif
- =========================== end Del ========================*/
- case KEY_REC_LONG: // modify by Rojam 2007-04-02 09:8
- case KEY_REC_LONG_BREAK: // modify by Rojam 2007-04-02 09:8
- //obDCVARRD=0x0C; //David050817#2
- //obDCVWRDATA=0x46;
- //Walace060710#1 start
- if(BattCheck()>BATTERY_LV_LOW_FOR_REC)
- {
- //swap to record module
- #if(!SETTING_FOR_ICE_START)
- if(!gbFsUnableUse) //Walace060629#2 start
- {
- //LCD_CTRL_DIS();
- //modify bt tne 2005/01/07 #2
- gxbLastErrCode=ERR_NO_ERROR;
- gxbSettingBuffer[SETTING_NEXT_MODE]=SAVE_AND_REC;
- gxbSettingBuffer[SETTING_DISPLAY_SWAPING]=FALSE;
- SaveSetting();
- } //Walace060629#2 end
- #endif
- }
- else
- {
- OLED_CLEAR_ALL();
- OledShowIconNew(1,ICON_BATT_WARRING,(OLED_MAX_COL-48)/2,(OLED_MAX_ROW-48)/2);
- #if(SHOW_BATT_VALUE)
- OledShowNumber(BattCheck(),0,0,3);
- #endif
- gxbLcdCounter=0;
- while(gxbLcdCounter<UI_SHW_WAKE_UP_DELAY_TIME) { };
- UiGoNoMenu();
- }
- //Walace060710#1 end
- break;
- }
- }
- //NOTE: This function don't work 2 page menu now...
- void UiFmSelectPrevNextMenuItem(BOOL fSelUp)
- {
- #if( FM_MODULE!=2) // modify by Rojam 2007-04-20 14:39
- FMFadeOutVol(0,50);
- #endif
- UiShowMenuItem( gxbMenuDispLine,
- IM_EXPLORE_BUTTON_CLEAR_STRING,
- IM_ITEM_UNSELECT,
- pcwFmMenuStringPoint[gxbUiMenuSubStates]);
- if(fSelUp)
- {
- if(gxbUiMenuSubStates==0)
- gxbUiMenuSubStates=(gxbTotalMenuItemNum-1);
- else
- gxbUiMenuSubStates--;
- }
- else
- {
- if(gxbUiMenuSubStates>=(gxbTotalMenuItemNum-1))
- gxbUiMenuSubStates=0;
- else
- gxbUiMenuSubStates++;
- }
- gxbMenuDispLine=gxbUiMenuSubStates;
- UiShowMenuItem( gxbMenuDispLine,
- IM_EXPLORE_BUTTON_01,
- IM_ITEM_SELECT,
- pcwFmMenuStringPoint[gxbUiMenuSubStates]);
- #if(FM_MODULE!=2) //modify by Rojam 2007-04-20 14:40
- CdcSetPaGain(gxbVolume);
- #endif
- }
- //tne 2007/01/13 #2
- //bPresetNum is One Base
- void UiFmRemovePreset(BYTE bPresetNum) large
- {
- gxbFmMaxRecPreset--;
- if(gxbFmMaxRecPreset==0)
- {
- gxbFmRecPreset=0;
- gxbFmPreset=0;
- }
- else
- {
- if(gxbFmRecPreset>bPresetNum)
- gxbFmRecPreset--;
- else if(gxbFmRecPreset>gxbFmMaxRecPreset)
- gxbFmRecPreset=gxbFmMaxRecPreset;
- if(gxbFmPreset>bPresetNum)
- gxbFmPreset--;
- else if(gxbFmPreset>gxbFmMaxRecPreset)
- gxbFmPreset=gxbFmMaxRecPreset;
- }
- while(bPresetNum<FM_MAX_PRESET)
- {
- gxwPresetData[bPresetNum-1]=gxwPresetData[bPresetNum];
- bPresetNum++;
- }
- gxwPresetData[FM_MAX_PRESET-1]=FM_INVALID_FREQ_NUM;
- }
- void UiFmNormalMenuCtrl(BYTE bKey) large
- {
- switch(bKey)
- {
- case KEY_RIGHT_BREAK:
- UiFmSelectPrevNextMenuItem(FALSE);
- break;
- case KEY_LEFT_BREAK:
- UiFmSelectPrevNextMenuItem(TRUE);
- break;
- case KEY_UP_BREAK:
- switch(gxbUiMenuSubStates)
- {
- case UI_NORMAL_ADD_PRESET_MENU:
- if(gxbFmRecPreset<FM_MAX_PRESET)
- gxbFmRecPreset++;
- else
- gxbFmRecPreset=1;
- if(gxbFmMaxRecPreset<FM_MAX_PRESET)
- gxbFmMaxRecPreset++;
- gxwPresetData[gxbFmRecPreset-1]=gxwFmFreq;
- #if(FM_PRESET_PRESAVE) //Walace060714#1
- SaveFmPresetSetting();
- #endif
- break;
- case UI_NORMAL_SCAN_PRESET_MENU:
- UiGoNoMenu();
- UiFmScanAndAddPreset();
- return;
- }
- case KEY_FUNC_BREAK:
- UiGoNoMenu();
- break;
- case KEY_FUNC_LONG:
- UiFmSwapNextMode();
- break;
- }
- }
- void UiFmPresetMenuCtrl(BYTE bKey) large
- {
- switch(bKey)
- {
- case KEY_RIGHT_BREAK:
- UiFmSelectPrevNextMenuItem(FALSE);
- break;
- case KEY_LEFT_BREAK:
- UiFmSelectPrevNextMenuItem(TRUE);
- break;
- case KEY_UP_BREAK:
- gxbUiMenuMainStates=UI_SEL_PRESET_MENU;
- UiReDrawFM();
- switch(gxbUiMenuSubStates)
- {
- case UI_PRESET_DEL_PRESET_MENU:
- //tne 2007/01/13 #2
- #if(FM_MODULE!=2) // modify by Rojam 2007-04-20 14:39
- FMFadeOutVol(0,50); //WHH070310#1
- #endif
- UiFmRemovePreset(gxbFmPreset);
- #if(FM_PRESET_PRESAVE) //Walace060714#1
- SaveFmPresetSetting();
- #endif
- if(gxbFmMaxRecPreset==0) //All Removed
- {
- gxbErrCode=ERR_FM_NO_PRESET;
- UiErrHandle();
- gxbUiMenuMainStates=UI_NO_MENU;
- UiShowPresetStateIcon();
- }
- else
- {
- UiFmSetFreqFromPreset();
- }
- #if(FM_MODULE!=2) //modify by Rojam 2007-04-20 14:40
- CdcSetPaGain(gxbVolume);
- #endif
- break;
- case UI_NORMAL_SCAN_PRESET_MENU:
- UiFmScanAndAddPreset();
- break;
- }
- break;
- case KEY_FUNC_BREAK:
- gxbUiMenuMainStates=UI_SEL_PRESET_MENU;
- UiReDrawFM();
- break;
- case KEY_FUNC_LONG:
- UiFmSwapNextMode();
- break;
- }
- }
- void UiFmShowFmChNum(BYTE bNum,BYTE bCol,BYTE bRow, BYTE bType) large
- {
- if(bType)
- {
- OledShowIconNew(2,
- IM_RADIO_CH_NUMBER_SELECT_0+(bNum/10)*(IM_RADIO_CH_NUMBER_SELECT_1-IM_RADIO_CH_NUMBER_SELECT_0),
- bCol,bRow);
- OledShowIconNew(2,
- IM_RADIO_CH_NUMBER_SELECT_0+(bNum%10)*(IM_RADIO_CH_NUMBER_SELECT_1-IM_RADIO_CH_NUMBER_SELECT_0),
- bCol+8,bRow);
- }
- else
- {
- OledShowIconNew(2,
- IM_RADIO_CH_NUMBER_0+(bNum/10)*(IM_RADIO_CH_NUMBER_1-IM_RADIO_CH_NUMBER_0),
- bCol,bRow);
- OledShowIconNew(2,
- IM_RADIO_CH_NUMBER_0+(bNum%10)*(IM_RADIO_CH_NUMBER_1-IM_RADIO_CH_NUMBER_0),
- bCol+8,bRow);
- }
- }
- //tne 2007/01/11 #1 end