Files
epics-base/src/libCom/timer/epicsTimer.h
Marty Kraimer 943982da70 new headers
2001-01-24 21:35:53 +00:00

91 lines
3.0 KiB
C++
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* 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*/