📄 mmp_show.c
字号:
/******************************************************************************
* Filename : Mmp_show.c
* Start : 2004. 11. 15
* By : Taejin Kwon
* Contact : eric.kwon@samsung.com
* Description :
******************************************************************************
*/
/******************************************************
* INCLUDES
*****************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "Basic_typedefs.h"
#include "CUSTOM/Custom_option.h"
#include "OS/OS_abstract.h"
#include "API/HAPI/SH_capability.h"
#include "API/SH_types.h"
#include "API/SH_api.h"
#include "API/SH_BM_api.h"
#include "API/SH_JD_api.h"
#include "API/BM_global_ext.h"
#include "API/LAPI/MIXER/Mixer_api.h"
#include "API/HAPI/SH_SCRT_api.h"
#include "COMMON/Common.h"
#include "DRIVER/FS/Fs_api.h"
#include "DRIVER/I2C/I2c_api.h"
#include "DRIVER/EEPROM/Eeprom_drv.h"
#include "MAIN/Global_state.h"
#include "MAIN/Appl_types.h"
#include "MAIN/Uop_msg.h"
#include "CUSTOM/Osd_types.h"
#include "CUSTOM/Osd_if.h"
#include "CUSTOM/Strings_ext.h"
#include "CUSTOM/Key_handler_setup.h"
#include "CUSTOM/FP_handle.h"
#include "MAIN/MMP/MMN/Mmn_core.h"
#include "MAIN/MMP/Mmp_predef.h"
#include "MAIN/MMP/Mmp_common.h"
#include "MAIN/MMP/Mmp_global.h"
#include "MAIN/MMP/Mmp_show.h"
#include "MAIN/MMP/Mmp_types.h"
#include "MAIN/MMP/Mmp_callback.h"
#include "MAIN/MMP/Mmp_util.h"
#include "MAIN/MMP/Mmp_control.h"
#include "Mmp_state.h"
#include "API/LAPI/SDOUT/Sdout_api.h"
#include "API/LAPI/DMMPVD/DISP_api.h"
/*******************************************************
* Global Variables
******************************************************/
BYTE2 Playlist_Old_cursor;
extern MmpUi_st *gpstMmp_ui;
#if _APP_CAP_JPG_ASV
extern BOOL Asv_on;
#endif
/*******************************************************
* Extern Variables
******************************************************/
extern BOOL gFlag_playing_delete;
//SSCR xuhui 061020
#if _APP_CAP_JPG_ASV
extern S5H_ASVMode_t gASV_SetupMode;
#endif
extern VOID GuiSetUp(VOID);
extern UCHAR GetNoticeIcon(MmpNoticeType_et notice_type);
extern VOID OsdMmpNoticeTimerSet( SysTimeTick_t time, SysEnable_t set );
extern VOID SetVfdJpegNumber( UINT16 num );
extern INLINE OSD_MainType_et GetDisplayMainState( VOID );
extern INLINE OSD_InfoState_et GetDisplayInfoState( VOID );
extern DISP_PlayState_et dispGetPlayState(void);
#if (_APP_CAP_FUNC_MMP_POWER_RESUME || _APP_CAP_FUNC_DVD_OPENCLOSE_RESUME)
/******************************************************************************
* Function name :
* Arguments :
* IN VOID
*
* OUT
* I/O
* Return :
* VOID
* By : Liu renliang
* Description :
* Revision :
******************************************************************************
*/
VOID MmpResumeInfoSave(VOID)
{
MmpResumeInfo_st resume;
SetupInfoSaveResumeFlag( FALSE );
if (MmpGetResumeInfo(&resume))
{
#if 1 //wanglin 20060422
BYTE1 numbytes, *ptr, index;
numbytes = sizeof(MmpResumeInfo_st);
ptr = (UCHAR*)(&resume);
for( index = 0; index < numbytes; index ++ )
{
SH_writeEepromByte( ROM_ADDR_APPL_RESUME+index, *ptr );
ptr++;
}
SH_writeEepromByte( ROM_ADDR_RESUME_FLAG, TRUE );
#else
temp = (UCHAR) ((resume.ewFolder_index >> 8) & 0xFF);
SH_writeEepromByte(ROM_ADDR_MMP_FOLDER_INDEX, temp);
temp = (UCHAR) (resume.ewFolder_index & 0xFF);
SH_writeEepromByte(ROM_ADDR_MMP_FOLDER_INDEX + 1, temp);
temp = (UCHAR) ((resume.ewFile_index >> 8) & 0xFF);
SH_writeEepromByte(ROM_ADDR_MMP_FILE_INDEX, temp);
temp = (UCHAR) (resume.ewFile_index & 0xFF);
SH_writeEepromByte(ROM_ADDR_MMP_FILE_INDEX + 1, temp);
temp = (UCHAR) resume.file_type;
SH_writeEepromByte(ROM_ADDR_MMP_FILE_TYPE, temp);
SetupInfoSaveResumeFlag( TRUE);
#endif
}
SH_saveEepromValidId();
/* EEPROM PARK */
SH_readEepromByte( EEPROM_ADDRESS_PARK );
}
/******************************************************************************
* Function name :
* Arguments :
* IN VOID
*
* OUT
* I/O
* Return :
* VOID
* By : Liu renliang
* Description :
* Revision :
******************************************************************************
*/
BOOL MmpResumeInfoLoad(MmpResumeInfo_st *resume)
{
UCHAR temp;
temp = SH_readEepromByte( ROM_ADDR_RESUME_FLAG );
if( SH_checkEepromValidId() == FALSE )
{
/* EEPROM PARK */
SH_readEepromByte( EEPROM_ADDRESS_PARK );
return FALSE;
}
if( temp == TRUE )
{
#if 1 //wanglin 20060422
BYTE1 numbytes, *ptr, index;
numbytes = sizeof(MmpResumeInfo_st);
ptr = (UCHAR*)resume;
for( index = 0; index < numbytes; index ++ )
{
*(ptr+index) = SH_readEepromByte( ROM_ADDR_APPL_RESUME+index );
}
#else
temp = SH_readEepromByte(ROM_ADDR_MMP_FOLDER_INDEX);
temp1 = SH_readEepromByte(ROM_ADDR_MMP_FOLDER_INDEX + 1);
resume->ewFolder_index = (BYTE2)((temp<<8) | temp1);
temp = SH_readEepromByte(ROM_ADDR_MMP_FILE_INDEX);
temp1 = SH_readEepromByte(ROM_ADDR_MMP_FILE_INDEX + 1);
resume->ewFile_index = (BYTE2)((temp<<8) | temp1);
temp = SH_readEepromByte(ROM_ADDR_MMP_FILE_TYPE);
resume->file_type = temp;
#endif
SetupInfoSaveResumeFlag(FALSE); // cydrain 20060425
memcpy(&gMmpPowerResume, resume, sizeof(MmpResumeInfo_st));
#if _APP_CAP_NAV_USB_DISC || _APP_CAP_NAV_FX_DATA
if(resume->disc_mode == GetMainMode())
return TRUE;
else
return FALSE;
#else
return TRUE;
#endif
}
else
{
gMmpPowerResume.file_type = MMP_NOT_KNOWN; // cydrain 20060425
/* EEPROM PARK */
SH_readEepromByte( EEPROM_ADDRESS_PARK );
return FALSE;
}
}
/******************************************************************************
* Function name :
* Arguments :
* IN VOID
*
* OUT
* I/O
* Return :
* VOID
* By : Liu renliang
* Description :
* Revision :
******************************************************************************
*/
BOOL MmpGetResumeInfo(MmpResumeInfo_st *resume)
{
if (GetMainState() != MAIN_PLAY)
return FALSE;
resume->file_type = GetMmpFileType();
#if _APP_CAP_NAV_USB_DISC || _APP_CAP_NAV_FX_DATA
resume->disc_mode = GetMainMode();
#endif
if (resume->file_type == MMP_AUDIO_FILE
#if _APP_CAP_NAV_MMP_PLAY_VIDEO_FILE // cydrain 20060424
|| resume->file_type == MMP_VIDEO_FILE
#endif
)
{
resume->ewFolder_index = GetMmpFolderPlay();
resume->ewFile_index = GetMmpBgPlay();
resume->ewTime_resume = gpstMmp_ctrl->epstBg_play->eiCur_time; // cydrain 20060424
#if _APP_CAP_FUNC_MMP_FIXED_SUB_SCHEME
if(resume->file_type == MMP_VIDEO_FILE &&
gpstMmp_ctrl->epstBg_play->epSmiEntry_list != NULL) //record the external sub file
resume->iEntryLba = gpstMmp_ctrl->epstBg_play->epSmiEntry_list->iEntry_lba;
else
resume->iEntryLba = 0xFFFFFFFF; //support this value is invalid, maybe need change azureming@060724
#endif
}
else if(resume->file_type == MMP_IMAGE_FILE)
{
resume->ewFolder_index = GetMmpFolderOpen();
resume->ewFile_index = GetMmpFileCursor();
resume->ewTime_resume = 0; // cydrain 20060424
#if _APP_CAP_FUNC_MMP_FIXED_SUB_SCHEME
resume->iEntryLba = 0xFFFFFFFF; //support this value is invalid, maybe need change azureming@060724
#endif
}
return TRUE;
}
#endif /*_APP_CAP_FUNC_MMP_POWER_RESUME */
/******************************************************************************
* Function name : MmpShowClearNoticeStr
* Arguments :
* IN
* VOID
* OUT
* I/O
* Return :
* VOID
* By : Kim Do Yeon
* Description :
* Revision :
******************************************************************************
*/
VOID MmpShowClearNoticeStr(VOID)
{
OSD_State_st *osd_state;
osd_state = OSD_GetState();
switch(osd_state->etCur_dsp)
{
case DISPLAY_EXPLORER:
MmpShowNoticeString(MMP_NOTICE_DEFAULT, "");
break;
case DISPLAY_IMAGE_ALBUM:
case DISPLAY_IMAGE_INFO:
case DISPLAY_OFF:
/* Clear the image numeric input */
OSD_SetIconDisplay(ICON_KEEP, NULL, SYS_NO_WAIT);
break;
default:
break;
}
}
/******************************************************************************
* Function name : MmpShowNoticeStringMainStatusKeep
* Arguments :
* IN
*
* OUT
* I/O
* Return :
* VOID
* By : QQ
* Description :
* Revision : 050822
******************************************************************************
*/
BOOL MmpShowNoticeStringMainStatusKeep(VOID)
{
SetMainState_t main_temp = GetMainState();
ScanCtrl_t scan;
BOOL flag = FALSE;
switch(main_temp)
{
case MAIN_PAUSE:
SetMmpNoticeString((char *)gpPause[MENU_LANG]);// Qian liping 060112
SetMmpNoticeType(MMP_NOTICE_PAUSE);
flag = TRUE;
break;
case MAIN_FF:
case MAIN_FR:
case MAIN_SF:
case MAIN_SR:
GetScanControlState( &scan );
if(scan.speed == PM_SPEED_X1 )
break;
if(scan.direction == PM_DIR_FORWARD)
{
SetMmpNoticeType(MMP_NOTICE_FF);
}
else if(scan.direction == PM_DIR_BACKWARD)
{
SetMmpNoticeType(MMP_NOTICE_FR);
}
AddMmpNoticeString("X");
switch( scan.speed )
{
case PM_SPEED_X2:
AddMmpNoticeString( "2" );
break;
case PM_SPEED_X4:
AddMmpNoticeString( "4" );
break;
case PM_SPEED_X8:
AddMmpNoticeString( "8" );
break;
case PM_SPEED_X16:
AddMmpNoticeString( "16" );
break;
case PM_SPEED_X32:
AddMmpNoticeString( "32" );
break;
//case PM_SPEED_X128:
//AddMmpNoticeString( "6" );
//break;
default:
break;
}
flag = TRUE;
break;
default:
if(GetMmpStopMode() == MMP_RESUME_STOP)
{
SetMmpNoticeString((char *)gpResumestop[MENU_LANG]);// Qian liping 060112
SetMmpNoticeType(MMP_NOTICE_RESUME_STOP);
flag = TRUE;
}
#if _APP_CAP_OSD_MMP_MUTE_IN_FRONT
else
{
if( gMuteOn ) //(weilf)20060704:fix 516
{
SetMmpNoticeString((char *)gpMute[MENU_LANG]);
SetMmpNoticeType(MMP_NOTICE_DEFAULT);
flag =TRUE ;
}
}
#endif
break;
}
return flag;
}
/******************************************************************************
* Function name : MmpShowNoticeIcon
* Arguments :
* IN
*
* OUT
* I/O
* Return :
* VOID
* By : QQ
* Description :
* Revision : 050822
******************************************************************************
*/
VOID MmpShowNoticeIcon(VOID)
{
NCHAR notice_string[20];
if ((GetMmpNoticeType() >= MMP_NOTICE_PLAY) && (GetMmpNoticeType() <= MMP_NOTICE_FR))
{
GetMmpNoticeString( notice_string);
sprintf( gpstMmp_ui->notice_string, "%c %s" , GetNoticeIcon(GetMmpNoticeType()) , notice_string );
//SprintfMmpNoticeString("%c %s" , GetNoticeIcon(GetMmpNoticeType()) , notice_string);
}
}
/******************************************************************************
* Function name : MmpShowNoticeExploreKeeping
* Arguments :
* IN
* MmpNoticeType_et notice_type, char *string
* OUT
* I/O
* Return :
* VOID
* By : QQ
* Description :
* Revision : 050803
******************************************************************************
*/
VOID MmpShowNoticeExploreKeeping(VOID)
{
MmpShowNoticeString(MMP_NOTICE_DEFAULT,NULL);
}
/******************************************************************************
* Function name : MmpShowNoticeDisp
* Arguments :
* IN
* MmpNoticeType_et notice_type, char *string
* OUT
* I/O
* Return :
* VOID
* By : QQ
* Description : prevent displaying playmsg when in some special case
* Revision : 050904
******************************************************************************
*/
BOOL MmpShowNoticeDisp(MmpNoticeType_et notice_type)
{
ScanCtrl_t scan;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -