/*****************************************************
event6.h : Edited at 2002,11,5 by K.Sasaki
  μITRON サンプルプログラム
  Copyright(C) 1998-2003 佐々木芳

イベント定義

イベントキューはメイルボックスとする。
イベントはメッセージとしてメイルボックスを介して送受信する
イベントインスタンスは固定長メモリプールから取得したメモリブロック
*****************************************************/
#ifndef __EVENT_H__
#define __EVENT_H__

#include "system_def.h"

/*****************************************************
//イベントヘッダの構造
*****************************************************/
typedef struct tagEventHeader{
	T_MSG		os_rsv;			/*OS管理領域*/
	ID			mpfid;			/*メモリプールID*/
}EVENT_HEADER;

/*****************************************************
//イベントブロックの構造
*****************************************************/
typedef struct tagEventBlock{
	EVENT_HEADER	header;		/*イベントヘッダ*/
	ID				evMbx;		/*イベント送信先メイルボックス*/
	UINT			event;		/*イベントＩＤ	*/
	union{
		BYTE		byte[16];	/*データ*/
		WORD		word[1];
		DWORD		dword[1];
	}param;
}EVENT;

/*****************************************************
//イベント処理関数
*****************************************************/
EVENT* kpCreateEvent(UINT event);
EVENT* kpCreateEventTimeout(UINT event, TMO tmout);
ER kpDeleteEvent(EVENT* pEvent);
ER kpSendEvent(ID evMbx, EVENT* pEvent);
EVENT* kpWaitEvent(ID evMbx);
EVENT* kpWaitEventTimeout(ID evMbx, TMO tmout);





#endif /*__EVENT_H__*/
