///////////////////////////////////////////////////////////////////////////
// Timer
//
// 2015/11/18
///////////////////////////////////////////////////////////////////////////
#ifndef __U_TIMERDEFINE_H__
//[[[
#define __U_TIMERDEFINE_H__

#undef EXTERN
#ifndef MONITOR_DEF_TIMER
#define EXTERN extern
#else
#define EXTERN
#endif

extern	void	TimerXInit(DWORD dwSysClock);				// Timerの初期化
extern	void	Timer0IntHandler(void);							// Timer0の割り込み関数
extern	void	Timer1IntHandler(void);							// Timer1の割り込み関数

// タイムアウトしているかチェックする関数 trueでタイムアウト
bool	CheckLoop1usecTimeOut(DWORD SavePoint,DWORD TimeOutVal);
bool	CheckLoop10usecTimeOut(DWORD SavePoint,DWORD TimeOutVal);
bool	CheckLoop100usecTimeOut(DWORD SavePoint,DWORD TimeOutVal);

bool	CheckLoop1msecTimeOut(DWORD SavePoint,DWORD TimeOutVal);
bool	CheckLoop10msecTimeOut(DWORD SavePoint,DWORD TimeOutVal);
bool	CheckLoop100msecTimeOut(DWORD SavePoint,DWORD TimeOutVal);
bool	CheckLoop1000msecTimeOut(DWORD SavePoint,DWORD TimeOutVal);

// 現在のカウント値を取得する関数
DWORD	Get1usecTimeCounter(void);
DWORD	Get10usecTimeCounter(void);
DWORD	Get100usecTimeCounter(void);

DWORD	Get1msecTimeCounter(void);
DWORD	Get10msecTimeCounter(void);
DWORD	Get100msecTimeCounter(void);
DWORD	Get1000msecTimeCounter(void);

// スリープ関数
void	Wait1msec(DWORD SleepTime);
void	Wait1usec(DWORD SleepTime);

#define		COUNT_FALSE_VAL			((DWORD)0xFFFFFFFF)			// 各カウント値は 0x0FFFFFFF を超えない

#endif
//]]]
