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

📄 mmp_show.c

📁 SAMSUNG 5009的源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
/******************************************************************************
 *   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 + -