git-svn-id: https://subversion.xor.aps.anl.gov/synApps/areaDetector/trunk@15352 dc6c5ff5-0b8b-c028-a01f-ffb33f00fc8b
392 lines
11 KiB
Plaintext
Executable File
392 lines
11 KiB
Plaintext
Executable File
# Database for NDFileHDF5 driver, which saves files for NDArray data.
|
|
|
|
# Macros:
|
|
# % macro, P, Device Prefix
|
|
# % macro, R, Device Suffix
|
|
# % macro, PORT, Asyn Port name
|
|
|
|
# % gdatag, template, NDFileHDF5, $(PORT)_NDFileHDF5, $(PORT) NDFileHDF5 class instance
|
|
|
|
# This associates the template with an edm screen
|
|
# % gui, $(PORT), edmtab, NDFileHDF5.edl, P=$(P),R=$(R)
|
|
|
|
# We replace some fields in records defined in NDFile.template
|
|
# File data format
|
|
record(mbbo, "$(P)$(R)FileFormat")
|
|
{
|
|
field(ZRST, "HDF5")
|
|
field(ZRVL, "0")
|
|
field(ONST, "Invalid")
|
|
field(ONVL, "1")
|
|
}
|
|
|
|
record(mbbi, "$(P)$(R)FileFormat_RBV")
|
|
{
|
|
field(ZRST, "HDF5")
|
|
field(ZRVL, "0")
|
|
field(ONST, "Undefined")
|
|
field(ONVL, "1")
|
|
}
|
|
|
|
# % gdatag, pv, rw, $(PORT)_NDFileHDF5, NumRowChunks, Number of rows to use per chunk
|
|
record(longout, "$(P)$(R)NumRowChunks")
|
|
{
|
|
field(DTYP, "asynInt32")
|
|
field(OUT, "@asyn($(PORT),0)HDF5_nRowChunks")
|
|
field(PINI, "YES")
|
|
}
|
|
|
|
# % gdatag, pv, ro, $(PORT)_NDFileHDF5, NumRowChunks_RBV, Readback of number of rows to use per chunk
|
|
record(longin, "$(P)$(R)NumRowChunks_RBV")
|
|
{
|
|
field(DTYP, "asynInt32")
|
|
field(INP, "@asyn($(PORT),0)HDF5_nRowChunks")
|
|
field(PINI, "NO")
|
|
field(SCAN, "I/O Intr")
|
|
}
|
|
|
|
# % gdatag, pv, rw, $(PORT)_NDFileHDF5, NumColChunks, Number of columns to use per chunk
|
|
record(longout, "$(P)$(R)NumColChunks")
|
|
{
|
|
field(DTYP, "asynInt32")
|
|
field(OUT, "@asyn($(PORT),0)HDF5_nColChunks")
|
|
field(PINI, "YES")
|
|
}
|
|
|
|
# % gdatag, pv, ro, $(PORT)_NDFileHDF5, NumColChunks_RBV, Readback of number of columns to use per chunk
|
|
record(longin, "$(P)$(R)NumColChunks_RBV")
|
|
{
|
|
field(DTYP, "asynInt32")
|
|
field(INP, "@asyn($(PORT),0)HDF5_nColChunks")
|
|
field(PINI, "NO")
|
|
field(SCAN, "I/O Intr")
|
|
}
|
|
|
|
# % gdatag, pv, rw, $(PORT)_NDFileHDF5, NumFramesChunks, Number of frames to cache and use per chunk
|
|
record(longout, "$(P)$(R)NumFramesChunks")
|
|
{
|
|
field(DTYP, "asynInt32")
|
|
field(OUT, "@asyn($(PORT),0)HDF5_nFramesChunks")
|
|
field(PINI, "YES")
|
|
}
|
|
|
|
# % gdatag, pv, ro, $(PORT)_NDFileHDF5, NumFramesChunks_RBV, Readback of number of frames to use and cache per chunk
|
|
record(longin, "$(P)$(R)NumFramesChunks_RBV")
|
|
{
|
|
field(DTYP, "asynInt32")
|
|
field(INP, "@asyn($(PORT),0)HDF5_nFramesChunks")
|
|
field(PINI, "NO")
|
|
field(SCAN, "I/O Intr")
|
|
}
|
|
|
|
record(longout, "$(P)$(R)BoundaryAlign")
|
|
{
|
|
field(DTYP, "asynInt32")
|
|
field(OUT, "@asyn($(PORT),0)HDF5_chunkBoundaryAlign")
|
|
field(PINI, "YES")
|
|
field(VAL, "0")
|
|
field(EGU, "bytes")
|
|
}
|
|
|
|
record(longin, "$(P)$(R)BoundaryAlign_RBV")
|
|
{
|
|
field(DTYP, "asynInt32")
|
|
field(INP, "@asyn($(PORT),0)HDF5_chunkBoundaryAlign")
|
|
field(PINI, "NO")
|
|
field(SCAN, "I/O Intr")
|
|
field(EGU, "bytes")
|
|
}
|
|
|
|
record(longout, "$(P)$(R)BoundaryThreshold")
|
|
{
|
|
field(DTYP, "asynInt32")
|
|
field(OUT, "@asyn($(PORT),0)HDF5_chunkBoundaryThreshold")
|
|
field(PINI, "YES")
|
|
field(VAL, "1")
|
|
field(EGU, "bytes")
|
|
}
|
|
|
|
record(longin, "$(P)$(R)BoundaryThreshold_RBV")
|
|
{
|
|
field(DTYP, "asynInt32")
|
|
field(INP, "@asyn($(PORT),0)HDF5_chunkBoundaryThreshold")
|
|
field(PINI, "NO")
|
|
field(SCAN, "I/O Intr")
|
|
field(EGU, "bytes")
|
|
}
|
|
|
|
# % gdatag, pv, rw, $(PORT)_NDFileHDF5, NumExtraDims, Number of extra dimensions [0..2]
|
|
record(longout, "$(P)$(R)NumExtraDims")
|
|
{
|
|
field(DTYP, "asynInt32")
|
|
field(OUT, "@asyn($(PORT),0)HDF5_nExtraDims")
|
|
field(PINI, "YES")
|
|
}
|
|
|
|
# % gdatag, pv, ro, $(PORT)_NDFileHDF5, NumExtraDims_RBV, Readback number of extra dimensions
|
|
record(longin, "$(P)$(R)NumExtraDims_RBV")
|
|
{
|
|
field(DTYP, "asynInt32")
|
|
field(INP, "@asyn($(PORT),0)HDF5_nExtraDims")
|
|
field(PINI, "NO")
|
|
field(SCAN, "I/O Intr")
|
|
}
|
|
|
|
# % gdatag, pv, rw, $(PORT)_NDFileHDF5, ExtraDimSizeN, Size of extra dimension N (no. of frames per point)
|
|
record(longout, "$(P)$(R)ExtraDimSizeN")
|
|
{
|
|
field(DTYP, "asynInt32")
|
|
field(OUT, "@asyn($(PORT),0)HDF5_extraDimSizeN")
|
|
field(PINI, "YES")
|
|
}
|
|
|
|
# % gdatag, pv, ro, $(PORT)_NDFileHDF5, ExtraDimSizeN_RBV, Readback size of extra dimension N (no. of frames per point)
|
|
record(longin, "$(P)$(R)ExtraDimSizeN_RBV")
|
|
{
|
|
field(DTYP, "asynInt32")
|
|
field(INP, "@asyn($(PORT),0)HDF5_extraDimSizeN")
|
|
field(PINI, "NO")
|
|
field(SCAN, "I/O Intr")
|
|
}
|
|
|
|
record(stringin, "$(P)$(R)ExtraDimNameN_RBV")
|
|
{
|
|
field(DTYP, "asynOctetRead")
|
|
field(INP, "@asyn($(PORT),0)HDF5_extraDimNameN")
|
|
field(PINI, "NO")
|
|
field(SCAN, "I/O Intr")
|
|
}
|
|
|
|
# % gdatag, pv, rw, $(PORT)_NDFileHDF5, ExtraDimSizeX, Size of extra dimension X
|
|
record(longout, "$(P)$(R)ExtraDimSizeX")
|
|
{
|
|
field(DTYP, "asynInt32")
|
|
field(OUT, "@asyn($(PORT),0)HDF5_extraDimSizeX")
|
|
field(PINI, "YES")
|
|
}
|
|
|
|
# % gdatag, pv, ro, $(PORT)_NDFileHDF5, ExtraDimSizeX_RBV, Readback size of extra dimension X
|
|
record(longin, "$(P)$(R)ExtraDimSizeX_RBV")
|
|
{
|
|
field(DTYP, "asynInt32")
|
|
field(INP, "@asyn($(PORT),0)HDF5_extraDimSizeX")
|
|
field(PINI, "NO")
|
|
field(SCAN, "I/O Intr")
|
|
}
|
|
|
|
record(stringin, "$(P)$(R)ExtraDimNameX_RBV")
|
|
{
|
|
field(DTYP, "asynOctetRead")
|
|
field(INP, "@asyn($(PORT),0)HDF5_extraDimNameX")
|
|
field(PINI, "NO")
|
|
field(SCAN, "I/O Intr")
|
|
}
|
|
|
|
# % gdatag, pv, rw, $(PORT)_NDFileHDF5, ExtraDimSizeY, Size of extra dimension Y
|
|
record(longout, "$(P)$(R)ExtraDimSizeY")
|
|
{
|
|
field(DTYP, "asynInt32")
|
|
field(OUT, "@asyn($(PORT),0)HDF5_extraDimSizeY")
|
|
field(PINI, "YES")
|
|
}
|
|
|
|
# % gdatag, pv, ro, $(PORT)_NDFileHDF5, ExtraDimSizeY_RBV, Readback size of extra dimension Y
|
|
record(longin, "$(P)$(R)ExtraDimSizeY_RBV")
|
|
{
|
|
field(DTYP, "asynInt32")
|
|
field(INP, "@asyn($(PORT),0)HDF5_extraDimSizeY")
|
|
field(PINI, "NO")
|
|
field(SCAN, "I/O Intr")
|
|
}
|
|
|
|
record(stringin, "$(P)$(R)ExtraDimNameY_RBV")
|
|
{
|
|
field(DTYP, "asynOctetRead")
|
|
field(INP, "@asyn($(PORT),0)HDF5_extraDimNameY")
|
|
field(PINI, "NO")
|
|
field(SCAN, "I/O Intr")
|
|
}
|
|
|
|
record(bo, "$(P)$(R)StoreAttr")
|
|
{
|
|
field(DTYP, "asynInt32")
|
|
field(OUT, "@asyn($(PORT),0)HDF5_storeAttributes")
|
|
field(PINI, "NO")
|
|
field(ZNAM, "No")
|
|
field(ONAM, "Yes")
|
|
}
|
|
|
|
record(bi, "$(P)$(R)StoreAttr_RBV")
|
|
{
|
|
field(DTYP, "asynInt32")
|
|
field(INP, "@asyn($(PORT),0)HDF5_storeAttributes")
|
|
field(PINI, "NO")
|
|
field(SCAN, "I/O Intr")
|
|
field(ZNAM, "No")
|
|
field(ONAM, "Yes")
|
|
}
|
|
|
|
record(bo, "$(P)$(R)StorePerform")
|
|
{
|
|
field(DTYP, "asynInt32")
|
|
field(OUT, "@asyn($(PORT),0)HDF5_storePerformance")
|
|
field(PINI, "NO")
|
|
field(ZNAM, "No")
|
|
field(ONAM, "Yes")
|
|
}
|
|
|
|
record(bi, "$(P)$(R)StorePerform_RBV")
|
|
{
|
|
field(DTYP, "asynInt32")
|
|
field(INP, "@asyn($(PORT),0)HDF5_storePerformance")
|
|
field(PINI, "NO")
|
|
field(SCAN, "I/O Intr")
|
|
field(ZNAM, "No")
|
|
field(ONAM, "Yes")
|
|
}
|
|
|
|
# % gdatag, pv, ro, $(PORT)_NDFileHDF5, runtime, Total runtime from first frame to file closed
|
|
record(ai, "$(P)$(R)RunTime")
|
|
{
|
|
field(DTYP, "asynFloat64")
|
|
field(INP, "@asyn($(PORT),0)HDF5_totalRuntime")
|
|
field(PINI, "NO")
|
|
field(SCAN, "I/O Intr")
|
|
field(PREC, "3")
|
|
field(EGU, "s")
|
|
}
|
|
|
|
# % gdatag, pv, ro, $(PORT)_NDFileHDF5, IOSpeed, Overall IO speed from first frame to file closed
|
|
record(ai, "$(P)$(R)IOSpeed")
|
|
{
|
|
field(DTYP, "asynFloat64")
|
|
field(INP, "@asyn($(PORT),0)HDF5_totalIoSpeed")
|
|
field(PINI, "NO")
|
|
field(SCAN, "I/O Intr")
|
|
field(PREC, "1")
|
|
field(EGU, "Mbit/s")
|
|
}
|
|
|
|
# % gdatag, pv, rw, $(PORT)_NDFileHDF5, NumFramesFlush, Flush to file every Nth frame
|
|
record(longout, "$(P)$(R)NumFramesFlush")
|
|
{
|
|
field(DTYP, "asynInt32")
|
|
field(OUT, "@asyn($(PORT),0)HDF5_flushNthFrame")
|
|
field(PINI, "NO")
|
|
}
|
|
|
|
# % gdatag, pv, rw, $(PORT)_NDFileHDF5, NumFramesFlush_RBV, Readback the number of frames between file flush
|
|
record(longin, "$(P)$(R)NumFramesFlush_RBV")
|
|
{
|
|
field(DTYP, "asynInt32")
|
|
field(INP, "@asyn($(PORT),0)HDF5_flushNthFrame")
|
|
field(PINI, "NO")
|
|
field(SCAN, "I/O Intr")
|
|
}
|
|
|
|
# % gdatag, mbbinary, rw, $(PORT)_NDFileHDF5, Compression, Select or switch off compression filter
|
|
record(mbbo, "$(P)$(R)Compression")
|
|
{
|
|
field(DTYP, "asynInt32")
|
|
field(OUT, "@asyn($(PORT),0)HDF5_compressionType")
|
|
field(ZRST, "None")
|
|
field(ZRVL, "0")
|
|
field(ONST, "N-bit")
|
|
field(ONVL, "1")
|
|
field(TWST, "szip")
|
|
field(TWVL, "2")
|
|
field(THST, "zlib")
|
|
field(THVL, "3")
|
|
}
|
|
|
|
# % gdatag, mbbinary, ro, $(PORT)_NDFileHDF5, Compression_RBV, Readback selected compression filter
|
|
record(mbbi, "$(P)$(R)Compression_RBV")
|
|
{
|
|
field(DTYP, "asynInt32")
|
|
field(INP, "@asyn($(PORT),0)HDF5_compressionType")
|
|
field(PINI, "NO")
|
|
field(SCAN, "I/O Intr")
|
|
field(ZRST, "None")
|
|
field(ZRVL, "0")
|
|
field(ONST, "nbit")
|
|
field(ONVL, "1")
|
|
field(TWST, "szip")
|
|
field(TWVL, "2")
|
|
field(THST, "zlib")
|
|
field(THVL, "3")
|
|
}
|
|
|
|
# % gdatag, pv, rw, $(PORT)_NDFileHDF5, NumBitPrecision, N-bit compression filter: number of data bits per pixel
|
|
record(longout, "$(P)$(R)NumDataBits")
|
|
{
|
|
field(DTYP, "asynInt32")
|
|
field(OUT, "@asyn($(PORT),0)HDF5_nbitsPrecision")
|
|
field(PINI, "NO")
|
|
field(EGU, "bit")
|
|
}
|
|
|
|
# % gdatag, pv, ro, $(PORT)_NDFileHDF5, NumBitPrecision_RBV, Readback N-bit compression filter: number of data bits per pixel
|
|
record(longin, "$(P)$(R)NumDataBits_RBV")
|
|
{
|
|
field(DTYP, "asynInt32")
|
|
field(INP, "@asyn($(PORT),0)HDF5_nbitsPrecision")
|
|
field(PINI, "NO")
|
|
field(SCAN, "I/O Intr")
|
|
field(EGU, "bit")
|
|
}
|
|
|
|
# % gdatag, pv, rw, $(PORT)_NDFileHDF5, NumBitOffset, N-bit compression filter: dataword bit-offset in pixel
|
|
record(longout, "$(P)$(R)DataBitsOffset")
|
|
{
|
|
field(DTYP, "asynInt32")
|
|
field(OUT, "@asyn($(PORT),0)HDF5_nbitsOffset")
|
|
field(PINI, "NO")
|
|
field(EGU, "bit")
|
|
}
|
|
|
|
# % gdatag, pv, ro, $(PORT)_NDFileHDF5, NumBitOffset_RBV, Readback N-bit compression filter: dataword bit-offset in pixel
|
|
record(longin, "$(P)$(R)DataBitsOffset_RBV")
|
|
{
|
|
field(DTYP, "asynInt32")
|
|
field(INP, "@asyn($(PORT),0)HDF5_nbitsOffset")
|
|
field(PINI, "NO")
|
|
field(SCAN, "I/O Intr")
|
|
field(EGU, "bit")
|
|
}
|
|
|
|
# % gdatag, pv, rw, $(PORT)_NDFileHDF5, szipNumPixels, szip compression filter: number of pixels in filter
|
|
record(longout, "$(P)$(R)SZipNumPixels")
|
|
{
|
|
field(DTYP, "asynInt32")
|
|
field(OUT, "@asyn($(PORT),0)HDF5_szipNumPixels")
|
|
field(PINI, "NO")
|
|
field(EGU, "bit")
|
|
}
|
|
|
|
# % gdatag, pv, ro, $(PORT)_NDFileHDF5, szipNumPixels_RBV, Readback szip compression filter: number of pixels in filter
|
|
record(longin, "$(P)$(R)SZipNumPixels_RBV")
|
|
{
|
|
field(DTYP, "asynInt32")
|
|
field(INP, "@asyn($(PORT),0)HDF5_szipNumPixels")
|
|
field(PINI, "NO")
|
|
field(SCAN, "I/O Intr")
|
|
field(EGU, "bit")
|
|
}
|
|
|
|
# % gdatag, pv, rw, $(PORT)_NDFileHDF5, ZCompressLevel, zlib compression filter: compression level
|
|
record(longout, "$(P)$(R)ZLevel")
|
|
{
|
|
field(DTYP, "asynInt32")
|
|
field(OUT, "@asyn($(PORT),0)HDF5_zCompressLevel")
|
|
field(PINI, "NO")
|
|
}
|
|
|
|
# % gdatag, pv, ro, $(PORT)_NDFileHDF5, ZCompressLevel_RBV, Readback zlib compression filter: compression level
|
|
record(longin, "$(P)$(R)ZLevel_RBV")
|
|
{
|
|
field(DTYP, "asynInt32")
|
|
field(INP, "@asyn($(PORT),0)HDF5_zCompressLevel")
|
|
field(PINI, "NO")
|
|
field(SCAN, "I/O Intr")
|
|
}
|