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

LEDタスクの実装（汎用タイマ使用）

*****************************************************/

#include "hal.h"
#include "itron.h"
#include "system_def.h"
#include "event.h"
#include "timer.h"
#include "debug.h"

/*タイムアウト通知用メッセージ領域確保*/
MSGHEADER LedTimeoutMsg ={
	{0},	/*T_MSG os_rsv*/
	0,		/*id*/
	0,		/*sub*/
	0		/*length*/
};

/*****************************************************
//LEDタスク
*****************************************************/
void LedTask(VP_INT exinf)
{
	ER ercd;
	MSGBLOCK *pMsg;
	BYTE led = 0x01;
	DebugPrintf("\rLedTask: started.\r");

	/*タイマ定義*/
	timSetTimer(TNO_Led,					/*タイマ番号*/
			TC_LED_TIMEOUT,				/*タイムアウト値*/
			MID_Led,					/*通知メッセージを受け取るメイルボックスID*/
			sizeof(LedTimeoutMsg),		/*メッセージサイズ*/
			(MSGBLOCK*)&LedTimeoutMsg	/*通知メッセージのアドレス*/
			);
	timStartTimer(TNO_Led);	/*タイマ起動*/
	while(1){
		//ercd = rcv_mbx(MID_Led, &pMsg);
		ercd = WaitEvent(MID_Led, &pMsg);
		if(ercd == E_OK){
			halSetLED(led);			/*LED 変更*/
			led <<= 1;
			if(!led) led = 0x01;
			timStartTimer(TNO_Led);	/*次のタイムアウト起動*/
		}else{
			DebugPrintf("LedTask: rcv_msg ercd = %04xh\r", ercd);
		}
	}
}

