#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <dbDefs.h>
#include <registryFunction.h>
#include <subRecord.h>
#include <aSubRecord.h>
#include <epicsExport.h>
int DDRwavDebug;
static long DDRwavInit(aSubRecord *precord)
{
if (DDRwavDebug)
printf("Record %s called DDRwavInit(%p)\n",
precord->name, (void*) precord);
return 0;
}
static long DDRwavProcess(aSubRecord *precord)
{
unsigned long i;
long anord;
long *din;
epicsFloat64 *ain,*bin,*cin;
epicsFloat64 *aout;
double cfac,off;
ain = (epicsFloat64 *)precord->a; /* new wave */
bin = (double *)precord->b; /* conv factor */ cin = (double *)precord->c; /* offset */
din = (long*)precord->d; /* new wave nord */
anord = din[0];
| /* | printf("din = %ld\n",din[0]); */ |
cfac = bin[0];off = cin[0];
if (anord>20000) anord=20000;
aout = (epicsFloat64 *)precord->vala;
for (i=0;i<anord;i++)
{
aout[i]=ain[i]*cfac-off;
}
precord->neva = anord;
return 0L;
}epicsExportAddress(int, DDRwavDebug);
epicsRegisterFunction(DDRwavInit);
epicsRegisterFunction(DDRwavProcess);