/*****************************************************************************
kernel_cfg.c :
  μITRON サンプルプログラム
  Copyright(C) 2002 佐々木芳

システム構築用定義(STEP3)

Windowsのシミュレーション環境上で動作するアプリケーションプログラムのコンパイル時には以下のマクロ定義が必要
	_CMTOY
	_APP_EXPORT
*****************************************************************************/

#include "hal.h"

#include "itron.h"
#include "kernel_id.h"
#include "kernel_cfg.h"

/*****************************************************************************/
/*ユーザタスク、割込みハンドラ、初期化ルーチン 関数プロトタイプ宣言*/
/*****************************************************************************/
#include "system_def.h"


/*****************************************************************************
静的生成オブジェクト定義テーブル
*****************************************************************************/

/*静的タスク生成定義*/
TASK_DEF TaskDefinitionTable[] = {
	CRE_TSK(IDLE_TASK_ID,	(TA_HLNG | TA_ACT),NULL,NULL,		TMAX_TPRI,	0,NULL, "idle")	/*idle task*/
	CRE_TSK(TID_Init,		(TA_HLNG | TA_ACT),NULL,InitTask,	TPRI_Init,	0,NULL, "init")	/**/
	CRE_TSK(TID_Debug,		(TA_HLNG | TA_ACT),NULL,DebugTask,	TID_Debug,	0,NULL, "debug")	/**/
	CRE_TSK(TID_Timer,		(TA_HLNG | TA_ACT),NULL,TimerTask,	TPRI_Timer,	0,NULL, "timer")	/**/
	CRE_TSK(TID_Display,	(TA_HLNG | TA_ACT),NULL,DisplayTask,TPRI_Display,0,NULL, "display")	/**/
	CRE_TSK(TID_Irq12,		(TA_HLNG | TA_ACT),NULL,Irq12Task,	TPRI_Irq12,	0,NULL, "Irq12")	/**/
	CRE_TSK(TID_Button,		(TA_HLNG | TA_ACT),NULL,ButtonTask,	TPRI_Button,0,NULL, "Button")	/**/
	CRE_TSK(ID_NULL,	(TA_NULL), NULL, NULL, 0, 0, NULL, "")	/*定義終了*/
};
#define NUM_OF_DEFINED_TASKS	sizeof(TaskDefinitionTable)/sizeof(TASK_DEF)
int	EntriesOfTaskDefinitionTable = NUM_OF_DEFINED_TASKS;

/*静的セマフォ生成定義*/
SEMAPHORE_DEF SemaphoreDefinitionTable[] = {
	CRE_SEM(ID_NULL,0,0,0,"")	/*定義終了*/
};
#define NUM_OF_DEFINED_SEMAPHORES	sizeof(SemaphoreDefinitionTable)/sizeof(SEMAPHORE_DEF)
int	EntriesOfSemaphoreDefinitionTable = NUM_OF_DEFINED_SEMAPHORES;

/*静的イベントフラグ生成定義*/
EVENTFLAG_DEF EventflagDefinitionTable[] = {
	CRE_FLG(FID_Irq12,TA_TFIFO | TA_WMUL | TA_CLR,0,"Irq12")	/*定義終了*/
	CRE_FLG(ID_NULL,0,0,"")	/*定義終了*/
};
#define NUM_OF_DEFINED_EVENTFLAGS	sizeof(EventflagDefinitionTable)/sizeof(EVENTFLAG_DEF)
int	EntriesOfEventflagDefinitionTable = NUM_OF_DEFINED_EVENTFLAGS;

/*静的データキュー生成定義*/
DATAQUEUE_DEF DataQueueDefinitionTable[] = {
	CRE_DTQ(ID_NULL,0,16,NULL,"")	/*定義終了*/
};
#define NUM_OF_DEFINED_DATAQUEUES	sizeof(DataQueueDefinitionTable)/sizeof(DATAQUEUE_DEF)
int	EntriesOfDataQueueDefinitionTable = NUM_OF_DEFINED_DATAQUEUES;

/*静的メイルボックス生成定義*/
MAILBOX_DEF MailboxDefinitionTable[] = {
	CRE_MBX(MID_Display	,(TA_TFIFO | TA_MFIFO)	,0	,NULL, "mbx_disp")
	CRE_MBX(ID_NULL, 0, 1, NULL, "")	/*定義終了*/
};
#define NUM_OF_DEFINED_MAILBOXES	sizeof(MailboxDefinitionTable)/sizeof(MAILBOX_DEF)
int	EntriesOfMailboxDefinitionTable = NUM_OF_DEFINED_MAILBOXES;

/*静的固定長メモリープール生成定義*/
MPF_DEF FixedMemoryPoolDefinitionTable[] = {
	CRE_MPF(ID_NULL, 0, 0, 0, NULL, "")	/*定義終了*/
};
#define NUM_OF_DEFINED_MPFS		sizeof(FixedMemoryPoolDefinitionTable)/sizeof(MPF_DEF)
int	EntriesOfFixedMemoryPoolDefinitionTable = NUM_OF_DEFINED_MPFS;

#if 0
/*静的周期ハンドラ生成定義*/
CYCHDR_DEF CyclicHnadlerDefinitionTable[] = {
	CRE_CYC(ID_NULL,0,NULL,NULL,1000,10,"")	/*定義終了*/
};
#define NUM_OF_DEFINED_CYCHDRS	sizeof(CyclicHnadlerDefinitionTable)/sizeof(CYCHDR_DEF)
int	EntriesOfCyclicHnadlerDefinitionTable = NUM_OF_DEFINED_CYCHDRS;

/*静的アラームハンドラ生成定義*/
ALMHDR_DEF AlarmHnadlerDefinitionTable[] = {
	DEF_ALM(ID_NULL,0,100000)	/*定義終了*/
};
#define NUM_OF_DEFINED_ALMHDRS	sizeof(AlarmHnadlerDefinitionTable)/sizeof(ALMHDR_DEF)
int	EntriesOfAlarmHnadlerDefinitionTable = NUM_OF_DEFINED_ALMHDRS;
#endif

/*静的割り込みハンドラ生成定義*/
INTHDR_DEF InterruptHandlerDefinitionTable[] = {
	DEF_INH(1,TA_NULL,Int1Handler,"")
	DEF_INH(2,TA_NULL,Int2Handler,"")
	DEF_INH(INTNO_NULL, 0, NULL, "")	/*定義終了*/
};
#define NUM_OF_DEFINED_INTHDRS	sizeof(InterruptHandlerDefinitionTable)/sizeof(INTHDR_DEF)
int	EntriesOfInterruptHandlerDefinitionTable = NUM_OF_DEFINED_INTHDRS;


/*静的初期化ルーチン生成定義*/
INIRTN_DEF InitialRoutineDefinitionTable[] = {
	ATT_INI(TA_NULL,NULL,NULL)	/*定義終了*/
};
#define NUM_OF_DEFINED_INIRTNS	sizeof(InitialRoutineDefinitionTable)/sizeof(INIRTN_DEF)
int	EntriesOfInitialRoutineDefinitionTable = NUM_OF_DEFINED_INIRTNS;


#ifdef _CMTOY
/*****************************************************************************
コンフィグレーションテーブルを公開する
*****************************************************************************/
IMPLEMENT_ATTACH_APPLICATION
#endif	/*_CMTOY*/
