9 #include <longinRecord.h> 10 #include <waveformRecord.h> 11 #include <menuFtype.h> 13 #include <epicsExport.h> 18 static const double pi_180 = 0.017453292519943295;
22 long init_spin(waveformRecord *prec)
24 if(prec->ftvl==menuFtypeDOUBLE)
29 long process_spin(waveformRecord *prec)
31 if(prec->dpvt != &dummy) {
32 (void)recGblSetSevr(prec, COMM_ALARM, INVALID_ALARM);
36 const double freq = 360.0*pi_180/100;
38 double *val =
static_cast<double*
>(prec->bptr);
40 long ret = dbGetLink(&prec->inp, DBF_DOUBLE, &phase, 0, 0);
42 (void)recGblSetSevr(prec, LINK_ALARM, INVALID_ALARM);
48 for(
size_t i=0, N=prec->nelm; i<N; i++)
49 val[i] = sin(freq*i+phase);
51 prec->nord = prec->nelm;
54 prec->utag = (prec->utag+1u)&0x7fffffff;
60 long process_utag(longinRecord *prec)
62 long status = dbGetLink(&prec->inp, DBR_LONG, &prec->val, 0, 0);
64 prec->utag = prec->val;
66 (void)recGblSetSevr(prec, COMM_ALARM, INVALID_ALARM);
71 template<
typename REC>
77 long (*init_record)(REC *);
78 long (*get_ioint_info)(int, REC *, IOSCANPVT*);
79 long (*process)(REC *);
82 dset5<waveformRecord> devWfPDBDemo = {5,0,0,&init_spin,0,&process_spin};
83 dset5<longinRecord> devLoPDBUTag = {5,0,0,0,0,&process_utag};
88 epicsExportAddress(dset, devWfPDBDemo);
89 epicsExportAddress(dset, devLoPDBUTag);