Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
sis8300bcm.template 17.36 KiB
# =========================================================================== #
# Template file: sis8300bcm.template
# Database for the records specific to the BCM driver
# Hinko Kocevar
# October 8, 2018

include "sis8300.template"

record(mbbo, "$(P)$(R)AcquisitionTriggerSource")
{
    field(DTYP, "asynInt32")
    field(OUT,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.ACQUISITION_TRIGGER_SOURCE")
    field(ZRVL, "0")
    field(ZRST, "Software")
    field(ONVL, "1")
    field(ONST, "Internal")
    field(TWVL, "2")
    field(TWST, "FrontPanel")
    field(THVL, "3")
    field(THST, "BackPlane1")
    field(FRVL, "4")
    field(FRST, "BackPlane2")
    field(FVVL, "5")
    field(FVST, "BackPlane3")
    field(SXVL, "6")
    field(SXST, "BackPlane4")
    field(SVVL, "7")
    field(SVST, "BackPlane5")
    field(EIVL, "8")
    field(EIST, "BackPlane6")
    field(NIVL, "9")
    field(NIST, "BackPlane7")
    field(TEVL, "10")
    field(TEST, "BackPlane8")
    field(PINI, "YES")
    field(VAL,  "3")
    field(ASG,  "critical")
    info(autosaveFields, "VAL")
}

record(mbbi, "$(P)$(R)AcquisitionTriggerSourceR")
{
    field(DTYP, "asynInt32")
    field(INP,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.ACQUISITION_TRIGGER_SOURCE")
    field(SCAN, "I/O Intr")
    field(ZRVL, "0")
    field(ZRST, "Software")
    field(ONVL, "1")
    field(ONST, "Internal")
    field(TWVL, "2")
    field(TWST, "FrontPanel")
    field(THVL, "3")
    field(THST, "BackPlane1")
    field(FRVL, "4")
    field(FRST, "BackPlane2")
    field(FVVL, "5")
    field(FVST, "BackPlane3")
    field(SXVL, "6")
    field(SXST, "BackPlane4")
    field(SVVL, "7")
    field(SVST, "BackPlane5")
    field(EIVL, "8")
    field(EIST, "BackPlane6")
    field(NIVL, "9")
    field(NIST, "BackPlane7")
    field(TEVL, "10")
    field(TEST, "BackPlane8")
}

record(mbbo, "$(P)$(R)BeamTriggerSource")
{
    field(DTYP, "asynInt32")
    field(OUT,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.BEAM_TRIGGER_SOURCE")
    field(ZRVL, "0")
    field(ZRST, "Software")
    field(ONVL, "1")
    field(ONST, "Internal")
    field(TWVL, "2")
    field(TWST, "FrontPanel")
    field(THVL, "3")
    field(THST, "BackPlane1")
    field(FRVL, "4")
    field(FRST, "BackPlane2")
    field(FVVL, "5")
    field(FVST, "BackPlane3")
    field(SXVL, "6")
    field(SXST, "BackPlane4")
    field(SVVL, "7")
    field(SVST, "BackPlane5")
    field(EIVL, "8")
    field(EIST, "BackPlane6")
    field(NIVL, "9")
    field(NIST, "BackPlane7")
    field(TEVL, "10")
    field(TEST, "BackPlane8")
    field(PINI, "YES")
    field(VAL,  "3")
    field(ASG,  "critical")
    info(autosaveFields, "VAL")
}

record(mbbi, "$(P)$(R)BeamTriggerSourceR")
{
    field(DTYP, "asynInt32")
    field(INP,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.BEAM_TRIGGER_SOURCE")
    field(SCAN, "I/O Intr")
    field(ZRVL, "0")
    field(ZRST, "Software")
    field(ONVL, "1")
    field(ONST, "Internal")
    field(TWVL, "2")
    field(TWST, "FrontPanel")
    field(THVL, "3")
    field(THST, "BackPlane1")
    field(FRVL, "4")
    field(FRST, "BackPlane2")
    field(FVVL, "5")
    field(FVST, "BackPlane3")
    field(SXVL, "6")
    field(SXST, "BackPlane4")
    field(SVVL, "7")
    field(SVST, "BackPlane5")
    field(EIVL, "8")
    field(EIST, "BackPlane6")
    field(NIVL, "9")
    field(NIST, "BackPlane7")
    field(TEVL, "10")
    field(TEST, "BackPlane8")
}

record(mbbo, "$(P)$(R)ClockSource")
{
    # select backplane A
    field(VAL,  "4")
    field(ASG,  "critical")
}

record(longout, "$(P)$(R)CrateID")
{
    field(DTYP, "asynInt32")
    field(OUT,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.CRATE_ID")
    field(ASG,  "critical")
    info(autosaveFields, "VAL")
}

record(longin, "$(P)$(R)CrateIDR")
{
    field(DTYP, "asynInt32")
    field(INP,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.CRATE_ID")
    field(SCAN, "I/O Intr")
}

record(ao, "$(P)$(R)PulseWidthFilter")
{
    field(DTYP, "asynFloat64")
    field(OUT,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.PULSE_WIDTH_FILTER")
    field(EGU,  "us")
    field(PREC, "4")
    field(ASG,  "critical")
    info(autosaveFields, "VAL")
}

record(ai, "$(P)$(R)PulseWidthFilterR")
{
    field(DTYP, "asynFloat64")
    field(INP,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.PULSE_WIDTH_FILTER")
    field(EGU,  "us")
    field(PREC, "4")
    field(SCAN, "I/O Intr")
}

record(longin, "$(P)$(R)BCMFWVersionR")
{
    field(DTYP, "asynInt32")
    field(INP,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.FW_VERSION")
    field(SCAN, "I/O Intr")
}

record(longin, "$(P)$(R)BCMFWGitHashR")
{
    field(DTYP, "asynInt32")
    field(INP,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.FW_GIT_HASH")
    field(SCAN, "I/O Intr")
}

record(ai, "$(P)$(R)ClockFrequencyMeasR")
{
    field(DTYP, "asynFloat64")
    field(INP,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.CLOCK_FREQUENCY_MEAS")
    field(EGU,  "Hz")
    field(PREC, "0")
    field(SCAN, "I/O Intr")
}

record(ai, "$(P)$(R)TriggerPeriodMeasR")
{
    field(DTYP, "asynFloat64")
    field(INP,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.TRIGGER_PERIOD_MEAS")
    field(EGU,  "ms")
    field(PREC, "4")
    field(SCAN, "I/O Intr")
}

record(ai, "$(P)$(R)TriggerWidthMeasR")
{
    field(DTYP, "asynFloat64")
    field(INP,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.TRIGGER_WIDTH_MEAS")
    field(EGU,  "ms")
    field(PREC, "4")
    field(SCAN, "I/O Intr")
}

record(ao, "$(P)$(R)SamplingFrequency")
{
    field(PREC, "0")
}

record(ai, "$(P)$(R)SamplingFrequencyR")
{
    field(PREC, "0")
}

record(ao, "$(P)$(R)MinTriggerPeriod")
{
    field(DTYP, "asynFloat64")
    field(OUT,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.MIN_TRIGGER_PERIOD")
    field(EGU,  "ms")
    field(PREC, "3")
    field(DRVL, "65.0")
    field(DRVH, "65000.0")
    field(VAL,  "71")
    field(PINI, "YES")
    field(ASG,  "critical")
    info(autosaveFields, "VAL")
}

record(ai, "$(P)$(R)MinTriggerPeriodR")
{
    field(DTYP, "asynFloat64")
    field(INP,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.MIN_TRIGGER_PERIOD")
    field(EGU,  "ms")
    field(PREC,  "3")
    field(SCAN, "I/O Intr")
}

record(longout, "$(P)$(R)MaxPulseWidth")
{
    field(DTYP, "asynInt32")
    field(OUT,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.MAX_PULSE_WIDTH")
    field(EGU,  "us")
    field(DRVL, "5")
    field(DRVH, "8191")
    field(VAL,  "5")
    field(PINI, "YES")
    field(ASG,  "critical")
    info(autosaveFields, "VAL")
}

record(longin, "$(P)$(R)MaxPulseWidthR")
{
    field(DTYP, "asynInt32")
    field(INP,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.MAX_PULSE_WIDTH")
    field(EGU,  "us")
    field(SCAN, "I/O Intr")
}

record(bo, "$(P)$(R)AlarmsClear")
{
    field(DTYP, "asynInt32")
    field(OUT,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.ALARMS_CLEAR")
    field(ZNAM, "Idle")
    field(ONAM, "Clear")
}

record(bo, "$(P)$(R)AlarmsControl")
{
    field(DTYP, "asynInt32")
    field(OUT,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.ALARMS_CONTROL")
    field(ZNAM, "Enable")
    field(ONAM, "Disable")
    field(VAL,  "1")
    field(PINI, "YES")
    info(autosaveFields, "VAL")
}

record(bi, "$(P)$(R)AlarmsControlR")
{
    field(DTYP, "asynInt32")
    field(INP,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.ALARMS_CONTROL")
    field(ZNAM, "Enabled")
    field(ONAM, "Disabled")
    field(SCAN, "I/O Intr")
}

record(bo, "$(P)$(R)AlarmAuxClockControl")
{
    field(DTYP, "asynInt32")
    field(OUT,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.ALARM.AUXILIARY_CLOCK_CONTROL")
    field(ZNAM, "Enable")
    field(ONAM, "Disable")
    field(VAL,  "1")
    field(PINI, "YES")
    info(autosaveFields, "VAL")
}

record(bi, "$(P)$(R)AlarmAuxClockControlR")
{
    field(DTYP, "asynInt32")
    field(INP,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.ALARM.AUXILIARY_CLOCK_CONTROL")
    field(ZNAM, "Enabled")
    field(ONAM, "Disabled")
    field(SCAN, "I/O Intr")
}

record(bo, "$(P)$(R)AlarmProcClockControl")
{
    field(DTYP, "asynInt32")
    field(OUT,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.ALARM.PROCESSING_CLOCK_CONTROL")
    field(ZNAM, "Enable")
    field(ONAM, "Disable")
    field(VAL,  "1")
    field(PINI, "YES")
    info(autosaveFields, "VAL")
}

record(bi, "$(P)$(R)AlarmProcClockControlR")
{
    field(DTYP, "asynInt32")
    field(INP,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.ALARM.PROCESSING_CLOCK_CONTROL")
    field(ZNAM, "Enabled")
    field(ONAM, "Disabled")
    field(SCAN, "I/O Intr")
}

record(bo, "$(P)$(R)AlarmTriggerTooWideControl")
{
    field(DTYP, "asynInt32")
    field(OUT,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.ALARM.TRIGGER_TOO_WIDE_CONTROL")
    field(ZNAM, "Enable")
    field(ONAM, "Disable")
    field(VAL,  "1")
    field(PINI, "YES")
    info(autosaveFields, "VAL")
}

record(bi, "$(P)$(R)AlarmTriggerTooWideControlR")
{
    field(DTYP, "asynInt32")
    field(INP,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.ALARM.TRIGGER_TOO_WIDE_CONTROL")
    field(ZNAM, "Enabled")
    field(ONAM, "Disabled")
    field(SCAN, "I/O Intr")
}

record(bo, "$(P)$(R)AlarmTriggerTooNarrowControl")
{
    field(DTYP, "asynInt32")
    field(OUT,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.ALARM.TRIGGER_TOO_NARROW_CONTROL")
    field(ZNAM, "Enable")
    field(ONAM, "Disable")
    field(VAL,  "1")
    field(PINI, "YES")
    info(autosaveFields, "VAL")
}

record(bi, "$(P)$(R)AlarmTriggerTooNarrowControlR")
{
    field(DTYP, "asynInt32")
    field(INP,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.ALARM.TRIGGER_TOO_NARROW_CONTROL")
    field(ZNAM, "Enabled")
    field(ONAM, "Disabled")
    field(SCAN, "I/O Intr")
}

record(bo, "$(P)$(R)AlarmTriggerPeriodTooShortControl")
{
    field(DTYP, "asynInt32")
    field(OUT,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.ALARM.TRIGGER_PERIOD_TOO_SHORT_CONTROL")
    field(ZNAM, "Enable")
    field(ONAM, "Disable")
    field(VAL,  "1")
    field(PINI, "YES")
    info(autosaveFields, "VAL")
}

record(bi, "$(P)$(R)AlarmTriggerPeriodTooShortControlR")
{
    field(DTYP, "asynInt32")
    field(INP,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.ALARM.TRIGGER_PERIOD_TOO_SHORT_CONTROL")
    field(ZNAM, "Enabled")
    field(ONAM, "Disabled")
    field(SCAN, "I/O Intr")
}

record(bi, "$(P)$(R)AlarmAuxClockHoldR")
{
    field(DTYP, "asynInt32")
    field(INP,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.ALARM.AUXILIARY_CLOCK_HOLD")
    field(ZNAM, "No")
    field(ONAM, "Yes")
    field(SCAN, "I/O Intr")
}

record(bi, "$(P)$(R)AlarmProcClockHoldR")
{
    field(DTYP, "asynInt32")
    field(INP,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.ALARM.PROCESSING_CLOCK_HOLD")
    field(ZNAM, "No")
    field(ONAM, "Yes")
    field(SCAN, "I/O Intr")
}

record(bi, "$(P)$(R)AlarmTriggerTooWideHoldR")
{
    field(DTYP, "asynInt32")
    field(INP,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.ALARM.TRIGGER_TOO_WIDE_HOLD")
    field(ZNAM, "No")
    field(ONAM, "Yes")
    field(SCAN, "I/O Intr")
}

record(bi, "$(P)$(R)AlarmTriggerTooNarrowHoldR")
{
    field(DTYP, "asynInt32")
    field(INP,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.ALARM.TRIGGER_TOO_NARROW_HOLD")
    field(ZNAM, "No")
    field(ONAM, "Yes")
    field(SCAN, "I/O Intr")
}

record(bi, "$(P)$(R)AlarmTriggerPeriodTooShortHoldR")
{
    field(DTYP, "asynInt32")
    field(INP,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.ALARM.TRIGGER_PERIOD_TOO_SHORT_HOLD")
    field(ZNAM, "No")
    field(ONAM, "Yes")
    field(SCAN, "I/O Intr")
}

record(bi, "$(P)$(R)AlarmLUTMinTriggerPeriodHoldR")
{
    field(DTYP, "asynInt32")
    field(INP,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.ALARM.LUT_MIN_TRIGGER_PERIOD_HOLD")
    field(ZNAM, "No")
    field(ONAM, "Yes")
    field(SCAN, "I/O Intr")
}

record(bi, "$(P)$(R)AlarmAuxClockFirstR")
{
    field(DTYP, "asynInt32")
    field(INP,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.ALARM.AUXILIARY_CLOCK_FIRST")
    field(ZNAM, "No")
    field(ONAM, "Yes")
    field(SCAN, "I/O Intr")
}

record(bi, "$(P)$(R)AlarmProcClockFirstR")
{
    field(DTYP, "asynInt32")
    field(INP,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.ALARM.PROCESSING_CLOCK_FIRST")
    field(ZNAM, "No")
    field(ONAM, "Yes")
    field(SCAN, "I/O Intr")
}

record(bi, "$(P)$(R)AlarmTriggerTooWideFirstR")
{
    field(DTYP, "asynInt32")
    field(INP,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.ALARM.TRIGGER_TOO_WIDE_FIRST")
    field(ZNAM, "No")
    field(ONAM, "Yes")
    field(SCAN, "I/O Intr")
}

record(bi, "$(P)$(R)AlarmTriggerTooNarrowFirstR")
{
    field(DTYP, "asynInt32")
    field(INP,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.ALARM.TRIGGER_TOO_NARROW_FIRST")
    field(ZNAM, "No")
    field(ONAM, "Yes")
    field(SCAN, "I/O Intr")
}

record(bi, "$(P)$(R)AlarmTriggerPeriodTooShortFirstR")
{
    field(DTYP, "asynInt32")
    field(INP,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.ALARM.TRIGGER_PERIOD_TOO_SHORT_FIRST")
    field(ZNAM, "No")
    field(ONAM, "Yes")
    field(SCAN, "I/O Intr")
}

record(bi, "$(P)$(R)AlarmLUTMinTriggerPeriodFirstR")
{
    field(DTYP, "asynInt32")
    field(INP,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.ALARM.LUT_MIN_TRIGGER_PERIOD_FIRST")
    field(ZNAM, "No")
    field(ONAM, "Yes")
    field(SCAN, "I/O Intr")
}

record(bi, "$(P)$(R)AlarmAuxClockDirectR")
{
    field(DTYP, "asynInt32")
    field(INP,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.ALARM.AUXILIARY_CLOCK_DIRECT")
    field(ZNAM, "No")
    field(ONAM, "Yes")
    field(SCAN, "I/O Intr")
}

record(bi, "$(P)$(R)AlarmProcClockDirectR")
{
    field(DTYP, "asynInt32")
    field(INP,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.ALARM.PROCESSING_CLOCK_DIRECT")
    field(ZNAM, "No")
    field(ONAM, "Yes")
    field(SCAN, "I/O Intr")
}

record(bi, "$(P)$(R)AlarmTriggerTooWideDirectR")
{
    field(DTYP, "asynInt32")
    field(INP,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.ALARM.TRIGGER_TOO_WIDE_DIRECT")
    field(ZNAM, "No")
    field(ONAM, "Yes")
    field(SCAN, "I/O Intr")
}

record(bi, "$(P)$(R)AlarmTriggerTooNarrowDirectR")
{
    field(DTYP, "asynInt32")
    field(INP,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.ALARM.TRIGGER_TOO_NARROW_DIRECT")
    field(ZNAM, "No")
    field(ONAM, "Yes")
    field(SCAN, "I/O Intr")
}

record(bi, "$(P)$(R)AlarmTriggerPeriodTooShortDirectR")
{
    field(DTYP, "asynInt32")
    field(INP,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.ALARM.TRIGGER_PERIOD_TOO_SHORT_DIRECT")
    field(ZNAM, "No")
    field(ONAM, "Yes")
    field(SCAN, "I/O Intr")
}

record(bi, "$(P)$(R)AlarmLUTMinTriggerPeriodDirectR")
{
    field(DTYP, "asynInt32")
    field(INP,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.ALARM.LUT_MIN_TRIGGER_PERIOD_DIRECT")
    field(ZNAM, "No")
    field(ONAM, "Yes")
    field(SCAN, "I/O Intr")
}

record(bi, "$(P)$(R)MainClockMissingR")
{
    field(DTYP, "asynInt32")
    field(INP,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.MAIN_CLOCK_MISSING")
    field(ZNAM, "No")
    field(ONAM, "Yes")
    field(SCAN, "I/O Intr")
}

record(bi, "$(P)$(R)AuxiliaryClockMissingR")
{
    field(DTYP, "asynInt32")
    field(INP,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.AUXILIARY_CLOCK_MISSING")
    field(ZNAM, "No")
    field(ONAM, "Yes")
    field(SCAN, "I/O Intr")
}

record(bo, "$(P)$(R)Ready")
{
    field(DTYP, "asynInt32")
    field(OUT,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.READY")
    field(ZNAM, "NOK")
    field(ONAM, "OK")
    field(VAL,  "0")
    field(PINI, "YES")
    field(ASG,  "critical")
}

record(bi, "$(P)$(R)ReadyR")
{
    field(DTYP, "asynInt32")
    field(INP,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.READY")
    field(ZNAM, "NOK")
    field(ONAM, "OK")
    field(SCAN, "I/O Intr")
}

record(bo, "$(P)$(R)LutControl")
{
    field(DTYP, "asynInt32")
    field(OUT,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.LUT_CONTROL")
    field(ZNAM, "Enable")
    field(ONAM, "Disable")
    field(VAL,  "1")
    field(PINI, "YES")
    field(ASG,  "critical")
    info(autosaveFields, "VAL")
}

record(bi, "$(P)$(R)LutControlR")
{
    field(DTYP, "asynInt32")
    field(INP,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.LUT_CONTROL")
    field(ZNAM, "Enabled")
    field(ONAM, "Disabled")
    field(SCAN, "I/O Intr")
    field(ASG,  "critical")
}

record(bi, "$(P)$(R)ReadyFPGAR")
{
    field(DTYP, "asynInt32")
    field(INP,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.READY_FPGA")
    field(ZNAM, "No")
    field(ONAM, "Yes")
    field(SCAN, "I/O Intr")
}

record(bi, "$(P)$(R)BeamPermitFPGAR")
{
    field(DTYP, "asynInt32")
    field(INP,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.BEAM_PERMIT_FPGA")
    field(ZNAM, "No")
    field(ONAM, "Yes")
    field(SCAN, "I/O Intr")
}

record(bi, "$(P)$(R)HighVoltagePresenceR")
{
    field(DTYP, "asynInt32")
    field(INP,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.HIGH_VOLTAGE_PRESENCE")
    field(ZNAM, "No")
    field(ONAM, "Yes")
    field(SCAN, "I/O Intr")
}

record(bi, "$(P)$(R)HighVoltageOKR")
{
    field(DTYP, "asynInt32")
    field(INP,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.HIGH_VOLTAGE_OK")
    field(ZNAM, "No")
    field(ONAM, "Yes")
    field(SCAN, "I/O Intr")
}

record(bo, "$(P)$(R)EnableCalibrationPulse")
{
    field(DTYP, "asynInt32")
    field(OUT,  "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))BCM.ENABLE_CALIBRATION_PULSE")
    field(ZNAM, "Disable")
    field(ONAM, "Enable")
    field(HIGH, "1")
    field(VAL,  "0")
    field(ASG,  "critical")
}

record(calcout, "$(P)$(R)CalibrationPulseMonitor")
{
    field(INPA, "$(P)$(R)EnableCalibrationPulse CPP")
    field(CALC, "A")
    field(OOPT, "Transition To Zero")
    field(OVAL, "!A")
    field(OUT, "$(P)$(R)CalibrationPulseCounter.PROC")
}

record(calc, "$(P)$(R)CalibrationPulseCounter")
{
    field(INPA, "$(P)$(R)CalibrationPulseCounter")
    field(CALC, "A + 1")
    field(VAL,  "-1")
    field(PINI, "YES")
}

record(ao, "$(P)$(R)CalibrationActualCurrent")
{
    field(PREC, "4")
    field(EGU,  "mA")
    field(ASG,  "critical")
    info(autosaveFields, "VAL")
}