📄 radio.c
字号:
if (bRegion == OSD_ND_BOTTOM_REGION)
{
NBRegionRect.bColor = PAL_ENTRY_COLOR_TRANSPARENT;
NBRegionRect.rect.wLeft = OSDND_BOTTOM_BACKGROUND_START_H;
NBRegionRect.rect.wTop = RADIO_VOLUME_START_V;
NBRegionRect.rect.wRight = OSDND_BOTTOM_BACKGROUND_START_RIGHT;
NBRegionRect.rect.wBottom = NBRegionRect.rect.wTop+OSDND_BOTTOM_BACKGROUND_HEIGHT;
// Clear the normal bottom message.
GDI_FillRect(0, &NBRegionRect);
}}
// ***************************************************************************
// Function : _RADIO_ConfigOSDRegion
// Description : This function will config the OSD region. And it is exported for OSD kernel usage.
// Arguments : None.
// Return : None.
// Side Effect :
// ***************************************************************************
void RADIO_ConfigOSDRegion(void)
{
GDI_REGION_INFO RegionInfo;
#ifdef BORROW_FRAME_BUFFER
DWORD dwBufferAddr;
#endif //
GDI_ClearRegion(0);
#ifdef BORROW_FRAME_BUFFER
if ((POWERPNMENU_WIDTH == __RegionList[0].wWidth) && (POWERPNMENU_HEIGHT <= __RegionList[0].wHeight) &&
(GDI_OSD_8B_MODE == __RegionList[0].bColorMode))
{
return;
}
else if (__RegionList[0].bColorMode != GDI_OSD_8B_MODE) // Thumbnail mode & preview mode
{
// Use Frame buffer 1 or 2
dwBufferAddr = DISP_QueryAvailableBuffer();
if (0 == dwBufferAddr)
{
RegionInfo.dwTAddr = DS_OSDFRAME_ST;
}
else
{
RegionInfo.dwTAddr = dwBufferAddr;
}
}
else
{
// Use OSD buffer and Frame buffer 0
RegionInfo.dwTAddr = DS_OSDFRAME_ST; // Use OSD buffer and Frame buffer 0
}
#else
RegionInfo.dwTAddr = DS_OSDFRAME_ST;
#endif // #ifdef BORROW_FRAME_BUFFER
RegionInfo.wWidth = POWERPNMENU_WIDTH;
RegionInfo.wHeight = POWERPNMENU_HEIGHT;
RegionInfo.bColorMode = GDI_OSD_8B_MODE;
#ifdef BORROW_FRAME_BUFFER
OSD_SetRegion(0, TRUE, &RegionInfo);
#else
OSD_SetRegion(0, FALSE, &RegionInfo);
#endif
}
//*********************************************************************************************************
// Function : _RADIO_NormalModeProcess
// Abstract : Call this function to process the keys in normal mode.
// Arguments : bKey: input key
// Return :
// Side Effect : none.
// Notes :
//*********************************************************************************************************
void _RADIO_NormalModeProcess(BYTE bKey)
{
WORD RadioFreq;
switch (bKey)
{
case KEY_STOP:
_bRADIOBackupMode = _bRADIOMode;
_bRADIOMode = RADIO_MODE_SELECTION;
_RADIO_UpdateFrequencyBar(FALSE, RADIO_COLOR_HIGHLIGHT);
_RADIO_UpdateButtonCursor(_bRADIOButtonCursorIndex, RADIO_COLOR_HIGHLIGHT, RADIO_COLOR_HIGHLIGHT);
break;
case KEY_UP:
if (!RADIODRV_Seek(TRUE)) // Seek successful.
{
_RADIO_UpdateContent(RADIO_FREQ_REGION, TRUE, RADIO_COLOR_HIGHLIGHT);
}
// If seek failure, do noting.
break;
case KEY_DOWN:
if (!RADIODRV_Seek(FALSE)) // Seek successful.
{
_RADIO_UpdateContent(RADIO_FREQ_REGION, TRUE, RADIO_COLOR_HIGHLIGHT);
}
// If seek failure, do noting.
break;
case KEY_LEFT:
RadioFreq = RADIODRV_GetFreq();
RadioFreq = RadioFreq - _bRADIOSpaceValue;
if (RadioFreq < _wRADIOStartFreq)
{
RadioFreq = _wRADIOEndFreq;
}
RADIODRV_tune(RadioFreq);
_RADIO_UpdateContent(RADIO_FREQ_REGION, TRUE, RADIO_COLOR_HIGHLIGHT);
break;
case KEY_RIGHT:
RadioFreq = RADIODRV_GetFreq();
RadioFreq = RadioFreq + _bRADIOSpaceValue;
if (RadioFreq > _wRADIOEndFreq)
{
RadioFreq = _wRADIOStartFreq;
}
RADIODRV_tune(RadioFreq);
_RADIO_UpdateContent(RADIO_FREQ_REGION, TRUE, RADIO_COLOR_HIGHLIGHT);
break;
default:
break;
}
}
//*********************************************************************************************************
// Function : _RADIO_FavoriteModeProcess
// Abstract : Call this function to process the keys in favorite mode.
// Arguments : bKey: input key
// Return :
// Side Effect : none.
// Notes :
//*********************************************************************************************************
void _RADIO_FavoriteModeProcess(BYTE bKey)
{
switch (bKey)
{
case KEY_STOP:
_bRADIOBackupMode = _bRADIOMode;
_bRADIOMode = RADIO_MODE_SELECTION;
_RADIO_UpdateFrequencyBar(FALSE, RADIO_COLOR_HIGHLIGHT);
_RADIO_UpdateButtonCursor(_bRADIOButtonCursorIndex, RADIO_COLOR_HIGHLIGHT, RADIO_COLOR_HIGHLIGHT);
break;
case KEY_UP:
case KEY_RIGHT:
if (_bRADIOFavoritePlay < RADIO_FAVORITE_NUM-1)
{
_bRADIOFavoritePlay++;
}
else
{
_bRADIOFavoritePlay = 0;
}
RADIODRV_tune(_wRADIOFavorite[_bRADIOFavoritePlay]);
_RADIO_UpdateContent(RADIO_FREQ_REGION, TRUE, RADIO_COLOR_HIGHLIGHT);
_RADIO_UpdateContent(RADIO_MODE_NAME_REGION, TRUE, RADIO_COLOR_HIGHLIGHT);
break;
case KEY_DOWN:
case KEY_LEFT:
if (_bRADIOFavoritePlay > 0)
{
_bRADIOFavoritePlay--;
}
else
{
_bRADIOFavoritePlay = RADIO_FAVORITE_NUM-1;
}
RADIODRV_tune(_wRADIOFavorite[_bRADIOFavoritePlay]);
_RADIO_UpdateContent(RADIO_FREQ_REGION, TRUE, RADIO_COLOR_HIGHLIGHT);
_RADIO_UpdateContent(RADIO_MODE_NAME_REGION, TRUE, RADIO_COLOR_HIGHLIGHT);
break;
default:
break;
}
}
//*********************************************************************************************************
// Function : _RADIO_RecordModeProcess
// Abstract : Call this function to process the keys in record mode.
// Arguments : bKey: input key
// Return :
// Side Effect : none.
// Notes :
//*********************************************************************************************************
void _RADIO_RecordModeProcess(BYTE bKey)
{
switch (bKey)
{
case KEY_STOP:
_bRADIOBackupMode = _bRADIOMode;
_RADIO_UpdateInfoRegion(FALSE, FALSE, RADIO_COLOR_NORMAL);
_bRADIOMode = RADIO_MODE_SELECTION;
//_RADIO_UpdateFrequencyBar(FALSE, RADIO_COLOR_NORMAL);
_RADIO_UpdateButtonCursor(_bRADIOButtonCursorIndex, RADIO_COLOR_HIGHLIGHT, RADIO_COLOR_HIGHLIGHT);
break;
case KEY_UP:
if (_bRecordHighlightPos > 0)
{
_bRecordHighlightPos--;
}
else
{
_bRecordHighlightPos = RADIO_FAVORITE_NUM-1;
}
_RADIO_UpdateInfoRegion(FALSE, FALSE, RADIO_COLOR_HIGHLIGHT);
break;
case KEY_DOWN:
if (_bRecordHighlightPos < RADIO_FAVORITE_NUM-1)
{
_bRecordHighlightPos++;
}
else
{
_bRecordHighlightPos = 0;
}
_RADIO_UpdateInfoRegion(FALSE, FALSE, RADIO_COLOR_HIGHLIGHT);
break;
case KEY_RIGHT:
_bRecordHighlightPos = (_bRecordHighlightPos + 5) % 20;
_RADIO_UpdateInfoRegion(FALSE, FALSE, RADIO_COLOR_HIGHLIGHT);
break;
case KEY_LEFT:
_bRecordHighlightPos = (_bRecordHighlightPos + RADIO_FAVORITE_NUM - 5) % 20;
_RADIO_UpdateInfoRegion(FALSE, FALSE, RADIO_COLOR_HIGHLIGHT);
break;
case KEY_ENTER:
case KEY_PLAY:
_bRADIOButtonCursorIndex = RADIO_MODE_NORMAL; // Set the cursor index to normal button.
_wRADIOFavorite[_bRecordHighlightPos] = RADIODRV_GetFreq();
#ifdef WRITE_EEPROM_ENABLE //SYSTEM_8051
HAL_WriteStorage(RADIO_ADDR_FAVORITE+2*_bRecordHighlightPos, (BYTE *)(_wRADIOFavorite)+2*_bRecordHighlightPos, 2);
#endif //#ifdef WRITE_EEPROM_ENABLE
_bRADIOMode = RADIO_MODE_NORMAL;
_RADIO_UpdateContent(RADIO_ALL_REGION, TRUE, RADIO_COLOR_HIGHLIGHT);
break;
default:
break;
}
}
//*********************************************************************************************************
// Function : _RADIO_ModeSelectionProcess
// Abstract : Call this function to process the keys in mode selection mode.
// Arguments : bKey: input key
// Return :
// Side Effect : none.
// Notes :
//*********************************************************************************************************
void _RADIO_ModeSelectionProcess(BYTE bKey)
{
switch (bKey)
{
case KEY_UP:
_RADIO_GotoUpButton();
break;
case KEY_DOWN:
_RADIO_GotoDownButton();
break;
/*
case KEY_LEFT:
_RADIO_GotoLeftButton();
break;
case KEY_RIGHT:
_RADIO_GotoRightButton();
break;
*/
case KEY_ENTER:
case KEY_PLAY:
_RADIO_ChangeMode();
break;
default:
break;
}
}
//*********************************************************************************************************
// Function : _RADIO_InitPalette
// Abstract : This function will initialize the palette for radio UI.
// Arguments :
// Return :
// Side Effect : none.
// Notes :
//*********************************************************************************************************
void _RADIO_InitPalette(void)
{
GDI_PALETTE_INFO PaletteInfo_Radio_BG = {RADIO_BITMAP_PALETTE_INDEX_START, PAL_ADDR, _aRADIOBG_Palette};
//GDI_PALETTE_INFO PaletteInfo_Radio_NButton = {RADIO_NBUTTON_PALETTE_INDEX_START, PAL_ADDR, _aRADIONButton_Palette};
//GDI_PALETTE_INFO PaletteInfo_Radio_HButton = {RADIO_HBUTTON_PALETTE_INDEX_START, PAL_ADDR, _aRADIOHButton_Palette};
// Load palette for radio background photo.
GDI_LoadPalette(&PaletteInfo_Radio_BG);
GDI_ChangePALEntry(RADIO_BITMAP_PALETTE_BG, 0x5a000000, FALSE);
GDI_WaitPaletteComplete();
/*
// Load palette for radio normal button photo.
GDI_LoadPalette(&PaletteInfo_Radio_NButton);
GDI_ChangePALEntry(RADIO_NBUTTON_PALETTE_BG, PAL_ENTRY_COLOR_TRANSPARENT, FALSE);
GDI_WaitPaletteComplete();
// Load palette for radio highlight button photo.
GDI_LoadPalette(&PaletteInfo_Radio_HButton);
GDI_ChangePALEntry(RADIO_HBUTTON_PALETTE_BG, PAL_ENTRY_COLOR_TRANSPARENT, FALSE);
GDI_WaitPaletteComplete();
*/
MAINMENU_LoadGroupPalette(RADIO_PALETTE_ENTRY_NORMAL_BUTTON_BEGIN, _dwRADIONormalButtonPalette, FALSE);
MAINMENU_LoadGroupPalette(RADIO_PALETTE_ENTRY_HIGHLIGHT_BUTTON_BEGIN, _dwRADIOHighlightButtonPalette, FALSE);
GDI_ChangePALEntry(RADIO_PALETTE_ENTRY_HIGHLIGHT_BG, RADIO_PALETTE_COLOR_HIGHLIGHT_BG, FALSE);
GDI_ChangePALEntry(RADIO_PALETTE_ENTRY_TEXT_BLACK, RADIO_PALETTE_COLOR_TEXT_BLACK, FALSE);
GDI_ChangePALEntry(RADIO_PALETTE_ENTRY_TEXT_WHITE, RADIO_PALETTE_COLOR_TEXT_WHITE, FALSE);
GDI_ChangePALEntry(RADIO_PALETTE_ENTRY_TEXT_GRAY, RADIO_PALETTE_COLOR_TEXT_GRAY, FALSE);
GDI_ChangePALEntry(RADIO_PALETTE_ENTRY_TEXT_NAVYBLUE, RADIO_PALETTE_COLOR_TEXT_NAVYBLUE, FALSE);
GDI_ChangePALEntry(RADIO_PALETTE_ENTRY_FREQ_BAR_HIGHLIGHT, RADIO_PALETTE_COLOR_FREQ_BAR_HIGHLIGHT, FALSE);
GDI_ChangePALEntry(RADIO_PALETTE_ENTRY_FREQ_BAR_NORMAL, RADIO_PALETTE_COLOR_FREQ_BAR_NORMAL, FALSE);
GDI_ChangePALEntry(RADIO_PALETTE_ENTRY_FREQ_FRAME_BG, RADIO_PALETTE_COLOR_FREQ_FRAME_BG, FALSE);
GDI_ChangePALEntry(RADIO_PALETTE_ENTRY_FREQ_FRAME_BG_OUTLINE, RADIO_PALETTE_COLOR_FREQ_FRAME_BG_OUTLINE, FALSE);
GDI_ChangePALEntry(RADIO_PALETTE_ENTRY_NBUTTON_OUTLINE, RADIO_PALETTE_COLOR_NBUTTON_OUTLINE, FALSE);
GDI_ChangePALEntry(RADIO_PALETTE_ENTRY_HBUTTON_OUTLINE, RADIO_PALETTE_COLOR_HBUTTON_OUTLINE, FALSE);
GDI_WaitPaletteComplete();
}
//*********************************************************************************************************
// Function : _RADIO_ReadData
// Abstract : read backup freq. & favorite data from EEPROM/Flash and do some protection.
// Arguments : none.
// Return :
// Side Effect : none.
// Notes :
//*********************************************************************************************************
void _RADIO_ReadData(void)
{
#ifdef WRITE_EEPROM_ENABLE //SYSTEM_8051
BYTE bIndex;
HAL_ReadStorage(RADIO_ADDR_BACKUP_FREQ, (BYTE *)&_wRADIOBackupFreq, 2);
HAL_ReadStorage(RADIO_ADDR_FAVORITE, (BYTE *)_wRADIOFavorite, RADIO_FAVORITE_NUM*2);
if ((_wRADIOBackupFreq < _wRADIOStartFreq) || (_wRADIOBackupFreq > _wRADIOEndFreq))
{
_wRADIOBackupFreq = RADIO_DEFAULT_FREQ;
}
for (bIndex = 0; bIndex < RADIO_FAVORITE_NUM; bIndex++)
{
if ((_wRADIOFavorite[bIndex] < _wRADIOStartFreq) || (_wRADIOFavorite[bIndex] > _wRADIOEndFreq))
{
_wRADIOFavorite[bIndex] = RADIO_DEFAULT_FREQ;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -