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

📄 fe_api.c

📁 三星ic 9980的源代码. 718版.
💻 C
字号:
/******************************************************************************
 *   Filename    : Appl_mgr.c
 *   Start       : 2002. 11. 8
 *   By          : Taejin Kwon
 *   Contact     : tj1kwon@samsung.co.kr
 *   Description : 
 ******************************************************************************
 */

/******************************************************
 *       INCLUDES
 *****************************************************/
#include "Sys_call_abstract.h"
#include "FE_API.h"
#include "s5h_types.h"
#include "S5h_Api.h"
#include "Psd.h"
#include "S5L_memmap.h"
#include "util.h"
#include "Avl_types.h"
#include "..\..\api\ad\codec.h"
#include "function.h"
#include "s5h_capability.h"
#include "vcd_def.h"

BufferManager_t				gBM_TrackBuffer;
UCHAR						gVCD_DMAcounter;//Lumin9908
extern	VCD_TRACK_INFO		gVcdTrackInfo;
extern  	SysQueue_t			gQ_BE;
#if _MP3NAVI_TASK_
extern 	SysQueue_t			gQ_Mp3navi;
#endif
InitStatus_t					gInit_status;
extern ULONG					gClut_mp3[];

// extern		OsdMsg_t				osd_msg;
// volatile 	UCHAR				gFIU_ReadPossible;
// BOOL		bServo_init;
// void S5H_FERunTestVCD ( void );
void TrackBufferInit ( void );
void CallBack_FEWriteBufferAvail ( void );

extern void DecideCdDisc(void);
extern void Osd_InitResource(void);
#if _MP3NAVI_TASK_
extern void Mp3_InitResource(void);
#endif
//void OsdMsgDsp(DspStatus_t	display_status);

extern void Vcd_creat_task();
extern void AVL_SystemInit(void);
extern void AVL_Initialize(void);
extern SysReturn_t AVL_SysSendMsg (SysMsg_t * msg, SysSize_t msg_sz, SysWait_t wait);
extern void Audio_Post_effect_reset(void);
extern void ShowReading( void );

extern VOID MIX_SetGfxClut(ULONG number, ULONG*MIX_clut);

#if _SUPPORT_GAMECD
extern void GCD_CreateTask();
extern BOOL GCD_FillAllGameLBA();
extern BOOL gIsGameCD;
#endif

void Init_FEU ( void )
{
	gVCD_DMAcounter = 0;//Lumin9908
	AVL_SystemInit();
	AVL_Initialize();
	InitExceptions();
}

void S5H_FEInit()
{
	Init_FEU(); 
#if FE_DEBUG
	SysPrintf("\n S5H_FEInit() was called");
#endif
}

extern BOOL	bIs_Closed;
void S5H_FERunDisc( void )		/*S5H_FERunVCD */
{
#if 1
	Event_t	ev;
#endif
	DiscType_t	disc_type;

//	bServo_init = FALSE;
	gInit_status = INIT_START;

	FE_Main();

	AVL_CheckVCD_DISC();

	if(bIs_Closed)
		return;

	TrackBufferInit ( );

	gInit_status = APPL_INIT_START;

#if 0
#if _AUDIO_POST_PROCESS_
	Audio_Post_effect_reset();
#endif
#endif

	/* no disc handler */
	if(AVL_GetDiscType() == AVL_NODISC)
	{
#if FE_DEBUG		
		SysPrintf("\nEnter in No Disc Main.");
#endif
		S5H_Stop();
		S5H_FEStop();

		Osd_InitResource();

		SetDiscType(NO_DISC);
//		bServo_init = TRUE;
		gInit_status = INIT_END;

		OsdMsgDsp(DSP_NO_DISC);

		return;
	}

	if(AVL_GetDiscType() != AVL_CDDA)					//vcd or mp3
		DecideCdDisc();
	else												//cdda
		SetDiscType(CD_DA);
	
	disc_type = GetDiscType();
	
	if( (disc_type == VCD_DISC) || (disc_type == CD_DA))
	{
#if FE_DEBUG		
		SysPrintf("\n[APPL MGR] This is VCD application.");
#endif

#if _SUPPORT_GAMECD
		if(gIsGameCD)
		{	
			GCD_FillAllGameLBA();
			GCD_CreateTask();
		}	
#endif  /* _SUPPORT_GAMECD*/
		Vcd_creat_task();//Lumin9908
		Osd_InitResource();
		
		ev.sender = EV_SENDER_FE;
		ev.param = BE_RUN_VCD_DISC;		
		SysSendMsg( &gQ_BE, &ev, sizeof(Event_t), SYS_NO_WAIT );
	}
	else if( disc_type == MP3_DISC)
	{


		MIX_SetGfxClut(4, gClut_mp3); //mp3 flicking problem added by PHK 1027
	
#if FE_DEBUG		
		SysPrintf("\n[APPL MGR] This is MP3 application.");
#endif
		
#if _MP3NAVI_TASK_
		Mp3_InitResource();
#else
		Osd_InitResource();
#endif

		ev.sender = EV_SENDER_FE;
		ev.param = BE_RUN_MP3_DISC;		
		SysSendMsg( &gQ_BE, &ev, sizeof(Event_t), SYS_NO_WAIT );
	}
	else if( disc_type == NO_DISC )//maymeng 050921 for svcd unknown display
	{
		S5H_Stop();
		S5H_FEStop();
		Osd_InitResource();
		//SetDiscType(NO_DISC);
		//bServo_init = TRUE;
		gInit_status = INIT_END;
		OsdMsgDsp(DSP_NO_DISC);
		return;
	}
	else
	{
#if FE_DEBUG		
		SysPrintf("\n can NOT play");
#endif
	}

//	bServo_init = TRUE;
	gInit_status = INIT_END;
#if FE_DEBUG
	SysPrintf ( "\n S5H_FERunDisc() was called" );
#endif
}

void TrackBufferInit ( void )
{
	S5L_MemMap_t	*pstMemMap;

	pstMemMap = S5L_GetMemoryInfo (  MM_TRACK_BUF );
	InitBufferManager ( &gBM_TrackBuffer, 
						pstMemMap->ul32StartAdd, 
						pstMemMap->ul32ChunkSize, 
						pstMemMap->ul32NoChunks );	/* n+1 Number of Chunks */
	SetWriteAvailCallback ( &gBM_TrackBuffer,  CallBack_FEWriteBufferAvail );
}

VOID FE_ResetBufferStatus ( VOID )
{
	ResetBufferState ( &gBM_TrackBuffer );	
}

void CallBack_FEWriteBufferAvail ( void )
{
	extern BOOL gWrite_start;
	BufferElement_t buf;

	gWrite_start=TRUE;
	GetWriteBuffer(&gBM_TrackBuffer, &buf);
}

DiscType_t	GetDiscType(void)
{
		return gDisc_type;
}

void 		SetDiscType(DiscType_t		disc_type)
{
		gDisc_type = disc_type;
}

#if 0 /* KBA #2010@2005# : Not needed */
VOID FE_Resume ( VOID )
{
	FE_ResetBufferStatus( );	
}

VOID FE_Stop ( VOID )
{
	//S5H_FeAbort ( );	
	AVL_AbortPlay();
}

void S5H_FERunTestVCD ( void )
{
	/*
		1) Reserve Track(FEU) buffer
	*/
	S5H_MSF_t	StartMSF;
	S5H_MSF_t	StopMSF;	
   #if 1
	gVcdTrackInfo.Type = DATA_CD_TRACK;
   #endif
   
	StartMSF.min = 0x30;
	StartMSF.sec =0x00;
	StartMSF.frame = 0;	

	StopMSF.min =  50;
	StopMSF.sec = 0;
	StopMSF.frame = 0;

	S5H_SetDumpMode( FALSE );
	
	SysSleep ( 1000);

	S5H_ReadCd ( StartMSF, 
				   	StopMSF, 
					SECTOR_TYPE_DIGITAL, 
					MEDIA_CDROM, 
					INTERPOLATE_ON );
#if FE_DEBUG	
	SysPrintf("\n S5H_FERunDisc() was called");
#endif
}


/******************************************************************************
 * Function name  : S5H_GetPipelineState                                       *
 * Revision       :                                                           *
 * Arguments      :                                                           *
 * Return         : S5H_ErrType_t                                             *
 * By             :                                                           *
 * Description    :  Return time =>                             *
 ******************************************************************************
 */
S5H_PipelineState_t S5H_GetPipelineState( void )
{
	S5H_PipelineState_t state = PIPELINE_STATE_UNKNOW;

	switch( gFIU_ReadPossible )
	{
		case 0x0:
			state = PIPELINE_STATE_TRANS;
			break;
		case 0x1:
			state = PIPELINE_STATE_IDLE;
			break;
		case 0x2:
			state = PIPELINE_STATE_WAIT;
			break;
	}

	return( state );
}

/******************************************************************************
 * Function name  : S5H_SetPipelineState                                       *
 * Revision       :                                                           *
 * Arguments      :                                                           *
 * Return         : S5H_ErrType_t                                             *
 * By             :                                                           *
 * Description    :  Return time =>                             *
 ******************************************************************************
 */
void S5H_SetPipelineState( S5H_PipelineState_t state )
{
	switch( state )
	{
		case PIPELINE_STATE_TRANS:
			gFIU_ReadPossible = 0;
			break;
		case PIPELINE_STATE_IDLE:
			gFIU_ReadPossible = 1;
			break;
		case PIPELINE_STATE_WAIT:
			gFIU_ReadPossible = 2;
		case PIPELINE_STATE_LAST_DATA:
			break;
	}
}

/******************************************************************************
 * Function name  : S5H_SetPipeline 
 * Revision       : 
 * Arguments      : 
 * Return         : S5H_ErrType_t
 * By             :   
 * Description    :  Return time =>     
 ******************************************************************************
 */
void S5H_SetPipelineStart( ULONG ptr )
{
	IO_WData32 ( (UINT8 *)&rPSD_TRACK_BUF_RD_PT_H, (UINT)(ptr>>16),(UINT)ptr );
}

void S5H_SetPipelineStop( ULONG ptr )
{
	IO_WData32 ( (UINT8 *)&rPSD_TRACK_BUF_STOP_H, (UINT)(ptr>>16),(UINT)ptr );
}
/******************************************************************************
 * Function name  : S5H_SetDumpMode
 * Arguments      : 
 * Return         :
 * By             : 
 * Description    : 
 ******************************************************************************
 */
void S5H_SetDumpMode( BOOL type )
{
	PSD_SetDumpMode(type);
}

/******************************************************************************
 * Function name  : S5H_SetDumpFlag
 * Arguments      : void
 * Return         : 
 * By             :  
 * Description    :  
 ******************************************************************************
 */
void S5H_SetDumpFlag( BOOL type )
{
	PSD_SetDumpFlag( type );
}

/******************************************************************************
 * Function name  : S5H_GetDumpFlag
 * Arguments      : 
 * Return         :
 * By             : 
 * Description    : 
 ******************************************************************************
 */
BOOL S5H_GetDumpMode( void )
{
	return PSD_GetDumpMode();
}
#endif	/* KBA #2010@2005# : Not needed */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -