/*
 * timer.h
 *
 *  Created on: 2021/03/24
 *      Author: 0170886
 */

#ifndef TIMER_H_
#define TIMER_H_

/* 定数宣言 */
/* タイマタスクの状態定義 */
typedef enum {
	ST_TIMER_OFF = 0,   		/* タイマOFF状態	*/
	ST_TIMER_ON,        		/* タイマON状態		*/
	ST_TIMER_NUM				/* 状態の数 		*/
}ST_TIMER;

/* タイマタスク制御情報 */
typedef struct {
	uint32_t		ctl_flg;	/* Control flag  	*/
	ST_TIMER		nowsts;		/* 現在の状態 		*/
	ST_TIMER 		nextsts;	/* 次の状態		 	*/
	int				timer;		/* タイムアウトまでの時間 */
	T_EVENT 		*prcv_data;	/* 受信データ		*/
}TTM_CTL;

#define GTM_CTLF	gtm_ctl.ctl_flg	/* Control flag     		*/
#define GTM_NOWSTS	gtm_ctl.nowsts	/* Current status		    */
#define GTM_NEXTSTS	gtm_ctl.nextsts	/* Next status		    	*/
#define GTM_REMTM	gtm_ctl.timer   /* 残り時間 				*/
#define GTM_RCVAD	gtm_ctl.prcv_data/* 受信したメッセージのアドレス 	*/
#define GTM_RCVEV	(gtm_ctl.prcv_data -> event)/* 受信イベント			*/

/* タイマタスク制御フラグ */
#define DTM_STSCHG	0x00000001 		    /* 状態遷移有無(Y=1,N=0)	*/
#define DTM_NOTREL	0x00000002		    /* メモリプール解放禁止(Y=1,N=0)	*/

/* タイマタスクの関数ポインタの型宣言 */
typedef void (*CALLBACK_TM)( void ) ;

#endif /* TIMER_H_ */
