Added Undefined Severity field UDFS
With this, records can be configured to have a lower alarm severity when they are undefined. Sets initial severity at iocInit too.
This commit is contained in:
@@ -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 */
|
||||
|
||||
@@ -299,7 +299,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;
|
||||
}
|
||||
|
||||
|
||||
@@ -311,7 +311,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;
|
||||
}
|
||||
|
||||
@@ -175,7 +175,7 @@ static long process(mbboDirectRecord *prec)
|
||||
}
|
||||
}
|
||||
if(prec->udf) {
|
||||
recGblSetSevr(prec,UDF_ALARM,INVALID_ALARM);
|
||||
recGblSetSevr(prec,UDF_ALARM,prec->udfs);
|
||||
goto CONTINUE;
|
||||
}
|
||||
if(prec->nsev < INVALID_ALARM
|
||||
|
||||
@@ -219,7 +219,7 @@ static long process(mbboRecord *prec)
|
||||
}
|
||||
}
|
||||
if (prec->udf==TRUE) {
|
||||
recGblSetSevr(prec, UDF_ALARM, INVALID_ALARM);
|
||||
recGblSetSevr(prec, UDF_ALARM, prec->udfs);
|
||||
goto CONTINUE;
|
||||
}
|
||||
/* convert val to rval */
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -321,7 +321,7 @@ static void checkAlarms(subRecord *prec)
|
||||
epicsEnum16 asev;
|
||||
|
||||
if (prec->udf) {
|
||||
recGblSetSevr(prec, UDF_ALARM, INVALID_ALARM);
|
||||
recGblSetSevr(prec, UDF_ALARM, prec->udfs);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user