?? fmdisplay.c
字號:
/*
********************************************************************************
* Copyright (C),2004-2007, Fuzhou Rockchip Electronics Co.,Ltd.
* All Rights Reserved
*
*Description: FM Module 顯示處理程序
*
$Header: /cvs_server/mp3_project/RK2608_4G_DEMO/FM/FmDisplay.c,v 1.4 2007/04/30 03:31:29 zyz Exp $
$Author: zyz $
$Date: 2007/04/30 03:31:29 $
$Revision: 1.9 Release$
********************************************************************************
*/
#include "Macro.h"
#include "MsgDef.h"
#include "Struct.h"
#include "Resource.h"
#include "Global.h"
#include "Lcd.h"
#ifdef FM_MODULE
#define _IN_FMDISPLAY
#include "FmMacro.h"
#include "FmStruct.h"
#include "FmGlobal.h"
#include "FmSchedule.h"
#include "Global.h"
#include "Lcd.h"
#include "LcdChar.h"
#define DEL_FM_SCREEN_PER_LINE 4
/*
********************************************************************************
* Copyright (C),2004-2007, Fuzhou Rockchip Electronics Co.,Ltd.
* Function name : DISP_Fm()
* 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 DISP_Fm(void)
{
unsigned int FmDispBuf[MENU_PER_BYTE];
unsigned int temp, temp1, TempColor, TempFlag;
unsigned int *pFmDispBuf;
unsigned int Temp_DrawMode;
unsigned long CharAddrL;
unsigned long TempDispFlag, TempDisplayFlag1;
TempColor = LCD_GetColor();
TempDispFlag = FmDisplayFlag;
FmDisplayFlag = MUSIC_DISPFLAG_NULL;
TempFlag = 0x00000001;
while (TempDispFlag != 0) {
TempDisplayFlag1 = TempDispFlag & TempFlag;
TempDispFlag &= (~TempFlag);
TempFlag = TempFlag << 1;
if (TempDisplayFlag1 != 0) {
switch (TempDisplayFlag1) {
case FM_DISPFLAG_BACKGROUND:
{
DisplayPicture(0, 0, MAX_PIC_XSIZE, MAX_PIC_YSIZE, RADIO_BKGROUND_PIC);
DisplayPicture(RADIO_FREQDOT_PIC_X, RADIO_FREQDOT_PIC_Y, RADIO_FREQDOT_PIC_XSIZE, RADIO_FREQDOT_PIC_YSIZE, RADIO_FREQDOT_PIC);
LCD_SetDispRect(0, 0, MAX_PIC_XSIZE - 1, MAX_PIC_YSIZE - 1);
break;
}
case FM_DISPFLAG_FREQ:
{
temp1 = GlobalFmVar.FmFreq / 10000;
temp = GlobalFmVar.FmFreq % 10000;
if (temp1 > 0) {
DisplayPicture(RADIO_FREQNUM_PIC_X, RADIO_FREQNUM_PIC_Y, RADIO_FREQNUM_PIC_XSIZE, RADIO_FREQNUM_PIC_YSIZE, (NFA_RADIO_FREQNUM_PIC + (unsigned long)(temp1) * RADIO_FREQNUM_PIC_SIZE));
} else {
DisplayPicture(RADIO_FREQNUM_PIC_X, RADIO_FREQNUM_PIC_Y, RADIO_FREQNUM_PIC_XSIZE, RADIO_FREQNUM_PIC_YSIZE, (NFA_RADIO_FREQNUM_PIC + (unsigned long)(10) * RADIO_FREQNUM_PIC_SIZE));
}
temp1 = temp / 1000;
temp = temp % 1000;
DisplayPicture(RADIO_FREQNUM_PIC_X + RADIO_FREQNUM_PIC_XSIZE, RADIO_FREQNUM_PIC_Y, RADIO_FREQNUM_PIC_XSIZE, RADIO_FREQNUM_PIC_YSIZE, (NFA_RADIO_FREQNUM_PIC + (unsigned long)(temp1) * RADIO_FREQNUM_PIC_SIZE));
temp1 = temp / 100;
temp = temp % 100;
DisplayPicture(RADIO_FREQNUM_PIC_X + (RADIO_FREQNUM_PIC_XSIZE << 1), RADIO_FREQNUM_PIC_Y, RADIO_FREQNUM_PIC_XSIZE, RADIO_FREQNUM_PIC_YSIZE, (NFA_RADIO_FREQNUM_PIC + (unsigned long)(temp1) * RADIO_FREQNUM_PIC_SIZE));
temp = temp / 10;
DisplayPicture(RADIO_FREQNUM_PIC_X + (RADIO_FREQNUM_PIC_XSIZE * 3) + RADIO_FREQDOT_PIC_XSIZE, RADIO_FREQNUM_PIC_Y, RADIO_FREQNUM_PIC_XSIZE, RADIO_FREQNUM_PIC_YSIZE, (NFA_RADIO_FREQNUM_PIC + (unsigned long)(temp) * RADIO_FREQNUM_PIC_SIZE));
#if(FM_LIST_ENABLE == 1)
// 顯示電臺名稱. 馮明喜@2007-7-24 15:18
{
unsigned int iColor_bak;
unsigned int iWidth, iHeight;
LCD_RECT r;
unsigned int FmStationName[FM_STATION_NAME_LENGTH];
// 電臺名稱 坐標
r.x0 = 97;
r.y0 = 128;
iWidth = 128;
iHeight = CH_CHAR_YSIZE;
r.x1 = r.x0 + iWidth - 1;
r.y1 = r.y0 + iHeight - 1;
// 顯示電臺名稱 背景
LCD_SetDispRect(r.x0, r.y0, r.x1, r.y1);
DisplayPicture(0, 0, MAX_PIC_XSIZE, MAX_PIC_YSIZE, RADIO_BKGROUND_PIC);
LCD_SetDispRect(0, 0, LCD_MAX_XSIZE-1, LCD_MAX_YSIZE-1);
// 顯示電臺名稱 文字的顏色為 黑色
iColor_bak = LCD_GetColor();
LCD_SetColor(0x0000);
if (FM_STATE_AUTO != FmFunctionSele) // 自動搜索時, 不顯示電臺名稱. 否則搜臺很慢.
{
fmlistGetFmStationName (GlobalFmVar.FmFreq, FmStationName);
}
else
{
FmStationName[0] = '\0';
}
LCD_DispStringInRect (&r, &r, FmStationName, LCD_TEXTALIGN_CENTER);
LCD_SetColor(iColor_bak);
}
#endif
break;
}
case FM_DISPFLAG_GUAGE:
{
DisplayPicture(RADIO_GUAGEBK_PIC_X + FmGuageX, RADIO_GUAGEBK_PIC_Y, RADIO_GUAGEBK_PIC_XSIZE, RADIO_GUAGEBK_PIC_YSIZE, RADIO_GUAGE_BKGROUND_PIC);
DisplayPicture(RADIO_GUAGEFRONT_PIC_X + FmGuageVal, RADIO_GUAGEFRONT_PIC_Y, RADIO_GUAGEFRONT_PIC_XSIZE, RADIO_GUAGEFRONT_PIC_YSIZE, RADIO_GUAGE_FRONT_PIC);
FmGuageX = FmGuageVal;
break;
}
case FM_DISPFLAG_BATT:
{
DisplayPicture(RADIO_BATT_PIC_X, RADIO_BATT_PIC_Y, RADIO_BATT_PIC_XSIZE, RADIO_BATT_PIC_YSIZE, (NFA_RADIO_BATT_PIC + (unsigned long)(BatteryLevel) * RADIO_BATT_PIC_SIZE));
break;
}
// case FM_DISPFLAG_SENS:
// {
// DisplayPicture(RADIO_SEN_PIC_X, RADIO_SEN_PIC_Y, RADIO_SEN_PIC_XSIZE, RADIO_SEN_PIC_YSIZE, (NFA_RADIO_SEN_PIC + (unsigned long)(FmSensitive) * RADIO_SEN_PIC_SIZE));
// break;
// }
// case FM_DISPFLAG_STEREO:
// {
// DisplayPicture(RADIO_SOUND_PIC_X, RADIO_SOUND_PIC_Y, RADIO_SOUND_PIC_XSIZE, RADIO_SOUND_PIC_YSIZE, (NFA_RADIO_SOUND_PIC + (unsigned long)(FmStereoState) * RADIO_SOUND_PIC_SIZE));
// break;
// }
case FM_DISPFLAG_CH:
{
DisplayPicture(RADIO_PRESETBK_PIC_X, RADIO_PRESETBK_PIC_Y, RADIO_PRESETBK_PIC_XSIZE, RADIO_PRESETBK_PIC_YSIZE, RADIO_PRESETBK_PIC);
if ((GlobalFmVar.FmState == FM_STATE_AUTO) || (GlobalFmVar.FmState == FM_STATE_PRESET)) {
FmDispBuf[0] = (GlobalFmVar.FmSaveNum + 1)/ 10 + '0';
if (FmDispBuf[0] == '0') FmDispBuf[0] = ' ';
FmDispBuf[1] = (GlobalFmVar.FmSaveNum + 1) % 10 + '0';
FmDispBuf[2] = '/';
FmDispBuf[3] = '2';
FmDispBuf[4] = '0';
FmDispBuf[5] = 0;
LCD_SetColor(COLOR_BLACK);
LCD_NFDispStringAt(RADIO_PRESETBK_PIC_X, RADIO_PRESETBK_PIC_Y, FmDispBuf);
}
break;
}
case FM_DISPFLAG_VOL:
{
DisplayPicture(RADIO_VOLLEVEL_PIC_X, RADIO_VOLLEVEL_PIC_Y, RADIO_VOLLEVEL_PIC_XSIZE, RADIO_VOLLEVEL_PIC_YSIZE,
(NFA_RADIO_VOLLEVEL_PIC + (unsigned long)(OutputVolume) * RADIO_VOLLEVEL_PIC_SIZE));
DisplayPicture(RADIO_VOLBK_PIC_X, RADIO_VOLBK_PIC_Y, RADIO_VOLBK_PIC_XSIZE, RADIO_VOLBK_PIC_YSIZE, RADIO_VOLBK_PIC);
FmDispBuf[0] = OutputVolume / 10 + '0';
FmDispBuf[1] = OutputVolume % 10 +'0';
FmDispBuf[2] = 0;
LCD_SetColor(COLOR_BLACK);
LCD_NFDispStringAt(RADIO_VOLBK_PIC_X + 2, RADIO_VOLBK_PIC_Y + 2, FmDispBuf);
break;
}
case FM_DISPFLAG_REGION:
{
DisplayPicture(RADIO_REGIONBK_PIC_X, RADIO_REGIONBK_PIC_Y, RADIO_REGIONBK_PIC_XSIZE, RADIO_REGIONBK_PIC_YSIZE, RADIO_REGIONBK_PIC);
LCD_SetColor(COLOR_BLACK);
DisplayMenuStr(RADIO_REGIONBK_PIC_X, RADIO_REGIONBK_PIC_Y + 2, RADIO_REGIONBK_PIC_XSIZE, RADIO_REGIONBK_PIC_YSIZE, LCD_TEXTALIGN_CENTER, (SETUP_RADIO_REGION_TXT + (unsigned long)(GlobalFmVar.FmArea + 1) * MENU_PER_BYTE));
FmDispBuf[0] = FmFreqMinVal / 10000 + '0';
temp = FmFreqMinVal % 10000;
if(FmDispBuf[0] == '0') FmDispBuf[0] = ' ';
FmDispBuf[1] = temp / 1000 + '0';
temp = temp % 1000;
FmDispBuf[2] = temp / 100 +'0';
temp=temp % 100;
FmDispBuf[4] = temp/10 + '0';
FmDispBuf[3] = '.';
FmDispBuf[5] = 'M';
FmDispBuf[6] = 'H';
FmDispBuf[7] = 'z';
FmDispBuf[8] = 0;
//Ver1.7 2007-01-22 解決FM區(qū)域顯示錯誤的問題
DisplayPicture(RADIO_REGIONBK_START_PIC_X, RADIO_REGIONBK_START_PIC_Y, RADIO_REGIONBK_START_PIC_XSIZE, RADIO_REGIONBK_START_PIC_YSIZE, RADIO_REGIONBK_START_PIC);
LCD_NFDispStringAt(RADIO_REGIONBK_START_PIC_X, RADIO_REGIONBK_START_PIC_Y, FmDispBuf);
FmDispBuf[0] = FmFreqMaxVal / 10000 + '0';
temp = FmFreqMaxVal % 10000;
if(FmDispBuf[0] == '0') FmDispBuf[0] = ' ';
FmDispBuf[1] = temp / 1000 + '0';
temp = temp % 1000;
FmDispBuf[2] = temp / 100 +'0';
temp=temp % 100;
FmDispBuf[4] = temp/10 + '0';
//Ver1.7 2007-01-22 解決FM區(qū)域顯示錯誤的問題
DisplayPicture(RADIO_REGIONBK_END_PIC_X, RADIO_REGIONBK_END_PIC_Y, RADIO_REGIONBK_END_PIC_XSIZE, RADIO_REGIONBK_END_PIC_YSIZE, RADIO_REGIONBK_END_PIC);
LCD_NFDispStringAt(RADIO_REGIONBK_END_PIC_X, RADIO_REGIONBK_END_PIC_Y, FmDispBuf);
break;
}
case FM_DISPFLAG_HOLD:
{
DisplayPicture(RADIO_HOLD_PIC_X, RADIO_HOLD_PIC_Y, RADIO_HOLD_PIC_XSIZE, RADIO_HOLD_PIC_YSIZE, (NFA_RADIO_HOLD_PIC + (unsigned long)(SystemInfo.bc.bHoldOn) * RADIO_HOLD_PIC_SIZE));
break;
}
default:
break;
}
}
}
LCD_SetColor(TempColor);
}
/*
********************************************************************************
* Copyright (C),2004-2007, Fuzhou Rockchip Electronics Co.,Ltd.
* Function name : DisplayFmMenu()
* 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
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -