/***********************************************************************************/
/*    TimerWin.h : Private header file for the CPA Timer library. Pentium Version  */
/*    Author : JENTEY F.                                                           */
/*    Last update : 03/03/97                                                       */
/***********************************************************************************/
 
 
#ifndef _TIMER_PENTIUM_H
#define _TIMER_PENTIUM_H
 
 
#include <stdio.h>
#include <windows.h>
#include <mmsystem.h>
 
#include "TMR/Timer.h"
 
 
 
 
/*
  Return the frequency of the specified timer type in tick per second
*/
extern u_long fn_ulTimerTickPerSecond(short wTimerType);
 
 
/*
  Return the frequency of the specified event type in tick per second
*/
extern u_long fn_ulTimerEventTickPerSecond(short wTimerType);
 
 
/*
  Some operation to release event
*/
extern short fn_wTimerReleaseEvents();
 
/*
  Destroy an event
*/
extern short fn_wTimerDestroyEvent(u_long ulEventId);
 
 
/*
  Get the current value of the specified counter
*/
extern void fn_vTimerGetCounter(short wTimerType, stTimerCount* p_stValue);
 
 
/*
  Wait during ulTicksToWait
*/
extern void fn_vTimerWait(u_long ulTicksToWait);
 
 
/*
  Return the number of ticks per second for the fn_wTimerDelay function
*/
extern u_long fn_ulTimerWaitTicksPerSecond();
 
 
/*
  Create an event
  ulPeriod is the period of the event in ticks
  p_fn_vEventCallback is a pointer to the callback function of the event
  ulEventType must be set with C_ulTimerEventOneTime    or C_ulTimerEventPeriodic
*/
 
extern short fn_wTimerNewEvent(
                               u_long  ulPeriod,
                               u_long  ulResolution,
                               td_p_fn_vTimerEventCallback p_fn_vEventCallback,
                               u_long  ulTimerEventType,
                               u_long* p_ulEventId
                              );
 
 
/*
  This function return vertical refresh rate. The result is multiple by 100.
*/
extern u_long fn_ulTimerVerticalRefreshRate(u_long ulCpuClock);
 
 
/*
  This function return the length of a frame. The units length is the tick
  of a C_wTimerFrequencyHigh timer type (so the return value is the number CPU cycle)
*/
extern u_long fn_ulTimerFrameLength();
 
 
#endif
