make compatible to 3.14.8- and remove duplicate code
This commit is contained in:
@ -18,7 +18,6 @@
|
|||||||
* *
|
* *
|
||||||
***************************************************************/
|
***************************************************************/
|
||||||
|
|
||||||
#include <menuConvert.h>
|
|
||||||
#include <aiRecord.h>
|
#include <aiRecord.h>
|
||||||
#include "devStream.h"
|
#include "devStream.h"
|
||||||
#ifdef EPICS_3_13
|
#ifdef EPICS_3_13
|
||||||
@ -33,19 +32,14 @@
|
|||||||
static long readData (dbCommon *record, format_t *format)
|
static long readData (dbCommon *record, format_t *format)
|
||||||
{
|
{
|
||||||
aiRecord *ai = (aiRecord *) record;
|
aiRecord *ai = (aiRecord *) record;
|
||||||
|
double val;
|
||||||
|
|
||||||
switch (format->type)
|
switch (format->type)
|
||||||
{
|
{
|
||||||
case DBF_DOUBLE:
|
case DBF_DOUBLE:
|
||||||
{
|
{
|
||||||
double val;
|
|
||||||
if (streamScanf (record, format, &val)) return ERROR;
|
if (streamScanf (record, format, &val)) return ERROR;
|
||||||
if (ai->aslo != 0.0 && ai->aslo != 1.0) val *= ai->aslo;
|
break;
|
||||||
val += ai->aoff;
|
|
||||||
if (!(ai->smoo == 0.0 || ai->init || ai->udf || isinf(ai->val) || isnan(ai->val)))
|
|
||||||
val = ai->val * ai->smoo + val * (1.0 - ai->smoo);
|
|
||||||
ai->val = val;
|
|
||||||
return DO_NOT_CONVERT;
|
|
||||||
}
|
}
|
||||||
case DBF_ULONG:
|
case DBF_ULONG:
|
||||||
case DBF_LONG:
|
case DBF_LONG:
|
||||||
@ -53,51 +47,56 @@ static long readData (dbCommon *record, format_t *format)
|
|||||||
long rval;
|
long rval;
|
||||||
if (streamScanf (record, format, &rval)) return ERROR;
|
if (streamScanf (record, format, &rval)) return ERROR;
|
||||||
ai->rval = rval;
|
ai->rval = rval;
|
||||||
if (ai->linr == menuConvertNO_CONVERSION)
|
if (ai->linr == 0)
|
||||||
{
|
{
|
||||||
/* allow integers with more than 32 bits */
|
/* allow integers with more than 32 bits */
|
||||||
double val;
|
|
||||||
if (format->type == DBF_ULONG)
|
if (format->type == DBF_ULONG)
|
||||||
val = (unsigned long)rval;
|
val = (unsigned long)rval;
|
||||||
else
|
else
|
||||||
val = rval;
|
val = rval;
|
||||||
if (ai->aslo != 0.0 && ai->aslo != 1.0) val *= ai->aslo;
|
break;
|
||||||
ai->val = val + ai->aoff;
|
|
||||||
return DO_NOT_CONVERT;
|
|
||||||
}
|
}
|
||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
|
default:
|
||||||
|
return ERROR;
|
||||||
}
|
}
|
||||||
return ERROR;
|
if (ai->aslo != 0.0 && ai->aslo != 1.0) val *= ai->aslo;
|
||||||
|
val += ai->aoff;
|
||||||
|
if (!(ai->smoo == 0.0 || ai->init || ai->udf || isinf(ai->val) || isnan(ai->val)))
|
||||||
|
val = ai->val * ai->smoo + val * (1.0 - ai->smoo);
|
||||||
|
ai->val = val;
|
||||||
|
return DO_NOT_CONVERT;
|
||||||
}
|
}
|
||||||
|
|
||||||
static long writeData (dbCommon *record, format_t *format)
|
static long writeData (dbCommon *record, format_t *format)
|
||||||
{
|
{
|
||||||
aiRecord *ai = (aiRecord *) record;
|
aiRecord *ai = (aiRecord *) record;
|
||||||
|
|
||||||
|
double val = ai->val - ai->aoff;
|
||||||
|
if (ai->aslo != 0.0 && ai->aslo != 1.0) val /= ai->aslo;
|
||||||
|
|
||||||
switch (format->type)
|
switch (format->type)
|
||||||
{
|
{
|
||||||
case DBF_DOUBLE:
|
case DBF_DOUBLE:
|
||||||
{
|
{
|
||||||
double val = ai->val - ai->aoff;
|
|
||||||
if (ai->aslo != 0.0 && ai->aslo != 1.0) val /= ai->aslo;
|
|
||||||
return streamPrintf (record, format, val);
|
return streamPrintf (record, format, val);
|
||||||
}
|
}
|
||||||
case DBF_ULONG:
|
case DBF_ULONG:
|
||||||
{
|
{
|
||||||
if (ai->linr == menuConvertNO_CONVERSION)
|
if (ai->linr == 0)
|
||||||
{
|
{
|
||||||
/* allow more bits than 32 */
|
/* allow more bits than 32 */
|
||||||
return streamPrintf (record, format, (unsigned long)ai->val);
|
return streamPrintf (record, format, (unsigned long)val);
|
||||||
}
|
}
|
||||||
return streamPrintf (record, format, (unsigned long)ai->rval);
|
return streamPrintf (record, format, (unsigned long)ai->rval);
|
||||||
}
|
}
|
||||||
case DBF_LONG:
|
case DBF_LONG:
|
||||||
{
|
{
|
||||||
if (ai->linr == menuConvertNO_CONVERSION)
|
if (ai->linr == 0)
|
||||||
{
|
{
|
||||||
/* allow more bits than 32 */
|
/* allow more bits than 32 */
|
||||||
return streamPrintf (record, format, (long)ai->val);
|
return streamPrintf (record, format, (long)val);
|
||||||
}
|
}
|
||||||
return streamPrintf (record, format, (long)ai->rval);
|
return streamPrintf (record, format, (long)ai->rval);
|
||||||
}
|
}
|
||||||
|
@ -18,7 +18,6 @@
|
|||||||
* *
|
* *
|
||||||
***************************************************************/
|
***************************************************************/
|
||||||
|
|
||||||
#include <menuConvert.h>
|
|
||||||
#include <aoRecord.h>
|
#include <aoRecord.h>
|
||||||
#include "devStream.h"
|
#include "devStream.h"
|
||||||
#include <epicsExport.h>
|
#include <epicsExport.h>
|
||||||
@ -26,16 +25,14 @@
|
|||||||
static long readData (dbCommon *record, format_t *format)
|
static long readData (dbCommon *record, format_t *format)
|
||||||
{
|
{
|
||||||
aoRecord *ao = (aoRecord *) record;
|
aoRecord *ao = (aoRecord *) record;
|
||||||
|
double val;
|
||||||
|
|
||||||
switch (format->type)
|
switch (format->type)
|
||||||
{
|
{
|
||||||
case DBF_DOUBLE:
|
case DBF_DOUBLE:
|
||||||
{
|
{
|
||||||
double val;
|
|
||||||
if (streamScanf (record, format, &val)) return ERROR;
|
if (streamScanf (record, format, &val)) return ERROR;
|
||||||
if (ao->aslo != 0.0 && ao->aslo != 1.0) val *= ao->aslo;
|
break;
|
||||||
ao->val = val + ao->aoff;
|
|
||||||
return DO_NOT_CONVERT;
|
|
||||||
}
|
}
|
||||||
case DBF_ULONG:
|
case DBF_ULONG:
|
||||||
case DBF_LONG:
|
case DBF_LONG:
|
||||||
@ -44,22 +41,23 @@ static long readData (dbCommon *record, format_t *format)
|
|||||||
if (streamScanf (record, format, &rval)) return ERROR;
|
if (streamScanf (record, format, &rval)) return ERROR;
|
||||||
ao->rbv = rval;
|
ao->rbv = rval;
|
||||||
ao->rval = rval;
|
ao->rval = rval;
|
||||||
if (ao->linr == menuConvertNO_CONVERSION)
|
if (ao->linr == 0)
|
||||||
{
|
{
|
||||||
/* allow integers with more than 32 bits */
|
/* allow integers with more than 32 bits */
|
||||||
double val;
|
|
||||||
if (format->type == DBF_ULONG)
|
if (format->type == DBF_ULONG)
|
||||||
val = (unsigned long)rval;
|
val = (unsigned long)rval;
|
||||||
else
|
else
|
||||||
val = rval;
|
val = rval;
|
||||||
if (ao->aslo != 0.0 && ao->aslo != 1.0) val *= ao->aslo;
|
break;
|
||||||
ao->val = val + ao->aoff;
|
|
||||||
return DO_NOT_CONVERT;
|
|
||||||
}
|
}
|
||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
|
default:
|
||||||
|
return ERROR;
|
||||||
}
|
}
|
||||||
return ERROR;
|
if (ao->aslo != 0.0 && ao->aslo != 1.0) val *= ao->aslo;
|
||||||
|
ao->val = val + ao->aoff;
|
||||||
|
return DO_NOT_CONVERT;
|
||||||
}
|
}
|
||||||
|
|
||||||
static long writeData (dbCommon *record, format_t *format)
|
static long writeData (dbCommon *record, format_t *format)
|
||||||
@ -77,7 +75,7 @@ static long writeData (dbCommon *record, format_t *format)
|
|||||||
}
|
}
|
||||||
case DBF_ULONG:
|
case DBF_ULONG:
|
||||||
{
|
{
|
||||||
if (ao->linr == menuConvertNO_CONVERSION)
|
if (ao->linr == 0)
|
||||||
{
|
{
|
||||||
/* allow integers with more than 32 bits */
|
/* allow integers with more than 32 bits */
|
||||||
return streamPrintf (record, format, (unsigned long)val);
|
return streamPrintf (record, format, (unsigned long)val);
|
||||||
@ -86,7 +84,7 @@ static long writeData (dbCommon *record, format_t *format)
|
|||||||
}
|
}
|
||||||
case DBF_LONG:
|
case DBF_LONG:
|
||||||
{
|
{
|
||||||
if (ao->linr == menuConvertNO_CONVERSION)
|
if (ao->linr == 0)
|
||||||
{
|
{
|
||||||
/* allow integers with more than 32 bits */
|
/* allow integers with more than 32 bits */
|
||||||
return streamPrintf (record, format, (long)val);
|
return streamPrintf (record, format, (long)val);
|
||||||
|
Reference in New Issue
Block a user