#=================================================================# # Template file: NDFile.template # Database for NDFile driver, which saves files for NDArray data. # Mark Rivers # April 7, 2008 ################################################################### # These records control file I/O # ################################################################### # File path. record(waveform, "$(CAM):TIFF$(N):FilePath") { field(PINI, "YES") field(DTYP, "asynOctetWrite") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))FILE_PATH") field(FTVL, "CHAR") field(NELM, "256") info(autosaveFields, "VAL") } record(waveform, "$(CAM):TIFF$(N):FilePath_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))FILE_PATH") field(FTVL, "CHAR") field(NELM, "256") field(SCAN, "I/O Intr") } record(bi, "$(CAM):TIFF$(N):FilePathExists_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))FILE_PATH_EXISTS") field(ZNAM, "No") field(ZSV, "MAJOR") field(ONAM, "Yes") field(OSV, "NO_ALARM") field(SCAN, "I/O Intr") } record(longout, "$(CAM):TIFF$(N):CreateDirectory") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))CREATE_DIR") field(VAL, "0" ) info(autosaveFields, "VAL") } record(longin, "$(CAM):TIFF$(N):CreateDirectory_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))CREATE_DIR") field(VAL, "") field(SCAN, "I/O Intr") } # Filename record(waveform, "$(CAM):TIFF$(N):FileName") { field(PINI, "YES") field(DTYP, "asynOctetWrite") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))FILE_NAME") field(FTVL, "CHAR") field(NELM, "256") info(autosaveFields, "VAL") } record(waveform, "$(CAM):TIFF$(N):FileName_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))FILE_NAME") field(FTVL, "CHAR") field(NELM, "256") field(SCAN, "I/O Intr") } record(longout, "$(CAM):TIFF$(N):FileNumber") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))FILE_NUMBER") field(VAL, "1") info(asyn:READBACK, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):TIFF$(N):FileNumber_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))FILE_NUMBER") field(SCAN, "I/O Intr") } # Autoincrement flag record(bo, "$(CAM):TIFF$(N):AutoIncrement") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))AUTO_INCREMENT") field(VAL, "1") field(ZNAM, "No") field(ONAM, "Yes") info(autosaveFields, "VAL") } record(bi, "$(CAM):TIFF$(N):AutoIncrement_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))AUTO_INCREMENT") field(ZNAM, "No") field(ONAM, "Yes") field(SCAN, "I/O Intr") } # File template record(waveform, "$(CAM):TIFF$(N):FileTemplate") { field(PINI, "YES") field(DTYP, "asynOctetWrite") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))FILE_TEMPLATE") field(FTVL, "CHAR") field(NELM, "256") info(autosaveFields, "VAL") } record(waveform, "$(CAM):TIFF$(N):FileTemplate_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))FILE_TEMPLATE") field(FTVL, "CHAR") field(NELM, "256") field(SCAN, "I/O Intr") } # Full filename, including path record(waveform, "$(CAM):TIFF$(N):FullFileName_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))FULL_FILE_NAME") field(FTVL, "CHAR") field(NELM, "256") field(SCAN, "I/O Intr") } # Autosave flag record(bo, "$(CAM):TIFF$(N):AutoSave") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))AUTO_SAVE") field(ZNAM, "No") field(ONAM, "Yes") info(autosaveFields, "VAL") } record(bi, "$(CAM):TIFF$(N):AutoSave_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))AUTO_SAVE") field(ZNAM, "No") field(ONAM, "Yes") field(SCAN, "I/O Intr") } # Write file record(busy, "$(CAM):TIFF$(N):WriteFile") { field(DTYP, "asynInt32") field(OUT, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))WRITE_FILE") field(ZNAM, "Done") field(ONAM, "Write") } record(bi, "$(CAM):TIFF$(N):WriteFile_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))WRITE_FILE") field(ZNAM, "Done") field(ZSV, "NO_ALARM") field(ONAM, "Writing") field(OSV, "NO_ALARM") field(SCAN, "I/O Intr") } # Read file record(busy, "$(CAM):TIFF$(N):ReadFile") { field(DTYP, "asynInt32") field(OUT, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))READ_FILE") field(ZNAM, "Done") field(ONAM, "Read") } record(bi, "$(CAM):TIFF$(N):ReadFile_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))READ_FILE") field(ZNAM, "Done") field(ZSV, "NO_ALARM") field(ONAM, "Reading") field(OSV, "NO_ALARM") field(SCAN, "I/O Intr") } # File data format record(mbbo, "$(CAM):TIFF$(N):FileFormat") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))FILE_FORMAT") field(VAL, "0") field(ZRST, "Undefined") field(ZRVL, "0") field(ONST, "Invalid") field(ONVL, "1") info(autosaveFields, "VAL") } record(mbbi, "$(CAM):TIFF$(N):FileFormat_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))FILE_FORMAT") field(ZRST, "netCDF") field(ZRVL, "0") field(ONST, "Undefined") field(ONVL, "1") field(SCAN, "I/O Intr") } # File save mode record(mbbo, "$(CAM):TIFF$(N):FileWriteMode") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))WRITE_MODE") field(VAL, "0") field(ZRST, "Single") field(ZRVL, "0") field(ONST, "Capture") field(ONVL, "1") field(TWST, "Stream") field(TWVL, "2") info(autosaveFields, "VAL") } record(mbbi, "$(CAM):TIFF$(N):FileWriteMode_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))WRITE_MODE") field(ZRST, "Single") field(ZRVL, "0") field(ONST, "Capture") field(ONVL, "1") field(TWST, "Stream") field(TWVL, "2") field(SCAN, "I/O Intr") } # Capture data record(busy, "$(CAM):TIFF$(N):Capture") { field(DTYP, "asynInt32") field(OUT, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))CAPTURE") field(ZNAM, "Done") field(ONAM, "Capture") field(ZSV, "NO_ALARM") field(OSV, "NO_ALARM") info(autosaveFields, "OSV ZSV") } record(bi, "$(CAM):TIFF$(N):Capture_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))CAPTURE") field(ZNAM, "Done") field(ZSV, "NO_ALARM") field(ONAM, "Capturing") field(OSV, "NO_ALARM") field(SCAN, "I/O Intr") } record(longout, "$(CAM):TIFF$(N):NumCapture") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))NUM_CAPTURE") field(VAL, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):TIFF$(N):NumCapture_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))NUM_CAPTURE") field(SCAN, "I/O Intr") } record(longin, "$(CAM):TIFF$(N):NumCaptured_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))NUM_CAPTURED") field(SCAN, "I/O Intr") } # Delete driver file flag record(bo, "$(CAM):TIFF$(N):DeleteDriverFile") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))DELETE_DRIVER_FILE") field(VAL, "0") field(ZNAM, "No") field(ONAM, "Yes") info(autosaveFields, "VAL") } record(bi, "$(CAM):TIFF$(N):DeleteDriverFile_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))DELETE_DRIVER_FILE") field(ZNAM, "No") field(ONAM, "Yes") field(SCAN, "I/O Intr") } record(bi, "$(CAM):TIFF$(N):WriteStatus") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))WRITE_STATUS") field(ZNAM, "Write OK") field(ZSV, "NO_ALARM") field(ONAM, "Write error") field(OSV, "MAJOR") field(SCAN, "I/O Intr") } record(waveform, "$(CAM):TIFF$(N):WriteMessage") { field(DTYP, "asynOctetRead") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))WRITE_MESSAGE") field(FTVL, "CHAR") field(NELM, "256") field(SCAN, "I/O Intr") } record(bo, "$(CAM):TIFF$(N):LazyOpen") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))FILE_LAZY_OPEN") field(VAL, "0") field(ZNAM, "No") field(ONAM, "Yes") info(autosaveFields, "VAL") } record(bi, "$(CAM):TIFF$(N):LazyOpen_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))FILE_LAZY_OPEN") field(ZNAM, "No") field(ONAM, "Yes") field(SCAN, "I/O Intr") } record(stringout, "$(CAM):TIFF$(N):TempSuffix") { field(PINI, "YES") field(DTYP, "asynOctetWrite") field(OUT, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))FILE_TEMP_SUFFIX") field(VAL, "") } record(stringin, "$(CAM):TIFF$(N):TempSuffix_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))FILE_TEMP_SUFFIX") field(VAL, "") field(SCAN, "I/O Intr") } # Database to add automatic reset of FileNumber on changes # to FilePath, FileTemplate, or FileName # Add FLNKS to ResetFileNumber record(waveform, "$(CAM):TIFF$(N):FilePath") { field(FLNK, "$(CAM):TIFF$(N):ResetFileNumber" ) } record(waveform, "$(CAM):TIFF$(N):FileName") { field(FLNK, "$(CAM):TIFF$(N):ResetFileNumber" ) } record(waveform, "$(CAM):TIFF$(N):FileTemplate") { field(FLNK, "$(CAM):TIFF$(N):ResetFileNumber" ) } # AutoFileNumberReset flag record(bo, "$(CAM):TIFF$(N):AutoFileNumberReset") { field(PINI, "YES") field(VAL, "1") field(ZNAM, "No") field(ONAM, "Yes") info( autosaveFields, "VAL" ) } record(calcout, "$(CAM):TIFF$(N):ResetFileNumber") { field(INPA, "$(CAM):TIFF$(N):AutoFileNumberReset NPP") field(CALC, "A") field(OOPT, "When Non-zero" ) field(OUT, "$(CAM):TIFF$(N):FileNumber PP") } #=================================================================# # Template file: NDFileTIFF.template # Database for NDFileTIFF driver, which saves NDArray data # in the TIFF file format # Mark Rivers # May 10, 2009 #=================================================================# # Template file: NDFile.template # Database for NDFile driver, which saves files for NDArray data. # Mark Rivers # April 7, 2008 ################################################################### # These records control file I/O # ################################################################### # File path. record(waveform, "$(CAM):TIFF$(N):FilePath") { field(PINI, "YES") field(DTYP, "asynOctetWrite") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))FILE_PATH") field(FTVL, "CHAR") field(NELM, "256") info(autosaveFields, "VAL") } record(waveform, "$(CAM):TIFF$(N):FilePath_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))FILE_PATH") field(FTVL, "CHAR") field(NELM, "256") field(SCAN, "I/O Intr") } record(bi, "$(CAM):TIFF$(N):FilePathExists_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))FILE_PATH_EXISTS") field(ZNAM, "No") field(ZSV, "MAJOR") field(ONAM, "Yes") field(OSV, "NO_ALARM") field(SCAN, "I/O Intr") } record(longout, "$(CAM):TIFF$(N):CreateDirectory") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))CREATE_DIR") field(VAL, "0" ) info(autosaveFields, "VAL") } record(longin, "$(CAM):TIFF$(N):CreateDirectory_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))CREATE_DIR") field(VAL, "") field(SCAN, "I/O Intr") } # Filename record(waveform, "$(CAM):TIFF$(N):FileName") { field(PINI, "YES") field(DTYP, "asynOctetWrite") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))FILE_NAME") field(FTVL, "CHAR") field(NELM, "256") info(autosaveFields, "VAL") } record(waveform, "$(CAM):TIFF$(N):FileName_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))FILE_NAME") field(FTVL, "CHAR") field(NELM, "256") field(SCAN, "I/O Intr") } record(longout, "$(CAM):TIFF$(N):FileNumber") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))FILE_NUMBER") field(VAL, "1") info(asyn:READBACK, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):TIFF$(N):FileNumber_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))FILE_NUMBER") field(SCAN, "I/O Intr") } # Autoincrement flag record(bo, "$(CAM):TIFF$(N):AutoIncrement") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))AUTO_INCREMENT") field(VAL, "1") field(ZNAM, "No") field(ONAM, "Yes") info(autosaveFields, "VAL") } record(bi, "$(CAM):TIFF$(N):AutoIncrement_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))AUTO_INCREMENT") field(ZNAM, "No") field(ONAM, "Yes") field(SCAN, "I/O Intr") } # File template record(waveform, "$(CAM):TIFF$(N):FileTemplate") { field(PINI, "YES") field(DTYP, "asynOctetWrite") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))FILE_TEMPLATE") field(FTVL, "CHAR") field(NELM, "256") info(autosaveFields, "VAL") } record(waveform, "$(CAM):TIFF$(N):FileTemplate_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))FILE_TEMPLATE") field(FTVL, "CHAR") field(NELM, "256") field(SCAN, "I/O Intr") } # Full filename, including path record(waveform, "$(CAM):TIFF$(N):FullFileName_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))FULL_FILE_NAME") field(FTVL, "CHAR") field(NELM, "256") field(SCAN, "I/O Intr") } # Autosave flag record(bo, "$(CAM):TIFF$(N):AutoSave") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))AUTO_SAVE") field(ZNAM, "No") field(ONAM, "Yes") info(autosaveFields, "VAL") } record(bi, "$(CAM):TIFF$(N):AutoSave_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))AUTO_SAVE") field(ZNAM, "No") field(ONAM, "Yes") field(SCAN, "I/O Intr") } # Write file record(busy, "$(CAM):TIFF$(N):WriteFile") { field(DTYP, "asynInt32") field(OUT, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))WRITE_FILE") field(ZNAM, "Done") field(ONAM, "Write") } record(bi, "$(CAM):TIFF$(N):WriteFile_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))WRITE_FILE") field(ZNAM, "Done") field(ZSV, "NO_ALARM") field(ONAM, "Writing") field(OSV, "NO_ALARM") field(SCAN, "I/O Intr") } # Read file record(busy, "$(CAM):TIFF$(N):ReadFile") { field(DTYP, "asynInt32") field(OUT, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))READ_FILE") field(ZNAM, "Done") field(ONAM, "Read") } record(bi, "$(CAM):TIFF$(N):ReadFile_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))READ_FILE") field(ZNAM, "Done") field(ZSV, "NO_ALARM") field(ONAM, "Reading") field(OSV, "NO_ALARM") field(SCAN, "I/O Intr") } # File data format record(mbbo, "$(CAM):TIFF$(N):FileFormat") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))FILE_FORMAT") field(VAL, "0") field(ZRST, "Undefined") field(ZRVL, "0") field(ONST, "Invalid") field(ONVL, "1") info(autosaveFields, "VAL") } record(mbbi, "$(CAM):TIFF$(N):FileFormat_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))FILE_FORMAT") field(ZRST, "netCDF") field(ZRVL, "0") field(ONST, "Undefined") field(ONVL, "1") field(SCAN, "I/O Intr") } # File save mode record(mbbo, "$(CAM):TIFF$(N):FileWriteMode") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))WRITE_MODE") field(VAL, "0") field(ZRST, "Single") field(ZRVL, "0") field(ONST, "Capture") field(ONVL, "1") field(TWST, "Stream") field(TWVL, "2") info(autosaveFields, "VAL") } record(mbbi, "$(CAM):TIFF$(N):FileWriteMode_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))WRITE_MODE") field(ZRST, "Single") field(ZRVL, "0") field(ONST, "Capture") field(ONVL, "1") field(TWST, "Stream") field(TWVL, "2") field(SCAN, "I/O Intr") } # Capture data record(busy, "$(CAM):TIFF$(N):Capture") { field(DTYP, "asynInt32") field(OUT, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))CAPTURE") field(ZNAM, "Done") field(ONAM, "Capture") field(ZSV, "NO_ALARM") field(OSV, "NO_ALARM") info(autosaveFields, "OSV ZSV") } record(bi, "$(CAM):TIFF$(N):Capture_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))CAPTURE") field(ZNAM, "Done") field(ZSV, "NO_ALARM") field(ONAM, "Capturing") field(OSV, "NO_ALARM") field(SCAN, "I/O Intr") } record(longout, "$(CAM):TIFF$(N):NumCapture") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))NUM_CAPTURE") field(VAL, "1") info(autosaveFields, "VAL") } record(longin, "$(CAM):TIFF$(N):NumCapture_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))NUM_CAPTURE") field(SCAN, "I/O Intr") } record(longin, "$(CAM):TIFF$(N):NumCaptured_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))NUM_CAPTURED") field(SCAN, "I/O Intr") } # Delete driver file flag record(bo, "$(CAM):TIFF$(N):DeleteDriverFile") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))DELETE_DRIVER_FILE") field(VAL, "0") field(ZNAM, "No") field(ONAM, "Yes") info(autosaveFields, "VAL") } record(bi, "$(CAM):TIFF$(N):DeleteDriverFile_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))DELETE_DRIVER_FILE") field(ZNAM, "No") field(ONAM, "Yes") field(SCAN, "I/O Intr") } record(bi, "$(CAM):TIFF$(N):WriteStatus") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))WRITE_STATUS") field(ZNAM, "Write OK") field(ZSV, "NO_ALARM") field(ONAM, "Write error") field(OSV, "MAJOR") field(SCAN, "I/O Intr") } record(waveform, "$(CAM):TIFF$(N):WriteMessage") { field(DTYP, "asynOctetRead") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))WRITE_MESSAGE") field(FTVL, "CHAR") field(NELM, "256") field(SCAN, "I/O Intr") } record(bo, "$(CAM):TIFF$(N):LazyOpen") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))FILE_LAZY_OPEN") field(VAL, "0") field(ZNAM, "No") field(ONAM, "Yes") info(autosaveFields, "VAL") } record(bi, "$(CAM):TIFF$(N):LazyOpen_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))FILE_LAZY_OPEN") field(ZNAM, "No") field(ONAM, "Yes") field(SCAN, "I/O Intr") } record(stringout, "$(CAM):TIFF$(N):TempSuffix") { field(PINI, "YES") field(DTYP, "asynOctetWrite") field(OUT, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))FILE_TEMP_SUFFIX") field(VAL, "") } record(stringin, "$(CAM):TIFF$(N):TempSuffix_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))FILE_TEMP_SUFFIX") field(VAL, "") field(SCAN, "I/O Intr") } #=================================================================# # 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):TIFF$(N):ADCoreVersion_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(TIFF$(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):TIFF$(N):DriverVersion_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(TIFF$(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):TIFF$(N):PortName_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(TIFF$(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):TIFF$(N):Manufacturer_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))MANUFACTURER") field(VAL, "Unknown") field(SCAN, "I/O Intr") } record(stringin, "$(CAM):TIFF$(N):Model_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))MODEL") field(VAL, "Unknown") field(SCAN, "I/O Intr") } record(stringin, "$(CAM):TIFF$(N):SerialNumber_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))SERIAL_NUMBER") field(VAL, "Unknown") field(SCAN, "I/O Intr") } record(stringin, "$(CAM):TIFF$(N):SDKVersion_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))SDK_VERSION") field(VAL, "Unknown") field(SCAN, "I/O Intr") } record(stringin, "$(CAM):TIFF$(N):FirmwareVersion_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(TIFF$(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):TIFF$(N):Acquire") { field(DTYP, "asynInt32") field(OUT, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))ACQUIRE") field(ZNAM, "Done") field(ONAM, "Acquire") field(VAL, "0") field(FLNK, "$(CAM):TIFF$(N):SetAcquireBusy") info(asyn:READBACK, "1") } record(bi, "$(CAM):TIFF$(N):Acquire_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(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):TIFF$(N):SetAcquireBusy") { field(INPA, "$(CAM):TIFF$(N):Acquire NPP") field(CALC, "A") field(OOPT, "Transition To Non-zero") field(OUT, "$(CAM):TIFF$(N):AcquireBusy PP") } record(busy, "$(CAM):TIFF$(N):AcquireBusy") { field(ZNAM, "Done") field(ZSV, "NO_ALARM") field(ONAM, "Acquiring") field(OSV, "MINOR") field(VAL, "0") } record(bi, "$(CAM):TIFF$(N):AcquireBusyCB") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(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):TIFF$(N):ClearAcquireBusy") { field(INPA, "$(CAM):TIFF$(N):AcquireBusyCB CP") field(CALC, "A") field(OOPT, "Transition To Zero") field(OUT, "$(CAM):TIFF$(N):AcquireBusy PP") } record(bo, "$(CAM):TIFF$(N):WaitForPlugins") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(TIFF$(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):TIFF$(N):NDimensions") { field(DTYP, "asynInt32") field(OUT, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))ARRAY_NDIMENSIONS") } record(longin, "$(CAM):TIFF$(N):NDimensions_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))ARRAY_NDIMENSIONS") field(SCAN, "I/O Intr") } # The array dimensions waveform records record(waveform, "$(CAM):TIFF$(N):Dimensions") { field(DTYP, "asynInt32ArrayOut") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))ARRAY_DIMENSIONS") field(FTVL, "LONG") field(NELM, "10") field(FLNK, "$(CAM):TIFF$(N):Dim0SA") } record(subArray, "$(CAM):TIFF$(N):Dim0SA") { field(INP, "$(CAM):TIFF$(N):Dimensions NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "0") field(FLNK, "$(CAM):TIFF$(N):ArraySize0") } record(longin, "$(CAM):TIFF$(N):ArraySize0") { field(INP, "$(CAM):TIFF$(N):Dim0SA") field(FLNK, "$(CAM):TIFF$(N):Dim1SA") } record(subArray, "$(CAM):TIFF$(N):Dim1SA") { field(INP, "$(CAM):TIFF$(N):Dimensions NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "1") field(FLNK, "$(CAM):TIFF$(N):ArraySize1") } record(longin, "$(CAM):TIFF$(N):ArraySize1") { field(INP, "$(CAM):TIFF$(N):Dim1SA") field(FLNK, "$(CAM):TIFF$(N):Dim2SA") } record(subArray, "$(CAM):TIFF$(N):Dim2SA") { field(INP, "$(CAM):TIFF$(N):Dimensions NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "2") field(FLNK, "$(CAM):TIFF$(N):ArraySize2") } record(longin, "$(CAM):TIFF$(N):ArraySize2") { field(INP, "$(CAM):TIFF$(N):Dim2SA") field(FLNK, "$(CAM):TIFF$(N):Dim3SA") } record(subArray, "$(CAM):TIFF$(N):Dim3SA") { field(INP, "$(CAM):TIFF$(N):Dimensions NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "3") field(FLNK, "$(CAM):TIFF$(N):ArraySize3") } record(longin, "$(CAM):TIFF$(N):ArraySize3") { field(INP, "$(CAM):TIFF$(N):Dim3SA") field(FLNK, "$(CAM):TIFF$(N):Dim4SA") } record(subArray, "$(CAM):TIFF$(N):Dim4SA") { field(INP, "$(CAM):TIFF$(N):Dimensions NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "4") field(FLNK, "$(CAM):TIFF$(N):ArraySize4") } record(longin, "$(CAM):TIFF$(N):ArraySize4") { field(INP, "$(CAM):TIFF$(N):Dim4SA") field(FLNK, "$(CAM):TIFF$(N):Dim5SA") } record(subArray, "$(CAM):TIFF$(N):Dim5SA") { field(INP, "$(CAM):TIFF$(N):Dimensions NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "5") field(FLNK, "$(CAM):TIFF$(N):ArraySize5") } record(longin, "$(CAM):TIFF$(N):ArraySize5") { field(INP, "$(CAM):TIFF$(N):Dim5SA") field(FLNK, "$(CAM):TIFF$(N):Dim6SA") } record(subArray, "$(CAM):TIFF$(N):Dim6SA") { field(INP, "$(CAM):TIFF$(N):Dimensions NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "6") field(FLNK, "$(CAM):TIFF$(N):ArraySize6") } record(longin, "$(CAM):TIFF$(N):ArraySize6") { field(INP, "$(CAM):TIFF$(N):Dim6SA") field(FLNK, "$(CAM):TIFF$(N):Dim7SA") } record(subArray, "$(CAM):TIFF$(N):Dim7SA") { field(INP, "$(CAM):TIFF$(N):Dimensions NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "7") field(FLNK, "$(CAM):TIFF$(N):ArraySize7") } record(longin, "$(CAM):TIFF$(N):ArraySize7") { field(INP, "$(CAM):TIFF$(N):Dim7SA") field(FLNK, "$(CAM):TIFF$(N):Dim8SA") } record(subArray, "$(CAM):TIFF$(N):Dim8SA") { field(INP, "$(CAM):TIFF$(N):Dimensions NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "8") field(FLNK, "$(CAM):TIFF$(N):ArraySize8") } record(longin, "$(CAM):TIFF$(N):ArraySize8") { field(INP, "$(CAM):TIFF$(N):Dim8SA") field(FLNK, "$(CAM):TIFF$(N):Dim9SA") } record(subArray, "$(CAM):TIFF$(N):Dim9SA") { field(INP, "$(CAM):TIFF$(N):Dimensions NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "9") field(FLNK, "$(CAM):TIFF$(N):ArraySize9") } record(longin, "$(CAM):TIFF$(N):ArraySize9") { field(INP, "$(CAM):TIFF$(N):Dim9SA") } record(waveform, "$(CAM):TIFF$(N):Dimensions_RBV") { field(DTYP, "asynInt32ArrayIn") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))ARRAY_DIMENSIONS") field(FTVL, "LONG") field(NELM, "10") field(FLNK, "$(CAM):TIFF$(N):Dim0SA_RBV") field(SCAN, "I/O Intr") } record(subArray, "$(CAM):TIFF$(N):Dim0SA_RBV") { field(INP, "$(CAM):TIFF$(N):Dimensions_RBV NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "0") field(FLNK, "$(CAM):TIFF$(N):ArraySize0_RBV") } record(longin, "$(CAM):TIFF$(N):ArraySize0_RBV") { field(INP, "$(CAM):TIFF$(N):Dim0SA_RBV") field(FLNK, "$(CAM):TIFF$(N):Dim1SA_RBV") } record(subArray, "$(CAM):TIFF$(N):Dim1SA_RBV") { field(INP, "$(CAM):TIFF$(N):Dimensions_RBV NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "1") field(FLNK, "$(CAM):TIFF$(N):ArraySize1_RBV") } record(longin, "$(CAM):TIFF$(N):ArraySize1_RBV") { field(INP, "$(CAM):TIFF$(N):Dim1SA_RBV") field(FLNK, "$(CAM):TIFF$(N):Dim2SA_RBV") } record(subArray, "$(CAM):TIFF$(N):Dim2SA_RBV") { field(INP, "$(CAM):TIFF$(N):Dimensions_RBV NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "2") field(FLNK, "$(CAM):TIFF$(N):ArraySize2_RBV") } record(longin, "$(CAM):TIFF$(N):ArraySize2_RBV") { field(INP, "$(CAM):TIFF$(N):Dim2SA_RBV") field(FLNK, "$(CAM):TIFF$(N):Dim3SA_RBV") } record(subArray, "$(CAM):TIFF$(N):Dim3SA_RBV") { field(INP, "$(CAM):TIFF$(N):Dimensions_RBV NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "3") field(FLNK, "$(CAM):TIFF$(N):ArraySize3_RBV") } record(longin, "$(CAM):TIFF$(N):ArraySize3_RBV") { field(INP, "$(CAM):TIFF$(N):Dim3SA_RBV") field(FLNK, "$(CAM):TIFF$(N):Dim4SA_RBV") } record(subArray, "$(CAM):TIFF$(N):Dim4SA_RBV") { field(INP, "$(CAM):TIFF$(N):Dimensions_RBV NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "4") field(FLNK, "$(CAM):TIFF$(N):ArraySize4_RBV") } record(longin, "$(CAM):TIFF$(N):ArraySize4_RBV") { field(INP, "$(CAM):TIFF$(N):Dim4SA_RBV") field(FLNK, "$(CAM):TIFF$(N):Dim5SA_RBV") } record(subArray, "$(CAM):TIFF$(N):Dim5SA_RBV") { field(INP, "$(CAM):TIFF$(N):Dimensions_RBV NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "5") field(FLNK, "$(CAM):TIFF$(N):ArraySize5_RBV") } record(longin, "$(CAM):TIFF$(N):ArraySize5_RBV") { field(INP, "$(CAM):TIFF$(N):Dim5SA_RBV") field(FLNK, "$(CAM):TIFF$(N):Dim6SA_RBV") } record(subArray, "$(CAM):TIFF$(N):Dim6SA_RBV") { field(INP, "$(CAM):TIFF$(N):Dimensions_RBV NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "6") field(FLNK, "$(CAM):TIFF$(N):ArraySize6_RBV") } record(longin, "$(CAM):TIFF$(N):ArraySize6_RBV") { field(INP, "$(CAM):TIFF$(N):Dim6SA_RBV") field(FLNK, "$(CAM):TIFF$(N):Dim7SA_RBV") } record(subArray, "$(CAM):TIFF$(N):Dim7SA_RBV") { field(INP, "$(CAM):TIFF$(N):Dimensions_RBV NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "7") field(FLNK, "$(CAM):TIFF$(N):ArraySize7_RBV") } record(longin, "$(CAM):TIFF$(N):ArraySize7_RBV") { field(INP, "$(CAM):TIFF$(N):Dim7SA_RBV") field(FLNK, "$(CAM):TIFF$(N):Dim8SA_RBV") } record(subArray, "$(CAM):TIFF$(N):Dim8SA_RBV") { field(INP, "$(CAM):TIFF$(N):Dimensions_RBV NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "8") field(FLNK, "$(CAM):TIFF$(N):ArraySize8_RBV") } record(longin, "$(CAM):TIFF$(N):ArraySize8_RBV") { field(INP, "$(CAM):TIFF$(N):Dim8SA_RBV") field(FLNK, "$(CAM):TIFF$(N):Dim9SA_RBV") } record(subArray, "$(CAM):TIFF$(N):Dim9SA_RBV") { field(INP, "$(CAM):TIFF$(N):Dimensions_RBV NPP NMS") field(FTVL, "LONG") field(MALM, "10") field(NELM, "1") field(INDX, "9") field(FLNK, "$(CAM):TIFF$(N):ArraySize9_RBV") } record(longin, "$(CAM):TIFF$(N):ArraySize9_RBV") { field(INP, "$(CAM):TIFF$(N):Dim9SA_RBV") } record(mbbi, "$(CAM):TIFF$(N):BayerPattern_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(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):TIFF$(N):ArraySizeX_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))ARRAY_SIZE_X") field(SCAN, "I/O Intr") } record(longin, "$(CAM):TIFF$(N):ArraySizeY_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))ARRAY_SIZE_Y") field(SCAN, "I/O Intr") } record(longin, "$(CAM):TIFF$(N):ArraySizeZ_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))ARRAY_SIZE_Z") field(SCAN, "I/O Intr") } record(longin, "$(CAM):TIFF$(N):ArraySize_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))ARRAY_SIZE") field(SCAN, "I/O Intr") } ################################################################### # These records have information on the compression # ################################################################### record(stringin, "$(CAM):TIFF$(N):Codec_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))CODEC") field(VAL, "") field(SCAN, "I/O Intr") } record(longin, "$(CAM):TIFF$(N):CompressedSize_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))COMPRESSED_SIZE") field(SCAN, "I/O Intr") } ################################################################### # These records control the data type # ################################################################### record(mbbo, "$(CAM):TIFF$(N):DataType") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(TIFF$(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):TIFF$(N):DataType_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(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):TIFF$(N):BitsPerPixel_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(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):TIFF$(N):ColorMode") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(TIFF$(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):TIFF$(N):ColorMode_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(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):TIFF$(N):UniqueId_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))UNIQUE_ID") field(SCAN, "I/O Intr") } record(ai, "$(CAM):TIFF$(N):TimeStamp_RBV") { field(DTYP, "asynFloat64") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))TIME_STAMP") field(PREC, "3") field(SCAN, "I/O Intr") } record(longin, "$(CAM):TIFF$(N):EpicsTSSec_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))EPICS_TS_SEC") field(SCAN, "I/O Intr") } record(longin, "$(CAM):TIFF$(N):EpicsTSNsec_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(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):TIFF$(N):ArrayCounter") { field(DTYP, "asynInt32") field(OUT, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))ARRAY_COUNTER") } record(longin, "$(CAM):TIFF$(N):ArrayCounter_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(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):TIFF$(N):ArrayRate_RBV") { field(INPA, "$(CAM):TIFF$(N):ArrayRate_RBV.LB NPP NMS") # Previous counter (Last B value) field(INPB, "$(CAM):TIFF$(N):ArrayCounter_RBV NPP NMS") # Current counter value field(INPC, "1.0") # Delta time in seconds field(INPD, "$(CAM):TIFF$(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):TIFF$(N):ArrayCallbacks") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(TIFF$(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):TIFF$(N):ArrayCallbacks_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(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):TIFF$(N):NDAttributesMacros") { field(PINI, "YES") field(DTYP, "asynOctetWrite") field(INP, "@asyn(TIFF$(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):TIFF$(N):NDAttributesFile") { field(PINI, "YES") field(DTYP, "asynOctetWrite") field(INP, "@asyn(TIFF$(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):TIFF$(N):NDAttributesStatus") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(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):TIFF$(N):PoolMaxMem") { field(DTYP, "asynFloat64") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))POOL_MAX_MEMORY") field(PREC, "1") field(EGU, "MB") field(SCAN, "Passive") field(PINI, "YES") } record(ai, "$(CAM):TIFF$(N):PoolUsedMem") { field(DTYP, "asynFloat64") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))POOL_USED_MEMORY") field(PREC, "1") field(EGU, "MB") field(SCAN, "1 second") field(FLNK, "$(CAM):TIFF$(N):PoolAllocBuffers") info(autosaveFields, "SCAN") } record(longin, "$(CAM):TIFF$(N):PoolAllocBuffers") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))POOL_ALLOC_BUFFERS") field(FLNK, "$(CAM):TIFF$(N):PoolFreeBuffers") } record(longin, "$(CAM):TIFF$(N):PoolFreeBuffers") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))POOL_FREE_BUFFERS") field(FLNK, "$(CAM):TIFF$(N):PoolUsedBuffers") } record(calc, "$(CAM):TIFF$(N):PoolUsedBuffers") { field(INPA, "$(CAM):TIFF$(N):PoolAllocBuffers NPP MS") field(INPB, "$(CAM):TIFF$(N):PoolFreeBuffers NPP MS") field(CALC, "A-B") } record(bo, "$(CAM):TIFF$(N):EmptyFreeList") { field(DTYP, "asynInt32") field(OUT, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))POOL_EMPTY_FREELIST") } record(longin, "$(CAM):TIFF$(N):NumQueuedArrays") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))NUM_QUEUED_ARRAYS") field(SCAN, "I/O Intr") } ################################################################### # This record contains the type of plugin # ################################################################### record(stringin, "$(CAM):TIFF$(N):PluginType_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(TIFF$(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):TIFF$(N):NDArrayPort") { field(PINI, "YES") field(DTYP, "asynOctetWrite") field(OUT, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))NDARRAY_PORT") field(VAL, "$(PLUGIN_SRC)") info(autosaveFields, "DESC VAL") } record(stringin, "$(CAM):TIFF$(N):NDArrayPort_RBV") { field(DTYP, "asynOctetRead") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))NDARRAY_PORT") field(SCAN, "I/O Intr") } record(longout, "$(CAM):TIFF$(N):NDArrayAddress") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))NDARRAY_ADDR") field(VAL, "$(NDARRAY_ADDR=0)") info(autosaveFields, "DESC VAL") } record(longin, "$(CAM):TIFF$(N):NDArrayAddress_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(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):TIFF$(N):EnableCallbacks") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))ENABLE_CALLBACKS") field(ZNAM, "Disabled") field(ONAM, "Enabled") field(VAL, "0") info(autosaveFields, "DESC VAL") } record(bi, "$(CAM):TIFF$(N):EnableCallbacks_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(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):TIFF$(N):MinCallbackTime") { field(PINI, "YES") field(DTYP, "asynFloat64") field(OUT, "@asyn(TIFF$(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):TIFF$(N):MinCallbackTime_RBV") { field(DTYP, "asynFloat64") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))MIN_CALLBACK_TIME") field(EGU, "s") field(PREC, "3") field(SCAN, "I/O Intr") } record(ao, "$(CAM):TIFF$(N):MaxArrayRate") { field(DTYP, "Soft Channel") field(OUT, "$(CAM):TIFF$(N):MaxArrayRate_COUT PP") field(EGU, "Hz") field(PREC, "3") field(VAL, "0.0") info(autosaveFields, "VAL") } record(calcout, "$(CAM):TIFF$(N):MaxArrayRate_COUT") { field(INPA, "$(CAM):TIFF$(N):MaxArrayRate") field(CALC, "A=0?0:1.0/A") field(OUT, "$(CAM):TIFF$(N):MinCallbackTime PP") } record(calc, "$(CAM):TIFF$(N):MaxArrayRate_RBV") { field(INPA, "$(CAM):TIFF$(N):MinCallbackTime_RBV CP") field(CALC, "A=0?0:1.0/A") field(EGU, "Hz") field(PREC, "3") field(SCAN, "Passive") } record(ao, "$(CAM):TIFF$(N):MaxByteRate") { field(PINI, "YES") field(DTYP, "asynFloat64") field(OUT, "@asyn(TIFF$(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):TIFF$(N):MaxByteRate_RBV") { field(DTYP, "asynFloat64") field(INP, "@asyn(TIFF$(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):TIFF$(N):ExecutionTime_RBV") { field(DTYP, "asynFloat64") field(INP, "@asyn(TIFF$(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):TIFF$(N):ProcessPlugin") { field(DTYP, "asynInt32") field(OUT, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))PROCESS_PLUGIN") field(VAL, "1") } ################################################################### # These records control whether callbacks block or not # ################################################################### record(bo, "$(CAM):TIFF$(N):BlockingCallbacks") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(TIFF$(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):TIFF$(N):BlockingCallbacks_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(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):TIFF$(N):DroppedArrays") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(TIFF$(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):TIFF$(N):DroppedArrays_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(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):TIFF$(N):QueueSize") { field(DTYP, "asynInt32") field(OUT, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))QUEUE_SIZE") field(PINI, "YES") info( autosaveFields, "DESC EGU" ) } record(longin, "$(CAM):TIFF$(N):QueueSize_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))QUEUE_SIZE") field(FLNK, "$(CAM):TIFF$(N):QueueFreeLow") field(SCAN, "I/O Intr") } record(calcout, "$(CAM):TIFF$(N):QueueFreeLow") { field(CALC, "A*0.25") field(INPA, "$(CAM):TIFF$(N):QueueSize") field(OUT, "$(CAM):TIFF$(N):QueueFree.LOW") field(FLNK, "$(CAM):TIFF$(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):TIFF$(N):QueueUseHIGH") { field(CALC, "A*0.75") field(INPA, "$(CAM):TIFF$(N):QueueSize") field(OUT, "$(CAM):TIFF$(N):QueueUse.HIGH") field(FLNK, "$(CAM):TIFF$(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):TIFF$(N):QueueUseHIHI") { field(CALC, "A*1.0") field(INPA, "$(CAM):TIFF$(N):QueueSize") field(OUT, "$(CAM):TIFF$(N):QueueUse.HIHI") } record(longin, "$(CAM):TIFF$(N):QueueFree") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(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):TIFF$(N):QueueUse") { field(CALC, "A-B") field(INPA, "$(CAM):TIFF$(N):QueueSize") field(INPB, "$(CAM):TIFF$(N):QueueFree CP") field(SCAN, "Passive") field(HHSV, "MAJOR") field(HSV, "MINOR") field(HYST, "1") } record(longout, "$(CAM):TIFF$(N):NumThreads") { field(DTYP, "asynInt32") field(OUT, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))NUM_THREADS") field(VAL, "1") field(PINI, "YES") info(autosaveFields, "DESC VAL") } record(longin, "$(CAM):TIFF$(N):NumThreads_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))NUM_THREADS") field(SCAN, "I/O Intr") } record(longin, "$(CAM):TIFF$(N):MaxThreads_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))MAX_THREADS") field(SCAN, "I/O Intr") } ################################################################### # These records control output array sorting # ################################################################### record(mbbo, "$(CAM):TIFF$(N):SortMode") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))SORT_MODE") field(ZRVL, "0") field(ZRST, "Unsorted") field(ONVL, "1") field(ONST, "Sorted") } record(mbbi, "$(CAM):TIFF$(N):SortMode_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(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):TIFF$(N):SortTime") { field(PINI, "YES") field(DTYP, "asynFloat64") field(OUT, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))SORT_TIME") field(PREC, "3") field(VAL, "0.1") } record(ai, "$(CAM):TIFF$(N):SortTime_RBV") { field(DTYP, "asynFloat64") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))SORT_TIME") field(PREC, "3") field(SCAN, "I/O Intr") } record(longout, "$(CAM):TIFF$(N):SortSize") { field(DTYP, "asynInt32") field(OUT, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))SORT_SIZE") field(VAL, "20") field(PINI, "YES") } record(longin, "$(CAM):TIFF$(N):SortSize_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))SORT_SIZE") field(FLNK, "$(CAM):TIFF$(N):SortFreeLow") field(SCAN, "I/O Intr") } record(longin, "$(CAM):TIFF$(N):SortFree") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(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):TIFF$(N):SortFreeLow") { field(CALC, "A*0.25") field(INPA, "$(CAM):TIFF$(N):SortSize") field(OUT, "$(CAM):TIFF$(N):SortFree.LOW") } record(longout, "$(CAM):TIFF$(N):DroppedOutputArrays") { field(PINI, "YES") field(DTYP, "asynInt32") field(OUT, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))DROPPED_OUTPUT_ARRAYS") field(VAL, "0") } record(longin, "$(CAM):TIFF$(N):DroppedOutputArrays_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))DROPPED_OUTPUT_ARRAYS") field(SCAN, "I/O Intr") } record(longout, "$(CAM):TIFF$(N):DisorderedArrays") { field(DTYP, "asynInt32") field(OUT, "@asyn(TIFF$(N),$(ADDR=0),$(TIMEOUT=1))DISORDERED_ARRAYS") field(PINI, "YES") } record(longin, "$(CAM):TIFF$(N):DisorderedArrays_RBV") { field(DTYP, "asynInt32") field(INP, "@asyn(TIFF$(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):TIFF$(N):AsynIO") { field(PORT, "TIFF$(N)") field(TIB2,"1") info("ADType", "ADPlugin") } # We replace some fields in records defined in NDFile.template # File data format record(mbbo, "$(CAM):TIFF$(N):FileFormat") { field(ZRST, "TIFF") field(ZRVL, "0") field(ONST, "Invalid") field(ONVL, "1") } record(mbbi, "$(CAM):TIFF$(N):FileFormat_RBV") { field(ZRST, "TIFF") field(ZRVL, "0") field(ONST, "Undefined") field(ONVL, "1") }