93 lines
1.8 KiB
C++
93 lines
1.8 KiB
C++
|
|
/*
|
|
* $Id$
|
|
* $Log$
|
|
*/
|
|
|
|
#include "casdef.h"
|
|
#include "osiTimer.h"
|
|
|
|
class gdd;
|
|
class servPV;
|
|
|
|
#ifdef PVDEBUG
|
|
#define Debug(str) { fprintf(stderr,str); }
|
|
#define Debug1(str,val) { fprintf(stderr,str,val); }
|
|
#define Debug2(str,val1,val2) { fprintf(stderr,str,val1,val2); }
|
|
#define Debug3(str,val1,val2,val3) { fprintf(stderr,str,val1,val2,val3); }
|
|
#else
|
|
#define Debug(str) ;
|
|
#define Debug1(str,val) ;
|
|
#define Debug2(str,val1,val2) ;
|
|
#define Debug3(str,val1,val2,val3) ;
|
|
#endif
|
|
|
|
class dBase
|
|
{
|
|
public:
|
|
dBase(void)
|
|
{
|
|
pvname[0]='\0';counter=0;
|
|
hihi=90.0;high=80.0;low=20.0;lolo=10.0;
|
|
ts.tv_sec=0; ts.tv_nsec=0;
|
|
stat=0; sevr=0;
|
|
node=NULL;
|
|
}
|
|
|
|
void eventReady(void);
|
|
void writeData(double);
|
|
|
|
char pvname[50];
|
|
double counter;
|
|
double hihi,high,low,lolo;
|
|
aitTimeStamp ts;
|
|
aitInt16 stat,sevr;
|
|
servPV* node;
|
|
};
|
|
|
|
class serv : public caServer
|
|
{
|
|
public:
|
|
serv(int totpv,double rate,char* prefix,
|
|
unsigned maxnamelen,unsigned pvtotalest, unsigned maxsimio);
|
|
virtual ~serv(void);
|
|
|
|
virtual pvExistReturn pvExistTest(const casCtx& c,const char* pvname);
|
|
virtual casPV* createPV(const casCtx& c,const char* pvname);
|
|
|
|
int InitDB(void);
|
|
int Main(void);
|
|
|
|
// sloppy
|
|
char* prefix;
|
|
int prefix_len;
|
|
int pv_total;
|
|
double event_rate;
|
|
casEventMask event_mask;
|
|
dBase* db_sync;
|
|
};
|
|
|
|
class servPV : public casPV
|
|
{
|
|
public:
|
|
servPV(const casCtx&,serv&,const char* pvname,dBase&);
|
|
virtual ~servPV(void);
|
|
|
|
virtual caStatus interestRegister(void);
|
|
virtual void interestDelete(void);
|
|
virtual aitEnum bestExternalType(void) const;
|
|
virtual caStatus read(const casCtx &ctx, gdd &prototype);
|
|
virtual caStatus write(const casCtx &ctx, gdd &value);
|
|
virtual void destroy(void);
|
|
virtual unsigned maxSimultAsyncOps(void) const;
|
|
|
|
void eventReady(void);
|
|
|
|
private:
|
|
serv& mgr;
|
|
dBase& db;
|
|
gdd* value;
|
|
int monitored;
|
|
};
|
|
|