V4 DBD Examples

From EPICSWIKI

Example Record Types November 02 2005

Overview

This document present proposed V4 replacements for a few of the V3 record types.

aoRecord

aoRecord.dbd might be defined as follows:

include "menuStructBase.dbd"
record(AoRecord) {
    field(common,struct(RecordCommon))
    field(desiredValue, float64) {
        asl(0)
    }
    field(currentValue, float64) {
        readonly(yes)
    }
    field(out,link)
    field(outputRateOfChange, float64)
    field(desiredOutputLink,link)
    field(closedLoop, bool)
    field(outputIncremental, bool)
    field(convert, menu(menuConvert)) {
        special(yes)
    }
    field(linearConvert, struct(LinearConvert)) {
        special(yes)
    }
    field(convertTable,string);
    field(units, string)
    field(displayLimit, struct(DisplayLimit))
    field(controlLimit, struct(ControlLimit))
    field(alarmLimit, struct(AlarmLimit))
    field(rawValue, int32) {
        design(no)
    }
    field(readBackValue, int32) {
        design(no)
        readonly(yes)
    }
    field(simulation,struct(SimulationFloat64))
    field(invalidAction, menu(menuIvoa))
    field(invalidValue, float64)
    view(value) {
        property(value, value) {
            property(units, units)
            property(timeStamp, time)
            property(alarmSeverity, alarmSeverity)
            property(alarmStatus, alarmStatus)
            property(displayLimit, displayLimit)
            property(controlLimit, controlLimit)
            property(alarmLimit, alarmLimit)
        }
    }
    view(output) {
        property(value, outValue) {
            property(units, units)
            property(timeStamp, time)
            property(alarmSeverity, alarmSeverity)
            property(alarmStatus, alarmStatus)
            property(displayLimit, displayLimit)
        }
    }
    view(raw) {
        property(value, rawValue) {
            property(timeStamp, time)
        }
    }
    view(readback) {
        property(value, readBackValue) {
            property(timeStamp, time)
        }
    }
} 

calcRecord

calcRecord.dbd defines the following:

include "menuStructBase.dbd"
struct(CalcInpLink) {
    field(block,boolean)
    field(link,link)
    field(value,float64)
}
record(CalcRecord){
    field(common,struct(RecordCommon))
    field(value,float64) {
        asl(0)
    }
    field(calc,string) {
        special(yes)
    }
    field(input,array(struct(CalcInpLink)[])) 
    field(units,string)
    field(displayLimit,struct(DisplayLimit))
    field(alarmLimit,struct(AlarmLimit))
    view(result) {
        property(value, result) {
            property(units, units)
            property(timeStamp, time)
            property(alarmSeverity, alarmSeverity)
            property(alarmStatus, alarmStatus)
            property(displayLimit, displayLimit)
            property(alarmLimit, alarmLimit)
        }
    }
    view(expression) {
        property(value, calc)
    }
}


mbbiRecord

mbbiRecord.dbd could be:

include "menuStructBase.dbd"
struct(MbbiState) {
    field(name, string)
    field(value, array(octet[]))
    field(severity, menu(menuAlarmSevr))
}
record(MbbiRecord) {
    field(common,struct(RecordCommon))
    field(state, array(struct(MbbiState)[])) {
        special(yes)
    }
  1. NOTE: stateName needed because enum must refer to array of string
    field(stateName,array(string[])) {
        design(no) readonly(yes)
    }
    field(value, enum(stateName)) {
        asl(0)
    }
    field(unknownStateSeverity, menu(menuAlarmSevr))
    field(changeStateSeverity, menu(menuAlarmSevr))
    field(inp, link)
    field(rawValue, array(octet[])) {
        design(no)
        readonly(yes)
    }
    field(hardwareShift, int16) {
        readonly(yes)
    }
    field(hardwareMask, array(octet[]) {
        readonly(yes)
    }
    view(choice) {
        property(value, value) {
            property(timeStamp, time)
            property(alarmSeverity, alarmSeverity)
            property(alarmStatus, alarmStatus)
        }
    }
    view(raw) {
        property(value, raw) {
            property(timeStamp, time)
        }
    }
}

waveformRecord

waveformRecord.dbd defines the following:

include "menuStructBase.dbd"
record(WaveformRecord) {
    field(common,struct(RecordCommon))
    field(value, array([])) {
        asl(0)
        special(yes)
    }
    field(reArm,bool)
    field(io,link)
    field(units,string)
    field(displayLimit,struct(DisplayLimit))
    field(busy,bool) {
        design(no)
        readonly(yes)
    }
    view(value) {
        property(value, value) {
            property(units, units)
            property(timeStamp, time)
            property(alarmSeverity, alarmSeverity)
            property(alarmStatus, alarmStatus)
            property(displayLimit, displayLimit)
        }
    }
}