From 8a169b8adb6ddef6c577b485690c3fc4d9e64fcc Mon Sep 17 00:00:00 2001 From: rivers Date: Fri, 25 Jul 2008 15:23:45 +0000 Subject: [PATCH] New file for ADSC detector git-svn-id: https://subversion.xor.aps.anl.gov/synApps/areaDetector/trunk@7490 dc6c5ff5-0b8b-c028-a01f-ffb33f00fc8b --- ADApp/Db/adsc.template | 485 +++++++++++++++++++++++++++++++++++++ ADApp/Db/adsc_settings.req | 17 ++ 2 files changed, 502 insertions(+) create mode 100644 ADApp/Db/adsc.template create mode 100644 ADApp/Db/adsc_settings.req diff --git a/ADApp/Db/adsc.template b/ADApp/Db/adsc.template new file mode 100644 index 0000000..636d280 --- /dev/null +++ b/ADApp/Db/adsc.template @@ -0,0 +1,485 @@ +# Database for the records specific to the ADSC detectors +# J. Lewis Muir (copied and modified prosilica.template by Mark Rivers) +# April 15, 2008 + +############################################################################## +# Controls how frequently to read the condition of the detector # +############################################################################## + +record(longout, "$(P)$(R)ADSCReadConditn") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ADSC_READ_CONDITION") + field(SCAN, "5 second") +} + +############################################################################## +# Detector condition properties # +############################################################################## + +record(mbbi, "$(P)$(R)ADSCState") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ADSC_STATE") + field(SCAN, "I/O Intr") + # These labels should match incl/detcon_state.h in ADSC control library + field(ZRST, "IDLE") + field(ZRVL, "0") + field(ONST, "EXPOSING") + field(ONVL, "1") + field(TWST, "READING") + field(TWVL, "2") + field(THST, "ERROR") + field(THVL, "3") + field(FRST, "CONFIGDET") + field(FRVL, "4") + field(FVST, "RETRY") + field(FVVL, "5") + field(SXST, "TEMPCONTROL") + field(SXVL, "6") +} + +record(waveform, "$(P)$(R)ADSCStatus") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ADSC_STATUS") + field(FTVL, "UCHAR") + field(NELM, "256") + field(SCAN, "I/O Intr") +} + +record(waveform, "$(P)$(R)ADSCLastError") +{ + field(DTYP, "asynOctetRead") + field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ADSC_LAST_ERROR") + field(FTVL, "UCHAR") + field(NELM, "256") + field(SCAN, "I/O Intr") +} + +############################################################################## +# Detector error recovery parameters # +############################################################################## + +record(longout, "$(P)$(R)ADSCSoftReset") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ADSC_SOFTWARE_RESET") +} + +############################################################################## +# Detector continuous image mode parameters # +############################################################################## + +record(longout, "$(P)$(R)ADSCLastImage") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ADSC_LAST_IMAGE") +} + +############################################################################## +# Detector external trigger parameters # +############################################################################## + +record(mbbi, "$(P)$(R)ADSCOkToExpose") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ADSC_OK_TO_EXPOSE") + field(SCAN, "I/O Intr") + field(ZRST, "No") + field(ZRVL, "0") + field(ONST, "Yes") + field(ONVL, "1") + field(TWST, "Error") + field(TWVL, "2") +} + +record(mbbo, "$(P)$(R)ADSCExTrCtl") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ADSC_EXTERNAL_TRIGGER_CTRL") + field(ZRST, "Stop") + field(ZRVL, "0") + field(ONST, "Start") + field(ONVL, "1") + field(TWST, "OK") + field(TWVL, "2") + field(THST, "Again") + field(THVL, "3") +} +record(mbbi, "$(P)$(R)ADSCExTrCtl_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ADSC_EXTERNAL_TRIGGER_CTRL") + field(SCAN, "I/O Intr") + field(ZRST, "Stop") + field(ZRVL, "0") + field(ONST, "Start") + field(ONVL, "1") + field(TWST, "OK") + field(TWVL, "2") + field(THST, "Again") + field(THVL, "3") +} + +############################################################################## +# Driver parameters # +############################################################################## + +record(mbbo, "$(P)$(R)ADSCReusDrk") +{ + field(PINI, "1") + field(DTYP, "asynInt32") + field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ADSC_REUSE_DARKS") + field(ZRST, "No") + field(ZRVL, "0") + field(ONST, "Yes") + field(ONVL, "1") +} + +record(mbbi, "$(P)$(R)ADSCReusDrk_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ADSC_REUSE_DARKS") + field(SCAN, "I/O Intr") + field(ZRST, "No") + field(ZRVL, "0") + field(ONST, "Yes") + field(ONVL, "1") +} + +record(mbbo, "$(P)$(R)ADSCDezingr") +{ + field(PINI, "1") + field(DTYP, "asynInt32") + field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ADSC_DEZINGER") + field(ZRST, "No") + field(ZRVL, "0") + field(ONST, "Yes") + field(ONVL, "1") +} + +record(mbbi, "$(P)$(R)ADSCDezingr_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ADSC_DEZINGER") + field(SCAN, "I/O Intr") + field(ZRST, "No") + field(ZRVL, "0") + field(ONST, "Yes") + field(ONVL, "1") +} + +############################################################################## +# Detector hardware parameters # +############################################################################## + +record(mbbo, "$(P)$(R)ADSCAdc") +{ + field(PINI, "1") + field(DTYP, "asynInt32") + field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ADSC_ADC") + field(ZRST, "Slow/Software") + field(ZRVL, "0") + field(ONST, "Fast/Hardware") + field(ONVL, "1") +} + +record(mbbi, "$(P)$(R)ADSCAdc_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ADSC_ADC") + field(SCAN, "I/O Intr") + field(ZRST, "Slow/Software") + field(ZRVL, "0") + field(ONST, "Fast/Hardware") + field(ONVL, "1") +} + +record(mbbo, "$(P)$(R)ADSCRaw") +{ + field(PINI, "1") + field(DTYP, "asynInt32") + field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ADSC_RAW") + field(ZRST, "No") + field(ZRVL, "0") + field(ONST, "Yes") + field(ONVL, "1") +} + +record(mbbi, "$(P)$(R)ADSCRaw_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ADSC_RAW") + field(SCAN, "I/O Intr") + field(ZRST, "No") + field(ZRVL, "0") + field(ONST, "Yes") + field(ONVL, "1") +} + +record(mbbo, "$(P)$(R)ADSCImXform") +{ + field(PINI, "1") + field(DTYP, "asynInt32") + field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ADSC_IMAGE_TRANSFORM") + field(ZRST, "No") + field(ZRVL, "0") + field(ONST, "Yes") + field(ONVL, "1") +} + +record(mbbi, "$(P)$(R)ADSCImXform_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ADSC_IMAGE_TRANSFORM") + field(SCAN, "I/O Intr") + field(ZRST, "No") + field(ZRVL, "0") + field(ONST, "Yes") + field(ONVL, "1") +} + +record(mbbo, "$(P)$(R)ADSCStrDrks") +{ + field(PINI, "1") + field(DTYP, "asynInt32") + field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ADSC_STORED_DARKS") + field(ZRST, "No") + field(ZRVL, "0") + field(ONST, "Yes") + field(ONVL, "1") +} + +record(mbbi, "$(P)$(R)ADSCStrDrks_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ADSC_STORED_DARKS") + field(SCAN, "I/O Intr") + field(ZRST, "No") + field(ZRVL, "0") + field(ONST, "Yes") + field(ONVL, "1") +} + +############################################################################## +# Detector file parameters # +############################################################################## + +record(ao, "$(P)$(R)ADSCBeamX") +{ + field(PINI, "1") + field(DTYP, "asynFloat64") + field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ADSC_BEAM_CENTER_X") + field(PREC, "3") +} + +record(ai, "$(P)$(R)ADSCBeamX_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ADSC_BEAM_CENTER_X") + field(PREC, "3") + field(SCAN, "I/O Intr") +} + +record(ao, "$(P)$(R)ADSCBeamY") +{ + field(PINI, "1") + field(DTYP, "asynFloat64") + field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ADSC_BEAM_CENTER_Y") + field(PREC, "3") +} + +record(ai, "$(P)$(R)ADSCBeamY_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ADSC_BEAM_CENTER_Y") + field(PREC, "3") + field(SCAN, "I/O Intr") +} + +record(ao, "$(P)$(R)ADSCDistnce") +{ + field(PINI, "1") + field(DTYP, "asynFloat64") + field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ADSC_DISTANCE") + field(PREC, "3") +} + +record(ai, "$(P)$(R)ADSCDistnce_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ADSC_DISTANCE") + field(PREC, "3") + field(SCAN, "I/O Intr") +} + +record(ao, "$(P)$(R)ADSC2Theta") +{ + field(PINI, "1") + field(DTYP, "asynFloat64") + field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ADSC_TWO_THETA") + field(PREC, "3") +} + +record(ai, "$(P)$(R)ADSC2Theta_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ADSC_TWO_THETA") + field(PREC, "3") + field(SCAN, "I/O Intr") +} + +record(mbbo, "$(P)$(R)ADSCAxis") +{ + field(PINI, "1") + field(DTYP, "asynInt32") + field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ADSC_AXIS") + field(ZRST, "Omega") + field(ZRVL, "0") + field(ONST, "Phi") + field(ONVL, "1") +} + +record(mbbi, "$(P)$(R)ADSCAxis_RBV") +{ + field(DTYP, "asynInt32") + field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ADSC_AXIS") + field(SCAN, "I/O Intr") + field(ZRST, "Omega") + field(ZRVL, "0") + field(ONST, "Phi") + field(ONVL, "1") +} + +record(ao, "$(P)$(R)ADSCWavelen") +{ + field(PINI, "1") + field(DTYP, "asynFloat64") + field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ADSC_WAVELENGTH") + field(PREC, "7") +} + +record(ai, "$(P)$(R)ADSCWavelen_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ADSC_WAVELENGTH") + field(PREC, "7") + field(SCAN, "I/O Intr") +} + +record(ao, "$(P)$(R)ADSCImWidth") +{ + field(PINI, "1") + field(DTYP, "asynFloat64") + field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ADSC_IMAGE_WIDTH") + field(PREC, "3") +} + +record(ai, "$(P)$(R)ADSCImWidth_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ADSC_IMAGE_WIDTH") + field(PREC, "3") + field(SCAN, "I/O Intr") +} + +record(ao, "$(P)$(R)ADSCPhi") +{ + field(PINI, "1") + field(DTYP, "asynFloat64") + field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ADSC_PHI") + field(PREC, "3") +} + +record(ai, "$(P)$(R)ADSCPhi_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ADSC_PHI") + field(PREC, "3") + field(SCAN, "I/O Intr") +} + +record(ao, "$(P)$(R)ADSCOmega") +{ + field(PINI, "1") + field(DTYP, "asynFloat64") + field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ADSC_OMEGA") + field(PREC, "3") +} + +record(ai, "$(P)$(R)ADSCOmega_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ADSC_OMEGA") + field(PREC, "3") + field(SCAN, "I/O Intr") +} + +record(ao, "$(P)$(R)ADSCKappa") +{ + field(PINI, "1") + field(DTYP, "asynFloat64") + field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ADSC_KAPPA") + field(PREC, "3") +} + +record(ai, "$(P)$(R)ADSCKappa_RBV") +{ + field(DTYP, "asynFloat64") + field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ADSC_KAPPA") + field(PREC, "3") + field(SCAN, "I/O Intr") +} + +############################################################################## +# Private parameters only for testing with simadsc +############################################################################## + +record(longout, "$(P)$(R)ADSCStpExRtryCt") +{ + field(DTYP, "asynInt32") + field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))ADSC_PRVT_STOP_EXP_RTRY_CNT") +} + +############################################################################## +# Note: The following are records defined in ADAsyn.template. # +# We are changing some of the fields here to reflect valid values and # +# desired behavior for the ADSC driver. # +############################################################################## + +record(longout, "$(P)$(R)BinX") +{ + field(FLNK, "$(P)$(R)BinXChanged") +} + +record(calcout, "$(P)$(R)BinXChanged") +{ + field(INPA, "$(P)$(R)BinX NPPNMS") + field(INPB, "$(P)$(R)BinX.PACT NPPNMS") + field(CALC, "B") + field(OCAL, "A") + field(OUT, "$(P)$(R)BinY PP MS") + field(OOPT, "When Non-zero") + field(DOPT, "Use OCAL") + field(IVOA, "Don't drive outputs") +} + +record(longout, "$(P)$(R)BinY") +{ + field(PINI, "0") + field(DTYP, "Soft Channel") + field(OUT, "$(P)$(R)BinYChanged.PROC PP MS") +} + +record(calcout, "$(P)$(R)BinYChanged") +{ + field(INPA, "$(P)$(R)BinY NPPNMS") + field(INPB, "$(P)$(R)BinX.PACT NPPNMS") + field(CALC, "B") + field(OCAL, "A") + field(OUT, "$(P)$(R)BinX PP MS") + field(OOPT, "When Zero") + field(DOPT, "Use OCAL") + field(IVOA, "Don't drive outputs") +} diff --git a/ADApp/Db/adsc_settings.req b/ADApp/Db/adsc_settings.req new file mode 100644 index 0000000..abaf189 --- /dev/null +++ b/ADApp/Db/adsc_settings.req @@ -0,0 +1,17 @@ +$(P)$(R)ADSCReadConditn.SCAN +$(P)$(R)ADSCReusDrk +$(P)$(R)ADSCDezingr +$(P)$(R)ADSCAdc +$(P)$(R)ADSCRaw +$(P)$(R)ADSCImXform +$(P)$(R)ADSCStrDrks +$(P)$(R)ADSCBeamX +$(P)$(R)ADSCBeamY +$(P)$(R)ADSCDistnce +$(P)$(R)ADSC2Theta +$(P)$(R)ADSCAxis +$(P)$(R)ADSCWavelen +$(P)$(R)ADSCImWidth +$(P)$(R)ADSCPhi +$(P)$(R)ADSCOmega +$(P)$(R)ADSCKappa