V4 DBD dbCommon and iocRecord
From EPICSWIKI
Revision as of 16:11, 17 May 2005 by AndrewJohnson (talk | contribs)
dbCommon
NOTE: dbCommon needs work. It should have more structure.
dbCommon.dbd defines the following:
# menu definitions for dbRecordCommon fields
menu(menuPriority) {
choice(menuPriorityLow, "Low")
choice(menuPriorityMedium, "Medium")
choice(menuPriorityHigh, "High")
}
This may change, moving periods to their own field:
menu(menuScan) {
choice(menuScanPassive, "Passive")
choice(menuScanEvent, "Event")
choice(menuScanInterrupt, "Interrupt")
choice(menuScan10second, "10 second")
choice(menuScan5second, "5 second")
choice(menuScan2second, "2 second")
choice(menuScan1second, "1 second")
choice(menuScan_5second, ".5 second")
choice(menuScan_2second, ".2 second")
choice(menuScan_1second, ".1 second")
}
menu(menuAlarmSevr) {
choice(menuAlarmSevrNone, "None")
choice(menuAlarmSevrMinor, "Minor")
choice(menuAlarmSevrMajor, "Major")
choice(menuAlarmSevrInvalid, "Invalid")
}
menu(menuConvert) {
choice(menuConvertRaw, "Raw")
choice(menuConvertLinear, "Linear")
choice(menuConvertTable, "Table")
}
The following definitions may be wrong
#definition for constant links
struct constantlink {
field(value,string)
}
#definitions for ca, da, pv links
#dblink must reference a pv in the same ioc.
struct(dblink) {
field(pvname,string) { link}
field(pp,bool)
field(ms,bool)
}
struct(dbfwdlink) {field(pvname,string){link}}
#calink forces a link to be a channel access link
struct(calink) {
field(pvname,string) { link}
field(pp,bool)
field(ms,bool)
}
struct(cafwdlink) {field(pvname,string){link}}
#pvlink becomes (dblink,calink) if pvname is (local,remote)
struct(pvlink) {
field(pvname,string) { link}
field(pp,bool)
field(ms,bool)
}
struct(pvfwdlink) {field(pvname,string){link}}
link(inout,"constant",constantlink)
link(inout,"dblink",dblink)
link(inout,"calink",calink)
link(inout,"pvlink",pvlink)
link(fwd,"dblink",dbfwdlink)
link(fwd,"calink",cafwdlink)
link(fwd,"pvlink",pvfwdlink)
#definitions for common properties
struct(timeStamp) {
field(secPastEpoch,uint64)
field(nsec,uint32)
}
iocRecord
iocRecord.dbd must be part of every record, and defines the following:
This will be restructured.
record(iocRecord) {
field(description,string)
field(accessSecurityGroup,string) {
special(yes)
}
field(scan,menu(menuScan)) {
special(yes)
}
field(pini,bool)
field(phase,int16)
field(eventNumber,int16) {
special(yes)
}
field(timeStampEvent,int16)
field(timeStampLink,link(in))
field(disableValue,int16) {
default("1")
}
field(disableInput,int16)
field(disableLink,link(in))
field(disablePutField,bool)
field(process,bool) {
special(yes)
}
field(alarmStatus,string) {
readonly(yes)
dynamic(yes)
default("UDF")
}
field(alarmSeverity,menu(menuAlarmSevr)) {
readonly(yes)
dynamic(yes)
default("Invalid")
}
field(newAlarmStatus,string) {
design(no)
readonly(yes)
}
field(newAlarmSeverity,menu(menuAlarmSevr)) {
design(no)
readonly(yes)
}
field(alarmAckSeverity,menu(menuAlarmSevr)) {
design(no)
readonly(yes)
}
field(alarmAckTransient,bool) {
readonly(yes)
default("YES")
}
field(disableAlarmSeverity,menu(menuAlarmSevr))
field(lockCount,int16) {
design(no)
readonly(yes)
}
field(pact,bool) {
design(no)
readonly(yes)
}
field(putFieldProcess,bool) {
design(no)
readonly(yes)
}
field(reprocess,bool) {
design(no)
readonly(yes)
}
field(priority,menu(menuPriority)) {
special(yes)
}
field(udf,bool) {
dynamic(yes)
default("1")
}
field(time,struct(timeStamp)) {
design(no)
dynamic(yes)
readonly(yes)
}
field(flnk,link(fwd))
field(monitorLock,private("epicsMutexId"))
field(monitorList,private("ELLLIST"))
field(asp,private("void *"))
field(ppn,private("struct putNotify *")
field(ppnr,private("struct putNotifyRecord *"))
field(spvt,private("struct scan_element *"))
field(rset,private("struct rset *"))
field(rdes,private(struct dbRecordType *"))
field(lset,private("struct lockRecord *"))
}