Merged my udf-severity branch.

This commit is contained in:
Andrew Johnson
2013-05-30 15:00:37 -05:00
21 changed files with 40 additions and 20 deletions

View File

@@ -15,6 +15,15 @@ EPICS Base 3.15.0.x releases are not intended for use in production systems.</p>
<h2 align="center">Changes between 3.15.0.1 and 3.15.0.2</h2>
<!-- Insert new items immediately below here ... -->
<h3>New Undefined Severity field UDFS</h3>
<p>A new field has been added to dbCommon which configures the alarm severity
associated with the record being undefined (when UDF=TRUE). The default value is
INVALID so old databases will not be affected, but now individual records can be
configured to have a lower severity or even no alarm when undefined. Be careful
when changing this on applications where the IVOA field of output records is
used, IVOA still requires an INVALID severity to trigger value replacement.</p>
<h3>New build target <q>tapfiles</q></h3>
<p>This new make target runs the same tests as the <q>runtests</q> target, but

View File

@@ -110,7 +110,6 @@
prompt("Alarm Severity")
special(SPC_NOMOD)
menu(menuAlarmSevr)
initial("INVALID")
}
field(NSTA,DBF_MENU) {
prompt("New Alarm Status")
@@ -241,6 +240,13 @@
interest(1)
initial("1")
}
field(UDFS,DBF_MENU) {
prompt("Undefined Alarm Sevrty")
promptgroup(GUI_COMMON)
interest(1)
menu(menuAlarmSevr)
initial("INVALID")
}
%#include "epicsTime.h"
field(TIME,DBF_NOACCESS) {
prompt("Time")

View File

@@ -33,6 +33,7 @@
#include "caeventmask.h"
#define epicsExportSharedSymbols
#include "alarm.h"
#include "dbBase.h"
#include "dbFldTypes.h"
#include "link.h"
@@ -415,6 +416,10 @@ static void doInitRecord0(dbRecordType *pdbRecordType, dbCommon *precord,
/* Reset the process active field */
precord->pact = FALSE;
/* Initial UDF severity */
if (precord->udf && precord->stat == UDF_ALARM)
precord->sevr = precord->udfs;
/* Init DSET NOTE that result may be NULL */
pdevSup = dbDTYPtoDevSup(pdbRecordType, precord->dtyp);
precord->dset = pdevSup ? pdevSup->pdset : NULL;

View File

@@ -62,7 +62,7 @@ static long read_stringin (stringinRecord *prec)
prec->inp.value.instio.string, &prec->time);
if (len >= sizeof prec->val) {
prec->udf = TRUE;
recGblSetSevr(prec, UDF_ALARM, INVALID_ALARM);
recGblSetSevr(prec, UDF_ALARM, prec->udfs);
return -1;
}
prec->udf = FALSE;

View File

@@ -323,7 +323,7 @@ static void checkAlarms(aiRecord *prec, epicsTimeStamp *lastTime)
epicsEnum16 asev;
if (prec->udf) {
recGblSetSevr(prec, UDF_ALARM, INVALID_ALARM);
recGblSetSevr(prec, UDF_ALARM, prec->udfs);
prec->afvl = 0;
return;
}

View File

@@ -378,7 +378,7 @@ static void checkAlarms(aoRecord *prec)
epicsEnum16 asev;
if (prec->udf) {
recGblSetSevr(prec, UDF_ALARM, INVALID_ALARM);
recGblSetSevr(prec, UDF_ALARM, prec->udfs);
return;
}

View File

@@ -204,7 +204,7 @@ static void checkAlarms(biRecord *prec)
if(prec->udf == TRUE){
recGblSetSevr(prec,UDF_ALARM,INVALID_ALARM);
recGblSetSevr(prec,UDF_ALARM,prec->udfs);
return;
}

View File

@@ -353,7 +353,7 @@ static void checkAlarms(boRecord *prec)
/* check for udf alarm */
if(prec->udf == TRUE ){
recGblSetSevr(prec,UDF_ALARM,INVALID_ALARM);
recGblSetSevr(prec,UDF_ALARM,prec->udfs);
}
/* check for state alarm */

View File

@@ -298,7 +298,7 @@ static void checkAlarms(calcRecord *prec, epicsTimeStamp *timeLast)
epicsEnum16 asev;
if (prec->udf) {
recGblSetSevr(prec, UDF_ALARM, INVALID_ALARM);
recGblSetSevr(prec, UDF_ALARM, prec->udfs);
prec->afvl = 0;
return;
}

View File

@@ -526,7 +526,7 @@ static void checkAlarms(calcoutRecord *prec)
epicsEnum16 asev;
if (prec->udf) {
recGblSetSevr(prec, UDF_ALARM, INVALID_ALARM);
recGblSetSevr(prec, UDF_ALARM, prec->udfs);
return;
}
@@ -591,7 +591,7 @@ static void execOutput(calcoutRecord *prec)
break;
}
if (prec->udf){
recGblSetSevr(prec, UDF_ALARM, INVALID_ALARM);
recGblSetSevr(prec, UDF_ALARM, prec->udfs);
}
/* Check to see what to do if INVALID */

View File

@@ -207,7 +207,7 @@ static void checkAlarms(dfanoutRecord *prec)
epicsEnum16 asev;
if (prec->udf) {
recGblSetSevr(prec, UDF_ALARM, INVALID_ALARM);
recGblSetSevr(prec, UDF_ALARM, prec->udfs);
return;
}

View File

@@ -255,7 +255,7 @@ static void checkAlarms(longinRecord *prec, epicsTimeStamp *timeLast)
epicsEnum16 asev;
if (prec->udf) {
recGblSetSevr(prec, UDF_ALARM, INVALID_ALARM);
recGblSetSevr(prec, UDF_ALARM, prec->udfs);
prec->afvl = 0;
return;
}

View File

@@ -272,7 +272,7 @@ static void checkAlarms(longoutRecord *prec)
epicsEnum16 asev;
if (prec->udf) {
recGblSetSevr(prec, UDF_ALARM, INVALID_ALARM);
recGblSetSevr(prec, UDF_ALARM, prec->udfs);
return;
}

View File

@@ -303,7 +303,7 @@ static void checkAlarms(mbbiRecord *prec, epicsTimeStamp *timeLast)
/* Check for UDF alarm */
if (prec->udf) {
recGblSetSevr(prec, UDF_ALARM, INVALID_ALARM);
recGblSetSevr(prec, UDF_ALARM, prec->udfs);
prec->afvl = 0;
return;
}

View File

@@ -197,7 +197,7 @@ static long process(mbboDirectRecord *prec)
prec->val = val;
}
else if (prec->udf) {
recGblSetSevr(prec, UDF_ALARM, INVALID_ALARM);
recGblSetSevr(prec, UDF_ALARM, prec->udfs);
goto CONTINUE;
}

View File

@@ -216,7 +216,7 @@ static long process(mbboRecord *prec)
prec->val = val;
}
else if (prec->udf) {
recGblSetSevr(prec, UDF_ALARM, INVALID_ALARM);
recGblSetSevr(prec, UDF_ALARM, prec->udfs);
goto CONTINUE;
}

View File

@@ -255,7 +255,7 @@ static void checkAlarms(selRecord *prec)
epicsEnum16 asev;
if (prec->udf) {
recGblSetSevr(prec, UDF_ALARM, INVALID_ALARM);
recGblSetSevr(prec, UDF_ALARM, prec->udfs);
return;
}

View File

@@ -146,7 +146,7 @@ static long process(stringoutRecord *prec)
}
if(prec->udf == TRUE ){
recGblSetSevr(prec,UDF_ALARM,INVALID_ALARM);
recGblSetSevr(prec,UDF_ALARM,prec->udfs);
}
if (prec->nsev < INVALID_ALARM )

View File

@@ -152,7 +152,7 @@ static long process(subArrayRecord *prec)
prec->udf = !!status; /* 0 or 1 */
if (status)
recGblSetSevr(prec, UDF_ALARM, INVALID_ALARM);
recGblSetSevr(prec, UDF_ALARM, prec->udfs);
monitor(prec);

View File

@@ -320,7 +320,7 @@ static void checkAlarms(subRecord *prec)
epicsEnum16 asev;
if (prec->udf) {
recGblSetSevr(prec, UDF_ALARM, INVALID_ALARM);
recGblSetSevr(prec, UDF_ALARM, prec->udfs);
return;
}

View File

@@ -203,7 +203,7 @@ static void checkAlarms(xxxRecord *prec)
unsigned short hhsv, llsv, hsv, lsv;
if(prec->udf == TRUE ){
recGblSetSevr(prec,UDF_ALARM,INVALID_ALARM);
recGblSetSevr(prec,UDF_ALARM,prec->udfs);
return;
}
hihi = prec->hihi; lolo = prec->lolo; high = prec->high; low = prec->low;