V4 DBD dbCommon and iocRecord

From EPICSWIKI
Revision as of 22:37, 16 May 2005 by AndrewJohnson (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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)
        default("UDF")
    }
    field(alarmSeverity,menu(menuAlarmSevr)) {
        readonly(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) {
        default("1")
    }
    field(time,struct(timeStamp)) {
        design(no)
        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 *"))
}