reman3/Rayman_X/cpa/public/TMR/Timer.h

314 lines
9.8 KiB
C

/****************************************************************************/
/* Timer.h : header file for the CPA Timer library. */
/* Author : F.JENTEY */
/* Last update : 04/03/97 */
/****************************************************************************/
#ifndef _TIMER_H
#define _TIMER_H
/* Define a 16 bits unsigned type */
#ifndef u_short
#define u_short unsigned short
#endif
/* Define a 32 bits unsigned type */
#ifndef u_long
#define u_long unsigned long
#endif
#include "Struct.h"
#include "specif/counter.h"
/* Define prototype for event callback declaration */
typedef void (td_fn_vTimerEventCallback)();
typedef td_fn_vTimerEventCallback* td_p_fn_vTimerEventCallback;
/* Number of timer available */
#define C_uwTimerMaxCount 16
/* Define the timer state */
#define C_wTimerUnused 0
#define C_wTimerReady 1
#define C_wTimerRunning 2
#define C_wTimerStop 3
#define C_wTimerPaused 4
#define C_wTimerEvent 5
/*
tdsTimer : Contains informations for each timer.
*/
typedef struct _tdstTimer
{
/* Define the type of the timer */
short m_wTimerType;
/* Define the timer state */
short m_wTimerState;
/* Timer init value */
stTimerCount m_stTimerCount_InitValue;
/* Timer last access value */
stTimerCount m_stTimerCount_LastValue;
/* Timer total value */
stTimerCount m_stTimerCount_TotalValue;
/* Event timer Id if the timer is an event timer. */
u_long m_ulEventId;
/* A pointer to the callback function of the event */
td_p_fn_vTimerEventCallback m_p_fn_vEventCallback;
} tdstTimer;
/* All functions return a short value that should be compared with this constant */
#define C_wTimerError 32767
#define C_wTimerTrue 32766
#define C_wTimerFalse 32765
/* Define timer accuracy. Use this value with wTimerType parameter */
#define C_wTimerFrequencyLow 0
#define C_wTimerFrequencyMedium 1
#define C_wTimerFrequencyHigh 2
/* Value to use with the fn_wTimerCreateEvent function to specified if the */
/* callback function must be called one time only or periodically. */
#define C_ulTimerEventOneTime 0
#define C_ulTimerEventPeriodic 1
/**************************************/
#ifndef CPA_EXPORT
#if defined(CPA_WANTS_IMPORT)
#define CPA_EXPORT __declspec(dllimport)
#elif defined(CPA_WANTS_EXPORT)
#define CPA_EXPORT __declspec(dllexport)
#else
#define CPA_EXPORT
#endif
#endif
/**************************************/
/******************************************************/
/* Macro for old prototypes compatibilty */
/******************************************************/
#define fn_wTimerInitLibrary TMR_fn_wInitLibrary
#define fn_wTimerExitLibrary TMR_fn_wExitLibrary
#define fn_wTimerCreate(A) TMR_fn_wCreateTimer(A)
#define fn_wTimerStart(A) TMR_fn_wStartTimer(A)
#define fn_wTimerStop(A) TMR_fn_wStopTimer(A)
#define fn_wTimerRead(A,B) TMR_fn_wReadTimer(A,B)
#define fn_wTimerReset(A) TMR_fn_wResetTimer(A)
#define fn_wTimerDestroy(A) TMR_fn_wDestroyTimer(A)
#define fn_wTimerPause(A) TMR_fn_wPauseTimer(A)
#define fn_wTimerGetFrequency(A,B) TMR_fn_wGetTimerFrequency(A,B)
#define fn_wTimerDelay(A) TMR_fn_wWait(A)
#define fn_ulTimerDelayUnit(A) TMR_fn_ulGetWaitTickPerSecond(A)
#define fn_wTimerCreateEvent(A,B,C,D) TMR_fn_wCreateEvent(A,B,C,D)
#define fn_ulTimerFrameCycleNumber TMR_fn_ulFrameCycleNumber
#define fn_ulTimerMonitorFrequency TMR_fn_ulMonitorFrequency
/************************************************************************/
/* All functions return a short type value that must be compared with */
/* C_wTimerError. If there is an error, you can read the error code */
/* with the error management functions. */
/************************************************************************/
#if defined(__cplusplus)
extern "C"
{
/*
Makes some internal initializations.
In - nothing.
Ou - C_wTimerError if the function has failed and zero otherwise.
*/
CPA_EXPORT short __stdcall TMR_fn_wInitLibrary( void );
/*
Release the ressource the library has used.
In - nothing.
Out - nothing.
*/
CPA_EXPORT short __stdcall TMR_fn_wExitLibrary( void );
/*
This function create a timer and return an handle to this timer.The parameter
wTimerType define the resolution of the timer and must set to one of the
C_wTimerType Flag.
In - timer precision in wTimerType (must be one of the timer type flag).
Out - C_wTimerError or zero.
*/
CPA_EXPORT short __stdcall TMR_fn_wCreateTimer( short wTimerType );
/*
Start a timer.
In - the handle of the timer to start in wTimerType.
Out - C_wTimerError or zero.
*/
CPA_EXPORT short __stdcall TMR_fn_wStartTimer( short wTimerHandle );
/*
Stop a Timer.
In - the handle of the timer to stop in wTimerType.
Out - C_wTimerError or zero.
*/
CPA_EXPORT short __stdcall TMR_fn_wStopTimer( short wTimerHandle );
/*
Read a timer count.
In - the handle of the timer to read in wTimerType.
- a pointer to a stTimerCount structure to be filled with the value
of the timer in p_ulFrequency.
Out - C_wTimerError or zero.
*/
CPA_EXPORT short __stdcall TMR_fn_wReadTimer( short wTimerHandle, stTimerCount *p_stTimerState );
/*
Reset a timer.
In - the handle of the timer to reset in wTimerType.
Out - C_wTimerError or zero.
*/
CPA_EXPORT short __stdcall TMR_fn_wResetTimer( short wTimerHandle );
/*
Set a timer with a specific value. Afeter a call of this function the Timer is paused.
In - the handle of the timer to reset in wTimerType.
Out - C_wTimerError or zero.
*/
CPA_EXPORT short __stdcall TMR_fn_wSetTimerValue( short wTimerHandle, stTimerCount *p_stValue );
/*
Pause a timer.
In - the handle of the timer to reset in wTimerType.
Out - C_wTimerError or zero.
*/
CPA_EXPORT short __stdcall TMR_fn_wPauseTimer( short wTimerHandle );
/*
Destroy a timer.
In - the handle of the timer to destroy in wTimerType.TMR_fn_wPauseTimer
Out - C_wTimerError or zero.
*/
CPA_EXPORT short __stdcall TMR_fn_wDestroyTimer( short wTimerHandle );
/*
Give the precision of a timer.
In - the handle of the timer to query in wTimerType.
- a pointer to an u_long to be filled with the timer frequency in
p_ulFrequency.
Out - C_wTimerError or zero.
*/
CPA_EXPORT short __stdcall TMR_fn_wGetTimerFrequency( short wTimerHandle , u_long *p_ulFrequency );
/*
This function waits a given length. Th time unit should be the thousandth of second
but check it with the next function.
In - time to wait in ulTimeToWait
Out - Nothing.
*/
CPA_EXPORT short __stdcall TMR_fn_wWait( u_long ulTimeToWait );
/*
This function returns the time unit of the fn_wTimerDelay function.
In - a pointer to an u_long to be filled with the time unit.
Out - nothing.
*/
CPA_EXPORT short __stdcall TMR_fn_ulGetWaitTickPerSecond(u_long *p_ulWaitFrequency);
/*
This function create a callback timer.
In - the period at the end of which the callback function will be called
in ulPeriod.
- a pointer to the callback function in p_fn_vEventCallback.
- the timer accuracy in wTimerType.
- tell if the callback function must be called periodically or just
one time in ulTimerEventType.
Out - C_wTimerError or zero.
*/
CPA_EXPORT short __stdcall TMR_fn_wCreateEvent(
u_long ulPeriod,
td_p_fn_vTimerEventCallback p_fn_vEventCallback,
short wTimerType,
u_long ulTimerEventType
);
/*
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).
Return 0 if an error occured.
In - nothing.
Out - an u_long value containing the number of cpu cycle of a frame.
*/
CPA_EXPORT u_long __stdcall TMR_fn_ulFrameCycleNumber( void );
/*
Return the monitor frequency multiples by 100. Return 0 the function can't
find the refresh rate.
In - nothing.
Out - an u_long value containing the video display mode vertical frequency.
*/
CPA_EXPORT u_long __stdcall TMR_fn_ulMonitorFrequency( void );
}
#else /* C prototype */
extern CPA_EXPORT short __stdcall TMR_fn_wInitLibrary( void );
extern CPA_EXPORT short __stdcall TMR_fn_wExitLibrary( void );
extern CPA_EXPORT short __stdcall TMR_fn_wCreateTimer( short wTimerType );
extern CPA_EXPORT short __stdcall TMR_fn_wStartTimer( short wTimerHandle );
extern CPA_EXPORT short __stdcall TMR_fn_wStopTimer( short wTimerHandle );
extern CPA_EXPORT short __stdcall TMR_fn_wReadTimer( short wTimerHandle, stTimerCount *p_stTimerState );
extern CPA_EXPORT short __stdcall TMR_fn_wResetTimer( short wTimerHandle );
extern CPA_EXPORT short __stdcall TMR_fn_wSetTimerValue( short wTimerHandle, stTimerCount *p_stValue );
extern CPA_EXPORT short __stdcall TMR_fn_wDestroyTimer( short wTimerHandle );
extern CPA_EXPORT short __stdcall TMR_fn_wPauseTimer( short wTimerHandle );
extern CPA_EXPORT short __stdcall TMR_fn_wGetTimerFrequency( short wTimerHandle , u_long *p_ulFrequency );
extern CPA_EXPORT short __stdcall TMR_fn_wWait( u_long ulTimeToWait );
extern CPA_EXPORT short __stdcall TMR_fn_ulGetWaitTickPerSecond(u_long *p_ulWaitFrequency);
extern CPA_EXPORT short __stdcall TMR_fn_wCreateEvent( u_long ulPeriod,
td_p_fn_vTimerEventCallback p_fn_vEventCallback,
short wTimerType,
u_long ulTimerEventType
);
extern CPA_EXPORT u_long __stdcall TMR_fn_ulFrameCycleNumber( void );
extern CPA_EXPORT u_long __stdcall TMR_fn_ulMonitorFrequency( void );
#endif
#endif