
/********************
	pctask.h
 ********************/


/*******************************************************************************
	DEFINE
*******************************************************************************/

/*******************************************************
	THREAD ID
*******************************************************/
#define	THREAD_ID_IDLE		1
#define	THREAD_ID_RMON		2
#define	THREAD_ID_TASK		3
#define	THREAD_ID_AUDIO		4
#define	THREAD_ID_CONTROLLER	5
#define	THREAD_ID_GRAPH		6

/*******************************************************
	THREAD PRIORITY
*******************************************************/
#define	THREAD_PR_TASK		100
#define	THREAD_PR_AUDIO		30
#define	THREAD_PR_CONTROLLER	20
#define	THREAD_PR_GRAPH		10

/*******************************************************
	RSP TASK NAME
*******************************************************/
#define	TASK_NAME_NULL		0
#define	TASK_NAME_YIELD		1
#define	TASK_NAME_AUDIO		2
#define	TASK_NAME_GRAPH		3

/*******************************************************
	MESSAGE
*******************************************************/
#define	MESG_PAD		(OSMesg)11
#define	MESG_X2T_GTASKREQ	(OSMesg)21
#define	MESG_X2T_ATASKREQ	(OSMesg)22
#define	MESG_X2T_RSPDONE	(OSMesg)24
#define	MESG_X2T_RDPDONE	(OSMesg)25
#define	MESG_X2T_RETRACE	(OSMesg)26
#define	MESG_X2T_PRENMI		(OSMesg)27
#define	MESG_T2A_TIMING		(OSMesg)31
#define	MESG_T2G_TIMING		(OSMesg)41
#define	MESG_T2G_RDPDONE	(OSMesg)42
#define	MESG_T2G_RSPDONE	(OSMesg)43
#define	MESG_X2C_CONTREAD	(OSMesg)51
#define	MESG_X2C_TIMING		(OSMesg)52
#define	MESG_C2G_CONTDONE	(OSMesg)61

/*******************************************************
	LENGTH OF MESSAGE BUFFER
*******************************************************/
#define	NUM_MESGS_DMA		1
#define	NUM_MESGS_PAD		1
#define	NUM_MESGS_PI		64
#define NUM_MESGS_T2A_TIMING	1
#define NUM_MESGS_T2G_TIMING	1
#define NUM_MESGS_T2G_RDPDONE	1
#define NUM_MESGS_T2G_RSPDONE	1
#define NUM_MESGS_X2T		16
#define NUM_MESGS_X2C		16
#define NUM_MESGS_C2G_CONTDONE	1


/*******************************************************************************
	TYPEDEF
*******************************************************************************/

/*******************************************************
	PROCESS TIME
*******************************************************/
typedef struct {
	OSTime		start ;
	OSTime		end ;
} ProcessTime ;

/*******************************************************
	RSP TASK
*******************************************************/
typedef struct {
	OSTask		ostask ;
	OSMesgQueue	*msgque ;
	OSMesg		osmesg ;
	int		status ;
	int		pad ;
} RSPTask;


/*******************************************************************************
	EXTERNAL WORK
*******************************************************************************/
extern OSIoMesg		IOMesgB_DMA ;
extern OSMesgQueue	MesgQ_DMA ;
extern OSMesgQueue	MesgQ_PAD ;
extern OSMesgQueue	MesgQ_T2A_timing ;
extern OSMesgQueue	MesgQ_T2G_timing ;
extern OSMesgQueue	MesgQ_T2G_rdpdone ;
extern OSMesgQueue	MesgQ_T2G_rspdone ;
extern OSMesgQueue	MesgQ_X2T_etc ;
extern OSMesgQueue	MesgQ_X2C_etc ;
extern OSMesgQueue	MesgQ_C2G_contdone ;

extern OSTask		*Gtask_p ;
extern OSTask		*Atask_p ;

#if SYS_TIME_SW
extern ProcessTime	LoopTime[], *LoopTime_p ;
extern ProcessTime	GcpuTime[], *GcpuTime_p ;
extern ProcessTime	GrspTime[], *GrspTime_p ;
extern ProcessTime	GrdpTime[], *GrdpTime_p ;
extern ProcessTime	AcpuTime[], *AcpuTime_p ;
extern ProcessTime	ArspTime[], *ArspTime_p ;
extern int		LoopTsel, GcpuTsel, GrspTsel, GrdpTsel, AcpuTsel, ArspTsel ;
#endif

extern ushort		*fbuffer_t[] ;

extern int		frame_count ;
extern int		prenmi_sw ;
extern int		Graph_timing, Graph_timing_req ;
