91 lines
3.0 KiB
C++
91 lines
3.0 KiB
C++
/* epicsTimer.h */
|
||
|
||
/* Author: Jeffrey O. Hill */
|
||
|
||
/********************COPYRIGHT NOTIFICATION**********************************
|
||
This software was developed under a United States Government license
|
||
described on the COPYRIGHT_Combined file included as part
|
||
of this distribution.
|
||
****************************************************************************/
|
||
|
||
#ifndef epicsTimerH
|
||
#define epicsTimerH
|
||
|
||
#include "epicsAssert.h"
|
||
#include "shareLib.h"
|
||
#include "epicsTime.h"
|
||
#include "epicsThread.h"
|
||
|
||
typedef enum {
|
||
epicsTimerPriorityLow,epicsTimerPriorityMedium,epicsTimerPriorityHigh
|
||
}epicsTimerSharedPriority;
|
||
|
||
#ifdef __cplusplus
|
||
|
||
// code using a timer must implement epicsTimerNotify
|
||
class epicsTimerNotify {
|
||
public:
|
||
virtual void expire() = 0;
|
||
};
|
||
|
||
class epicsShareClass epicsTimer {
|
||
public:
|
||
epicsTimer(epicsTimerNotify &,epicsTimerQueue&);
|
||
epicsTimer(epicsTimerNotify &,
|
||
epicsTimerSharedPriority priority = epicsTimerPriorityLow);
|
||
virtual ~epicsTimer();
|
||
void start(epicsTime &);
|
||
void start(double delaySeconds);
|
||
virtual void cancel();
|
||
epicsTime getExpireTime() const;
|
||
double getExpireSeconds() const;
|
||
bool isExpired() const;
|
||
epicsTimerNotify &getNotify() const;
|
||
epicsTimerQueue &getQueue() const;
|
||
virtual void show(unsigned int level) const;
|
||
static epicsTimerQueue &createTimerQueue(
|
||
unsigned int threadPriority = epicsThreadPriorityMin);
|
||
static void deleteTimerQueue(epicsTimerQueue &);
|
||
protected:
|
||
class impl& timerPvt;
|
||
private: //copy constructor and operator= not allowed
|
||
epicsTimer(const epicsTimer&);
|
||
epicsTimer& operator=(const epicsTimer&);
|
||
};
|
||
|
||
extern "C" {
|
||
#endif /*__cplusplus */
|
||
|
||
typedef void *epicsTimerId;
|
||
typedef void *epicsTimerQueueId;
|
||
|
||
typedef void (*epicsTimerCallback)(void *);
|
||
|
||
epicsShareFunc epicsTimerId epicsShareAPI epicsTimerCreate(
|
||
epicsTimerQueueId queueid,epicsTimerCallback callback, void *arg);
|
||
epicsShareFunc epicsTimerId epicsShareAPI epicsTimerCreateShared(
|
||
epicsTimerSharedPriority priority,epicsTimerCallback callback, void *arg);
|
||
epicsShareFunc void epicsShareAPI epicsTimerDestroy(epicsTimerQueueId id);
|
||
epicsShareFunc void epicsShareAPI epicsTimerStartTime(
|
||
epicsTimerQueueId id,epicsTimeStamp *time);
|
||
epicsShareFunc void epicsShareAPI epicsTimerStartDelay(
|
||
epicsTimerQueueId id,double delaySeconds);
|
||
epicsShareFunc void epicsShareAPI epicsTimerCancel(epicsTimerQueueId id);
|
||
/* GetExpireTime returns (0,1) if time (is not, is) given a value*/
|
||
epicsShareFunc int epicsShareAPI epicsTimerGetExpireTime(
|
||
epicsTimerQueueId id, epicsTimeStamp *time);
|
||
epicsShareFunc int epicsShareAPI epicsTimerIsExpired(epicsTimerQueueId id);
|
||
epicsShareFunc void epicsShareAPI epicsTimerShow(
|
||
epicsTimerQueueId id, unsigned int level);
|
||
|
||
epicsShareFunc epicsTimerQueueId epicsShareAPI
|
||
epicsTimerQueueCreate(unsigned int threadPriority);
|
||
|
||
epicsShareFunc void epicsShareAPI epicsTimerQueueDelete(epicsTimerQueueId);
|
||
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif /*__cplusplus */
|
||
|
||
#endif /*epicsTimerH*/
|