#=================================================================# # Template file: NDPluginBase.template # Database for NDPluginBase, i.e. records common to all plugins # Mark Rivers # April 25, 2008 #=================================================================# # Template file: NDArrayBase.template # Database for area detector control using asyn driver and standard asyn device support # Mark Rivers # March 9, 2008 ################################################################### # This record contains the version of ADCore # ################################################################### record(stringin, "$(CAM):Over$(N):ADCoreVersion_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))ADCORE_VERSION") field(VAL, "Unknown") field(SCAN, "I/O Intr") } ################################################################### # This record contains the version of the driver or plugin # ################################################################### record(stringin, "$(CAM):Over$(N):DriverVersion_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))DRIVER_VERSION") field(VAL, "Unknown") field(SCAN, "I/O Intr") } ################################################################### # This record contains the asyn port name of this detector # ################################################################### record(stringin, "$(CAM):Over$(N):PortName_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))PORT_NAME_SELF") field(VAL, "Unknown") field(SCAN, "I/O Intr") } ################################################################### # These records contain basic information about the detector # ################################################################### record(stringin, "$(CAM):Over$(N):Manufacturer_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))MANUFACTURER") field(VAL, "Unknown") field(SCAN, "I/O Intr") } record(stringin, "$(CAM):Over$(N):Model_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))MODEL") field(VAL, "Unknown") field(SCAN, "I/O Intr") } record(stringin, "$(CAM):Over$(N):SerialNumber_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))SERIAL_NUMBER") field(VAL, "Unknown") field(SCAN, "I/O Intr") } record(stringin, "$(CAM):Over$(N):SDKVersion_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))SDK_VERSION") field(VAL, "Unknown") field(SCAN, "I/O Intr") } record(stringin, "$(CAM):Over$(N):FirmwareVersion_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))FIRMWARE_VERSION") field(VAL, "Unknown") field(SCAN, "I/O Intr") } ################################################################### # These records control acquisition start and stop # ################################################################### record(bo, "$(CAM):Over$(N):Acquire") { field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))ACQUIRE") field(ZNAM, "Done") field(ONAM, "Acquire") field(VAL, "0") field(FLNK, "$(CAM):Over$(N):SetAcquireBusy") info(asyn:READBACK, "1") } record(bi, "$(CAM):Over$(N):Acquire_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))ACQUIRE") field(ZNAM, "Done") field(ZSV, "NO_ALARM") field(ONAM, "Acquiring") field(OSV, "MINOR") field(SCAN, "I/O Intr") } record(calcout, "$(CAM):Over$(N):SetAcquireBusy") { field(INPA, "$(CAM):Over$(N):Acquire NPP") field(CALC, "A") field(OOPT, "Transition To Non-zero") field(OUT, "$(CAM):Over$(N):AcquireBusy PP") } record(busy, "$(CAM):Over$(N):AcquireBusy") { field(ZNAM, "Done") field(ZSV, "NO_ALARM") field(ONAM, "Acquiring") field(OSV, "MINOR") field(VAL, "0") } record(bi, "$(CAM):Over$(N):AcquireBusyCB") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))ACQUIRE_BUSY") field(ZNAM, "Done") field(ZSV, "NO_ALARM") field(ONAM, "Acquiring") field(OSV, "MINOR") field(SCAN, "I/O Intr") } record(calcout, "$(CAM):Over$(N):ClearAcquireBusy") { field(INPA, "$(CAM):Over$(N):AcquireBusyCB CP") field(CALC, "A") field(OOPT, "Transition To Zero") field(OUT, "$(CAM):Over$(N):AcquireBusy PP") } record(bo, "$(CAM):Over$(N):WaitForPlugins") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))WAIT_FOR_PLUGINS") field(ZNAM, "No") field(ONAM, "Yes") field(VAL, "0") } ################################################################### # These records are the array size and data type # ################################################################### # The number of dimensions record(longout, "$(CAM):Over$(N):NDimensions") { field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))ARRAY_NDIMENSIONS") } record(longin, "$(CAM):Over$(N):NDimensions_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))ARRAY_NDIMENSIONS") field(SCAN, "I/O Intr") } # The array dimensions waveform records record(waveform, "$(CAM):Over$(N):Dimensions") { field(DTYP, "asynInt32ArrayOut") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))ARRAY_DIMENSIONS") field(FTVL, "LONG") field(NELM, "10") field(FLNK, "$(CAM):Over$(N):Dim0SA") } record(subArray, "$(CAM):Over$(N):Dim0SA") { field(INP, "$(CAM):Over$(N):Dimensions NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "0") field(FLNK, "$(CAM):Over$(N):ArraySize0") } record(longin, "$(CAM):Over$(N):ArraySize0") { field(INP, "$(CAM):Over$(N):Dim0SA") field(FLNK, "$(CAM):Over$(N):Dim1SA") } record(subArray, "$(CAM):Over$(N):Dim1SA") { field(INP, "$(CAM):Over$(N):Dimensions NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "1") field(FLNK, "$(CAM):Over$(N):ArraySize1") } record(longin, "$(CAM):Over$(N):ArraySize1") { field(INP, "$(CAM):Over$(N):Dim1SA") field(FLNK, "$(CAM):Over$(N):Dim2SA") } record(subArray, "$(CAM):Over$(N):Dim2SA") { field(INP, "$(CAM):Over$(N):Dimensions NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "2") field(FLNK, "$(CAM):Over$(N):ArraySize2") } record(longin, "$(CAM):Over$(N):ArraySize2") { field(INP, "$(CAM):Over$(N):Dim2SA") field(FLNK, "$(CAM):Over$(N):Dim3SA") } record(subArray, "$(CAM):Over$(N):Dim3SA") { field(INP, "$(CAM):Over$(N):Dimensions NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "3") field(FLNK, "$(CAM):Over$(N):ArraySize3") } record(longin, "$(CAM):Over$(N):ArraySize3") { field(INP, "$(CAM):Over$(N):Dim3SA") field(FLNK, "$(CAM):Over$(N):Dim4SA") } record(subArray, "$(CAM):Over$(N):Dim4SA") { field(INP, "$(CAM):Over$(N):Dimensions NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "4") field(FLNK, "$(CAM):Over$(N):ArraySize4") } record(longin, "$(CAM):Over$(N):ArraySize4") { field(INP, "$(CAM):Over$(N):Dim4SA") field(FLNK, "$(CAM):Over$(N):Dim5SA") } record(subArray, "$(CAM):Over$(N):Dim5SA") { field(INP, "$(CAM):Over$(N):Dimensions NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "5") field(FLNK, "$(CAM):Over$(N):ArraySize5") } record(longin, "$(CAM):Over$(N):ArraySize5") { field(INP, "$(CAM):Over$(N):Dim5SA") field(FLNK, "$(CAM):Over$(N):Dim6SA") } record(subArray, "$(CAM):Over$(N):Dim6SA") { field(INP, "$(CAM):Over$(N):Dimensions NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "6") field(FLNK, "$(CAM):Over$(N):ArraySize6") } record(longin, "$(CAM):Over$(N):ArraySize6") { field(INP, "$(CAM):Over$(N):Dim6SA") field(FLNK, "$(CAM):Over$(N):Dim7SA") } record(subArray, "$(CAM):Over$(N):Dim7SA") { field(INP, "$(CAM):Over$(N):Dimensions NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "7") field(FLNK, "$(CAM):Over$(N):ArraySize7") } record(longin, "$(CAM):Over$(N):ArraySize7") { field(INP, "$(CAM):Over$(N):Dim7SA") field(FLNK, "$(CAM):Over$(N):Dim8SA") } record(subArray, "$(CAM):Over$(N):Dim8SA") { field(INP, "$(CAM):Over$(N):Dimensions NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "8") field(FLNK, "$(CAM):Over$(N):ArraySize8") } record(longin, "$(CAM):Over$(N):ArraySize8") { field(INP, "$(CAM):Over$(N):Dim8SA") field(FLNK, "$(CAM):Over$(N):Dim9SA") } record(subArray, "$(CAM):Over$(N):Dim9SA") { field(INP, "$(CAM):Over$(N):Dimensions NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "9") field(FLNK, "$(CAM):Over$(N):ArraySize9") } record(longin, "$(CAM):Over$(N):ArraySize9") { field(INP, "$(CAM):Over$(N):Dim9SA") } record(waveform, "$(CAM):Over$(N):Dimensions_RBV") { field(DTYP, "asynInt32ArrayIn") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))ARRAY_DIMENSIONS") field(FTVL, "LONG") field(NELM, "10") field(FLNK, "$(CAM):Over$(N):Dim0SA_RBV") field(SCAN, "I/O Intr") } record(subArray, "$(CAM):Over$(N):Dim0SA_RBV") { field(INP, "$(CAM):Over$(N):Dimensions_RBV NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "0") field(FLNK, "$(CAM):Over$(N):ArraySize0_RBV") } record(longin, "$(CAM):Over$(N):ArraySize0_RBV") { field(INP, "$(CAM):Over$(N):Dim0SA_RBV") field(FLNK, "$(CAM):Over$(N):Dim1SA_RBV") } record(subArray, "$(CAM):Over$(N):Dim1SA_RBV") { field(INP, "$(CAM):Over$(N):Dimensions_RBV NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "1") field(FLNK, "$(CAM):Over$(N):ArraySize1_RBV") } record(longin, "$(CAM):Over$(N):ArraySize1_RBV") { field(INP, "$(CAM):Over$(N):Dim1SA_RBV") field(FLNK, "$(CAM):Over$(N):Dim2SA_RBV") } record(subArray, "$(CAM):Over$(N):Dim2SA_RBV") { field(INP, "$(CAM):Over$(N):Dimensions_RBV NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "2") field(FLNK, "$(CAM):Over$(N):ArraySize2_RBV") } record(longin, "$(CAM):Over$(N):ArraySize2_RBV") { field(INP, "$(CAM):Over$(N):Dim2SA_RBV") field(FLNK, "$(CAM):Over$(N):Dim3SA_RBV") } record(subArray, "$(CAM):Over$(N):Dim3SA_RBV") { field(INP, "$(CAM):Over$(N):Dimensions_RBV NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "3") field(FLNK, "$(CAM):Over$(N):ArraySize3_RBV") } record(longin, "$(CAM):Over$(N):ArraySize3_RBV") { field(INP, "$(CAM):Over$(N):Dim3SA_RBV") field(FLNK, "$(CAM):Over$(N):Dim4SA_RBV") } record(subArray, "$(CAM):Over$(N):Dim4SA_RBV") { field(INP, "$(CAM):Over$(N):Dimensions_RBV NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "4") field(FLNK, "$(CAM):Over$(N):ArraySize4_RBV") } record(longin, "$(CAM):Over$(N):ArraySize4_RBV") { field(INP, "$(CAM):Over$(N):Dim4SA_RBV") field(FLNK, "$(CAM):Over$(N):Dim5SA_RBV") } record(subArray, "$(CAM):Over$(N):Dim5SA_RBV") { field(INP, "$(CAM):Over$(N):Dimensions_RBV NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "5") field(FLNK, "$(CAM):Over$(N):ArraySize5_RBV") } record(longin, "$(CAM):Over$(N):ArraySize5_RBV") { field(INP, "$(CAM):Over$(N):Dim5SA_RBV") field(FLNK, "$(CAM):Over$(N):Dim6SA_RBV") } record(subArray, "$(CAM):Over$(N):Dim6SA_RBV") { field(INP, "$(CAM):Over$(N):Dimensions_RBV NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "6") field(FLNK, "$(CAM):Over$(N):ArraySize6_RBV") } record(longin, "$(CAM):Over$(N):ArraySize6_RBV") { field(INP, "$(CAM):Over$(N):Dim6SA_RBV") field(FLNK, "$(CAM):Over$(N):Dim7SA_RBV") } record(subArray, "$(CAM):Over$(N):Dim7SA_RBV") { field(INP, "$(CAM):Over$(N):Dimensions_RBV NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "7") field(FLNK, "$(CAM):Over$(N):ArraySize7_RBV") } record(longin, "$(CAM):Over$(N):ArraySize7_RBV") { field(INP, "$(CAM):Over$(N):Dim7SA_RBV") field(FLNK, "$(CAM):Over$(N):Dim8SA_RBV") } record(subArray, "$(CAM):Over$(N):Dim8SA_RBV") { field(INP, "$(CAM):Over$(N):Dimensions_RBV NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "8") field(FLNK, "$(CAM):Over$(N):ArraySize8_RBV") } record(longin, "$(CAM):Over$(N):ArraySize8_RBV") { field(INP, "$(CAM):Over$(N):Dim8SA_RBV") field(FLNK, "$(CAM):Over$(N):Dim9SA_RBV") } record(subArray, "$(CAM):Over$(N):Dim9SA_RBV") { field(INP, "$(CAM):Over$(N):Dimensions_RBV NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "9") field(FLNK, "$(CAM):Over$(N):ArraySize9_RBV") } record(longin, "$(CAM):Over$(N):ArraySize9_RBV") { field(INP, "$(CAM):Over$(N):Dim9SA_RBV") } record(mbbi, "$(CAM):Over$(N):BayerPattern_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))BAYER_PATTERN") field(ZRST, "RGGB") field(ZRVL, "0") field(ONST, "GBRG") field(ONVL, "1") field(TWST, "GRBG") field(TWVL, "2") field(THST, "BGGR") field(THVL, "3") field(SCAN, "I/O Intr") } record(longin, "$(CAM):Over$(N):ArraySizeX_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))ARRAY_SIZE_X") field(SCAN, "I/O Intr") } record(longin, "$(CAM):Over$(N):ArraySizeY_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))ARRAY_SIZE_Y") field(SCAN, "I/O Intr") } record(longin, "$(CAM):Over$(N):ArraySizeZ_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))ARRAY_SIZE_Z") field(SCAN, "I/O Intr") } record(longin, "$(CAM):Over$(N):ArraySize_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))ARRAY_SIZE") field(SCAN, "I/O Intr") } ################################################################### # These records have information on the compression # ################################################################### record(stringin, "$(CAM):Over$(N):Codec_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))CODEC") field(VAL, "") field(SCAN, "I/O Intr") } record(longin, "$(CAM):Over$(N):CompressedSize_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))COMPRESSED_SIZE") field(SCAN, "I/O Intr") } ################################################################### # These records control the data type # ################################################################### record(mbbo, "$(CAM):Over$(N):DataType") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))DATA_TYPE") field(ZRST, "Int8") field(ZRVL, "0") field(ONST, "UInt8") field(ONVL, "1") field(TWST, "Int16") field(TWVL, "2") field(THST, "UInt16") field(THVL, "3") field(FRST, "Int32") field(FRVL, "4") field(FVST, "UInt32") field(FVVL, "5") field(SXST, "Int64") field(SXVL, "6") field(SVST, "UInt64") field(SVVL, "7") field(EIST, "Float32") field(EIVL, "8") field(NIST, "Float64") field(NIVL, "9") field(VAL, "0") info(autosaveFields, "VAL") } record(mbbi, "$(CAM):Over$(N):DataType_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))DATA_TYPE") field(ZRST, "Int8") field(ZRVL, "0") field(ONST, "UInt8") field(ONVL, "1") field(TWST, "Int16") field(TWVL, "2") field(THST, "UInt16") field(THVL, "3") field(FRST, "Int32") field(FRVL, "4") field(FVST, "UInt32") field(FVVL, "5") field(SXST, "Int64") field(SXVL, "6") field(SVST, "UInt64") field(SVVL, "7") field(EIST, "Float32") field(EIVL, "8") field(NIST, "Float64") field(NIVL, "9") field(SCAN, "I/O Intr") } record(longin, "$(CAM):Over$(N):BitsPerPixel_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))BITS_PER_PIXEL") field(SCAN, "I/O Intr") } ################################################################### # These records control the color mode # # These choices must agree with NDColorMode_t in NDArray.h # ################################################################### record(mbbo, "$(CAM):Over$(N):ColorMode") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))COLOR_MODE") field(ZRST, "Mono") field(ZRVL, "0") field(ONST, "Bayer") field(ONVL, "1") field(TWST, "RGB1") field(TWVL, "2") field(THST, "RGB2") field(THVL, "3") field(FRST, "RGB3") field(FRVL, "4") field(FVST, "YUV444") field(FVVL, "5") field(SXST, "YUV422") field(SXVL, "6") field(SVST, "YUV421") field(SVVL, "7") info(autosaveFields, "VAL") } record(mbbi, "$(CAM):Over$(N):ColorMode_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))COLOR_MODE") field(ZRST, "Mono") field(ZRVL, "0") field(ONST, "Bayer") field(ONVL, "1") field(TWST, "RGB1") field(TWVL, "2") field(THST, "RGB2") field(THVL, "3") field(FRST, "RGB3") field(FRVL, "4") field(FVST, "YUV444") field(FVVL, "5") field(SXST, "YUV422") field(SXVL, "6") field(SVST, "YUV421") field(SVVL, "7") field(SCAN, "I/O Intr") } ################################################################### # These records are the uniqueId and time stamps of the array # ################################################################### record(longin, "$(CAM):Over$(N):UniqueId_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))UNIQUE_ID") field(SCAN, "I/O Intr") } record(ai, "$(CAM):Over$(N):TimeStamp_RBV") { field(DTYP, "asynFloat64") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))TIME_STAMP") field(PREC, "3") field(SCAN, "I/O Intr") } record(longin, "$(CAM):Over$(N):EpicsTSSec_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))EPICS_TS_SEC") field(SCAN, "I/O Intr") } record(longin, "$(CAM):Over$(N):EpicsTSNsec_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))EPICS_TS_NSEC") field(SCAN, "I/O Intr") } ################################################################### # These records provide statistics on array callbacks and # # array callback rates # ################################################################### record(longout, "$(CAM):Over$(N):ArrayCounter") { field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))ARRAY_COUNTER") } record(longin, "$(CAM):Over$(N):ArrayCounter_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))ARRAY_COUNTER") field(SCAN, "I/O Intr") field(TSE, "-2") field(LOW, "0" ) field(LSV, "MINOR" ) info(autosaveFields, "DESC LOLO LOW HIGH HIHI LLSV LSV HSV HHSV TSE") } # Updated rate calculation to use a smoothing factor w/ guard against negative values # 0 rate sets alarm state to MINOR record(calc, "$(CAM):Over$(N):ArrayRate_RBV") { field(INPA, "$(CAM):Over$(N):ArrayRate_RBV.LB NPP NMS") # Previous counter (Last B value) field(INPB, "$(CAM):Over$(N):ArrayCounter_RBV NPP NMS") # Current counter value field(INPC, "1.0") # Delta time in seconds field(INPD, "$(CAM):Over$(N):ArrayRate_RBV.VAL NPP NMS") # Previous rate field(INPE, "$(RATE_SMOOTH=0.2)") # Smoothing factor field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") field(PREC, "2" ) field(EGU, "Hz" ) field(SCAN, "1 second") field(LOW, "0") field(LSV, "MINOR") field(ADEL, "0.1") info(autosaveFields, "ADEL DESC LOLO LOW HIGH HIHI LLSV LSV HSV HHSV MDEL PREC C E SCAN EGU") } ################################################################### # These records control NDArray callacks # ################################################################### record(bo, "$(CAM):Over$(N):ArrayCallbacks") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))ARRAY_CALLBACKS") field(ZNAM, "Disable") field(ZSV, "MINOR") field(ONAM, "Enable") field(OSV, "NO_ALARM") field(VAL, "1") info(autosaveFields, "VAL") } record(bi, "$(CAM):Over$(N):ArrayCallbacks_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))ARRAY_CALLBACKS") field(ZNAM, "Disabled") field(ZSV, "MINOR") field(ONAM, "Enabled") field(OSV, "NO_ALARM") field(SCAN, "I/O Intr") } ################################################################### # This record contains macro definitions for the attributes # ################################################################### record(waveform, "$(CAM):Over$(N):NDAttributesMacros") { field(PINI, "YES") field(DTYP, "asynOctetWrite") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))ND_ATTRIBUTES_MACROS") field(FTVL, "CHAR") field(NELM, "256") info(autosaveFields, "VAL") } ################################################################### # This record is the name of a file defining attributes # ################################################################### record(waveform, "$(CAM):Over$(N):NDAttributesFile") { field(PINI, "YES") field(DTYP, "asynOctetWrite") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))ND_ATTRIBUTES_FILE") field(FTVL, "CHAR") field(NELM, "256") info(autosaveFields, "VAL") } ################################################################### # This record defines the status of reading attributes file # ################################################################### record(mbbi, "$(CAM):Over$(N):NDAttributesStatus") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))ND_ATTRIBUTES_STATUS") field(ZRVL, "0") field(ZRST, "Attributes file OK") field(ZRSV, "NO_ALARM") field(ONVL, "1") field(ONST, "File not found") field(ONSV, "MINOR") field(TWVL, "2") field(TWST, "XML syntax error") field(TWSV, "MAJOR") field(THVL, "3") field(THST, "Macro substitution error") field(THSV, "MAJOR") field(SCAN, "I/O Intr") } ################################################################### # Status of NDArrayPool - number of buffers, memory used etc. # ################################################################### record(ai, "$(CAM):Over$(N):PoolMaxMem") { field(DTYP, "asynFloat64") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))POOL_MAX_MEMORY") field(PREC, "1") field(EGU, "MB") field(SCAN, "Passive") field(PINI, "YES") } record(ai, "$(CAM):Over$(N):PoolUsedMem") { field(DTYP, "asynFloat64") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))POOL_USED_MEMORY") field(PREC, "1") field(EGU, "MB") field(SCAN, "1 second") field(FLNK, "$(CAM):Over$(N):PoolAllocBuffers") info(autosaveFields, "SCAN") } record(longin, "$(CAM):Over$(N):PoolAllocBuffers") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))POOL_ALLOC_BUFFERS") field(FLNK, "$(CAM):Over$(N):PoolFreeBuffers") } record(longin, "$(CAM):Over$(N):PoolFreeBuffers") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))POOL_FREE_BUFFERS") field(FLNK, "$(CAM):Over$(N):PoolUsedBuffers") } record(calc, "$(CAM):Over$(N):PoolUsedBuffers") { field(INPA, "$(CAM):Over$(N):PoolAllocBuffers NPP MS") field(INPB, "$(CAM):Over$(N):PoolFreeBuffers NPP MS") field(CALC, "A-B") } record(bo, "$(CAM):Over$(N):EmptyFreeList") { field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))POOL_EMPTY_FREELIST") } record(longin, "$(CAM):Over$(N):NumQueuedArrays") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))NUM_QUEUED_ARRAYS") field(SCAN, "I/O Intr") } ################################################################### # This record contains the type of plugin # ################################################################### record(stringin, "$(CAM):Over$(N):PluginType_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))PLUGIN_TYPE") field(VAL, "Unknown") field(SCAN, "I/O Intr") } ################################################################### # These records control the connection of the server to # # an NDArray driver port and address # ################################################################### # Array port name record(stringout, "$(CAM):Over$(N):NDArrayPort") { field(PINI, "YES") field(DTYP, "asynOctetWrite") field(OUT, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))NDARRAY_PORT") field(VAL, "$(PLUGIN_SRC)") info(autosaveFields, "DESC VAL") } record(stringin, "$(CAM):Over$(N):NDArrayPort_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))NDARRAY_PORT") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):NDArrayAddress") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))NDARRAY_ADDR") field(VAL, "$(NDARRAY_ADDR=0)") info(autosaveFields, "DESC VAL") } record(longin, "$(CAM):Over$(N):NDArrayAddress_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))NDARRAY_ADDR") field(SCAN, "I/O Intr") } ################################################################### # These records control whether callbacks are enabled and # # minimum time between callbacks # ################################################################### record(bo, "$(CAM):Over$(N):EnableCallbacks") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))ENABLE_CALLBACKS") field(ZNAM, "Disabled") field(ONAM, "Enabled") field(VAL, "0") info(autosaveFields, "DESC VAL") } record(bi, "$(CAM):Over$(N):EnableCallbacks_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))ENABLE_CALLBACKS") field(ZNAM, "Disabled") field(ONAM, "Enabled") field(ZSV, "MINOR") field(OSV, "NO_ALARM") field(SCAN, "I/O Intr") } record(ao, "$(CAM):Over$(N):MinCallbackTime") { field(PINI, "YES") field(DTYP, "asynFloat64") field(OUT, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))MIN_CALLBACK_TIME") field(EGU, "s") field(PREC, "3") field(VAL, "0.0") field(DRVL, "0") info(autosaveFields, "VAL") } record(ai, "$(CAM):Over$(N):MinCallbackTime_RBV") { field(DTYP, "asynFloat64") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))MIN_CALLBACK_TIME") field(EGU, "s") field(PREC, "3") field(SCAN, "I/O Intr") } record(ao, "$(CAM):Over$(N):MaxArrayRate") { field(DTYP, "Soft Channel") field(OUT, "$(CAM):Over$(N):MaxArrayRate_COUT PP") field(EGU, "Hz") field(PREC, "3") field(VAL, "0.0") info(autosaveFields, "VAL") } record(calcout, "$(CAM):Over$(N):MaxArrayRate_COUT") { field(INPA, "$(CAM):Over$(N):MaxArrayRate") field(CALC, "A=0?0:1.0/A") field(OUT, "$(CAM):Over$(N):MinCallbackTime PP") } record(calc, "$(CAM):Over$(N):MaxArrayRate_RBV") { field(INPA, "$(CAM):Over$(N):MinCallbackTime_RBV CP") field(CALC, "A=0?0:1.0/A") field(EGU, "Hz") field(PREC, "3") field(SCAN, "Passive") } record(ao, "$(CAM):Over$(N):MaxByteRate") { field(PINI, "YES") field(DTYP, "asynFloat64") field(OUT, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))MAX_BYTE_RATE") field(EGU, "s") field(PREC, "3") field(VAL, "0.0") field(DRVL, "0") info(autosaveFields, "VAL") } record(ai, "$(CAM):Over$(N):MaxByteRate_RBV") { field(DTYP, "asynFloat64") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))MAX_BYTE_RATE") field(EGU, "s") field(PREC, "3") field(SCAN, "I/O Intr") } ################################################################### # This record contains the last execution time of the plugin # ################################################################### record(ai, "$(CAM):Over$(N):ExecutionTime_RBV") { field(DTYP, "asynFloat64") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))EXECUTION_TIME") field(EGU, "ms") field(PREC, "3") field(SCAN, "I/O Intr") } ################################################################### # This record requests that the plugin execute again with the # # same NDArray # ################################################################### record(bo, "$(CAM):Over$(N):ProcessPlugin") { field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))PROCESS_PLUGIN") field(VAL, "1") } ################################################################### # These records control whether callbacks block or not # ################################################################### record(bo, "$(CAM):Over$(N):BlockingCallbacks") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))BLOCKING_CALLBACKS") field(ZNAM, "No") field(ONAM, "Yes") field(VAL, "0") info(autosaveFields, "DESC ZSV OSV VAL") } record(bi, "$(CAM):Over$(N):BlockingCallbacks_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))BLOCKING_CALLBACKS") field(ZNAM, "No") field(ONAM, "Yes") field(ZSV, "NO_ALARM") field(OSV, "MINOR") field(SCAN, "I/O Intr") info( autosaveFields, "DESC ZSV OSV" ) } record(longout, "$(CAM):Over$(N):DroppedArrays") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))DROPPED_ARRAYS") field(VAL, "0") info( autosaveFields, "DESC LOLO LOW HIGH HIHI LLSV LSV HSV HHSV EGU" ) } record(longin, "$(CAM):Over$(N):DroppedArrays_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))DROPPED_ARRAYS") field(SCAN, "I/O Intr") field(HIGH, "1") field(HSV, "MINOR") info( autosaveFields, "DESC LOLO LOW HIGH HIHI LLSV LSV HSV HHSV EGU" ) } record(longout, "$(CAM):Over$(N):QueueSize") { field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))QUEUE_SIZE") field(PINI, "YES") info( autosaveFields, "DESC EGU" ) } record(longin, "$(CAM):Over$(N):QueueSize_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))QUEUE_SIZE") field(FLNK, "$(CAM):Over$(N):QueueFreeLow") field(SCAN, "I/O Intr") } record(calcout, "$(CAM):Over$(N):QueueFreeLow") { field(CALC, "A*0.25") field(INPA, "$(CAM):Over$(N):QueueSize") field(OUT, "$(CAM):Over$(N):QueueFree.LOW") field(FLNK, "$(CAM):Over$(N):QueueUseHIGH") } # Set a HIGH warning level for the input queue fill level to 75% # of the full size of the queue record(calcout, "$(CAM):Over$(N):QueueUseHIGH") { field(CALC, "A*0.75") field(INPA, "$(CAM):Over$(N):QueueSize") field(OUT, "$(CAM):Over$(N):QueueUse.HIGH") field(FLNK, "$(CAM):Over$(N):QueueUseHIHI") } # Set a HIHI level for the input queue fill level to indicate an error # (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) record(calcout, "$(CAM):Over$(N):QueueUseHIHI") { field(CALC, "A*1.0") field(INPA, "$(CAM):Over$(N):QueueSize") field(OUT, "$(CAM):Over$(N):QueueUse.HIHI") } record(longin, "$(CAM):Over$(N):QueueFree") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))QUEUE_FREE") field(LLSV, "MAJOR") field(LSV, "MINOR") field(LOLO, "0") field(HYST, "1") field(SCAN, "I/O Intr") } # Display the fill level on the plugins input queue record(calc, "$(CAM):Over$(N):QueueUse") { field(CALC, "A-B") field(INPA, "$(CAM):Over$(N):QueueSize") field(INPB, "$(CAM):Over$(N):QueueFree CP") field(SCAN, "Passive") field(HHSV, "MAJOR") field(HSV, "MINOR") field(HYST, "1") } record(longout, "$(CAM):Over$(N):NumThreads") { field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))NUM_THREADS") field(VAL, "1") field(PINI, "YES") info(autosaveFields, "DESC VAL") } record(longin, "$(CAM):Over$(N):NumThreads_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))NUM_THREADS") field(SCAN, "I/O Intr") } record(longin, "$(CAM):Over$(N):MaxThreads_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))MAX_THREADS") field(SCAN, "I/O Intr") } ################################################################### # These records control output array sorting # ################################################################### record(mbbo, "$(CAM):Over$(N):SortMode") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))SORT_MODE") field(ZRVL, "0") field(ZRST, "Unsorted") field(ONVL, "1") field(ONST, "Sorted") } record(mbbi, "$(CAM):Over$(N):SortMode_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))SORT_MODE") field(ZRVL, "0") field(ZRST, "Unsorted") field(ONVL, "1") field(ONST, "Sorted") field(SCAN, "I/O Intr") } record(ao, "$(CAM):Over$(N):SortTime") { field(PINI, "YES") field(DTYP, "asynFloat64") field(OUT, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))SORT_TIME") field(PREC, "3") field(VAL, "0.1") } record(ai, "$(CAM):Over$(N):SortTime_RBV") { field(DTYP, "asynFloat64") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))SORT_TIME") field(PREC, "3") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):SortSize") { field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))SORT_SIZE") field(VAL, "20") field(PINI, "YES") } record(longin, "$(CAM):Over$(N):SortSize_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))SORT_SIZE") field(FLNK, "$(CAM):Over$(N):SortFreeLow") field(SCAN, "I/O Intr") } record(longin, "$(CAM):Over$(N):SortFree") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))SORT_FREE") field(LLSV, "MAJOR") field(LSV, "MINOR") field(LOLO, "0") field(HYST, "1") field(SCAN, "I/O Intr") } record(calcout, "$(CAM):Over$(N):SortFreeLow") { field(CALC, "A*0.25") field(INPA, "$(CAM):Over$(N):SortSize") field(OUT, "$(CAM):Over$(N):SortFree.LOW") } record(longout, "$(CAM):Over$(N):DroppedOutputArrays") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))DROPPED_OUTPUT_ARRAYS") field(VAL, "0") } record(longin, "$(CAM):Over$(N):DroppedOutputArrays_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))DROPPED_OUTPUT_ARRAYS") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):DisorderedArrays") { field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))DISORDERED_ARRAYS") field(PINI, "YES") } record(longin, "$(CAM):Over$(N):DisorderedArrays_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))DISORDERED_ARRAYS") field(SCAN, "I/O Intr") } ################################################################### # The asynRecord is used for mainly for trace mask # ################################################################### # Set ASYN_TRACEIO_HEX bit by default record(asyn,"$(CAM):Over$(N):AsynIO") { field(PORT, "Over$(N)") field(TIB2,"1") info("ADType", "ADPlugin") } #=================================================================# # Template file: NDOverlay.template # Database for NDPluginOverlay asyn driver and standard asyn device support # Mark Rivers # March 25, 2010 #=================================================================# # Template file: NDPluginBase.template # Database for NDPluginBase, i.e. records common to all plugins # Mark Rivers # April 25, 2008 #=================================================================# # Template file: NDArrayBase.template # Database for area detector control using asyn driver and standard asyn device support # Mark Rivers # March 9, 2008 ################################################################### # This record contains the version of ADCore # ################################################################### record(stringin, "$(CAM):Over$(N):ADCoreVersion_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))ADCORE_VERSION") field(VAL, "Unknown") field(SCAN, "I/O Intr") } ################################################################### # This record contains the version of the driver or plugin # ################################################################### record(stringin, "$(CAM):Over$(N):DriverVersion_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))DRIVER_VERSION") field(VAL, "Unknown") field(SCAN, "I/O Intr") } ################################################################### # This record contains the asyn port name of this detector # ################################################################### record(stringin, "$(CAM):Over$(N):PortName_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))PORT_NAME_SELF") field(VAL, "Unknown") field(SCAN, "I/O Intr") } ################################################################### # These records contain basic information about the detector # ################################################################### record(stringin, "$(CAM):Over$(N):Manufacturer_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))MANUFACTURER") field(VAL, "Unknown") field(SCAN, "I/O Intr") } record(stringin, "$(CAM):Over$(N):Model_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))MODEL") field(VAL, "Unknown") field(SCAN, "I/O Intr") } record(stringin, "$(CAM):Over$(N):SerialNumber_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))SERIAL_NUMBER") field(VAL, "Unknown") field(SCAN, "I/O Intr") } record(stringin, "$(CAM):Over$(N):SDKVersion_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))SDK_VERSION") field(VAL, "Unknown") field(SCAN, "I/O Intr") } record(stringin, "$(CAM):Over$(N):FirmwareVersion_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))FIRMWARE_VERSION") field(VAL, "Unknown") field(SCAN, "I/O Intr") } ################################################################### # These records control acquisition start and stop # ################################################################### record(bo, "$(CAM):Over$(N):Acquire") { field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))ACQUIRE") field(ZNAM, "Done") field(ONAM, "Acquire") field(VAL, "0") field(FLNK, "$(CAM):Over$(N):SetAcquireBusy") info(asyn:READBACK, "1") } record(bi, "$(CAM):Over$(N):Acquire_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))ACQUIRE") field(ZNAM, "Done") field(ZSV, "NO_ALARM") field(ONAM, "Acquiring") field(OSV, "MINOR") field(SCAN, "I/O Intr") } record(calcout, "$(CAM):Over$(N):SetAcquireBusy") { field(INPA, "$(CAM):Over$(N):Acquire NPP") field(CALC, "A") field(OOPT, "Transition To Non-zero") field(OUT, "$(CAM):Over$(N):AcquireBusy PP") } record(busy, "$(CAM):Over$(N):AcquireBusy") { field(ZNAM, "Done") field(ZSV, "NO_ALARM") field(ONAM, "Acquiring") field(OSV, "MINOR") field(VAL, "0") } record(bi, "$(CAM):Over$(N):AcquireBusyCB") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))ACQUIRE_BUSY") field(ZNAM, "Done") field(ZSV, "NO_ALARM") field(ONAM, "Acquiring") field(OSV, "MINOR") field(SCAN, "I/O Intr") } record(calcout, "$(CAM):Over$(N):ClearAcquireBusy") { field(INPA, "$(CAM):Over$(N):AcquireBusyCB CP") field(CALC, "A") field(OOPT, "Transition To Zero") field(OUT, "$(CAM):Over$(N):AcquireBusy PP") } record(bo, "$(CAM):Over$(N):WaitForPlugins") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))WAIT_FOR_PLUGINS") field(ZNAM, "No") field(ONAM, "Yes") field(VAL, "0") } ################################################################### # These records are the array size and data type # ################################################################### # The number of dimensions record(longout, "$(CAM):Over$(N):NDimensions") { field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))ARRAY_NDIMENSIONS") } record(longin, "$(CAM):Over$(N):NDimensions_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))ARRAY_NDIMENSIONS") field(SCAN, "I/O Intr") } # The array dimensions waveform records record(waveform, "$(CAM):Over$(N):Dimensions") { field(DTYP, "asynInt32ArrayOut") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))ARRAY_DIMENSIONS") field(FTVL, "LONG") field(NELM, "10") field(FLNK, "$(CAM):Over$(N):Dim0SA") } record(subArray, "$(CAM):Over$(N):Dim0SA") { field(INP, "$(CAM):Over$(N):Dimensions NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "0") field(FLNK, "$(CAM):Over$(N):ArraySize0") } record(longin, "$(CAM):Over$(N):ArraySize0") { field(INP, "$(CAM):Over$(N):Dim0SA") field(FLNK, "$(CAM):Over$(N):Dim1SA") } record(subArray, "$(CAM):Over$(N):Dim1SA") { field(INP, "$(CAM):Over$(N):Dimensions NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "1") field(FLNK, "$(CAM):Over$(N):ArraySize1") } record(longin, "$(CAM):Over$(N):ArraySize1") { field(INP, "$(CAM):Over$(N):Dim1SA") field(FLNK, "$(CAM):Over$(N):Dim2SA") } record(subArray, "$(CAM):Over$(N):Dim2SA") { field(INP, "$(CAM):Over$(N):Dimensions NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "2") field(FLNK, "$(CAM):Over$(N):ArraySize2") } record(longin, "$(CAM):Over$(N):ArraySize2") { field(INP, "$(CAM):Over$(N):Dim2SA") field(FLNK, "$(CAM):Over$(N):Dim3SA") } record(subArray, "$(CAM):Over$(N):Dim3SA") { field(INP, "$(CAM):Over$(N):Dimensions NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "3") field(FLNK, "$(CAM):Over$(N):ArraySize3") } record(longin, "$(CAM):Over$(N):ArraySize3") { field(INP, "$(CAM):Over$(N):Dim3SA") field(FLNK, "$(CAM):Over$(N):Dim4SA") } record(subArray, "$(CAM):Over$(N):Dim4SA") { field(INP, "$(CAM):Over$(N):Dimensions NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "4") field(FLNK, "$(CAM):Over$(N):ArraySize4") } record(longin, "$(CAM):Over$(N):ArraySize4") { field(INP, "$(CAM):Over$(N):Dim4SA") field(FLNK, "$(CAM):Over$(N):Dim5SA") } record(subArray, "$(CAM):Over$(N):Dim5SA") { field(INP, "$(CAM):Over$(N):Dimensions NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "5") field(FLNK, "$(CAM):Over$(N):ArraySize5") } record(longin, "$(CAM):Over$(N):ArraySize5") { field(INP, "$(CAM):Over$(N):Dim5SA") field(FLNK, "$(CAM):Over$(N):Dim6SA") } record(subArray, "$(CAM):Over$(N):Dim6SA") { field(INP, "$(CAM):Over$(N):Dimensions NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "6") field(FLNK, "$(CAM):Over$(N):ArraySize6") } record(longin, "$(CAM):Over$(N):ArraySize6") { field(INP, "$(CAM):Over$(N):Dim6SA") field(FLNK, "$(CAM):Over$(N):Dim7SA") } record(subArray, "$(CAM):Over$(N):Dim7SA") { field(INP, "$(CAM):Over$(N):Dimensions NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "7") field(FLNK, "$(CAM):Over$(N):ArraySize7") } record(longin, "$(CAM):Over$(N):ArraySize7") { field(INP, "$(CAM):Over$(N):Dim7SA") field(FLNK, "$(CAM):Over$(N):Dim8SA") } record(subArray, "$(CAM):Over$(N):Dim8SA") { field(INP, "$(CAM):Over$(N):Dimensions NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "8") field(FLNK, "$(CAM):Over$(N):ArraySize8") } record(longin, "$(CAM):Over$(N):ArraySize8") { field(INP, "$(CAM):Over$(N):Dim8SA") field(FLNK, "$(CAM):Over$(N):Dim9SA") } record(subArray, "$(CAM):Over$(N):Dim9SA") { field(INP, "$(CAM):Over$(N):Dimensions NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "9") field(FLNK, "$(CAM):Over$(N):ArraySize9") } record(longin, "$(CAM):Over$(N):ArraySize9") { field(INP, "$(CAM):Over$(N):Dim9SA") } record(waveform, "$(CAM):Over$(N):Dimensions_RBV") { field(DTYP, "asynInt32ArrayIn") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))ARRAY_DIMENSIONS") field(FTVL, "LONG") field(NELM, "10") field(FLNK, "$(CAM):Over$(N):Dim0SA_RBV") field(SCAN, "I/O Intr") } record(subArray, "$(CAM):Over$(N):Dim0SA_RBV") { field(INP, "$(CAM):Over$(N):Dimensions_RBV NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "0") field(FLNK, "$(CAM):Over$(N):ArraySize0_RBV") } record(longin, "$(CAM):Over$(N):ArraySize0_RBV") { field(INP, "$(CAM):Over$(N):Dim0SA_RBV") field(FLNK, "$(CAM):Over$(N):Dim1SA_RBV") } record(subArray, "$(CAM):Over$(N):Dim1SA_RBV") { field(INP, "$(CAM):Over$(N):Dimensions_RBV NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "1") field(FLNK, "$(CAM):Over$(N):ArraySize1_RBV") } record(longin, "$(CAM):Over$(N):ArraySize1_RBV") { field(INP, "$(CAM):Over$(N):Dim1SA_RBV") field(FLNK, "$(CAM):Over$(N):Dim2SA_RBV") } record(subArray, "$(CAM):Over$(N):Dim2SA_RBV") { field(INP, "$(CAM):Over$(N):Dimensions_RBV NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "2") field(FLNK, "$(CAM):Over$(N):ArraySize2_RBV") } record(longin, "$(CAM):Over$(N):ArraySize2_RBV") { field(INP, "$(CAM):Over$(N):Dim2SA_RBV") field(FLNK, "$(CAM):Over$(N):Dim3SA_RBV") } record(subArray, "$(CAM):Over$(N):Dim3SA_RBV") { field(INP, "$(CAM):Over$(N):Dimensions_RBV NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "3") field(FLNK, "$(CAM):Over$(N):ArraySize3_RBV") } record(longin, "$(CAM):Over$(N):ArraySize3_RBV") { field(INP, "$(CAM):Over$(N):Dim3SA_RBV") field(FLNK, "$(CAM):Over$(N):Dim4SA_RBV") } record(subArray, "$(CAM):Over$(N):Dim4SA_RBV") { field(INP, "$(CAM):Over$(N):Dimensions_RBV NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "4") field(FLNK, "$(CAM):Over$(N):ArraySize4_RBV") } record(longin, "$(CAM):Over$(N):ArraySize4_RBV") { field(INP, "$(CAM):Over$(N):Dim4SA_RBV") field(FLNK, "$(CAM):Over$(N):Dim5SA_RBV") } record(subArray, "$(CAM):Over$(N):Dim5SA_RBV") { field(INP, "$(CAM):Over$(N):Dimensions_RBV NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "5") field(FLNK, "$(CAM):Over$(N):ArraySize5_RBV") } record(longin, "$(CAM):Over$(N):ArraySize5_RBV") { field(INP, "$(CAM):Over$(N):Dim5SA_RBV") field(FLNK, "$(CAM):Over$(N):Dim6SA_RBV") } record(subArray, "$(CAM):Over$(N):Dim6SA_RBV") { field(INP, "$(CAM):Over$(N):Dimensions_RBV NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "6") field(FLNK, "$(CAM):Over$(N):ArraySize6_RBV") } record(longin, "$(CAM):Over$(N):ArraySize6_RBV") { field(INP, "$(CAM):Over$(N):Dim6SA_RBV") field(FLNK, "$(CAM):Over$(N):Dim7SA_RBV") } record(subArray, "$(CAM):Over$(N):Dim7SA_RBV") { field(INP, "$(CAM):Over$(N):Dimensions_RBV NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "7") field(FLNK, "$(CAM):Over$(N):ArraySize7_RBV") } record(longin, "$(CAM):Over$(N):ArraySize7_RBV") { field(INP, "$(CAM):Over$(N):Dim7SA_RBV") field(FLNK, "$(CAM):Over$(N):Dim8SA_RBV") } record(subArray, "$(CAM):Over$(N):Dim8SA_RBV") { field(INP, "$(CAM):Over$(N):Dimensions_RBV NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "8") field(FLNK, "$(CAM):Over$(N):ArraySize8_RBV") } record(longin, "$(CAM):Over$(N):ArraySize8_RBV") { field(INP, "$(CAM):Over$(N):Dim8SA_RBV") field(FLNK, "$(CAM):Over$(N):Dim9SA_RBV") } record(subArray, "$(CAM):Over$(N):Dim9SA_RBV") { field(INP, "$(CAM):Over$(N):Dimensions_RBV NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "9") field(FLNK, "$(CAM):Over$(N):ArraySize9_RBV") } record(longin, "$(CAM):Over$(N):ArraySize9_RBV") { field(INP, "$(CAM):Over$(N):Dim9SA_RBV") } record(mbbi, "$(CAM):Over$(N):BayerPattern_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))BAYER_PATTERN") field(ZRST, "RGGB") field(ZRVL, "0") field(ONST, "GBRG") field(ONVL, "1") field(TWST, "GRBG") field(TWVL, "2") field(THST, "BGGR") field(THVL, "3") field(SCAN, "I/O Intr") } record(longin, "$(CAM):Over$(N):ArraySizeX_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))ARRAY_SIZE_X") field(SCAN, "I/O Intr") } record(longin, "$(CAM):Over$(N):ArraySizeY_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))ARRAY_SIZE_Y") field(SCAN, "I/O Intr") } record(longin, "$(CAM):Over$(N):ArraySizeZ_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))ARRAY_SIZE_Z") field(SCAN, "I/O Intr") } record(longin, "$(CAM):Over$(N):ArraySize_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))ARRAY_SIZE") field(SCAN, "I/O Intr") } ################################################################### # These records have information on the compression # ################################################################### record(stringin, "$(CAM):Over$(N):Codec_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))CODEC") field(VAL, "") field(SCAN, "I/O Intr") } record(longin, "$(CAM):Over$(N):CompressedSize_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))COMPRESSED_SIZE") field(SCAN, "I/O Intr") } ################################################################### # These records control the data type # ################################################################### record(mbbo, "$(CAM):Over$(N):DataType") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))DATA_TYPE") field(ZRST, "Int8") field(ZRVL, "0") field(ONST, "UInt8") field(ONVL, "1") field(TWST, "Int16") field(TWVL, "2") field(THST, "UInt16") field(THVL, "3") field(FRST, "Int32") field(FRVL, "4") field(FVST, "UInt32") field(FVVL, "5") field(SXST, "Int64") field(SXVL, "6") field(SVST, "UInt64") field(SVVL, "7") field(EIST, "Float32") field(EIVL, "8") field(NIST, "Float64") field(NIVL, "9") field(VAL, "0") info(autosaveFields, "VAL") } record(mbbi, "$(CAM):Over$(N):DataType_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))DATA_TYPE") field(ZRST, "Int8") field(ZRVL, "0") field(ONST, "UInt8") field(ONVL, "1") field(TWST, "Int16") field(TWVL, "2") field(THST, "UInt16") field(THVL, "3") field(FRST, "Int32") field(FRVL, "4") field(FVST, "UInt32") field(FVVL, "5") field(SXST, "Int64") field(SXVL, "6") field(SVST, "UInt64") field(SVVL, "7") field(EIST, "Float32") field(EIVL, "8") field(NIST, "Float64") field(NIVL, "9") field(SCAN, "I/O Intr") } record(longin, "$(CAM):Over$(N):BitsPerPixel_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))BITS_PER_PIXEL") field(SCAN, "I/O Intr") } ################################################################### # These records control the color mode # # These choices must agree with NDColorMode_t in NDArray.h # ################################################################### record(mbbo, "$(CAM):Over$(N):ColorMode") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))COLOR_MODE") field(ZRST, "Mono") field(ZRVL, "0") field(ONST, "Bayer") field(ONVL, "1") field(TWST, "RGB1") field(TWVL, "2") field(THST, "RGB2") field(THVL, "3") field(FRST, "RGB3") field(FRVL, "4") field(FVST, "YUV444") field(FVVL, "5") field(SXST, "YUV422") field(SXVL, "6") field(SVST, "YUV421") field(SVVL, "7") info(autosaveFields, "VAL") } record(mbbi, "$(CAM):Over$(N):ColorMode_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))COLOR_MODE") field(ZRST, "Mono") field(ZRVL, "0") field(ONST, "Bayer") field(ONVL, "1") field(TWST, "RGB1") field(TWVL, "2") field(THST, "RGB2") field(THVL, "3") field(FRST, "RGB3") field(FRVL, "4") field(FVST, "YUV444") field(FVVL, "5") field(SXST, "YUV422") field(SXVL, "6") field(SVST, "YUV421") field(SVVL, "7") field(SCAN, "I/O Intr") } ################################################################### # These records are the uniqueId and time stamps of the array # ################################################################### record(longin, "$(CAM):Over$(N):UniqueId_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))UNIQUE_ID") field(SCAN, "I/O Intr") } record(ai, "$(CAM):Over$(N):TimeStamp_RBV") { field(DTYP, "asynFloat64") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))TIME_STAMP") field(PREC, "3") field(SCAN, "I/O Intr") } record(longin, "$(CAM):Over$(N):EpicsTSSec_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))EPICS_TS_SEC") field(SCAN, "I/O Intr") } record(longin, "$(CAM):Over$(N):EpicsTSNsec_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))EPICS_TS_NSEC") field(SCAN, "I/O Intr") } ################################################################### # These records provide statistics on array callbacks and # # array callback rates # ################################################################### record(longout, "$(CAM):Over$(N):ArrayCounter") { field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))ARRAY_COUNTER") } record(longin, "$(CAM):Over$(N):ArrayCounter_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))ARRAY_COUNTER") field(SCAN, "I/O Intr") field(TSE, "-2") field(LOW, "0" ) field(LSV, "MINOR" ) info(autosaveFields, "DESC LOLO LOW HIGH HIHI LLSV LSV HSV HHSV TSE") } # Updated rate calculation to use a smoothing factor w/ guard against negative values # 0 rate sets alarm state to MINOR record(calc, "$(CAM):Over$(N):ArrayRate_RBV") { field(INPA, "$(CAM):Over$(N):ArrayRate_RBV.LB NPP NMS") # Previous counter (Last B value) field(INPB, "$(CAM):Over$(N):ArrayCounter_RBV NPP NMS") # Current counter value field(INPC, "1.0") # Delta time in seconds field(INPD, "$(CAM):Over$(N):ArrayRate_RBV.VAL NPP NMS") # Previous rate field(INPE, "0.0") # Smoothing factor field(CALC, "(D*E)/C+MAX(0,B-A)*(1-E)/C") field(PREC, "2" ) field(EGU, "Hz" ) field(SCAN, "1 second") field(LOW, "0") field(LSV, "MINOR") field(ADEL, "0.1") info(autosaveFields, "ADEL DESC LOLO LOW HIGH HIHI LLSV LSV HSV HHSV MDEL PREC C E SCAN EGU") } ################################################################### # These records control NDArray callacks # ################################################################### record(bo, "$(CAM):Over$(N):ArrayCallbacks") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))ARRAY_CALLBACKS") field(ZNAM, "Disable") field(ZSV, "MINOR") field(ONAM, "Enable") field(OSV, "NO_ALARM") field(VAL, "1") info(autosaveFields, "VAL") } record(bi, "$(CAM):Over$(N):ArrayCallbacks_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))ARRAY_CALLBACKS") field(ZNAM, "Disabled") field(ZSV, "MINOR") field(ONAM, "Enabled") field(OSV, "NO_ALARM") field(SCAN, "I/O Intr") } ################################################################### # This record contains macro definitions for the attributes # ################################################################### record(waveform, "$(CAM):Over$(N):NDAttributesMacros") { field(PINI, "YES") field(DTYP, "asynOctetWrite") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))ND_ATTRIBUTES_MACROS") field(FTVL, "CHAR") field(NELM, "256") info(autosaveFields, "VAL") } ################################################################### # This record is the name of a file defining attributes # ################################################################### record(waveform, "$(CAM):Over$(N):NDAttributesFile") { field(PINI, "YES") field(DTYP, "asynOctetWrite") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))ND_ATTRIBUTES_FILE") field(FTVL, "CHAR") field(NELM, "256") info(autosaveFields, "VAL") } ################################################################### # This record defines the status of reading attributes file # ################################################################### record(mbbi, "$(CAM):Over$(N):NDAttributesStatus") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))ND_ATTRIBUTES_STATUS") field(ZRVL, "0") field(ZRST, "Attributes file OK") field(ZRSV, "NO_ALARM") field(ONVL, "1") field(ONST, "File not found") field(ONSV, "MINOR") field(TWVL, "2") field(TWST, "XML syntax error") field(TWSV, "MAJOR") field(THVL, "3") field(THST, "Macro substitution error") field(THSV, "MAJOR") field(SCAN, "I/O Intr") } ################################################################### # Status of NDArrayPool - number of buffers, memory used etc. # ################################################################### record(ai, "$(CAM):Over$(N):PoolMaxMem") { field(DTYP, "asynFloat64") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))POOL_MAX_MEMORY") field(PREC, "1") field(EGU, "MB") field(SCAN, "Passive") field(PINI, "YES") } record(ai, "$(CAM):Over$(N):PoolUsedMem") { field(DTYP, "asynFloat64") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))POOL_USED_MEMORY") field(PREC, "1") field(EGU, "MB") field(SCAN, "1 second") field(FLNK, "$(CAM):Over$(N):PoolAllocBuffers") info(autosaveFields, "SCAN") } record(longin, "$(CAM):Over$(N):PoolAllocBuffers") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))POOL_ALLOC_BUFFERS") field(FLNK, "$(CAM):Over$(N):PoolFreeBuffers") } record(longin, "$(CAM):Over$(N):PoolFreeBuffers") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))POOL_FREE_BUFFERS") field(FLNK, "$(CAM):Over$(N):PoolUsedBuffers") } record(calc, "$(CAM):Over$(N):PoolUsedBuffers") { field(INPA, "$(CAM):Over$(N):PoolAllocBuffers NPP MS") field(INPB, "$(CAM):Over$(N):PoolFreeBuffers NPP MS") field(CALC, "A-B") } record(bo, "$(CAM):Over$(N):EmptyFreeList") { field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))POOL_EMPTY_FREELIST") } record(longin, "$(CAM):Over$(N):NumQueuedArrays") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))NUM_QUEUED_ARRAYS") field(SCAN, "I/O Intr") } ################################################################### # This record contains the type of plugin # ################################################################### record(stringin, "$(CAM):Over$(N):PluginType_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))PLUGIN_TYPE") field(VAL, "Unknown") field(SCAN, "I/O Intr") } ################################################################### # These records control the connection of the server to # # an NDArray driver port and address # ################################################################### # Array port name record(stringout, "$(CAM):Over$(N):NDArrayPort") { field(PINI, "YES") field(DTYP, "asynOctetWrite") field(OUT, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))NDARRAY_PORT") field(VAL, "$(PLUGIN_SRC)") info(autosaveFields, "DESC VAL") } record(stringin, "$(CAM):Over$(N):NDArrayPort_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))NDARRAY_PORT") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):NDArrayAddress") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))NDARRAY_ADDR") field(VAL, "$(NDARRAY_ADDR=0)") info(autosaveFields, "DESC VAL") } record(longin, "$(CAM):Over$(N):NDArrayAddress_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))NDARRAY_ADDR") field(SCAN, "I/O Intr") } ################################################################### # These records control whether callbacks are enabled and # # minimum time between callbacks # ################################################################### record(bo, "$(CAM):Over$(N):EnableCallbacks") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))ENABLE_CALLBACKS") field(ZNAM, "Disabled") field(ONAM, "Enabled") field(VAL, "0") info(autosaveFields, "DESC VAL") } record(bi, "$(CAM):Over$(N):EnableCallbacks_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))ENABLE_CALLBACKS") field(ZNAM, "Disabled") field(ONAM, "Enabled") field(ZSV, "MINOR") field(OSV, "NO_ALARM") field(SCAN, "I/O Intr") } record(ao, "$(CAM):Over$(N):MinCallbackTime") { field(PINI, "YES") field(DTYP, "asynFloat64") field(OUT, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))MIN_CALLBACK_TIME") field(EGU, "s") field(PREC, "3") field(VAL, "0.0") field(DRVL, "0") info(autosaveFields, "VAL") } record(ai, "$(CAM):Over$(N):MinCallbackTime_RBV") { field(DTYP, "asynFloat64") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))MIN_CALLBACK_TIME") field(EGU, "s") field(PREC, "3") field(SCAN, "I/O Intr") } record(ao, "$(CAM):Over$(N):MaxArrayRate") { field(DTYP, "Soft Channel") field(OUT, "$(CAM):Over$(N):MaxArrayRate_COUT PP") field(EGU, "Hz") field(PREC, "3") field(VAL, "0.0") info(autosaveFields, "VAL") } record(calcout, "$(CAM):Over$(N):MaxArrayRate_COUT") { field(INPA, "$(CAM):Over$(N):MaxArrayRate") field(CALC, "A=0?0:1.0/A") field(OUT, "$(CAM):Over$(N):MinCallbackTime PP") } record(calc, "$(CAM):Over$(N):MaxArrayRate_RBV") { field(INPA, "$(CAM):Over$(N):MinCallbackTime_RBV CP") field(CALC, "A=0?0:1.0/A") field(EGU, "Hz") field(PREC, "3") field(SCAN, "Passive") } record(ao, "$(CAM):Over$(N):MaxByteRate") { field(PINI, "YES") field(DTYP, "asynFloat64") field(OUT, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))MAX_BYTE_RATE") field(EGU, "s") field(PREC, "3") field(VAL, "0.0") field(DRVL, "0") info(autosaveFields, "VAL") } record(ai, "$(CAM):Over$(N):MaxByteRate_RBV") { field(DTYP, "asynFloat64") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))MAX_BYTE_RATE") field(EGU, "s") field(PREC, "3") field(SCAN, "I/O Intr") } ################################################################### # This record contains the last execution time of the plugin # ################################################################### record(ai, "$(CAM):Over$(N):ExecutionTime_RBV") { field(DTYP, "asynFloat64") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))EXECUTION_TIME") field(EGU, "ms") field(PREC, "3") field(SCAN, "I/O Intr") } ################################################################### # This record requests that the plugin execute again with the # # same NDArray # ################################################################### record(bo, "$(CAM):Over$(N):ProcessPlugin") { field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))PROCESS_PLUGIN") field(VAL, "1") } ################################################################### # These records control whether callbacks block or not # ################################################################### record(bo, "$(CAM):Over$(N):BlockingCallbacks") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))BLOCKING_CALLBACKS") field(ZNAM, "No") field(ONAM, "Yes") field(VAL, "0") info(autosaveFields, "DESC ZSV OSV VAL") } record(bi, "$(CAM):Over$(N):BlockingCallbacks_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))BLOCKING_CALLBACKS") field(ZNAM, "No") field(ONAM, "Yes") field(ZSV, "NO_ALARM") field(OSV, "MINOR") field(SCAN, "I/O Intr") info( autosaveFields, "DESC ZSV OSV" ) } record(longout, "$(CAM):Over$(N):DroppedArrays") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))DROPPED_ARRAYS") field(VAL, "0") info( autosaveFields, "DESC LOLO LOW HIGH HIHI LLSV LSV HSV HHSV EGU" ) } record(longin, "$(CAM):Over$(N):DroppedArrays_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))DROPPED_ARRAYS") field(SCAN, "I/O Intr") field(HIGH, "1") field(HSV, "MINOR") info( autosaveFields, "DESC LOLO LOW HIGH HIHI LLSV LSV HSV HHSV EGU" ) } record(longout, "$(CAM):Over$(N):QueueSize") { field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))QUEUE_SIZE") field(PINI, "YES") info( autosaveFields, "DESC EGU" ) } record(longin, "$(CAM):Over$(N):QueueSize_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))QUEUE_SIZE") field(FLNK, "$(CAM):Over$(N):QueueFreeLow") field(SCAN, "I/O Intr") } record(calcout, "$(CAM):Over$(N):QueueFreeLow") { field(CALC, "A*0.25") field(INPA, "$(CAM):Over$(N):QueueSize") field(OUT, "$(CAM):Over$(N):QueueFree.LOW") field(FLNK, "$(CAM):Over$(N):QueueUseHIGH") } # Set a HIGH warning level for the input queue fill level to 75% # of the full size of the queue record(calcout, "$(CAM):Over$(N):QueueUseHIGH") { field(CALC, "A*0.75") field(INPA, "$(CAM):Over$(N):QueueSize") field(OUT, "$(CAM):Over$(N):QueueUse.HIGH") field(FLNK, "$(CAM):Over$(N):QueueUseHIHI") } # Set a HIHI level for the input queue fill level to indicate an error # (MAJOR alarm) when it fills up to the full size of the queue (frames start dropping) record(calcout, "$(CAM):Over$(N):QueueUseHIHI") { field(CALC, "A*1.0") field(INPA, "$(CAM):Over$(N):QueueSize") field(OUT, "$(CAM):Over$(N):QueueUse.HIHI") } record(longin, "$(CAM):Over$(N):QueueFree") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))QUEUE_FREE") field(LLSV, "MAJOR") field(LSV, "MINOR") field(LOLO, "0") field(HYST, "1") field(SCAN, "I/O Intr") } # Display the fill level on the plugins input queue record(calc, "$(CAM):Over$(N):QueueUse") { field(CALC, "A-B") field(INPA, "$(CAM):Over$(N):QueueSize") field(INPB, "$(CAM):Over$(N):QueueFree CP") field(SCAN, "Passive") field(HHSV, "MAJOR") field(HSV, "MINOR") field(HYST, "1") } record(longout, "$(CAM):Over$(N):NumThreads") { field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))NUM_THREADS") field(VAL, "1") field(PINI, "YES") info(autosaveFields, "DESC VAL") } record(longin, "$(CAM):Over$(N):NumThreads_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))NUM_THREADS") field(SCAN, "I/O Intr") } record(longin, "$(CAM):Over$(N):MaxThreads_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))MAX_THREADS") field(SCAN, "I/O Intr") } ################################################################### # These records control output array sorting # ################################################################### record(mbbo, "$(CAM):Over$(N):SortMode") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))SORT_MODE") field(ZRVL, "0") field(ZRST, "Unsorted") field(ONVL, "1") field(ONST, "Sorted") } record(mbbi, "$(CAM):Over$(N):SortMode_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))SORT_MODE") field(ZRVL, "0") field(ZRST, "Unsorted") field(ONVL, "1") field(ONST, "Sorted") field(SCAN, "I/O Intr") } record(ao, "$(CAM):Over$(N):SortTime") { field(PINI, "YES") field(DTYP, "asynFloat64") field(OUT, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))SORT_TIME") field(PREC, "3") field(VAL, "0.1") } record(ai, "$(CAM):Over$(N):SortTime_RBV") { field(DTYP, "asynFloat64") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))SORT_TIME") field(PREC, "3") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):SortSize") { field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))SORT_SIZE") field(VAL, "20") field(PINI, "YES") } record(longin, "$(CAM):Over$(N):SortSize_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))SORT_SIZE") field(FLNK, "$(CAM):Over$(N):SortFreeLow") field(SCAN, "I/O Intr") } record(longin, "$(CAM):Over$(N):SortFree") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))SORT_FREE") field(LLSV, "MAJOR") field(LSV, "MINOR") field(LOLO, "0") field(HYST, "1") field(SCAN, "I/O Intr") } record(calcout, "$(CAM):Over$(N):SortFreeLow") { field(CALC, "A*0.25") field(INPA, "$(CAM):Over$(N):SortSize") field(OUT, "$(CAM):Over$(N):SortFree.LOW") } record(longout, "$(CAM):Over$(N):DroppedOutputArrays") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))DROPPED_OUTPUT_ARRAYS") field(VAL, "0") } record(longin, "$(CAM):Over$(N):DroppedOutputArrays_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))DROPPED_OUTPUT_ARRAYS") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):DisorderedArrays") { field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))DISORDERED_ARRAYS") field(PINI, "YES") } record(longin, "$(CAM):Over$(N):DisorderedArrays_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))DISORDERED_ARRAYS") field(SCAN, "I/O Intr") } ################################################################### # The asynRecord is used for mainly for trace mask # ################################################################### # Set ASYN_TRACEIO_HEX bit by default record(asyn,"$(CAM):Over$(N):AsynIO") { field(PORT, "Over$(N)") field(TIB2,"1") info("ADType", "ADPlugin") } # These are the array dimensions in X, Y order. Used for setting HOPR on sliders record(longin, "$(CAM):Over$(N):MaxSizeX_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))MAX_SIZE_X") field(SCAN, "I/O Intr") } record(longin, "$(CAM):Over$(N):MaxSizeY_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),$(ADDR=0),$(TIMEOUT=1))MAX_SIZE_Y") field(SCAN, "I/O Intr") } #=================================================================# # Template file: NDOverlayN.template # Database for NDOverlays # Mark Rivers # March 22, 2010 ################################################################### # These records control the label for the overlay # ################################################################### record(stringout, "$(CAM):Over$(N):1:Name") { field(PINI, "YES") field(DTYP, "asynOctetWrite") field(OUT, "@asyn(Over$(N),0,1)NAME") field(VAL, "ROI1") info(autosaveFields, "VAL") } record(stringin, "$(CAM):Over$(N):1:Name_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(Over$(N),0,1)NAME") field(SCAN, "I/O Intr") } ################################################################### # These records control whether this overlay is used # ################################################################### record(bo, "$(CAM):Over$(N):1:Use") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),0,1)USE") field(VAL, "0") field(ZNAM, "No") field(ONAM, "Yes") info(autosaveFields, "VAL") } record(bi, "$(CAM):Over$(N):1:Use_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),0,1)USE") field(ZNAM, "No") field(ONAM, "Yes") field(ZSV, "NO_ALARM") field(OSV, "NO_ALARM") field(SCAN, "I/O Intr") } ################################################################### # These records control the overlay definition # ################################################################### record(longout, "$(CAM):Over$(N):1:PositionXLink") { field(DOL, "$(CAM):ROI1:MinX_RBV CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):1:PositionX PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):1:PositionX") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),0,1)OVERLAY_POSITION_X") info(asyn:READBACK, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):1:PositionX_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),0,1)OVERLAY_POSITION_X") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):1:PositionYLink") { field(DOL, "$(CAM):ROI1:MinY_RBV CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):1:PositionY PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):1:PositionY") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),0,1)OVERLAY_POSITION_Y") info(asyn:READBACK, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):1:PositionY_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),0,1)OVERLAY_POSITION_Y") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):1:CenterXLink") { field(DOL, " CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):1:CenterX PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):1:CenterX") { field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),0,1)OVERLAY_CENTER_X") info(asyn:READBACK, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):1:CenterX_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),0,1)OVERLAY_CENTER_X") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):1:CenterYLink") { field(DOL, " CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):1:CenterY PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):1:CenterY") { field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),0,1)OVERLAY_CENTER_Y") info(asyn:READBACK, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):1:CenterY_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),0,1)OVERLAY_CENTER_Y") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):1:SizeXLink") { field(DOL, "$(CAM):ROI1:SizeX_RBV CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):1:SizeX PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):1:SizeX") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),0,1)OVERLAY_SIZE_X") field(LOPR, "1") field(HOPR, "1024") field(VAL, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):1:SizeX_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),0,1)OVERLAY_SIZE_X") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):1:SizeYLink") { field(DOL, "$(CAM):ROI1:SizeY_RBV CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):1:SizeY PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):1:SizeY") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),0,1)OVERLAY_SIZE_Y") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):1:SizeY_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),0,1)OVERLAY_SIZE_Y") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):1:WidthXLink") { field(DOL, " CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):1:WidthX PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):1:WidthX") { field(DOL, "1") field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),0,1)OVERLAY_WIDTH_X") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):1:WidthX_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),0,1)OVERLAY_WIDTH_X") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):1:WidthYLink") { field(DOL, " CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):1:WidthY PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):1:WidthY") { field(DOL, "1") field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),0,1)OVERLAY_WIDTH_Y") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):1:WidthY_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),0,1)OVERLAY_WIDTH_Y") field(SCAN, "I/O Intr") } record(mbbo, "$(CAM):Over$(N):1:Shape") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),0,1)OVERLAY_SHAPE") field(ZRST, "Cross") field(ZRVL, "0") field(ONST, "Rectangle") field(ONVL, "1") field(TWST, "Ellipse") field(TWVL, "3") field(THST, "Text") field(THVL, "2") field(VAL, "1") info(autosaveFields, "VAL") } record(mbbi, "$(CAM):Over$(N):1:Shape_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),0,1)OVERLAY_SHAPE") field(ZRST, "Cross") field(ZRVL, "0") field(ONST, "Rectangle") field(ONVL, "1") field(TWST, "Ellipse") field(TWVL, "3") field(THST, "Text") field(THVL, "2") field(SCAN, "I/O Intr") } record(mbbo, "$(CAM):Over$(N):1:DrawMode") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),0,1)OVERLAY_DRAW_MODE") field(ZRST, "Set") field(ZRVL, "0") field(ONST, "XOR") field(ONVL, "1") info(autosaveFields, "VAL") } record(mbbi, "$(CAM):Over$(N):1:DrawMode_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),0,1)OVERLAY_DRAW_MODE") field(ZRST, "Set") field(ZRVL, "0") field(ONST, "XOR") field(ONVL, "1") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):1:Red") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),0,1)OVERLAY_RED") field(VAL, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):1:Red_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),0,1)OVERLAY_RED") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):1:Green") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),0,1)OVERLAY_GREEN") field(VAL, "65535") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):1:Green_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),0,1)OVERLAY_GREEN") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):1:Blue") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),0,1)OVERLAY_BLUE") field(VAL, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):1:Blue_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),0,1)OVERLAY_BLUE") field(SCAN, "I/O Intr") } ################################################################### # These records set the HOPR and LOPR values for the position # # and size to the maximum for the input array # ################################################################### record(longin, "$(CAM):Over$(N):1:MaxSizeX") { field(INP, "$(CAM):Over$(N):MaxSizeX_RBV CP") field(FLNK, "$(CAM):Over$(N):1:SetXHOPR.PROC PP") } record(dfanout, "$(CAM):Over$(N):1:SetXHOPR") { field(DOL, "$(CAM):Over$(N):1:MaxSizeX NPP") field(OMSL, "closed_loop") field(OUTA, "$(CAM):Over$(N):1:PositionX.HOPR NPP") field(OUTB, "$(CAM):Over$(N):1:CenterX.HOPR NPP") field(OUTC, "$(CAM):Over$(N):1:SizeX.HOPR NPP") } record(longin, "$(CAM):Over$(N):1:MaxSizeY") { field(INP, "$(CAM):Over$(N):MaxSizeY_RBV CP") field(FLNK, "$(CAM):Over$(N):1:SetYHOPR.PROC PP") } record(dfanout, "$(CAM):Over$(N):1:SetYHOPR") { field(DOL, "$(CAM):Over$(N):1:MaxSizeY NPP") field(OMSL, "closed_loop") field(OUTA, "$(CAM):Over$(N):1:PositionY.HOPR NPP") field(OUTB, "$(CAM):Over$(N):1:CenterY.HOPR NPP") field(OUTC, "$(CAM):Over$(N):1:SizeY.HOPR NPP") } ################################################################### # Text overlay (Keith Brister 2014-06-26) ################################################################### record(waveform, "$(CAM):Over$(N):1:DisplayText") { field(PINI, "YES") field(DTYP, "asynOctetWrite") field(INP, "@asyn(Over$(N),0,1)OVERLAY_DISPLAY_TEXT") field(FTVL, "CHAR") field(NELM, "256") info(autosaveFields, "VAL") } record(waveform, "$(CAM):Over$(N):1:DisplayText_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(Over$(N),0,1)OVERLAY_DISPLAY_TEXT") field(FTVL, "CHAR") field(NELM, "256") field(SCAN, "I/O Intr") } record(stringout, "$(CAM):Over$(N):1:TimeStampFormat") { field(PINI, "YES") field(DTYP, "asynOctetWrite") field(OUT, "@asyn(Over$(N),0,1)OVERLAY_TIMESTAMP_FORMAT") field(VAL, "%Y-%m-%d %H:%M:%S.%03f") info(autosaveFields, "VAL") } record(stringin, "$(CAM):Over$(N):1:TimeStampFormat_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(Over$(N),0,1)OVERLAY_TIMESTAMP_FORMAT") field(SCAN, "I/O Intr") } record(mbbo, "$(CAM):Over$(N):1:Font") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),0,1)OVERLAY_FONT") field(ZRST, "6x13") field(ZRVL, "0") field(ONST, "6x13 Bold") field(ONVL, "1") field(TWST, "9x15") field(TWVL, "2") field(THST, "9x15 Bold") field(THVL, "3") info(autosaveFields, "VAL") } record(mbbi, "$(CAM):Over$(N):1:Font_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),0,1)OVERLAY_FONT") field(ZRST, "6x13") field(ZRVL, "0") field(ONST, "6x13 Bold") field(ONVL, "1") field(TWST, "9x15") field(TWVL, "2") field(THST, "9x15 Bold") field(THVL, "3") field(SCAN, "I/O Intr") } #=================================================================# # Template file: NDOverlayN.template # Database for NDOverlays # Mark Rivers # March 22, 2010 ################################################################### # These records control the label for the overlay # ################################################################### record(stringout, "$(CAM):Over$(N):2:Name") { field(PINI, "YES") field(DTYP, "asynOctetWrite") field(OUT, "@asyn(Over$(N),1,1)NAME") field(VAL, "ROI2") info(autosaveFields, "VAL") } record(stringin, "$(CAM):Over$(N):2:Name_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(Over$(N),1,1)NAME") field(SCAN, "I/O Intr") } ################################################################### # These records control whether this overlay is used # ################################################################### record(bo, "$(CAM):Over$(N):2:Use") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),1,1)USE") field(VAL, "0") field(ZNAM, "No") field(ONAM, "Yes") info(autosaveFields, "VAL") } record(bi, "$(CAM):Over$(N):2:Use_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),1,1)USE") field(ZNAM, "No") field(ONAM, "Yes") field(ZSV, "NO_ALARM") field(OSV, "NO_ALARM") field(SCAN, "I/O Intr") } ################################################################### # These records control the overlay definition # ################################################################### record(longout, "$(CAM):Over$(N):2:PositionXLink") { field(DOL, "$(CAM):ROI2:MinX_RBV CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):2:PositionX PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):2:PositionX") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),1,1)OVERLAY_POSITION_X") info(asyn:READBACK, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):2:PositionX_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),1,1)OVERLAY_POSITION_X") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):2:PositionYLink") { field(DOL, "$(CAM):ROI2:MinY_RBV CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):2:PositionY PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):2:PositionY") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),1,1)OVERLAY_POSITION_Y") info(asyn:READBACK, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):2:PositionY_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),1,1)OVERLAY_POSITION_Y") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):2:CenterXLink") { field(DOL, " CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):2:CenterX PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):2:CenterX") { field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),1,1)OVERLAY_CENTER_X") info(asyn:READBACK, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):2:CenterX_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),1,1)OVERLAY_CENTER_X") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):2:CenterYLink") { field(DOL, " CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):2:CenterY PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):2:CenterY") { field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),1,1)OVERLAY_CENTER_Y") info(asyn:READBACK, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):2:CenterY_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),1,1)OVERLAY_CENTER_Y") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):2:SizeXLink") { field(DOL, "$(CAM):ROI2:SizeX_RBV CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):2:SizeX PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):2:SizeX") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),1,1)OVERLAY_SIZE_X") field(LOPR, "1") field(HOPR, "1024") field(VAL, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):2:SizeX_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),1,1)OVERLAY_SIZE_X") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):2:SizeYLink") { field(DOL, "$(CAM):ROI2:SizeY_RBV CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):2:SizeY PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):2:SizeY") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),1,1)OVERLAY_SIZE_Y") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):2:SizeY_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),1,1)OVERLAY_SIZE_Y") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):2:WidthXLink") { field(DOL, " CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):2:WidthX PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):2:WidthX") { field(DOL, "1") field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),1,1)OVERLAY_WIDTH_X") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):2:WidthX_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),1,1)OVERLAY_WIDTH_X") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):2:WidthYLink") { field(DOL, " CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):2:WidthY PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):2:WidthY") { field(DOL, "1") field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),1,1)OVERLAY_WIDTH_Y") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):2:WidthY_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),1,1)OVERLAY_WIDTH_Y") field(SCAN, "I/O Intr") } record(mbbo, "$(CAM):Over$(N):2:Shape") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),1,1)OVERLAY_SHAPE") field(ZRST, "Cross") field(ZRVL, "0") field(ONST, "Rectangle") field(ONVL, "1") field(TWST, "Ellipse") field(TWVL, "3") field(THST, "Text") field(THVL, "2") field(VAL, "1") info(autosaveFields, "VAL") } record(mbbi, "$(CAM):Over$(N):2:Shape_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),1,1)OVERLAY_SHAPE") field(ZRST, "Cross") field(ZRVL, "0") field(ONST, "Rectangle") field(ONVL, "1") field(TWST, "Ellipse") field(TWVL, "3") field(THST, "Text") field(THVL, "2") field(SCAN, "I/O Intr") } record(mbbo, "$(CAM):Over$(N):2:DrawMode") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),1,1)OVERLAY_DRAW_MODE") field(ZRST, "Set") field(ZRVL, "0") field(ONST, "XOR") field(ONVL, "1") info(autosaveFields, "VAL") } record(mbbi, "$(CAM):Over$(N):2:DrawMode_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),1,1)OVERLAY_DRAW_MODE") field(ZRST, "Set") field(ZRVL, "0") field(ONST, "XOR") field(ONVL, "1") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):2:Red") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),1,1)OVERLAY_RED") field(VAL, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):2:Red_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),1,1)OVERLAY_RED") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):2:Green") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),1,1)OVERLAY_GREEN") field(VAL, "65535") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):2:Green_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),1,1)OVERLAY_GREEN") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):2:Blue") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),1,1)OVERLAY_BLUE") field(VAL, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):2:Blue_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),1,1)OVERLAY_BLUE") field(SCAN, "I/O Intr") } ################################################################### # These records set the HOPR and LOPR values for the position # # and size to the maximum for the input array # ################################################################### record(longin, "$(CAM):Over$(N):2:MaxSizeX") { field(INP, "$(CAM):Over$(N):MaxSizeX_RBV CP") field(FLNK, "$(CAM):Over$(N):2:SetXHOPR.PROC PP") } record(dfanout, "$(CAM):Over$(N):2:SetXHOPR") { field(DOL, "$(CAM):Over$(N):2:MaxSizeX NPP") field(OMSL, "closed_loop") field(OUTA, "$(CAM):Over$(N):2:PositionX.HOPR NPP") field(OUTB, "$(CAM):Over$(N):2:CenterX.HOPR NPP") field(OUTC, "$(CAM):Over$(N):2:SizeX.HOPR NPP") } record(longin, "$(CAM):Over$(N):2:MaxSizeY") { field(INP, "$(CAM):Over$(N):MaxSizeY_RBV CP") field(FLNK, "$(CAM):Over$(N):2:SetYHOPR.PROC PP") } record(dfanout, "$(CAM):Over$(N):2:SetYHOPR") { field(DOL, "$(CAM):Over$(N):2:MaxSizeY NPP") field(OMSL, "closed_loop") field(OUTA, "$(CAM):Over$(N):2:PositionY.HOPR NPP") field(OUTB, "$(CAM):Over$(N):2:CenterY.HOPR NPP") field(OUTC, "$(CAM):Over$(N):2:SizeY.HOPR NPP") } ################################################################### # Text overlay (Keith Brister 2014-06-26) ################################################################### record(waveform, "$(CAM):Over$(N):2:DisplayText") { field(PINI, "YES") field(DTYP, "asynOctetWrite") field(INP, "@asyn(Over$(N),1,1)OVERLAY_DISPLAY_TEXT") field(FTVL, "CHAR") field(NELM, "256") info(autosaveFields, "VAL") } record(waveform, "$(CAM):Over$(N):2:DisplayText_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(Over$(N),1,1)OVERLAY_DISPLAY_TEXT") field(FTVL, "CHAR") field(NELM, "256") field(SCAN, "I/O Intr") } record(stringout, "$(CAM):Over$(N):2:TimeStampFormat") { field(PINI, "YES") field(DTYP, "asynOctetWrite") field(OUT, "@asyn(Over$(N),1,1)OVERLAY_TIMESTAMP_FORMAT") field(VAL, "%Y-%m-%d %H:%M:%S.%03f") info(autosaveFields, "VAL") } record(stringin, "$(CAM):Over$(N):2:TimeStampFormat_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(Over$(N),1,1)OVERLAY_TIMESTAMP_FORMAT") field(SCAN, "I/O Intr") } record(mbbo, "$(CAM):Over$(N):2:Font") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),1,1)OVERLAY_FONT") field(ZRST, "6x13") field(ZRVL, "0") field(ONST, "6x13 Bold") field(ONVL, "1") field(TWST, "9x15") field(TWVL, "2") field(THST, "9x15 Bold") field(THVL, "3") info(autosaveFields, "VAL") } record(mbbi, "$(CAM):Over$(N):2:Font_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),1,1)OVERLAY_FONT") field(ZRST, "6x13") field(ZRVL, "0") field(ONST, "6x13 Bold") field(ONVL, "1") field(TWST, "9x15") field(TWVL, "2") field(THST, "9x15 Bold") field(THVL, "3") field(SCAN, "I/O Intr") } #=================================================================# # Template file: NDOverlayN.template # Database for NDOverlays # Mark Rivers # March 22, 2010 ################################################################### # These records control the label for the overlay # ################################################################### record(stringout, "$(CAM):Over$(N):3:Name") { field(PINI, "YES") field(DTYP, "asynOctetWrite") field(OUT, "@asyn(Over$(N),2,1)NAME") field(VAL, "ROI3") info(autosaveFields, "VAL") } record(stringin, "$(CAM):Over$(N):3:Name_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(Over$(N),2,1)NAME") field(SCAN, "I/O Intr") } ################################################################### # These records control whether this overlay is used # ################################################################### record(bo, "$(CAM):Over$(N):3:Use") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),2,1)USE") field(VAL, "0") field(ZNAM, "No") field(ONAM, "Yes") info(autosaveFields, "VAL") } record(bi, "$(CAM):Over$(N):3:Use_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),2,1)USE") field(ZNAM, "No") field(ONAM, "Yes") field(ZSV, "NO_ALARM") field(OSV, "NO_ALARM") field(SCAN, "I/O Intr") } ################################################################### # These records control the overlay definition # ################################################################### record(longout, "$(CAM):Over$(N):3:PositionXLink") { field(DOL, "$(CAM):ROI3:MinX_RBV CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):3:PositionX PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):3:PositionX") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),2,1)OVERLAY_POSITION_X") info(asyn:READBACK, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):3:PositionX_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),2,1)OVERLAY_POSITION_X") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):3:PositionYLink") { field(DOL, "$(CAM):ROI3:MinY_RBV CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):3:PositionY PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):3:PositionY") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),2,1)OVERLAY_POSITION_Y") info(asyn:READBACK, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):3:PositionY_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),2,1)OVERLAY_POSITION_Y") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):3:CenterXLink") { field(DOL, " CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):3:CenterX PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):3:CenterX") { field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),2,1)OVERLAY_CENTER_X") info(asyn:READBACK, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):3:CenterX_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),2,1)OVERLAY_CENTER_X") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):3:CenterYLink") { field(DOL, " CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):3:CenterY PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):3:CenterY") { field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),2,1)OVERLAY_CENTER_Y") info(asyn:READBACK, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):3:CenterY_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),2,1)OVERLAY_CENTER_Y") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):3:SizeXLink") { field(DOL, "$(CAM):ROI3:SizeX_RBV CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):3:SizeX PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):3:SizeX") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),2,1)OVERLAY_SIZE_X") field(LOPR, "1") field(HOPR, "1024") field(VAL, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):3:SizeX_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),2,1)OVERLAY_SIZE_X") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):3:SizeYLink") { field(DOL, "$(CAM):ROI3:SizeY_RBV CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):3:SizeY PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):3:SizeY") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),2,1)OVERLAY_SIZE_Y") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):3:SizeY_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),2,1)OVERLAY_SIZE_Y") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):3:WidthXLink") { field(DOL, " CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):3:WidthX PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):3:WidthX") { field(DOL, "1") field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),2,1)OVERLAY_WIDTH_X") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):3:WidthX_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),2,1)OVERLAY_WIDTH_X") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):3:WidthYLink") { field(DOL, " CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):3:WidthY PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):3:WidthY") { field(DOL, "1") field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),2,1)OVERLAY_WIDTH_Y") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):3:WidthY_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),2,1)OVERLAY_WIDTH_Y") field(SCAN, "I/O Intr") } record(mbbo, "$(CAM):Over$(N):3:Shape") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),2,1)OVERLAY_SHAPE") field(ZRST, "Cross") field(ZRVL, "0") field(ONST, "Rectangle") field(ONVL, "1") field(TWST, "Ellipse") field(TWVL, "3") field(THST, "Text") field(THVL, "2") field(VAL, "1") info(autosaveFields, "VAL") } record(mbbi, "$(CAM):Over$(N):3:Shape_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),2,1)OVERLAY_SHAPE") field(ZRST, "Cross") field(ZRVL, "0") field(ONST, "Rectangle") field(ONVL, "1") field(TWST, "Ellipse") field(TWVL, "3") field(THST, "Text") field(THVL, "2") field(SCAN, "I/O Intr") } record(mbbo, "$(CAM):Over$(N):3:DrawMode") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),2,1)OVERLAY_DRAW_MODE") field(ZRST, "Set") field(ZRVL, "0") field(ONST, "XOR") field(ONVL, "1") info(autosaveFields, "VAL") } record(mbbi, "$(CAM):Over$(N):3:DrawMode_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),2,1)OVERLAY_DRAW_MODE") field(ZRST, "Set") field(ZRVL, "0") field(ONST, "XOR") field(ONVL, "1") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):3:Red") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),2,1)OVERLAY_RED") field(VAL, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):3:Red_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),2,1)OVERLAY_RED") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):3:Green") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),2,1)OVERLAY_GREEN") field(VAL, "65535") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):3:Green_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),2,1)OVERLAY_GREEN") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):3:Blue") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),2,1)OVERLAY_BLUE") field(VAL, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):3:Blue_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),2,1)OVERLAY_BLUE") field(SCAN, "I/O Intr") } ################################################################### # These records set the HOPR and LOPR values for the position # # and size to the maximum for the input array # ################################################################### record(longin, "$(CAM):Over$(N):3:MaxSizeX") { field(INP, "$(CAM):Over$(N):MaxSizeX_RBV CP") field(FLNK, "$(CAM):Over$(N):3:SetXHOPR.PROC PP") } record(dfanout, "$(CAM):Over$(N):3:SetXHOPR") { field(DOL, "$(CAM):Over$(N):3:MaxSizeX NPP") field(OMSL, "closed_loop") field(OUTA, "$(CAM):Over$(N):3:PositionX.HOPR NPP") field(OUTB, "$(CAM):Over$(N):3:CenterX.HOPR NPP") field(OUTC, "$(CAM):Over$(N):3:SizeX.HOPR NPP") } record(longin, "$(CAM):Over$(N):3:MaxSizeY") { field(INP, "$(CAM):Over$(N):MaxSizeY_RBV CP") field(FLNK, "$(CAM):Over$(N):3:SetYHOPR.PROC PP") } record(dfanout, "$(CAM):Over$(N):3:SetYHOPR") { field(DOL, "$(CAM):Over$(N):3:MaxSizeY NPP") field(OMSL, "closed_loop") field(OUTA, "$(CAM):Over$(N):3:PositionY.HOPR NPP") field(OUTB, "$(CAM):Over$(N):3:CenterY.HOPR NPP") field(OUTC, "$(CAM):Over$(N):3:SizeY.HOPR NPP") } ################################################################### # Text overlay (Keith Brister 2014-06-26) ################################################################### record(waveform, "$(CAM):Over$(N):3:DisplayText") { field(PINI, "YES") field(DTYP, "asynOctetWrite") field(INP, "@asyn(Over$(N),2,1)OVERLAY_DISPLAY_TEXT") field(FTVL, "CHAR") field(NELM, "256") info(autosaveFields, "VAL") } record(waveform, "$(CAM):Over$(N):3:DisplayText_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(Over$(N),2,1)OVERLAY_DISPLAY_TEXT") field(FTVL, "CHAR") field(NELM, "256") field(SCAN, "I/O Intr") } record(stringout, "$(CAM):Over$(N):3:TimeStampFormat") { field(PINI, "YES") field(DTYP, "asynOctetWrite") field(OUT, "@asyn(Over$(N),2,1)OVERLAY_TIMESTAMP_FORMAT") field(VAL, "%Y-%m-%d %H:%M:%S.%03f") info(autosaveFields, "VAL") } record(stringin, "$(CAM):Over$(N):3:TimeStampFormat_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(Over$(N),2,1)OVERLAY_TIMESTAMP_FORMAT") field(SCAN, "I/O Intr") } record(mbbo, "$(CAM):Over$(N):3:Font") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),2,1)OVERLAY_FONT") field(ZRST, "6x13") field(ZRVL, "0") field(ONST, "6x13 Bold") field(ONVL, "1") field(TWST, "9x15") field(TWVL, "2") field(THST, "9x15 Bold") field(THVL, "3") info(autosaveFields, "VAL") } record(mbbi, "$(CAM):Over$(N):3:Font_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),2,1)OVERLAY_FONT") field(ZRST, "6x13") field(ZRVL, "0") field(ONST, "6x13 Bold") field(ONVL, "1") field(TWST, "9x15") field(TWVL, "2") field(THST, "9x15 Bold") field(THVL, "3") field(SCAN, "I/O Intr") } #=================================================================# # Template file: NDOverlayN.template # Database for NDOverlays # Mark Rivers # March 22, 2010 ################################################################### # These records control the label for the overlay # ################################################################### record(stringout, "$(CAM):Over$(N):4:Name") { field(PINI, "YES") field(DTYP, "asynOctetWrite") field(OUT, "@asyn(Over$(N),3,1)NAME") field(VAL, "ROI4") info(autosaveFields, "VAL") } record(stringin, "$(CAM):Over$(N):4:Name_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(Over$(N),3,1)NAME") field(SCAN, "I/O Intr") } ################################################################### # These records control whether this overlay is used # ################################################################### record(bo, "$(CAM):Over$(N):4:Use") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),3,1)USE") field(VAL, "0") field(ZNAM, "No") field(ONAM, "Yes") info(autosaveFields, "VAL") } record(bi, "$(CAM):Over$(N):4:Use_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),3,1)USE") field(ZNAM, "No") field(ONAM, "Yes") field(ZSV, "NO_ALARM") field(OSV, "NO_ALARM") field(SCAN, "I/O Intr") } ################################################################### # These records control the overlay definition # ################################################################### record(longout, "$(CAM):Over$(N):4:PositionXLink") { field(DOL, "$(CAM):ROI4:MinX_RBV CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):4:PositionX PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):4:PositionX") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),3,1)OVERLAY_POSITION_X") info(asyn:READBACK, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):4:PositionX_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),3,1)OVERLAY_POSITION_X") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):4:PositionYLink") { field(DOL, "$(CAM):ROI4:MinY_RBV CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):4:PositionY PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):4:PositionY") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),3,1)OVERLAY_POSITION_Y") info(asyn:READBACK, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):4:PositionY_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),3,1)OVERLAY_POSITION_Y") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):4:CenterXLink") { field(DOL, " CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):4:CenterX PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):4:CenterX") { field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),3,1)OVERLAY_CENTER_X") info(asyn:READBACK, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):4:CenterX_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),3,1)OVERLAY_CENTER_X") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):4:CenterYLink") { field(DOL, " CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):4:CenterY PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):4:CenterY") { field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),3,1)OVERLAY_CENTER_Y") info(asyn:READBACK, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):4:CenterY_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),3,1)OVERLAY_CENTER_Y") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):4:SizeXLink") { field(DOL, "$(CAM):ROI4:SizeX_RBV CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):4:SizeX PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):4:SizeX") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),3,1)OVERLAY_SIZE_X") field(LOPR, "1") field(HOPR, "1024") field(VAL, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):4:SizeX_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),3,1)OVERLAY_SIZE_X") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):4:SizeYLink") { field(DOL, "$(CAM):ROI4:SizeY_RBV CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):4:SizeY PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):4:SizeY") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),3,1)OVERLAY_SIZE_Y") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):4:SizeY_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),3,1)OVERLAY_SIZE_Y") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):4:WidthXLink") { field(DOL, " CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):4:WidthX PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):4:WidthX") { field(DOL, "1") field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),3,1)OVERLAY_WIDTH_X") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):4:WidthX_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),3,1)OVERLAY_WIDTH_X") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):4:WidthYLink") { field(DOL, " CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):4:WidthY PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):4:WidthY") { field(DOL, "1") field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),3,1)OVERLAY_WIDTH_Y") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):4:WidthY_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),3,1)OVERLAY_WIDTH_Y") field(SCAN, "I/O Intr") } record(mbbo, "$(CAM):Over$(N):4:Shape") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),3,1)OVERLAY_SHAPE") field(ZRST, "Cross") field(ZRVL, "0") field(ONST, "Rectangle") field(ONVL, "1") field(TWST, "Ellipse") field(TWVL, "3") field(THST, "Text") field(THVL, "2") field(VAL, "1") info(autosaveFields, "VAL") } record(mbbi, "$(CAM):Over$(N):4:Shape_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),3,1)OVERLAY_SHAPE") field(ZRST, "Cross") field(ZRVL, "0") field(ONST, "Rectangle") field(ONVL, "1") field(TWST, "Ellipse") field(TWVL, "3") field(THST, "Text") field(THVL, "2") field(SCAN, "I/O Intr") } record(mbbo, "$(CAM):Over$(N):4:DrawMode") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),3,1)OVERLAY_DRAW_MODE") field(ZRST, "Set") field(ZRVL, "0") field(ONST, "XOR") field(ONVL, "1") info(autosaveFields, "VAL") } record(mbbi, "$(CAM):Over$(N):4:DrawMode_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),3,1)OVERLAY_DRAW_MODE") field(ZRST, "Set") field(ZRVL, "0") field(ONST, "XOR") field(ONVL, "1") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):4:Red") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),3,1)OVERLAY_RED") field(VAL, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):4:Red_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),3,1)OVERLAY_RED") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):4:Green") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),3,1)OVERLAY_GREEN") field(VAL, "65535") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):4:Green_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),3,1)OVERLAY_GREEN") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):4:Blue") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),3,1)OVERLAY_BLUE") field(VAL, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):4:Blue_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),3,1)OVERLAY_BLUE") field(SCAN, "I/O Intr") } ################################################################### # These records set the HOPR and LOPR values for the position # # and size to the maximum for the input array # ################################################################### record(longin, "$(CAM):Over$(N):4:MaxSizeX") { field(INP, "$(CAM):Over$(N):MaxSizeX_RBV CP") field(FLNK, "$(CAM):Over$(N):4:SetXHOPR.PROC PP") } record(dfanout, "$(CAM):Over$(N):4:SetXHOPR") { field(DOL, "$(CAM):Over$(N):4:MaxSizeX NPP") field(OMSL, "closed_loop") field(OUTA, "$(CAM):Over$(N):4:PositionX.HOPR NPP") field(OUTB, "$(CAM):Over$(N):4:CenterX.HOPR NPP") field(OUTC, "$(CAM):Over$(N):4:SizeX.HOPR NPP") } record(longin, "$(CAM):Over$(N):4:MaxSizeY") { field(INP, "$(CAM):Over$(N):MaxSizeY_RBV CP") field(FLNK, "$(CAM):Over$(N):4:SetYHOPR.PROC PP") } record(dfanout, "$(CAM):Over$(N):4:SetYHOPR") { field(DOL, "$(CAM):Over$(N):4:MaxSizeY NPP") field(OMSL, "closed_loop") field(OUTA, "$(CAM):Over$(N):4:PositionY.HOPR NPP") field(OUTB, "$(CAM):Over$(N):4:CenterY.HOPR NPP") field(OUTC, "$(CAM):Over$(N):4:SizeY.HOPR NPP") } ################################################################### # Text overlay (Keith Brister 2014-06-26) ################################################################### record(waveform, "$(CAM):Over$(N):4:DisplayText") { field(PINI, "YES") field(DTYP, "asynOctetWrite") field(INP, "@asyn(Over$(N),3,1)OVERLAY_DISPLAY_TEXT") field(FTVL, "CHAR") field(NELM, "256") info(autosaveFields, "VAL") } record(waveform, "$(CAM):Over$(N):4:DisplayText_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(Over$(N),3,1)OVERLAY_DISPLAY_TEXT") field(FTVL, "CHAR") field(NELM, "256") field(SCAN, "I/O Intr") } record(stringout, "$(CAM):Over$(N):4:TimeStampFormat") { field(PINI, "YES") field(DTYP, "asynOctetWrite") field(OUT, "@asyn(Over$(N),3,1)OVERLAY_TIMESTAMP_FORMAT") field(VAL, "%Y-%m-%d %H:%M:%S.%03f") info(autosaveFields, "VAL") } record(stringin, "$(CAM):Over$(N):4:TimeStampFormat_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(Over$(N),3,1)OVERLAY_TIMESTAMP_FORMAT") field(SCAN, "I/O Intr") } record(mbbo, "$(CAM):Over$(N):4:Font") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),3,1)OVERLAY_FONT") field(ZRST, "6x13") field(ZRVL, "0") field(ONST, "6x13 Bold") field(ONVL, "1") field(TWST, "9x15") field(TWVL, "2") field(THST, "9x15 Bold") field(THVL, "3") info(autosaveFields, "VAL") } record(mbbi, "$(CAM):Over$(N):4:Font_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),3,1)OVERLAY_FONT") field(ZRST, "6x13") field(ZRVL, "0") field(ONST, "6x13 Bold") field(ONVL, "1") field(TWST, "9x15") field(TWVL, "2") field(THST, "9x15 Bold") field(THVL, "3") field(SCAN, "I/O Intr") } #=================================================================# # Template file: NDOverlayN.template # Database for NDOverlays # Mark Rivers # March 22, 2010 ################################################################### # These records control the label for the overlay # ################################################################### record(stringout, "$(CAM):Over$(N):5:Name") { field(PINI, "YES") field(DTYP, "asynOctetWrite") field(OUT, "@asyn(Over$(N),4,1)NAME") field(VAL, "Cursor1") info(autosaveFields, "VAL") } record(stringin, "$(CAM):Over$(N):5:Name_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(Over$(N),4,1)NAME") field(SCAN, "I/O Intr") } ################################################################### # These records control whether this overlay is used # ################################################################### record(bo, "$(CAM):Over$(N):5:Use") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),4,1)USE") field(VAL, "0") field(ZNAM, "No") field(ONAM, "Yes") info(autosaveFields, "VAL") } record(bi, "$(CAM):Over$(N):5:Use_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),4,1)USE") field(ZNAM, "No") field(ONAM, "Yes") field(ZSV, "NO_ALARM") field(OSV, "NO_ALARM") field(SCAN, "I/O Intr") } ################################################################### # These records control the overlay definition # ################################################################### record(longout, "$(CAM):Over$(N):5:PositionXLink") { field(DOL, "junk CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):5:PositionX PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):5:PositionX") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),4,1)OVERLAY_POSITION_X") info(asyn:READBACK, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):5:PositionX_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),4,1)OVERLAY_POSITION_X") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):5:PositionYLink") { field(DOL, "junk CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):5:PositionY PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):5:PositionY") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),4,1)OVERLAY_POSITION_Y") info(asyn:READBACK, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):5:PositionY_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),4,1)OVERLAY_POSITION_Y") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):5:CenterXLink") { field(DOL, " CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):5:CenterX PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):5:CenterX") { field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),4,1)OVERLAY_CENTER_X") info(asyn:READBACK, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):5:CenterX_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),4,1)OVERLAY_CENTER_X") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):5:CenterYLink") { field(DOL, " CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):5:CenterY PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):5:CenterY") { field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),4,1)OVERLAY_CENTER_Y") info(asyn:READBACK, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):5:CenterY_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),4,1)OVERLAY_CENTER_Y") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):5:SizeXLink") { field(DOL, "junk CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):5:SizeX PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):5:SizeX") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),4,1)OVERLAY_SIZE_X") field(LOPR, "1") field(HOPR, "1024") field(VAL, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):5:SizeX_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),4,1)OVERLAY_SIZE_X") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):5:SizeYLink") { field(DOL, "junk CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):5:SizeY PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):5:SizeY") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),4,1)OVERLAY_SIZE_Y") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):5:SizeY_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),4,1)OVERLAY_SIZE_Y") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):5:WidthXLink") { field(DOL, " CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):5:WidthX PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):5:WidthX") { field(DOL, "1") field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),4,1)OVERLAY_WIDTH_X") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):5:WidthX_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),4,1)OVERLAY_WIDTH_X") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):5:WidthYLink") { field(DOL, " CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):5:WidthY PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):5:WidthY") { field(DOL, "1") field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),4,1)OVERLAY_WIDTH_Y") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):5:WidthY_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),4,1)OVERLAY_WIDTH_Y") field(SCAN, "I/O Intr") } record(mbbo, "$(CAM):Over$(N):5:Shape") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),4,1)OVERLAY_SHAPE") field(ZRST, "Cross") field(ZRVL, "0") field(ONST, "Rectangle") field(ONVL, "1") field(TWST, "Ellipse") field(TWVL, "3") field(THST, "Text") field(THVL, "2") field(VAL, "1") info(autosaveFields, "VAL") } record(mbbi, "$(CAM):Over$(N):5:Shape_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),4,1)OVERLAY_SHAPE") field(ZRST, "Cross") field(ZRVL, "0") field(ONST, "Rectangle") field(ONVL, "1") field(TWST, "Ellipse") field(TWVL, "3") field(THST, "Text") field(THVL, "2") field(SCAN, "I/O Intr") } record(mbbo, "$(CAM):Over$(N):5:DrawMode") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),4,1)OVERLAY_DRAW_MODE") field(ZRST, "Set") field(ZRVL, "0") field(ONST, "XOR") field(ONVL, "1") info(autosaveFields, "VAL") } record(mbbi, "$(CAM):Over$(N):5:DrawMode_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),4,1)OVERLAY_DRAW_MODE") field(ZRST, "Set") field(ZRVL, "0") field(ONST, "XOR") field(ONVL, "1") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):5:Red") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),4,1)OVERLAY_RED") field(VAL, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):5:Red_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),4,1)OVERLAY_RED") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):5:Green") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),4,1)OVERLAY_GREEN") field(VAL, "65535") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):5:Green_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),4,1)OVERLAY_GREEN") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):5:Blue") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),4,1)OVERLAY_BLUE") field(VAL, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):5:Blue_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),4,1)OVERLAY_BLUE") field(SCAN, "I/O Intr") } ################################################################### # These records set the HOPR and LOPR values for the position # # and size to the maximum for the input array # ################################################################### record(longin, "$(CAM):Over$(N):5:MaxSizeX") { field(INP, "$(CAM):Over$(N):MaxSizeX_RBV CP") field(FLNK, "$(CAM):Over$(N):5:SetXHOPR.PROC PP") } record(dfanout, "$(CAM):Over$(N):5:SetXHOPR") { field(DOL, "$(CAM):Over$(N):5:MaxSizeX NPP") field(OMSL, "closed_loop") field(OUTA, "$(CAM):Over$(N):5:PositionX.HOPR NPP") field(OUTB, "$(CAM):Over$(N):5:CenterX.HOPR NPP") field(OUTC, "$(CAM):Over$(N):5:SizeX.HOPR NPP") } record(longin, "$(CAM):Over$(N):5:MaxSizeY") { field(INP, "$(CAM):Over$(N):MaxSizeY_RBV CP") field(FLNK, "$(CAM):Over$(N):5:SetYHOPR.PROC PP") } record(dfanout, "$(CAM):Over$(N):5:SetYHOPR") { field(DOL, "$(CAM):Over$(N):5:MaxSizeY NPP") field(OMSL, "closed_loop") field(OUTA, "$(CAM):Over$(N):5:PositionY.HOPR NPP") field(OUTB, "$(CAM):Over$(N):5:CenterY.HOPR NPP") field(OUTC, "$(CAM):Over$(N):5:SizeY.HOPR NPP") } ################################################################### # Text overlay (Keith Brister 2014-06-26) ################################################################### record(waveform, "$(CAM):Over$(N):5:DisplayText") { field(PINI, "YES") field(DTYP, "asynOctetWrite") field(INP, "@asyn(Over$(N),4,1)OVERLAY_DISPLAY_TEXT") field(FTVL, "CHAR") field(NELM, "256") info(autosaveFields, "VAL") } record(waveform, "$(CAM):Over$(N):5:DisplayText_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(Over$(N),4,1)OVERLAY_DISPLAY_TEXT") field(FTVL, "CHAR") field(NELM, "256") field(SCAN, "I/O Intr") } record(stringout, "$(CAM):Over$(N):5:TimeStampFormat") { field(PINI, "YES") field(DTYP, "asynOctetWrite") field(OUT, "@asyn(Over$(N),4,1)OVERLAY_TIMESTAMP_FORMAT") field(VAL, "%Y-%m-%d %H:%M:%S.%03f") info(autosaveFields, "VAL") } record(stringin, "$(CAM):Over$(N):5:TimeStampFormat_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(Over$(N),4,1)OVERLAY_TIMESTAMP_FORMAT") field(SCAN, "I/O Intr") } record(mbbo, "$(CAM):Over$(N):5:Font") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),4,1)OVERLAY_FONT") field(ZRST, "6x13") field(ZRVL, "0") field(ONST, "6x13 Bold") field(ONVL, "1") field(TWST, "9x15") field(TWVL, "2") field(THST, "9x15 Bold") field(THVL, "3") info(autosaveFields, "VAL") } record(mbbi, "$(CAM):Over$(N):5:Font_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),4,1)OVERLAY_FONT") field(ZRST, "6x13") field(ZRVL, "0") field(ONST, "6x13 Bold") field(ONVL, "1") field(TWST, "9x15") field(TWVL, "2") field(THST, "9x15 Bold") field(THVL, "3") field(SCAN, "I/O Intr") } #=================================================================# # Template file: NDOverlayN.template # Database for NDOverlays # Mark Rivers # March 22, 2010 ################################################################### # These records control the label for the overlay # ################################################################### record(stringout, "$(CAM):Over$(N):6:Name") { field(PINI, "YES") field(DTYP, "asynOctetWrite") field(OUT, "@asyn(Over$(N),5,1)NAME") field(VAL, "Cursor2") info(autosaveFields, "VAL") } record(stringin, "$(CAM):Over$(N):6:Name_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(Over$(N),5,1)NAME") field(SCAN, "I/O Intr") } ################################################################### # These records control whether this overlay is used # ################################################################### record(bo, "$(CAM):Over$(N):6:Use") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),5,1)USE") field(VAL, "0") field(ZNAM, "No") field(ONAM, "Yes") info(autosaveFields, "VAL") } record(bi, "$(CAM):Over$(N):6:Use_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),5,1)USE") field(ZNAM, "No") field(ONAM, "Yes") field(ZSV, "NO_ALARM") field(OSV, "NO_ALARM") field(SCAN, "I/O Intr") } ################################################################### # These records control the overlay definition # ################################################################### record(longout, "$(CAM):Over$(N):6:PositionXLink") { field(DOL, "junk CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):6:PositionX PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):6:PositionX") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),5,1)OVERLAY_POSITION_X") info(asyn:READBACK, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):6:PositionX_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),5,1)OVERLAY_POSITION_X") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):6:PositionYLink") { field(DOL, "junk CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):6:PositionY PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):6:PositionY") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),5,1)OVERLAY_POSITION_Y") info(asyn:READBACK, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):6:PositionY_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),5,1)OVERLAY_POSITION_Y") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):6:CenterXLink") { field(DOL, " CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):6:CenterX PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):6:CenterX") { field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),5,1)OVERLAY_CENTER_X") info(asyn:READBACK, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):6:CenterX_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),5,1)OVERLAY_CENTER_X") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):6:CenterYLink") { field(DOL, " CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):6:CenterY PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):6:CenterY") { field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),5,1)OVERLAY_CENTER_Y") info(asyn:READBACK, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):6:CenterY_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),5,1)OVERLAY_CENTER_Y") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):6:SizeXLink") { field(DOL, "junk CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):6:SizeX PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):6:SizeX") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),5,1)OVERLAY_SIZE_X") field(LOPR, "1") field(HOPR, "1024") field(VAL, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):6:SizeX_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),5,1)OVERLAY_SIZE_X") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):6:SizeYLink") { field(DOL, "junk CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):6:SizeY PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):6:SizeY") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),5,1)OVERLAY_SIZE_Y") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):6:SizeY_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),5,1)OVERLAY_SIZE_Y") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):6:WidthXLink") { field(DOL, " CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):6:WidthX PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):6:WidthX") { field(DOL, "1") field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),5,1)OVERLAY_WIDTH_X") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):6:WidthX_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),5,1)OVERLAY_WIDTH_X") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):6:WidthYLink") { field(DOL, " CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):6:WidthY PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):6:WidthY") { field(DOL, "1") field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),5,1)OVERLAY_WIDTH_Y") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):6:WidthY_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),5,1)OVERLAY_WIDTH_Y") field(SCAN, "I/O Intr") } record(mbbo, "$(CAM):Over$(N):6:Shape") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),5,1)OVERLAY_SHAPE") field(ZRST, "Cross") field(ZRVL, "0") field(ONST, "Rectangle") field(ONVL, "1") field(TWST, "Ellipse") field(TWVL, "3") field(THST, "Text") field(THVL, "2") field(VAL, "1") info(autosaveFields, "VAL") } record(mbbi, "$(CAM):Over$(N):6:Shape_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),5,1)OVERLAY_SHAPE") field(ZRST, "Cross") field(ZRVL, "0") field(ONST, "Rectangle") field(ONVL, "1") field(TWST, "Ellipse") field(TWVL, "3") field(THST, "Text") field(THVL, "2") field(SCAN, "I/O Intr") } record(mbbo, "$(CAM):Over$(N):6:DrawMode") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),5,1)OVERLAY_DRAW_MODE") field(ZRST, "Set") field(ZRVL, "0") field(ONST, "XOR") field(ONVL, "1") info(autosaveFields, "VAL") } record(mbbi, "$(CAM):Over$(N):6:DrawMode_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),5,1)OVERLAY_DRAW_MODE") field(ZRST, "Set") field(ZRVL, "0") field(ONST, "XOR") field(ONVL, "1") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):6:Red") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),5,1)OVERLAY_RED") field(VAL, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):6:Red_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),5,1)OVERLAY_RED") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):6:Green") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),5,1)OVERLAY_GREEN") field(VAL, "65535") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):6:Green_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),5,1)OVERLAY_GREEN") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):6:Blue") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),5,1)OVERLAY_BLUE") field(VAL, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):6:Blue_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),5,1)OVERLAY_BLUE") field(SCAN, "I/O Intr") } ################################################################### # These records set the HOPR and LOPR values for the position # # and size to the maximum for the input array # ################################################################### record(longin, "$(CAM):Over$(N):6:MaxSizeX") { field(INP, "$(CAM):Over$(N):MaxSizeX_RBV CP") field(FLNK, "$(CAM):Over$(N):6:SetXHOPR.PROC PP") } record(dfanout, "$(CAM):Over$(N):6:SetXHOPR") { field(DOL, "$(CAM):Over$(N):6:MaxSizeX NPP") field(OMSL, "closed_loop") field(OUTA, "$(CAM):Over$(N):6:PositionX.HOPR NPP") field(OUTB, "$(CAM):Over$(N):6:CenterX.HOPR NPP") field(OUTC, "$(CAM):Over$(N):6:SizeX.HOPR NPP") } record(longin, "$(CAM):Over$(N):6:MaxSizeY") { field(INP, "$(CAM):Over$(N):MaxSizeY_RBV CP") field(FLNK, "$(CAM):Over$(N):6:SetYHOPR.PROC PP") } record(dfanout, "$(CAM):Over$(N):6:SetYHOPR") { field(DOL, "$(CAM):Over$(N):6:MaxSizeY NPP") field(OMSL, "closed_loop") field(OUTA, "$(CAM):Over$(N):6:PositionY.HOPR NPP") field(OUTB, "$(CAM):Over$(N):6:CenterY.HOPR NPP") field(OUTC, "$(CAM):Over$(N):6:SizeY.HOPR NPP") } ################################################################### # Text overlay (Keith Brister 2014-06-26) ################################################################### record(waveform, "$(CAM):Over$(N):6:DisplayText") { field(PINI, "YES") field(DTYP, "asynOctetWrite") field(INP, "@asyn(Over$(N),5,1)OVERLAY_DISPLAY_TEXT") field(FTVL, "CHAR") field(NELM, "256") info(autosaveFields, "VAL") } record(waveform, "$(CAM):Over$(N):6:DisplayText_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(Over$(N),5,1)OVERLAY_DISPLAY_TEXT") field(FTVL, "CHAR") field(NELM, "256") field(SCAN, "I/O Intr") } record(stringout, "$(CAM):Over$(N):6:TimeStampFormat") { field(PINI, "YES") field(DTYP, "asynOctetWrite") field(OUT, "@asyn(Over$(N),5,1)OVERLAY_TIMESTAMP_FORMAT") field(VAL, "%Y-%m-%d %H:%M:%S.%03f") info(autosaveFields, "VAL") } record(stringin, "$(CAM):Over$(N):6:TimeStampFormat_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(Over$(N),5,1)OVERLAY_TIMESTAMP_FORMAT") field(SCAN, "I/O Intr") } record(mbbo, "$(CAM):Over$(N):6:Font") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),5,1)OVERLAY_FONT") field(ZRST, "6x13") field(ZRVL, "0") field(ONST, "6x13 Bold") field(ONVL, "1") field(TWST, "9x15") field(TWVL, "2") field(THST, "9x15 Bold") field(THVL, "3") info(autosaveFields, "VAL") } record(mbbi, "$(CAM):Over$(N):6:Font_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),5,1)OVERLAY_FONT") field(ZRST, "6x13") field(ZRVL, "0") field(ONST, "6x13 Bold") field(ONVL, "1") field(TWST, "9x15") field(TWVL, "2") field(THST, "9x15 Bold") field(THVL, "3") field(SCAN, "I/O Intr") } #=================================================================# # Template file: NDOverlayN.template # Database for NDOverlays # Mark Rivers # March 22, 2010 ################################################################### # These records control the label for the overlay # ################################################################### record(stringout, "$(CAM):Over$(N):7:Name") { field(PINI, "YES") field(DTYP, "asynOctetWrite") field(OUT, "@asyn(Over$(N),6,1)NAME") field(VAL, "Box1") info(autosaveFields, "VAL") } record(stringin, "$(CAM):Over$(N):7:Name_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(Over$(N),6,1)NAME") field(SCAN, "I/O Intr") } ################################################################### # These records control whether this overlay is used # ################################################################### record(bo, "$(CAM):Over$(N):7:Use") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),6,1)USE") field(VAL, "0") field(ZNAM, "No") field(ONAM, "Yes") info(autosaveFields, "VAL") } record(bi, "$(CAM):Over$(N):7:Use_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),6,1)USE") field(ZNAM, "No") field(ONAM, "Yes") field(ZSV, "NO_ALARM") field(OSV, "NO_ALARM") field(SCAN, "I/O Intr") } ################################################################### # These records control the overlay definition # ################################################################### record(longout, "$(CAM):Over$(N):7:PositionXLink") { field(DOL, "junk CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):7:PositionX PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):7:PositionX") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),6,1)OVERLAY_POSITION_X") info(asyn:READBACK, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):7:PositionX_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),6,1)OVERLAY_POSITION_X") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):7:PositionYLink") { field(DOL, "junk CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):7:PositionY PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):7:PositionY") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),6,1)OVERLAY_POSITION_Y") info(asyn:READBACK, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):7:PositionY_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),6,1)OVERLAY_POSITION_Y") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):7:CenterXLink") { field(DOL, " CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):7:CenterX PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):7:CenterX") { field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),6,1)OVERLAY_CENTER_X") info(asyn:READBACK, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):7:CenterX_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),6,1)OVERLAY_CENTER_X") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):7:CenterYLink") { field(DOL, " CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):7:CenterY PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):7:CenterY") { field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),6,1)OVERLAY_CENTER_Y") info(asyn:READBACK, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):7:CenterY_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),6,1)OVERLAY_CENTER_Y") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):7:SizeXLink") { field(DOL, "junk CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):7:SizeX PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):7:SizeX") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),6,1)OVERLAY_SIZE_X") field(LOPR, "1") field(HOPR, "1024") field(VAL, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):7:SizeX_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),6,1)OVERLAY_SIZE_X") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):7:SizeYLink") { field(DOL, "junk CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):7:SizeY PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):7:SizeY") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),6,1)OVERLAY_SIZE_Y") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):7:SizeY_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),6,1)OVERLAY_SIZE_Y") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):7:WidthXLink") { field(DOL, " CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):7:WidthX PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):7:WidthX") { field(DOL, "1") field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),6,1)OVERLAY_WIDTH_X") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):7:WidthX_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),6,1)OVERLAY_WIDTH_X") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):7:WidthYLink") { field(DOL, " CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):7:WidthY PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):7:WidthY") { field(DOL, "1") field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),6,1)OVERLAY_WIDTH_Y") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):7:WidthY_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),6,1)OVERLAY_WIDTH_Y") field(SCAN, "I/O Intr") } record(mbbo, "$(CAM):Over$(N):7:Shape") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),6,1)OVERLAY_SHAPE") field(ZRST, "Cross") field(ZRVL, "0") field(ONST, "Rectangle") field(ONVL, "1") field(TWST, "Ellipse") field(TWVL, "3") field(THST, "Text") field(THVL, "2") field(VAL, "1") info(autosaveFields, "VAL") } record(mbbi, "$(CAM):Over$(N):7:Shape_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),6,1)OVERLAY_SHAPE") field(ZRST, "Cross") field(ZRVL, "0") field(ONST, "Rectangle") field(ONVL, "1") field(TWST, "Ellipse") field(TWVL, "3") field(THST, "Text") field(THVL, "2") field(SCAN, "I/O Intr") } record(mbbo, "$(CAM):Over$(N):7:DrawMode") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),6,1)OVERLAY_DRAW_MODE") field(ZRST, "Set") field(ZRVL, "0") field(ONST, "XOR") field(ONVL, "1") info(autosaveFields, "VAL") } record(mbbi, "$(CAM):Over$(N):7:DrawMode_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),6,1)OVERLAY_DRAW_MODE") field(ZRST, "Set") field(ZRVL, "0") field(ONST, "XOR") field(ONVL, "1") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):7:Red") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),6,1)OVERLAY_RED") field(VAL, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):7:Red_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),6,1)OVERLAY_RED") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):7:Green") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),6,1)OVERLAY_GREEN") field(VAL, "65535") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):7:Green_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),6,1)OVERLAY_GREEN") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):7:Blue") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),6,1)OVERLAY_BLUE") field(VAL, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):7:Blue_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),6,1)OVERLAY_BLUE") field(SCAN, "I/O Intr") } ################################################################### # These records set the HOPR and LOPR values for the position # # and size to the maximum for the input array # ################################################################### record(longin, "$(CAM):Over$(N):7:MaxSizeX") { field(INP, "$(CAM):Over$(N):MaxSizeX_RBV CP") field(FLNK, "$(CAM):Over$(N):7:SetXHOPR.PROC PP") } record(dfanout, "$(CAM):Over$(N):7:SetXHOPR") { field(DOL, "$(CAM):Over$(N):7:MaxSizeX NPP") field(OMSL, "closed_loop") field(OUTA, "$(CAM):Over$(N):7:PositionX.HOPR NPP") field(OUTB, "$(CAM):Over$(N):7:CenterX.HOPR NPP") field(OUTC, "$(CAM):Over$(N):7:SizeX.HOPR NPP") } record(longin, "$(CAM):Over$(N):7:MaxSizeY") { field(INP, "$(CAM):Over$(N):MaxSizeY_RBV CP") field(FLNK, "$(CAM):Over$(N):7:SetYHOPR.PROC PP") } record(dfanout, "$(CAM):Over$(N):7:SetYHOPR") { field(DOL, "$(CAM):Over$(N):7:MaxSizeY NPP") field(OMSL, "closed_loop") field(OUTA, "$(CAM):Over$(N):7:PositionY.HOPR NPP") field(OUTB, "$(CAM):Over$(N):7:CenterY.HOPR NPP") field(OUTC, "$(CAM):Over$(N):7:SizeY.HOPR NPP") } ################################################################### # Text overlay (Keith Brister 2014-06-26) ################################################################### record(waveform, "$(CAM):Over$(N):7:DisplayText") { field(PINI, "YES") field(DTYP, "asynOctetWrite") field(INP, "@asyn(Over$(N),6,1)OVERLAY_DISPLAY_TEXT") field(FTVL, "CHAR") field(NELM, "256") info(autosaveFields, "VAL") } record(waveform, "$(CAM):Over$(N):7:DisplayText_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(Over$(N),6,1)OVERLAY_DISPLAY_TEXT") field(FTVL, "CHAR") field(NELM, "256") field(SCAN, "I/O Intr") } record(stringout, "$(CAM):Over$(N):7:TimeStampFormat") { field(PINI, "YES") field(DTYP, "asynOctetWrite") field(OUT, "@asyn(Over$(N),6,1)OVERLAY_TIMESTAMP_FORMAT") field(VAL, "%Y-%m-%d %H:%M:%S.%03f") info(autosaveFields, "VAL") } record(stringin, "$(CAM):Over$(N):7:TimeStampFormat_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(Over$(N),6,1)OVERLAY_TIMESTAMP_FORMAT") field(SCAN, "I/O Intr") } record(mbbo, "$(CAM):Over$(N):7:Font") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),6,1)OVERLAY_FONT") field(ZRST, "6x13") field(ZRVL, "0") field(ONST, "6x13 Bold") field(ONVL, "1") field(TWST, "9x15") field(TWVL, "2") field(THST, "9x15 Bold") field(THVL, "3") info(autosaveFields, "VAL") } record(mbbi, "$(CAM):Over$(N):7:Font_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),6,1)OVERLAY_FONT") field(ZRST, "6x13") field(ZRVL, "0") field(ONST, "6x13 Bold") field(ONVL, "1") field(TWST, "9x15") field(TWVL, "2") field(THST, "9x15 Bold") field(THVL, "3") field(SCAN, "I/O Intr") } #=================================================================# # Template file: NDOverlayN.template # Database for NDOverlays # Mark Rivers # March 22, 2010 ################################################################### # These records control the label for the overlay # ################################################################### record(stringout, "$(CAM):Over$(N):8:Name") { field(PINI, "YES") field(DTYP, "asynOctetWrite") field(OUT, "@asyn(Over$(N),7,1)NAME") field(VAL, "Box2") info(autosaveFields, "VAL") } record(stringin, "$(CAM):Over$(N):8:Name_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(Over$(N),7,1)NAME") field(SCAN, "I/O Intr") } ################################################################### # These records control whether this overlay is used # ################################################################### record(bo, "$(CAM):Over$(N):8:Use") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),7,1)USE") field(VAL, "0") field(ZNAM, "No") field(ONAM, "Yes") info(autosaveFields, "VAL") } record(bi, "$(CAM):Over$(N):8:Use_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),7,1)USE") field(ZNAM, "No") field(ONAM, "Yes") field(ZSV, "NO_ALARM") field(OSV, "NO_ALARM") field(SCAN, "I/O Intr") } ################################################################### # These records control the overlay definition # ################################################################### record(longout, "$(CAM):Over$(N):8:PositionXLink") { field(DOL, "junk CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):8:PositionX PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):8:PositionX") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),7,1)OVERLAY_POSITION_X") info(asyn:READBACK, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):8:PositionX_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),7,1)OVERLAY_POSITION_X") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):8:PositionYLink") { field(DOL, "junk CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):8:PositionY PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):8:PositionY") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),7,1)OVERLAY_POSITION_Y") info(asyn:READBACK, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):8:PositionY_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),7,1)OVERLAY_POSITION_Y") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):8:CenterXLink") { field(DOL, " CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):8:CenterX PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):8:CenterX") { field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),7,1)OVERLAY_CENTER_X") info(asyn:READBACK, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):8:CenterX_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),7,1)OVERLAY_CENTER_X") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):8:CenterYLink") { field(DOL, " CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):8:CenterY PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):8:CenterY") { field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),7,1)OVERLAY_CENTER_Y") info(asyn:READBACK, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):8:CenterY_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),7,1)OVERLAY_CENTER_Y") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):8:SizeXLink") { field(DOL, "junk CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):8:SizeX PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):8:SizeX") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),7,1)OVERLAY_SIZE_X") field(LOPR, "1") field(HOPR, "1024") field(VAL, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):8:SizeX_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),7,1)OVERLAY_SIZE_X") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):8:SizeYLink") { field(DOL, "junk CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):8:SizeY PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):8:SizeY") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),7,1)OVERLAY_SIZE_Y") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):8:SizeY_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),7,1)OVERLAY_SIZE_Y") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):8:WidthXLink") { field(DOL, " CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):8:WidthX PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):8:WidthX") { field(DOL, "1") field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),7,1)OVERLAY_WIDTH_X") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):8:WidthX_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),7,1)OVERLAY_WIDTH_X") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):8:WidthYLink") { field(DOL, " CP MS") field(OMSL, "closed_loop") field(OUT, "$(CAM):Over$(N):8:WidthY PP") info(autosaveFields, "DOL") } record(longout, "$(CAM):Over$(N):8:WidthY") { field(DOL, "1") field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),7,1)OVERLAY_WIDTH_Y") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):8:WidthY_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),7,1)OVERLAY_WIDTH_Y") field(SCAN, "I/O Intr") } record(mbbo, "$(CAM):Over$(N):8:Shape") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),7,1)OVERLAY_SHAPE") field(ZRST, "Cross") field(ZRVL, "0") field(ONST, "Rectangle") field(ONVL, "1") field(TWST, "Ellipse") field(TWVL, "3") field(THST, "Text") field(THVL, "2") field(VAL, "1") info(autosaveFields, "VAL") } record(mbbi, "$(CAM):Over$(N):8:Shape_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),7,1)OVERLAY_SHAPE") field(ZRST, "Cross") field(ZRVL, "0") field(ONST, "Rectangle") field(ONVL, "1") field(TWST, "Ellipse") field(TWVL, "3") field(THST, "Text") field(THVL, "2") field(SCAN, "I/O Intr") } record(mbbo, "$(CAM):Over$(N):8:DrawMode") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),7,1)OVERLAY_DRAW_MODE") field(ZRST, "Set") field(ZRVL, "0") field(ONST, "XOR") field(ONVL, "1") info(autosaveFields, "VAL") } record(mbbi, "$(CAM):Over$(N):8:DrawMode_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),7,1)OVERLAY_DRAW_MODE") field(ZRST, "Set") field(ZRVL, "0") field(ONST, "XOR") field(ONVL, "1") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):8:Red") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),7,1)OVERLAY_RED") field(VAL, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):8:Red_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),7,1)OVERLAY_RED") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):8:Green") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),7,1)OVERLAY_GREEN") field(VAL, "65535") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):8:Green_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),7,1)OVERLAY_GREEN") field(SCAN, "I/O Intr") } record(longout, "$(CAM):Over$(N):8:Blue") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),7,1)OVERLAY_BLUE") field(VAL, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):Over$(N):8:Blue_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),7,1)OVERLAY_BLUE") field(SCAN, "I/O Intr") } ################################################################### # These records set the HOPR and LOPR values for the position # # and size to the maximum for the input array # ################################################################### record(longin, "$(CAM):Over$(N):8:MaxSizeX") { field(INP, "$(CAM):Over$(N):MaxSizeX_RBV CP") field(FLNK, "$(CAM):Over$(N):8:SetXHOPR.PROC PP") } record(dfanout, "$(CAM):Over$(N):8:SetXHOPR") { field(DOL, "$(CAM):Over$(N):8:MaxSizeX NPP") field(OMSL, "closed_loop") field(OUTA, "$(CAM):Over$(N):8:PositionX.HOPR NPP") field(OUTB, "$(CAM):Over$(N):8:CenterX.HOPR NPP") field(OUTC, "$(CAM):Over$(N):8:SizeX.HOPR NPP") } record(longin, "$(CAM):Over$(N):8:MaxSizeY") { field(INP, "$(CAM):Over$(N):MaxSizeY_RBV CP") field(FLNK, "$(CAM):Over$(N):8:SetYHOPR.PROC PP") } record(dfanout, "$(CAM):Over$(N):8:SetYHOPR") { field(DOL, "$(CAM):Over$(N):8:MaxSizeY NPP") field(OMSL, "closed_loop") field(OUTA, "$(CAM):Over$(N):8:PositionY.HOPR NPP") field(OUTB, "$(CAM):Over$(N):8:CenterY.HOPR NPP") field(OUTC, "$(CAM):Over$(N):8:SizeY.HOPR NPP") } ################################################################### # Text overlay (Keith Brister 2014-06-26) ################################################################### record(waveform, "$(CAM):Over$(N):8:DisplayText") { field(PINI, "YES") field(DTYP, "asynOctetWrite") field(INP, "@asyn(Over$(N),7,1)OVERLAY_DISPLAY_TEXT") field(FTVL, "CHAR") field(NELM, "256") info(autosaveFields, "VAL") } record(waveform, "$(CAM):Over$(N):8:DisplayText_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(Over$(N),7,1)OVERLAY_DISPLAY_TEXT") field(FTVL, "CHAR") field(NELM, "256") field(SCAN, "I/O Intr") } record(stringout, "$(CAM):Over$(N):8:TimeStampFormat") { field(PINI, "YES") field(DTYP, "asynOctetWrite") field(OUT, "@asyn(Over$(N),7,1)OVERLAY_TIMESTAMP_FORMAT") field(VAL, "%Y-%m-%d %H:%M:%S.%03f") info(autosaveFields, "VAL") } record(stringin, "$(CAM):Over$(N):8:TimeStampFormat_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(Over$(N),7,1)OVERLAY_TIMESTAMP_FORMAT") field(SCAN, "I/O Intr") } record(mbbo, "$(CAM):Over$(N):8:Font") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(Over$(N),7,1)OVERLAY_FONT") field(ZRST, "6x13") field(ZRVL, "0") field(ONST, "6x13 Bold") field(ONVL, "1") field(TWST, "9x15") field(TWVL, "2") field(THST, "9x15 Bold") field(THVL, "3") info(autosaveFields, "VAL") } record(mbbi, "$(CAM):Over$(N):8:Font_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(Over$(N),7,1)OVERLAY_FONT") field(ZRST, "6x13") field(ZRVL, "0") field(ONST, "6x13 Bold") field(ONVL, "1") field(TWST, "9x15") field(TWVL, "2") field(THST, "9x15 Bold") field(THVL, "3") field(SCAN, "I/O Intr") }