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

#ifndef COMMON_H_
#define COMMON_H_

/*
 *  API Error Log Output Function
 */
Inline void
svc_perror(const char *file, int_t line, const char *expr, ER ercd)
{
	if (ercd < 0) {
		t_perror(LOG_ERROR, file, line, expr, ercd);
	}
}

#define SVC_PERROR(expr)	svc_perror(__FILE__, __LINE__, #expr, (expr))

#define DEBUG_UART  /* シリアルポートにデバッグログを出力 */
#ifdef DEBUG_UART
#define DEBUG_SYSLOG(prio,arg2,arg3,arg4)                  \
	do{                                                    \
		syslog(prio,"%s() on line %d of the %s",           \
			__func__,__LINE__,__FILE__);                   \
        syslog(prio,arg2,arg3,arg4);                       \
	}while(0)
#else
#define DEBUG_SYSLOG(prio,arg2,arg3,arg4)
#endif /* DEBUG_UART */

/* ハンドラ-> タスク間,及びタスク-> タスク間I/Fの定義  */
/* メッセージ領域の型宣言 */
typedef struct {
	uint32_t event;				/* イベント番号 	*/
	char test[32];				/* テスト用:何かメッセージを送ってみる */
}T_EVENT;

/* タイマタスクが「受信」するイベントの定義 	*/
typedef enum {
	EV_TIMER_SW1_OFF = 0,   	/* SW1 OFF			*/
	EV_TIMER_SW1_ON,        	/* SW1 ON			*/
	EV_TIMER_PUSH1_ON,      	/* PUSH1 ON			*/
	EV_TIMER_BASE_TIME,     	/* 1秒経過			*/
	EV_TIMER_NUM				/* イベントの数 	*/
}EV_TIMER;

/* ブリンクタスクが「受信」するイベントの定義 	*/
typedef enum {
	EV_BLINK_TIMEOUT = 0,   /* TIMEOUT通知 		*/
	EV_BLINK_ACTIVE,        /* ACTIVE通知		*/
	EV_BLINK_OFF,           /* OFF通知 			*/
	EV_BLINK_BLINK,         /* 0.25秒経過 		*/
	EV_BLINK_NUM			/* イベントの数 	*/
}EV_BLINK;

#endif /* COMMON_H_ */
