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

📄 fmdisplay.c

📁 SI4702
💻 C
📖 第 1 页 / 共 2 页
字号:
*     desc: 添加注释
********************************************************************************
*/
__attribute__((section(".fm_text,\"ax\"")))			//Ver1.8 2007-03-08
void DisplayFmMenu(void)
{
    unsigned int      FmDispBuf[MENU_PER_BYTE];
    unsigned int      temp, TempColor;
    unsigned int      Temp_DrawMode;
    
    TempColor      = LCD_GetColor();
    Temp_DrawMode  = LCD_SetTextMode(LCD_DRAWMODE_TRANS);
    
    if (FmDisplayFlag & FM_DISPFLAG_SUBMENU_BK) {
        //LCD_SetDispRect(RADIO_SUBMENUBK_PIC_X, RADIO_SUBMENUBK_PIC_Y, (RADIO_SUBMENUBK_PIC_X + RADIO_SUBMENUBK_PIC_XSIZE - 1), (RADIO_SUBMENUBK_PIC_Y + RADIO_SUBMENUBK_PIC_YSIZE - 1));
        DisplayPicture(RADIO_SUBMENUBK_PIC_X, RADIO_SUBMENUBK_PIC_Y, RADIO_SUBMENUBK_PIC_XSIZE, RADIO_SUBMENUBK_PIC_YSIZE, RADIO_SUBMENUBK_PIC);
    }
    
    if (FmDisplayFlag & FM_DISPFLAG_SUBMENU_SEL) 
    {
        
        LCD_SetColor(COLOR_BLACK);
    #if(FM_LIST_ENABLE == 1)
        for (temp = FM_STATE_MANUAL; temp <= FM_STATE_LOAD; temp ++)
    #else
        for (temp = 0; temp < 5; temp ++) 
    #endif
        {
            
            DisplayPicture(RADIO_SUBMENUBK_PIC_X, (RADIO_SUB_MENU_TXT_Y + (temp * RADIO_SUB_MENU_TXT_YSTEP)), 
                           RADIO_SUBMENUBK_PIC_XSIZE, RADIO_SUB_MENU_TXT_YSTEP, 
                           (NFA_RADIO_SUBMENUBK_PIC + ((unsigned long)(((RADIO_SUB_MENU_TXT_Y - RADIO_SUBMENUBK_PIC_Y) + (temp * RADIO_SUB_MENU_TXT_YSTEP)) * RADIO_SUBMENUBK_PIC_XSIZE * 2))));
            
            if(temp == FmFunctionSele) 
            {
                if ((FmFunctionSele == FM_STATE_SAVE) || (FmFunctionSele == FM_STATE_DEL)) 
                {
                    DisplayPicture(RADIO_SUBMENU_ARROW_PIC_X, (RADIO_SUB_MENU_TXT_Y + (temp * RADIO_SUB_MENU_TXT_YSTEP)) + 2, 
                                   RADIO_SUBMENU_ARROW_PIC_XSIZE, RADIO_SUBMENU_ARROW_PIC_YSIZE, RADIO_SUBMENU_ARROW_ARROW);
                }
                LCD_SetTextMode(LCD_DRAWMODE_REV);
            }
            DisplayMenuStr(RADIO_SUB_MENU_TXT_X, (RADIO_SUB_MENU_TXT_Y + (temp * RADIO_SUB_MENU_TXT_YSTEP)), RADIO_SUB_MENU_TXT_XSIZE, RADIO_SUB_MENU_TXT_YSIZE, LCD_TEXTALIGN_LEFT, (NFA_RADIO_TEXT + (unsigned long)(temp) * MENU_PER_BYTE));
            LCD_SetTextMode(LCD_DRAWMODE_TRANS); 
        }
    }
    FmDisplayFlag = FM_DISPFLAG_NULL;
    
    LCD_SetTextMode(Temp_DrawMode);
    LCD_SetColor(TempColor);
}

/*
********************************************************************************
*  Copyright (C),2004-2007, Fuzhou Rockchip Electronics Co.,Ltd.
*  Function name :  FmFreq2Ascii()
*  Author:          ZHengYongzhi
*  Description:     将频率转成ASCII码
*                  
*  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 FmFreq2Ascii(unsigned int chl, unsigned int freq, unsigned int *pDispBuf)
{
    pDispBuf[0] = 'C';
    pDispBuf[1] = 'H';
    pDispBuf[2] = (chl+1)/10 + '0';
    pDispBuf[3] = (chl+1)%10 + '0';
    pDispBuf[4] = ':';
    pDispBuf[5] = ' ';
    pDispBuf[8] = '.';
    pDispBuf[10] = 'M';
    pDispBuf[11] = 'H';
    pDispBuf[12] = 'z';
    pDispBuf[13] = 0;
    if(freq != 0){
        pDispBuf[5]  = freq /10000;
        pDispBuf[5] += (pDispBuf[5]?'0':' ');
        pDispBuf[6]  = (freq%10000)/1000 + '0';
        pDispBuf[7]  = (freq%1000)/100 + '0';
        
        pDispBuf[9] = (freq%100)/10   + '0';
    }else{
        pDispBuf[6]  = 'E';
        pDispBuf[7]  = 'm';
        pDispBuf[8]  = 'p';
        pDispBuf[9]  = 't';
        pDispBuf[10] = 'y';
        pDispBuf[11] = 0;
    }
}

/*
********************************************************************************
*  Copyright (C),2004-2007, Fuzhou Rockchip Electronics Co.,Ltd.
*  Function name :  DisplayFmList()
*  Author:          ZHengYongzhi
*  Description:     显示存台/取台的电台列表
*                  
*  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 DisplayFmList(void)
{
    unsigned int i,j,m;
    unsigned int mode_tmp;
    unsigned int temp, TempColor, Temp_DrawMode;
    
    unsigned int per_id = PrevCh;
    unsigned int cur_id = CurCh;
    
    unsigned int k;
    unsigned int *pFmFreq;
    unsigned int FmDispBuf[MENU_PER_BYTE];
    
    TempColor      = LCD_GetColor();
    Temp_DrawMode  = LCD_SetTextMode(LCD_DRAWMODE_TRANS);

    if (FmDisplayFlag & FM_DISPFLAG_LIST_BK) {
        
        //LCD_SetDispRect(RADIO_LISTBK_PIC_X, RADIO_LISTBK_PIC_Y, (RADIO_LISTBK_PIC_X + RADIO_LISTBK_PIC_XSIZE - 1), (RADIO_LISTBK_PIC_Y + RADIO_LISTBK_PIC_YSIZE - 1));
        DisplayPicture(RADIO_LISTBK_PIC_X,RADIO_LISTBK_PIC_Y,RADIO_LISTBK_PIC_XSIZE, RADIO_LISTBK_PIC_YSIZE, RADIO_LISTBK_PIC);
        
        k = cur_id / DEL_FM_SCREEN_PER_LINE;
        k = k * DEL_FM_SCREEN_PER_LINE;
        pFmFreq = &GlobalFmVar.FmFreqArray[k];
        
        LCD_SetColor(COLOR_BLACK);
        for (i = 0; i < DEL_FM_SCREEN_PER_LINE; i++, pFmFreq++) {
            
            FmFreq2Ascii(i+k, *pFmFreq, FmDispBuf);
            
            if ((i + k) == cur_id) LCD_SetTextMode(LCD_DRAWMODE_REV);
            LCD_NFDispStringAt(RADIO_SUB_LIST_TXT_X, (RADIO_SUB_LIST_TXT_Y + i * RADIO_SUB_LIST_TXT_YSTEP), FmDispBuf);
            LCD_SetTextMode(LCD_DRAWMODE_TRANS);
        }
        
        if (cur_id < DEL_FM_SCREEN_PER_LINE) {
            DisplayPicture(RADIO_LIST_UPICON_PIC_X,RADIO_LIST_UPICON_PIC_Y,RADIO_LIST_UPICON_PIC_XSIZE, RADIO_LIST_UPICON_PIC_YSIZE, RADIO_LIST_UPICON_ARROWBK);
        } else {
            DisplayPicture(RADIO_LIST_UPICON_PIC_X,RADIO_LIST_UPICON_PIC_Y,RADIO_LIST_UPICON_PIC_XSIZE, RADIO_LIST_UPICON_PIC_YSIZE, RADIO_LIST_UPICON_ARROW);
        }
        
        temp = cur_id / DEL_FM_SCREEN_PER_LINE;
        if (((temp + 1) * DEL_FM_SCREEN_PER_LINE) > FREQMAXNUMBLE) {
            DisplayPicture(RADIO_LIST_DOWNICON_PIC_X,RADIO_LIST_DOWNICON_PIC_Y,RADIO_LIST_DOWNICON_PIC_XSIZE, RADIO_LIST_DOWNICON_PIC_YSIZE, RADIO_LIST_DOWNICON_ARROWBK);
        } else {
            DisplayPicture(RADIO_LIST_DOWNICON_PIC_X,RADIO_LIST_DOWNICON_PIC_Y,RADIO_LIST_DOWNICON_PIC_XSIZE, RADIO_LIST_DOWNICON_PIC_YSIZE, RADIO_LIST_DOWNICON_ARROW);
        }
    }
    
    if (FmDisplayFlag & FM_DISPFLAG_LIST_SEL) {
        
        if (cur_id < DEL_FM_SCREEN_PER_LINE) {
            DisplayPicture(RADIO_LIST_UPICON_PIC_X,RADIO_LIST_UPICON_PIC_Y,RADIO_LIST_UPICON_PIC_XSIZE, RADIO_LIST_UPICON_PIC_YSIZE, RADIO_LIST_UPICON_ARROWBK);
        } else {
            DisplayPicture(RADIO_LIST_UPICON_PIC_X,RADIO_LIST_UPICON_PIC_Y,RADIO_LIST_UPICON_PIC_XSIZE, RADIO_LIST_UPICON_PIC_YSIZE, RADIO_LIST_UPICON_ARROW);
        }
        
        temp = cur_id / DEL_FM_SCREEN_PER_LINE;
        if (((temp + 1) * DEL_FM_SCREEN_PER_LINE) > FREQMAXNUMBLE) {
            DisplayPicture(RADIO_LIST_DOWNICON_PIC_X,RADIO_LIST_DOWNICON_PIC_Y,RADIO_LIST_DOWNICON_PIC_XSIZE, RADIO_LIST_DOWNICON_PIC_YSIZE, RADIO_LIST_DOWNICON_ARROWBK);
        } else {
            DisplayPicture(RADIO_LIST_DOWNICON_PIC_X,RADIO_LIST_DOWNICON_PIC_Y,RADIO_LIST_DOWNICON_PIC_XSIZE, RADIO_LIST_DOWNICON_PIC_YSIZE, RADIO_LIST_DOWNICON_ARROW);
        }
            
        if((per_id / DEL_FM_SCREEN_PER_LINE) != temp) {
            
            DisplayPicture(RADIO_LISTBK_PIC_X, RADIO_SUB_LIST_TXT_Y, 
                           RADIO_LISTBK_PIC_XSIZE, (RADIO_SUB_LIST_TXT_YSTEP * DEL_FM_SCREEN_PER_LINE), 
                           (RADIO_LISTBK_PIC + (unsigned long)(RADIO_SUB_LIST_TXT_Y - RADIO_LISTBK_PIC_Y) * RADIO_LISTBK_PIC_XSIZE * 2));
            
                        
            if(cur_id == (FM_SAVE_BUF_MAX-1) && (per_id == 0)){
                m = cur_id%DEL_FM_SCREEN_PER_LINE;
                k = cur_id - m;
                pFmFreq = &GlobalFmVar.FmFreqArray[k];
            }else if(((per_id % DEL_FM_SCREEN_PER_LINE)==0)&&((cur_id%DEL_FM_SCREEN_PER_LINE)==(DEL_FM_SCREEN_PER_LINE-1))){
                m = cur_id%DEL_FM_SCREEN_PER_LINE;
                k = cur_id - m;
                pFmFreq = &GlobalFmVar.FmFreqArray[k];
            }else{
                pFmFreq = &GlobalFmVar.FmFreqArray[cur_id];
                m = FM_SAVE_BUF_MAX - (cur_id+1);
                k = cur_id;
            }
            
            LCD_SetColor(COLOR_BLACK);
            for (i=0; (i<DEL_FM_SCREEN_PER_LINE && i<=m); i++, pFmFreq++) {
                FmFreq2Ascii(k+i, *pFmFreq, FmDispBuf);
                
                if ((i + k) == cur_id) LCD_SetTextMode(LCD_DRAWMODE_REV);
                LCD_NFDispStringAt(RADIO_SUB_LIST_TXT_X, (RADIO_SUB_LIST_TXT_Y + i * RADIO_SUB_LIST_TXT_YSTEP), FmDispBuf);
                LCD_SetTextMode(LCD_DRAWMODE_TRANS);
            }
        }else{
            j = per_id%DEL_FM_SCREEN_PER_LINE;
            i = cur_id%DEL_FM_SCREEN_PER_LINE;
            
            LCD_SetColor(COLOR_BLACK);
            
            DisplayPicture(RADIO_LISTBK_PIC_X, (RADIO_SUB_LIST_TXT_Y + j * RADIO_SUB_LIST_TXT_YSTEP), 
                           RADIO_LISTBK_PIC_XSIZE, RADIO_SUB_LIST_TXT_YSTEP, 
                           (RADIO_LISTBK_PIC + (unsigned long)((RADIO_SUB_LIST_TXT_Y - RADIO_LISTBK_PIC_Y) + j * RADIO_SUB_LIST_TXT_YSTEP) * RADIO_LISTBK_PIC_XSIZE * 2));
                           
            FmFreq2Ascii(per_id, GlobalFmVar.FmFreqArray[per_id], FmDispBuf);
            LCD_NFDispStringAt(RADIO_SUB_LIST_TXT_X, (RADIO_SUB_LIST_TXT_Y + j * RADIO_SUB_LIST_TXT_YSTEP), FmDispBuf);
            
            DisplayPicture(RADIO_LISTBK_PIC_X, (RADIO_SUB_LIST_TXT_Y + i * RADIO_SUB_LIST_TXT_YSTEP), 
                           RADIO_LISTBK_PIC_XSIZE, RADIO_SUB_LIST_TXT_YSTEP, 
                           (RADIO_LISTBK_PIC + (unsigned long)((RADIO_SUB_LIST_TXT_Y - RADIO_LISTBK_PIC_Y) + i * RADIO_SUB_LIST_TXT_YSTEP) * RADIO_LISTBK_PIC_XSIZE * 2));
                           
            FmFreq2Ascii(cur_id, GlobalFmVar.FmFreqArray[cur_id], FmDispBuf);
            LCD_SetTextMode(LCD_DRAWMODE_REV);
            LCD_NFDispStringAt(RADIO_SUB_LIST_TXT_X, (RADIO_SUB_LIST_TXT_Y + i * RADIO_SUB_LIST_TXT_YSTEP), FmDispBuf);
        }
        LCD_SetColor(TempColor);
    }
    FmDisplayFlag = FM_DISPFLAG_NULL;
    
    LCD_SetTextMode(Temp_DrawMode);
    LCD_SetColor(TempColor);
}
#endif
//******************************************************************************
/*
$Log: FmDisplay.c,v $
Revision 1.4  2007/04/30 03:31:29  zyz
1、添加文件所有的头注释
2、修改avi 模块中的if判断语句语句,将常量放在 “==” 之前
3、修改部分头文件中“#undef”的位置
4、将xvid_decoder.c开放到系统中
5、删除程序中一些不必要的代码如CodecPowerOn()、MusicSetFreq51()、MusicSetFreq51Return()等
6、修改avi Read_VideoData_ToBuf()函数,解决视频结束时可能出现的一些问题
7、修改EncGLoable.h文件,增加Mp3Encodebss控制,解决SLC在录音时死机的问题,取消掉重复定义的
   EncodeOutputBuffer[512]
8、修改EncSchedule.c删除LINE_IN_MSADPCM_BUFFER[2048]定义,因为EncClobal.h里面对其已经有定义
9、支持20国多国语言
10、修改文本书签保存
11、更新文件系统,MLC小文件提速
12、修改中断服务程序,以确保由于调用中断程序而引起的一些问题
13、修改Audio.c,解决音乐播放切换时可能出现的没有声音或噪音等问题

*
*/

⌨️ 快捷键说明

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