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

📄 radio.c

📁 ct952 source code use for Digital Frame Photo
💻 C
📖 第 1 页 / 共 5 页
字号:

    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 + -