new headers

This commit is contained in:
Marty Kraimer
2001-01-24 21:35:53 +00:00
parent e5e747c6c5
commit 943982da70
3 changed files with 233 additions and 0 deletions

View File

@@ -0,0 +1,73 @@
/* epicsPeriodicTimer.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 epicsPeriodicTimerH
#define epicsPeriodicTimerH
#include "epicsTimer.h"
#ifdef __cplusplus
class epicsShareClass epicsPeriodicTimer : public epicsTimer {
public:
epicsPeriodicTimer(epicsTimerNotify &,double period,
epicsTimerQueue&);
epicsPeriodicTimer(epicsTimerNotify &,double period,
sharedPriority priority = priorityLow);
virtual ~epicsPeriodicTimer();
void setPeriod(double seconds);
void start();
void stop();
double getPeriod() const;
virtual void show(unsigned int level) const;
private:
class periodicImpl &periodicPvt;
private: //copy constructor and operator= not allowed
epicsPeriodicTimer(const epicsPeriodicTimer& rhs);
epicsPeriodicTimer&
operator=(const epicsPeriodicTimer& rhs);
};
extern "C" {
#endif /* __cplusplus */
typedef void *epicsPeriodicTimerId;
epicsShareFunc epicsPeriodicTimerId epicsShareAPI
epicsPeriodicTimerCreate(
epicsTimerQueueId queueid,double period,
epicsTimerCallback cb,void *arg);
epicsShareFunc epicsPeriodicTimerId epicsShareAPI
epicsPeriodicTimerCreateShared(
epicsTimerSharedPriority priority, double period,
epicsTimerCallback cb,void *arg);
epicsShareFunc void epicsShareAPI
epicsPeriodicTimerDestroy(epicsPeriodicTimerId id);
epicsShareFunc void epicsShareAPI
epicsPeriodicTimerSetPeriod(
epicsPeriodicTimerId id,double seconds);
epicsShareFunc void epicsShareAPI
epicsPeriodicTimerStart(epicsPeriodicTimerId id);
epicsShareFunc void epicsShareAPI
epicsPeriodicTimerStop(epicsPeriodicTimerId id);
epicsShareFunc double epicsShareAPI
epicsPeriodicTimerGetPeriod(epicsPeriodicTimerId id);
/* GetExpireTime returns (0,1) if time (is not, is) given a value*/
epicsShareFunc int epicsShareAPI
epicsPeriodicTimerGetExpireTime(
epicsPeriodicTimerId id, epicsTimeStamp *time);
epicsShareFunc void epicsShareAPI
epicsPeriodicTimerShow(epicsPeriodicTimerId id,unsigned int level);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /*epicsPeriodicTimerH*/

View File

@@ -0,0 +1,90 @@
/* 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*/

View File

@@ -0,0 +1,70 @@
/* epicsTimerQueue.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 epicsTimerQueueH
#define epicsTimerQueueH
#include "epicsTimer.h"
#ifdef __cplusplus
#include "epicsTimer.h"
class epicsTimerQueue {
public:
epicsTimerQueue()
virtual ~epicsTimerQueue() = 0;
epicsTime &getExpirationTime() const;
double getExpirationDelay() const;
virtual void show(unsigned int level) const;
protected:
class impl &queuePvt;
friend class epicsTimer;
private:
//copy constructor and operator= not allowed
epicsTimerQueue(const epicsTimerQueue& rhs);
epicsTimerQueue& operator=(const epicsTimerQueue& rhs);
};
class epicsTimerQueueThreaded : public epicsTimerQueue {
public:
epicsTimerQueueThreaded(
int threadPriority = threadPriorityMin+10);
virtual ~epicsTimerQueueThreaded();
int getPriority();
virtual void show(int level) const;
private:
class threadedImpl& threadPvt;
friend class epicsTimer;
//copy constructor and operator= not allowed
epicsTimerThreaded(const epicsTimerThreaded& rhs);
epicsTimerThreaded& operator=
(const epicsTimerThreaded& rhs);
};
class epicsTimerQueueNonthreaded : public epicsTimerQueue{
public:
epicsTimerQueueNonthreaded();
virtual ~epicsTimerQueue();
void process();
virtual void show(int level) const;
private:
class nothreadImpl& nothreadPvt;
friend class epicsTimer;
//copy constructor and operator= not allowed
epicsTimerQueueNonthreaded(
const epicsTimerQueueNonthreaded& rhs);
epicsTimerQueueNonthreaded&
operator=(const epicsTimerQueueNonthreaded& rhs);
};
#endif /* __cplusplus */
#endif /*epicsTimerQueueH*/