Merged my udf-severity branch.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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 )
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user