Merged Michael's postdbeprop branch.

This commit is contained in:
Andrew Johnson
2013-12-04 12:58:31 -06:00
24 changed files with 237 additions and 82 deletions

View File

@@ -15,6 +15,13 @@ 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>Post DBE_PROPERTY events automatically</h3>
<p>A new record field attribute "prop(YES)" has been added to identify fields
holding meta-data. External changes to these fields will cause a CA monitor
event to be sent to all record subscribers who have asked for DBE_PROPERTY
updates. Meta-data fields have been marked for all Base record types.</p>
<h3>errlogRemoveListener() routine changed</h3>
<p>Code that calls <tt>errlogRemoveListener(myfunc)</tt> must be modified to use

View File

@@ -1208,13 +1208,19 @@ long dbPut(DBADDR *paddr, short dbrType,
}
/* Propagate monitor events for this field, */
/* unless the field field is VAL and PP is true. */
/* unless the field is VAL and PP is true. */
pfldDes = paddr->pfldDes;
isValueField = dbIsValueField(pfldDes);
if (isValueField) precord->udf = FALSE;
if (precord->mlis.count &&
!(isValueField && pfldDes->process_passive))
db_post_events(precord, paddr->pfield, DBE_VALUE | DBE_LOG);
/* If this field is a property (metadata) field,
* then post a property change event (even if the field
* didn't change).
*/
if (precord->mlis.count && pfldDes->prop)
db_post_events(precord, NULL, DBE_PROPERTY);
return status;
}

View File

@@ -69,25 +69,26 @@ typedef struct brkTable { /* breakpoint table */
}brkTable;
typedef struct dbFldDes{ /* field description */
char *prompt; /*Prompt string for DCT*/
char *name; /*Field name*/
char *extra; /*C def for DBF_NOACCESS*/
struct dbRecordType *pdbRecordType;
short indRecordType; /*within dbRecordType.papFldDes */
short special; /*Special processing requirements */
dbfType field_type; /*Field type as defined in dbFldTypes.h */
short process_passive;/*should dbPutField process passive */
ctType base; /*base for integer to string conversions*/
short promptgroup; /*prompt, i.e. gui group */
short interest; /*interest level */
asLevel as_level; /*access security level */
char *initial; /*initial value */
/*If (DBF_MENU,DBF_DEVICE) ftPvt is (pdbMenu,pdbDeviceMenu) */
void *ftPvt;
/*On no runtime following only set for STRING */
short size; /*length in bytes of a field element */
/*The following are only available on run time system*/
short offset; /*Offset in bytes from beginning of record*/
char *prompt; /*Prompt string for DCT*/
char *name; /*Field name*/
char *extra; /*C def for DBF_NOACCESS*/
struct dbRecordType *pdbRecordType;
short indRecordType; /*within dbRecordType.papFldDes */
short special; /*Special processing requirements */
dbfType field_type; /*Field type as defined in dbFldTypes.h */
unsigned int process_passive:1;/*should dbPutField process passive */
unsigned int prop:1;/*field is a metadata, post DBE_PROPERTY on change*/
ctType base; /*base for integer to string conversions*/
short promptgroup; /*prompt, i.e. gui group */
short interest; /*interest level */
asLevel as_level; /*access security level */
char *initial; /*initial value */
/*If (DBF_MENU,DBF_DEVICE) ftPvt is (pdbMenu,pdbDeviceMenu) */
void *ftPvt;
/*On no runtime following only set for STRING */
short size; /*length in bytes of a field element */
/*The following are only available on run time system*/
short offset; /*Offset in bytes from beginning of record*/
}dbFldDes;
typedef struct dbInfoNode { /*non-field per-record information*/

View File

@@ -498,87 +498,94 @@ static void dbRecordtypeFieldItem(char *name,char *value)
if(duplicate) return;
pdbFldDes = (dbFldDes *)getLastTemp();
if(strcmp(name,"asl")==0) {
if(strcmp(value,"ASL0")==0) {
pdbFldDes->as_level = ASL0;
} else if(strcmp(value,"ASL1")==0) {
pdbFldDes->as_level = ASL1;
} else {
yyerror("Illegal Access Security value: Must be ASL0 or ASL1");
}
return;
if(strcmp(value,"ASL0")==0) {
pdbFldDes->as_level = ASL0;
} else if(strcmp(value,"ASL1")==0) {
pdbFldDes->as_level = ASL1;
} else {
yyerror("Illegal Access Security value: Must be ASL0 or ASL1");
}
return;
}
if(strcmp(name,"initial")==0) {
pdbFldDes->initial = epicsStrDup(value);
return;
pdbFldDes->initial = epicsStrDup(value);
return;
}
if(strcmp(name,"promptgroup")==0) {
int i;
for(i=0; i<GUI_NTYPES; i++) {
if(strcmp(value,pamapguiGroup[i].strvalue)==0) {
pdbFldDes->promptgroup = pamapguiGroup[i].value;
return;
}
}
yyerror("Illegal promptgroup. See guigroup.h for legal values");
return;
int i;
for(i=0; i<GUI_NTYPES; i++) {
if(strcmp(value,pamapguiGroup[i].strvalue)==0) {
pdbFldDes->promptgroup = pamapguiGroup[i].value;
return;
}
}
yyerror("Illegal promptgroup. See guigroup.h for legal values");
return;
}
if(strcmp(name,"prompt")==0) {
pdbFldDes->prompt = epicsStrDup(value);
return;
pdbFldDes->prompt = epicsStrDup(value);
return;
}
if(strcmp(name,"special")==0) {
int i;
for(i=0; i<SPC_NTYPES; i++) {
if(strcmp(value,pamapspcType[i].strvalue)==0) {
pdbFldDes->special = pamapspcType[i].value;
return;
}
}
if(sscanf(value,"%hd",&pdbFldDes->special)==1) {
return;
}
yyerror("Illegal special value.");
return;
int i;
for(i=0; i<SPC_NTYPES; i++) {
if(strcmp(value,pamapspcType[i].strvalue)==0) {
pdbFldDes->special = pamapspcType[i].value;
return;
}
}
if(sscanf(value,"%hd",&pdbFldDes->special)==1) {
return;
}
yyerror("Illegal special value.");
return;
}
if(strcmp(name,"pp")==0) {
if((strcmp(value,"YES")==0) || (strcmp(value,"TRUE")==0)) {
pdbFldDes->process_passive = TRUE;
} else if((strcmp(value,"NO")==0) || (strcmp(value,"FALSE")==0)) {
pdbFldDes->process_passive = FALSE;
} else {
yyerror("Illegal value. Must be NO or YES");
}
return;
if((strcmp(value,"YES")==0) || (strcmp(value,"TRUE")==0)) {
pdbFldDes->process_passive = TRUE;
} else if((strcmp(value,"NO")==0) || (strcmp(value,"FALSE")==0)) {
pdbFldDes->process_passive = FALSE;
} else {
yyerror("Illegal value. Must be NO or YES");
}
return;
}
if(strcmp(name,"interest")==0) {
if(sscanf(value,"%hd",&pdbFldDes->interest)!=1)
yyerror("Illegal value. Must be integer");
return;
if(sscanf(value,"%hd",&pdbFldDes->interest)!=1)
yyerror("Illegal value. Must be integer");
return;
}
if(strcmp(name,"base")==0) {
if(strcmp(value,"DECIMAL")==0) {
pdbFldDes->base = CT_DECIMAL;
} else if(strcmp(value,"HEX")==0) {
pdbFldDes->base = CT_HEX;
} else {
yyerror("Illegal value. Must be CT_DECIMAL or CT_HEX");
}
return;
if(strcmp(value,"DECIMAL")==0) {
pdbFldDes->base = CT_DECIMAL;
} else if(strcmp(value,"HEX")==0) {
pdbFldDes->base = CT_HEX;
} else {
yyerror("Illegal value. Must be CT_DECIMAL or CT_HEX");
}
return;
}
if(strcmp(name,"size")==0) {
if(sscanf(value,"%hd",&pdbFldDes->size)!=1)
yyerror("Illegal value. Must be integer");
return;
if(sscanf(value,"%hd",&pdbFldDes->size)!=1)
yyerror("Illegal value. Must be integer");
return;
}
if(strcmp(name,"extra")==0) {
pdbFldDes->extra = epicsStrDup(value);
return;
pdbFldDes->extra = epicsStrDup(value);
return;
}
if(strcmp(name,"menu")==0) {
pdbFldDes->ftPvt = (dbMenu *)dbFindMenu(pdbbase,value);
if(!pdbbase->ignoreMissingMenus && !pdbFldDes->ftPvt)
yyerrorAbort("menu not found");
return;
pdbFldDes->ftPvt = (dbMenu *)dbFindMenu(pdbbase,value);
if(!pdbbase->ignoreMissingMenus && !pdbFldDes->ftPvt)
yyerrorAbort("menu not found");
return;
}
if(strcmp(name,"prop")==0) {
if(strcmp(value, "YES")==0)
pdbFldDes->prop = 1;
else
pdbFldDes->prop = 0;
return;
}
}

View File

@@ -971,6 +971,7 @@ long dbWriteRecordTypeFP(
pdbFldDes->size);
}
if(pdbFldDes->process_passive) fprintf(fp,"\t\tpp(TRUE)\n");
if(pdbFldDes->prop) fprintf(fp,"\t\tprop(YES)\n");
if(pdbFldDes->base) fprintf(fp,"\t\tbase(HEX)\n");
if(pdbFldDes->interest)
fprintf(fp,"\t\tinterest(%d)\n",pdbFldDes->interest);
@@ -3140,6 +3141,7 @@ void dbDumpField(
else
printf("\t field_type: %s\n", pamapdbfType[j].strvalue);
printf("\tprocess_passive: %hd\n",pdbFldDes->process_passive);
printf("\t property: %hd\n",pdbFldDes->prop);
printf("\t base: %d\n",pdbFldDes->base);
if(!pdbFldDes->promptgroup) {
printf("\t promptgroup: %d\n",pdbFldDes->promptgroup);

View File

@@ -77,6 +77,7 @@ recordtype(aSub) {
prompt("Display Precision")
promptgroup(GUI_DISPLAY)
interest(1)
prop(YES)
}
field(EFLG,DBF_MENU) {
prompt("Output Event Flag")

View File

@@ -24,6 +24,7 @@ recordtype(aai) {
prompt("Display Precision")
promptgroup(GUI_ALARMS)
interest(1)
prop(YES)
}
field(INP,DBF_INLINK) {
prompt("Input Specification")
@@ -35,16 +36,19 @@ recordtype(aai) {
promptgroup(GUI_BITS2)
interest(1)
size(16)
prop(YES)
}
field(HOPR,DBF_DOUBLE) {
prompt("High Operating Range")
promptgroup(GUI_CALC)
interest(1)
prop(YES)
}
field(LOPR,DBF_DOUBLE) {
prompt("Low Operating Range")
promptgroup(GUI_CLOCK)
interest(1)
prop(YES)
}
field(NELM,DBF_ULONG) {
prompt("Number of Elements")

View File

@@ -24,6 +24,7 @@ recordtype(aao) {
prompt("Display Precision")
promptgroup(GUI_ALARMS)
interest(1)
prop(YES)
}
field(OUT,DBF_OUTLINK) {
prompt("Output Specification")
@@ -35,16 +36,19 @@ recordtype(aao) {
promptgroup(GUI_BITS2)
interest(1)
size(16)
prop(YES)
}
field(HOPR,DBF_DOUBLE) {
prompt("High Operating Range")
promptgroup(GUI_CALC)
interest(1)
prop(YES)
}
field(LOPR,DBF_DOUBLE) {
prompt("Low Operating Range")
promptgroup(GUI_CLOCK)
interest(1)
prop(YES)
}
field(NELM,DBF_ULONG) {
prompt("Number of Elements")

View File

@@ -24,6 +24,7 @@ recordtype(ai) {
prompt("Display Precision")
promptgroup(GUI_DISPLAY)
interest(1)
prop(YES)
}
field(LINR,DBF_MENU) {
prompt("Linearization")
@@ -52,16 +53,19 @@ recordtype(ai) {
promptgroup(GUI_DISPLAY)
interest(1)
size(16)
prop(YES)
}
field(HOPR,DBF_DOUBLE) {
prompt("High Operating Range")
promptgroup(GUI_DISPLAY)
interest(1)
prop(YES)
}
field(LOPR,DBF_DOUBLE) {
prompt("Low Operating Range")
promptgroup(GUI_DISPLAY)
interest(1)
prop(YES)
}
field(AOFF,DBF_DOUBLE) {
prompt("Adjustment Offset")
@@ -86,30 +90,35 @@ recordtype(ai) {
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
}
field(LOLO,DBF_DOUBLE) {
prompt("Lolo Alarm Limit")
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
}
field(HIGH,DBF_DOUBLE) {
prompt("High Alarm Limit")
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
}
field(LOW,DBF_DOUBLE) {
prompt("Low Alarm Limit")
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
}
field(HHSV,DBF_MENU) {
prompt("Hihi Severity")
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
menu(menuAlarmSevr)
}
field(LLSV,DBF_MENU) {
@@ -117,6 +126,7 @@ recordtype(ai) {
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
menu(menuAlarmSevr)
}
field(HSV,DBF_MENU) {
@@ -124,6 +134,7 @@ recordtype(ai) {
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
menu(menuAlarmSevr)
}
field(LSV,DBF_MENU) {
@@ -131,6 +142,7 @@ recordtype(ai) {
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
menu(menuAlarmSevr)
}
field(HYST,DBF_DOUBLE) {

View File

@@ -53,6 +53,7 @@ recordtype(ao) {
prompt("Display Precision")
promptgroup(GUI_DISPLAY)
interest(1)
prop(YES)
}
field(LINR,DBF_MENU) {
prompt("Linearization")
@@ -81,6 +82,7 @@ recordtype(ao) {
promptgroup(GUI_DISPLAY)
interest(1)
size(16)
prop(YES)
}
field(ROFF,DBF_LONG) {
prompt("Raw Offset, obsolete")
@@ -105,22 +107,26 @@ recordtype(ao) {
promptgroup(GUI_OUTPUT)
pp(TRUE)
interest(1)
prop(YES)
}
field(DRVL,DBF_DOUBLE) {
prompt("Drive Low Limit")
promptgroup(GUI_OUTPUT)
pp(TRUE)
interest(1)
prop(YES)
}
field(HOPR,DBF_DOUBLE) {
prompt("High Operating Range")
promptgroup(GUI_DISPLAY)
interest(1)
prop(YES)
}
field(LOPR,DBF_DOUBLE) {
prompt("Low Operating Range")
promptgroup(GUI_DISPLAY)
interest(1)
prop(YES)
}
field(AOFF,DBF_DOUBLE) {
prompt("Adjustment Offset")
@@ -139,30 +145,35 @@ recordtype(ao) {
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
}
field(LOLO,DBF_DOUBLE) {
prompt("Lolo Alarm Limit")
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
}
field(HIGH,DBF_DOUBLE) {
prompt("High Alarm Limit")
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
}
field(LOW,DBF_DOUBLE) {
prompt("Low Alarm Limit")
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
}
field(HHSV,DBF_MENU) {
prompt("Hihi Severity")
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
menu(menuAlarmSevr)
}
field(LLSV,DBF_MENU) {
@@ -170,6 +181,7 @@ recordtype(ao) {
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
menu(menuAlarmSevr)
}
field(HSV,DBF_MENU) {
@@ -177,6 +189,7 @@ recordtype(ao) {
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
menu(menuAlarmSevr)
}
field(LSV,DBF_MENU) {
@@ -184,6 +197,7 @@ recordtype(ao) {
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
menu(menuAlarmSevr)
}
field(HYST,DBF_DOUBLE) {

View File

@@ -47,6 +47,7 @@ recordtype(bi) {
pp(TRUE)
interest(1)
size(26)
prop(YES)
}
field(ONAM,DBF_STRING) {
prompt("One Name")
@@ -54,6 +55,7 @@ recordtype(bi) {
pp(TRUE)
interest(1)
size(26)
prop(YES)
}
field(RVAL,DBF_ULONG) {
prompt("Raw Value")

View File

@@ -42,6 +42,7 @@ recordtype(bo) {
pp(TRUE)
interest(1)
size(26)
prop(YES)
}
field(ONAM,DBF_STRING) {
prompt("One Name")
@@ -49,6 +50,7 @@ recordtype(bo) {
pp(TRUE)
interest(1)
size(26)
prop(YES)
}
field(RVAL,DBF_ULONG) {
prompt("Raw Value")

View File

@@ -85,51 +85,60 @@ recordtype(calc) {
promptgroup(GUI_DISPLAY)
interest(1)
size(16)
prop(YES)
}
field(PREC,DBF_SHORT) {
prompt("Display Precision")
promptgroup(GUI_DISPLAY)
interest(1)
prop(YES)
}
field(HOPR,DBF_DOUBLE) {
prompt("High Operating Rng")
promptgroup(GUI_DISPLAY)
interest(1)
prop(YES)
}
field(LOPR,DBF_DOUBLE) {
prompt("Low Operating Range")
promptgroup(GUI_DISPLAY)
interest(1)
prop(YES)
}
field(HIHI,DBF_DOUBLE) {
prompt("Hihi Alarm Limit")
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
}
field(LOLO,DBF_DOUBLE) {
prompt("Lolo Alarm Limit")
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
}
field(HIGH,DBF_DOUBLE) {
prompt("High Alarm Limit")
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
}
field(LOW,DBF_DOUBLE) {
prompt("Low Alarm Limit")
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
}
field(HHSV,DBF_MENU) {
prompt("Hihi Severity")
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
menu(menuAlarmSevr)
}
field(LLSV,DBF_MENU) {
@@ -137,6 +146,7 @@ recordtype(calc) {
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
menu(menuAlarmSevr)
}
field(HSV,DBF_MENU) {
@@ -144,6 +154,7 @@ recordtype(calc) {
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
menu(menuAlarmSevr)
}
field(LSV,DBF_MENU) {
@@ -151,6 +162,7 @@ recordtype(calc) {
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
menu(menuAlarmSevr)
}
field(AFTC, DBF_DOUBLE) {

View File

@@ -285,51 +285,60 @@ recordtype(calcout) {
promptgroup(GUI_DISPLAY)
interest(1)
size(16)
prop(YES)
}
field(PREC,DBF_SHORT) {
prompt("Display Precision")
promptgroup(GUI_DISPLAY)
interest(1)
prop(YES)
}
field(HOPR,DBF_DOUBLE) {
prompt("High Operating Rng")
promptgroup(GUI_DISPLAY)
interest(1)
prop(YES)
}
field(LOPR,DBF_DOUBLE) {
prompt("Low Operating Range")
promptgroup(GUI_DISPLAY)
interest(1)
prop(YES)
}
field(HIHI,DBF_DOUBLE) {
prompt("Hihi Alarm Limit")
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
}
field(LOLO,DBF_DOUBLE) {
prompt("Lolo Alarm Limit")
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
}
field(HIGH,DBF_DOUBLE) {
prompt("High Alarm Limit")
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
}
field(LOW,DBF_DOUBLE) {
prompt("Low Alarm Limit")
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
}
field(HHSV,DBF_MENU) {
prompt("Hihi Severity")
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
menu(menuAlarmSevr)
}
field(LLSV,DBF_MENU) {
@@ -337,6 +346,7 @@ recordtype(calcout) {
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
menu(menuAlarmSevr)
}
field(HSV,DBF_MENU) {
@@ -344,6 +354,7 @@ recordtype(calcout) {
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
menu(menuAlarmSevr)
}
field(LSV,DBF_MENU) {
@@ -351,6 +362,7 @@ recordtype(calcout) {
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
menu(menuAlarmSevr)
}
field(HYST,DBF_DOUBLE) {

View File

@@ -70,22 +70,26 @@ recordtype(compress) {
prompt("High Operating Range")
promptgroup(GUI_DISPLAY)
interest(1)
prop(YES)
}
field(LOPR,DBF_DOUBLE) {
prompt("Low Operating Range")
promptgroup(GUI_DISPLAY)
interest(1)
prop(YES)
}
field(PREC,DBF_SHORT) {
prompt("Display Precision")
promptgroup(GUI_DISPLAY)
interest(1)
prop(YES)
}
field(EGU,DBF_STRING) {
prompt("EngineeringUnits")
promptgroup(GUI_DISPLAY)
interest(1)
size(16)
prop(YES)
}
field(OFF,DBF_ULONG) {
prompt("Offset")

View File

@@ -91,51 +91,60 @@ recordtype(dfanout) {
promptgroup(GUI_DISPLAY)
interest(1)
size(16)
prop(YES)
}
field(PREC,DBF_SHORT) {
prompt("Display Precision")
promptgroup(GUI_DISPLAY)
interest(1)
prop(YES)
}
field(HOPR,DBF_DOUBLE) {
prompt("High Operating Range")
promptgroup(GUI_DISPLAY)
interest(1)
prop(YES)
}
field(LOPR,DBF_DOUBLE) {
prompt("Low Operating Range")
promptgroup(GUI_DISPLAY)
interest(1)
prop(YES)
}
field(HIHI,DBF_DOUBLE) {
prompt("Hihi Alarm Limit")
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
}
field(LOLO,DBF_DOUBLE) {
prompt("Lolo Alarm Limit")
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
}
field(HIGH,DBF_DOUBLE) {
prompt("High Alarm Limit")
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
}
field(LOW,DBF_DOUBLE) {
prompt("Low Alarm Limit")
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
}
field(HHSV,DBF_MENU) {
prompt("Hihi Severity")
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
menu(menuAlarmSevr)
}
field(LLSV,DBF_MENU) {
@@ -143,6 +152,7 @@ recordtype(dfanout) {
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
menu(menuAlarmSevr)
}
field(HSV,DBF_MENU) {
@@ -150,6 +160,7 @@ recordtype(dfanout) {
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
menu(menuAlarmSevr)
}
field(LSV,DBF_MENU) {
@@ -157,6 +168,7 @@ recordtype(dfanout) {
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
menu(menuAlarmSevr)
}
field(HYST,DBF_DOUBLE) {

View File

@@ -46,12 +46,14 @@ recordtype(histogram) {
promptgroup(GUI_HIST)
special(SPC_RESET)
interest(1)
prop(YES)
}
field(LLIM,DBF_DOUBLE) {
prompt("Lower Signal Limit ")
promptgroup(GUI_HIST)
special(SPC_RESET)
interest(1)
prop(YES)
}
field(WDTH,DBF_DOUBLE) {
prompt("Element Width")
@@ -66,6 +68,7 @@ recordtype(histogram) {
prompt("Display Precision")
promptgroup(GUI_DISPLAY)
interest(1)
prop(YES)
}
field(SVL,DBF_INLINK) {
prompt("Signal Value Location")
@@ -128,11 +131,13 @@ recordtype(histogram) {
prompt("High Operating Range")
promptgroup(GUI_DISPLAY)
interest(1)
prop(YES)
}
field(LOPR,DBF_ULONG) {
prompt("Low Operating Range")
promptgroup(GUI_DISPLAY)
interest(1)
prop(YES)
}
}

View File

@@ -25,40 +25,47 @@ recordtype(longin) {
promptgroup(GUI_DISPLAY)
interest(1)
size(16)
prop(YES)
}
field(HOPR,DBF_LONG) {
prompt("High Operating Range")
promptgroup(GUI_DISPLAY)
interest(1)
prop(YES)
}
field(LOPR,DBF_LONG) {
prompt("Low Operating Range")
promptgroup(GUI_DISPLAY)
interest(1)
prop(YES)
}
field(HIHI,DBF_LONG) {
prompt("Hihi Alarm Limit")
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
}
field(LOLO,DBF_LONG) {
prompt("Lolo Alarm Limit")
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
}
field(HIGH,DBF_LONG) {
prompt("High Alarm Limit")
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
}
field(LOW,DBF_LONG) {
prompt("Low Alarm Limit")
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
}
field(HHSV,DBF_MENU) {
prompt("Hihi Severity")

View File

@@ -36,52 +36,61 @@ recordtype(longout) {
promptgroup(GUI_DISPLAY)
interest(1)
size(16)
prop(YES)
}
field(DRVH,DBF_LONG) {
prompt("Drive High Limit")
promptgroup(GUI_OUTPUT)
pp(TRUE)
interest(1)
prop(YES)
}
field(DRVL,DBF_LONG) {
prompt("Drive Low Limit")
promptgroup(GUI_OUTPUT)
pp(TRUE)
interest(1)
prop(YES)
}
field(HOPR,DBF_LONG) {
prompt("High Operating Range")
promptgroup(GUI_DISPLAY)
interest(1)
prop(YES)
}
field(LOPR,DBF_LONG) {
prompt("Low Operating Range")
promptgroup(GUI_DISPLAY)
interest(1)
prop(YES)
}
field(HIHI,DBF_LONG) {
prompt("Hihi Alarm Limit")
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
}
field(LOLO,DBF_LONG) {
prompt("Lolo Alarm Limit")
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
}
field(HIGH,DBF_LONG) {
prompt("High Alarm Limit")
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
}
field(LOW,DBF_LONG) {
prompt("Low Alarm Limit")
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
}
field(HHSV,DBF_MENU) {
prompt("Hihi Severity")

View File

@@ -103,46 +103,54 @@ recordtype(sel) {
promptgroup(GUI_DISPLAY)
interest(1)
size(16)
prop(YES)
}
field(HOPR,DBF_DOUBLE) {
prompt("High Operating Rng")
promptgroup(GUI_DISPLAY)
interest(1)
prop(YES)
}
field(LOPR,DBF_DOUBLE) {
prompt("Low Operating Range")
promptgroup(GUI_DISPLAY)
interest(1)
prop(YES)
}
field(HIHI,DBF_DOUBLE) {
prompt("Hihi Alarm Limit")
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
}
field(LOLO,DBF_DOUBLE) {
prompt("Lolo Alarm Limit")
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
}
field(HIGH,DBF_DOUBLE) {
prompt("High Alarm Limit")
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
}
field(LOW,DBF_DOUBLE) {
prompt("Low Alarm Limit")
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
}
field(HHSV,DBF_MENU) {
prompt("Hihi Severity")
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
menu(menuAlarmSevr)
}
field(LLSV,DBF_MENU) {
@@ -150,6 +158,7 @@ recordtype(sel) {
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
menu(menuAlarmSevr)
}
field(HSV,DBF_MENU) {
@@ -157,6 +166,7 @@ recordtype(sel) {
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
menu(menuAlarmSevr)
}
field(LSV,DBF_MENU) {
@@ -164,6 +174,7 @@ recordtype(sel) {
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
menu(menuAlarmSevr)
}
field(HYST,DBF_DOUBLE) {

View File

@@ -20,6 +20,7 @@ recordtype(subArray) {
prompt("Display Precision")
promptgroup(GUI_COMMON)
interest(1)
prop(YES)
}
field(FTVL,DBF_MENU) {
prompt("Field Type of Value")
@@ -38,16 +39,19 @@ recordtype(subArray) {
promptgroup(GUI_BITS2)
interest(1)
size(16)
prop(YES)
}
field(HOPR,DBF_DOUBLE) {
prompt("High Operating Range")
promptgroup(GUI_CALC)
interest(1)
prop(YES)
}
field(LOPR,DBF_DOUBLE) {
prompt("Low Operating Range")
promptgroup(GUI_CLOCK)
interest(1)
prop(YES)
}
field(MALM,DBF_ULONG) {
prompt("Maximum Elements ")

View File

@@ -100,45 +100,53 @@ recordtype(sub) {
promptgroup(GUI_DISPLAY)
interest(1)
size(16)
prop(YES)
}
field(HOPR,DBF_DOUBLE) {
prompt("High Operating Rng")
promptgroup(GUI_DISPLAY)
interest(1)
prop(YES)
}
field(LOPR,DBF_DOUBLE) {
prompt("Low Operating Range")
promptgroup(GUI_DISPLAY)
interest(1)
prop(YES)
}
field(HIHI,DBF_DOUBLE) {
prompt("Hihi Alarm Limit")
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
}
field(LOLO,DBF_DOUBLE) {
prompt("Lolo Alarm Limit")
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
}
field(HIGH,DBF_DOUBLE) {
prompt("High Alarm Limit")
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
}
field(LOW,DBF_DOUBLE) {
prompt("Low Alarm Limit")
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
}
field(PREC,DBF_SHORT) {
prompt("Display Precision")
promptgroup(GUI_DISPLAY)
interest(1)
prop(YES)
}
field(BRSV,DBF_MENU) {
prompt("Bad Return Severity")
@@ -152,6 +160,7 @@ recordtype(sub) {
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
menu(menuAlarmSevr)
}
field(LLSV,DBF_MENU) {
@@ -159,6 +168,7 @@ recordtype(sub) {
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
menu(menuAlarmSevr)
}
field(HSV,DBF_MENU) {
@@ -166,6 +176,7 @@ recordtype(sub) {
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
menu(menuAlarmSevr)
}
field(LSV,DBF_MENU) {
@@ -173,6 +184,7 @@ recordtype(sub) {
promptgroup(GUI_ALARMS)
pp(TRUE)
interest(1)
prop(YES)
menu(menuAlarmSevr)
}
field(HYST,DBF_DOUBLE) {

View File

@@ -29,6 +29,7 @@ recordtype(waveform) {
prompt("Display Precision")
promptgroup(GUI_DISPLAY)
interest(1)
prop(YES)
}
field(INP,DBF_INLINK) {
prompt("Input Specification")
@@ -40,16 +41,19 @@ recordtype(waveform) {
promptgroup(GUI_DISPLAY)
interest(1)
size(16)
prop(YES)
}
field(HOPR,DBF_DOUBLE) {
prompt("High Operating Range")
promptgroup(GUI_DISPLAY)
interest(1)
prop(YES)
}
field(LOPR,DBF_DOUBLE) {
prompt("Low Operating Range")
promptgroup(GUI_DISPLAY)
interest(1)
prop(YES)
}
field(NELM,DBF_ULONG) {
prompt("Number of Elements")

View File

@@ -35,7 +35,8 @@ our %field_attrs = (
base => qr/^(?:DECIMAL|HEX)$/,
size => qr/^\d+$/,
extra => qr/^.*$/,
menu => qr/^$RXident$/o
menu => qr/^$RXident$/o,
prop => qr/^(?:YES|NO)$/
);
sub new {