📄 fe_api.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 + -