Compare commits
56 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
acff3aedc0 | ||
|
|
bf9dccedc6 | ||
|
|
e7c34375ee | ||
|
|
4f6a5b4d51 | ||
|
|
2562f3d732 | ||
|
|
ed1845acf2 | ||
|
|
15e0849a58 | ||
|
|
9bf0389752 | ||
|
|
1a3c91838b | ||
|
|
e24c2f68e8 | ||
|
|
81ee3c28a5 | ||
|
|
94c13c6a48 | ||
|
|
10d88aa479 | ||
|
|
d77cb91b15 | ||
|
|
a9b6d1c4be | ||
|
|
16bb800227 | ||
|
|
1d07985371 | ||
|
|
7118ae9186 | ||
|
|
dfb2786e54 | ||
|
|
cc537075ab | ||
|
|
29163e8bae | ||
|
|
b3d88868ee | ||
|
|
8d4e8ee925 | ||
|
|
41d69d3ef1 | ||
|
|
374a84971b | ||
|
|
a66877b354 | ||
|
|
bfd746ac67 | ||
|
|
63fc03a41e | ||
|
|
7b73325de8 | ||
|
|
25e346e970 | ||
|
|
5751c2b703 | ||
|
|
11a7e3fe9e | ||
|
|
882f277114 | ||
|
|
71a97f8170 | ||
|
|
545fb7b0ec | ||
|
|
e2368aa113 | ||
|
|
45e223e40c | ||
|
|
8003d9f75d | ||
|
|
e2ccdb9b7e | ||
|
|
b01e13eb77 | ||
|
|
27dabf4fdc | ||
|
|
ed7881d93c | ||
|
|
b6de30a144 | ||
|
|
e7d48816d2 | ||
|
|
7dc9fd7cb3 | ||
|
|
37607c5f23 | ||
|
|
90d571bb43 | ||
|
|
c3634f8157 | ||
|
|
4f8962f9e1 | ||
|
|
ee066ef720 | ||
|
|
e15fafea4b | ||
|
|
58aefc799d | ||
|
|
a4cbf7e909 | ||
|
|
f62b2102bc | ||
|
|
97fd6f7c46 | ||
|
|
0d44d0bbf2 |
5
.gitignore
vendored
5
.gitignore
vendored
@@ -7,4 +7,7 @@ O.*
|
||||
*.db.*
|
||||
pv.list
|
||||
core.*
|
||||
.vscode
|
||||
.vscode
|
||||
list.txt
|
||||
kafka.conf
|
||||
ecdc-kafka-ca.crt
|
||||
|
||||
23
.vscode/c_cpp_properties.json
vendored
23
.vscode/c_cpp_properties.json
vendored
@@ -1,23 +0,0 @@
|
||||
{
|
||||
"configurations": [
|
||||
{
|
||||
"name": "Linux",
|
||||
"includePath": [
|
||||
"${workspaceFolder}/**",
|
||||
"${workspaceFolder}/ADHamaApp/src/**",
|
||||
"${workspaceFolder}/ADHamaApp/src/",
|
||||
"/home/iocuser/.conda/envs/hama/epics/include/**",
|
||||
"/home/iocuser/.conda/envs/hama/epics/include/",
|
||||
"/home/iocuser/.conda/envs/hama/modules/adcore/3.10.0/include/",
|
||||
"/home/iocuser/.conda/envs/hama/modules/**",
|
||||
"/home/iocuser/.conda/envs/hama/epics/include/os/Linux"
|
||||
],
|
||||
"defines": [],
|
||||
"compilerPath": "/usr/bin/gcc",
|
||||
"cStandard": "c89",
|
||||
"cppStandard": "c++14",
|
||||
"intelliSenseMode": "linux-gcc-x64"
|
||||
}
|
||||
],
|
||||
"version": 4
|
||||
}
|
||||
BIN
ADHamaApp/Db/.DS_Store
vendored
BIN
ADHamaApp/Db/.DS_Store
vendored
Binary file not shown.
@@ -1 +0,0 @@
|
||||
registrar("hamaRegister")
|
||||
@@ -38,6 +38,7 @@ endif
|
||||
|
||||
REQUIRED += adcore
|
||||
REQUIRED += busy
|
||||
REQUIRED += seq
|
||||
|
||||
|
||||
############################################################################
|
||||
@@ -55,7 +56,7 @@ EXCLUDE_ARCHS += linux-ppc64e6500
|
||||
#
|
||||
############################################################################
|
||||
|
||||
APP := ADHamaApp
|
||||
APP := ADOrcaApp
|
||||
APPDB := $(APP)/Db
|
||||
APPSRC := $(APP)/src
|
||||
APPCMDS := $(APP)/cmds
|
||||
@@ -66,10 +67,8 @@ APPCMDS := $(APP)/cmds
|
||||
#
|
||||
############################################################################
|
||||
|
||||
TEMPLATES += $(wildcard $(APPDB)/*.db)
|
||||
# TEMPLATES += $(wildcard $(APPDB)/*.db)
|
||||
TEMPLATES += $(wildcard $(ADCORE_DIR)/*.db)
|
||||
# TEMPLATES += $(wildcard $(APPDB)/*.proto)
|
||||
TEMPLATES += $(wildcard $(APPDB)/*.template)
|
||||
|
||||
# USR_INCLUDES += -I$(where_am_I)$(APPSRC)
|
||||
# USR_INCLUDES += -I $(E3_ADCORE_LOCATION)/ADCore/ADApp/ADSrc
|
||||
@@ -87,8 +86,8 @@ USR_INCLUDES += -DLINUX -I ../support/dcamsdk4/inc/
|
||||
#
|
||||
############################################################################
|
||||
|
||||
# SOURCES += $(APPSRC)/ADHamaMain.cpp
|
||||
SOURCES += $(APPSRC)/hama.cpp
|
||||
# SOURCES += $(APPSRC)/ADOrcaMain.cpp
|
||||
SOURCES += $(APPSRC)/orca.cpp
|
||||
# SOURCES += support/dcamsdk4/misc/common.cpp
|
||||
|
||||
############################################################################
|
||||
@@ -97,7 +96,7 @@ SOURCES += $(APPSRC)/hama.cpp
|
||||
#
|
||||
############################################################################
|
||||
|
||||
DBDS += $(APPSRC)/hama.dbd
|
||||
DBDS += $(APPSRC)/orca.dbd
|
||||
|
||||
|
||||
############################################################################
|
||||
@@ -133,7 +132,7 @@ USR_DBFLAGS += -I $(E3_ADCORE_LOCATION)/db
|
||||
USR_DBFLAGS += -I $(EPICS_BASE)/db
|
||||
USR_DBFLAGS += -I $(APPDB)
|
||||
|
||||
USR_LDFLAGS += -L$(PWD)/support/dcamsdk4/lib/linux -ldcamapi
|
||||
USR_LDFLAGS += -L$(PWD)/support/dcamsdk4/lib/linux-x86_64 -ldcamapi
|
||||
#USR_LDFLAGS += -L/usr/local/lib -ldcamapi
|
||||
|
||||
db: $(SUBS) $(TMPS)
|
||||
@@ -1,4 +1,5 @@
|
||||
# Database for the records specific to the Hamamatsu Orca Flash4.0 cameras
|
||||
#
|
||||
|
||||
include "ADBase.template"
|
||||
|
||||
@@ -90,32 +91,178 @@ record(mbbi, "$(P)$(R)ColorMode_RBV") {
|
||||
field(SVVL, "")
|
||||
}
|
||||
|
||||
record(longin, "$(P)$(R)ArrayCounter_RBV")
|
||||
record("*", "$(P)$(R)SizeX")
|
||||
{
|
||||
field(FLNK, "$(P)$(R)#EVRTimeProc.PROC")
|
||||
field(DRVH, "2048")
|
||||
field(DRVL, "4")
|
||||
}
|
||||
|
||||
record(ai, "$(P)$(R)#EVRTimeProc") {
|
||||
record("*", "$(P)$(R)SizeY")
|
||||
{
|
||||
field(DRVH, "2048")
|
||||
field(DRVL, "4")
|
||||
}
|
||||
|
||||
record("*", "$(P)$(R)MinX")
|
||||
{
|
||||
field(DRVH, "2044")
|
||||
field(DRVL, "0")
|
||||
}
|
||||
|
||||
record("*", "$(P)$(R)MinY")
|
||||
{
|
||||
field(DRVH, "2044")
|
||||
field(DRVL, "0")
|
||||
}
|
||||
|
||||
record("*", "$(P)$(R)AcquirePeriod_RBV")
|
||||
{
|
||||
field(FLNK, "$(P)$(R)#EVRAcquireTime-S.PROC PP MS")
|
||||
}
|
||||
|
||||
record(calcout, "$(P)$(R)#EVRAcquireTime-S") {
|
||||
field(DESC, "Set EVR acquire time in seconds")
|
||||
field(CALC, "A=0?B:A*B")
|
||||
field(INPA, "$(P)$(R)AcquirePeriod_RBV")
|
||||
field(INPB, "88052500")
|
||||
field(OUT, "$(EVR):PS-1-Div-SP PP")
|
||||
}
|
||||
|
||||
record(stringin, "$(P)$(R)#EVRTimeProc") {
|
||||
field(DESC, "Start proce the EVRTime record")
|
||||
field(TSEL, "$(EVR):Evt$(E)Cnt-I.TIME")
|
||||
field(DTYP, "Soft Timestamp")
|
||||
field(FLNK, "$(P)$(R)EVRTime-R.PROC")
|
||||
field(SDIS, "$(EVR):Evt$(E)Cnt-I CP MS")
|
||||
field(DISV, "-1")
|
||||
field(TSEL, "$(EVR):Evt$(E)Cnt-I.TIME")
|
||||
field(INP, "@%s.%f")
|
||||
field(FLNK, "$(P)$(R)EVRTime-R.PROC PP MS")
|
||||
}
|
||||
|
||||
record(calc, "$(P)$(R)EVRTime-R") {
|
||||
# holds TS value in 'sec.nsec' format
|
||||
record(stringout, "$(P)$(R)EVRTime-R") {
|
||||
field(DESC, "EPICS epoch EVRTime timestamp")
|
||||
field(CALC, "a+b")
|
||||
field(INPA, "631152000")
|
||||
field(INPB, "$(P)$(R)#EVRTimeProc")
|
||||
field(DOL, "$(P)$(R)#EVRTimeProc MS")
|
||||
field(OMSL, "closed_loop")
|
||||
field(DTYP, "asynOctetWrite")
|
||||
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))EVR_TIMESTAMP")
|
||||
}
|
||||
|
||||
record(ai, "$(P)$(R)TimeStamp-RB") {
|
||||
field(DESC, "DCAM Timestamp when trigger received")
|
||||
record(ai, "$(P)$(R)FrameRate-R") {
|
||||
field(DESC, "Acquisition frame rate")
|
||||
field(DTYP, "asynFloat64")
|
||||
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_TIMESTAMP")
|
||||
field(PREC, "3")
|
||||
field(SCAN, "I/O Intr")
|
||||
field(PINI, "YES")
|
||||
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_FRAMERATE")
|
||||
field(PREC, "2")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
|
||||
record(seq, "$(P)$(R)#SoftSeqDisable") {
|
||||
field(SELM, "All")
|
||||
# Disable sequencer 0
|
||||
field(DOL1, "1")
|
||||
field(LNK1, "$(EVR):SoftSeq-0-Disable-Cmd CP")
|
||||
}
|
||||
|
||||
record(seq, "$(P)$(R)#SoftSeqEnable") {
|
||||
field(SELM, "All")
|
||||
# reset prescaler
|
||||
field(DOL1, "123")
|
||||
field(LNK1, "$(EVR):Evt-ResetPS-SP PP")
|
||||
field(DOL2, "123")
|
||||
field(LNK2, "$(EVR):EvtCode-SP PP")
|
||||
# Enable sequencer 0
|
||||
field(LNK3, "$(EVR):SoftSeq-0-Enable-Cmd.PROC PP")
|
||||
}
|
||||
|
||||
record(longin, "$(P)$(R)#AcquireCtrl") {
|
||||
field(DTYP, "asynInt32")
|
||||
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_ACQ_CONTROL")
|
||||
field(FLNK, "$(P)$(R)#SeqAcquire PP MS")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
|
||||
record(seq, "$(P)$(R)#SeqAcquire") {
|
||||
field(SELM, "All")
|
||||
|
||||
# Save current number of cycles
|
||||
field(DOL1, "$(P)$(R)Cycle-Cnt")
|
||||
field(LNK1, "$(P)$(R)#NCyclesPartial PP")
|
||||
|
||||
# Process CalcSoftSeqCtrl
|
||||
field(DOL2, "1")
|
||||
field(LNK2, "$(P)$(R)#CalcSoftSeqCtrl.PROC PP")
|
||||
}
|
||||
|
||||
record(calcout, "$(P)$(R)#CalcSoftSeqCtrl") {
|
||||
field(DESC, "Calc software sequencer control")
|
||||
field(CALC, "(A = 1 && B = 1) ? 1 : 0")
|
||||
field(INPA, "$(P)$(R)Acquire")
|
||||
field(INPB, "$(P)$(R)TriggerSource-RB")
|
||||
field(OOPT, "Transition To Non-zero")
|
||||
field(OUT, "$(P)$(R)#SoftSeqEnable PP")
|
||||
}
|
||||
|
||||
record(longin, "$(P)$(R)Cycle-Cnt") {
|
||||
field(DESC, "Cycle Counter")
|
||||
field(SCAN, "Passive")
|
||||
field(INP, "$(EVR):SoftSeq-0-NumOfStarts-I CPP")
|
||||
}
|
||||
|
||||
# Acts as a variable to store num. cycles before burst
|
||||
record(ai, "$(P)$(R)#NCyclesPartial") {
|
||||
field(DESC, "Num. cycles before burst")
|
||||
field(DTYP, "Soft Channel")
|
||||
field(SCAN, "Passive")
|
||||
}
|
||||
|
||||
## Stop sequence after N cycles
|
||||
record(calcout, "$(P)$(R)#StopAfterCycles") {
|
||||
field(DESC, "StopAfterCycles")
|
||||
field(CALC, "(C < (A + B)) || (D=2)")
|
||||
field(INPA, "$(P)$(R)#NCyclesPartial NPP")
|
||||
field(INPB, "$(P)$(R)NumImages_RBV NPP")
|
||||
field(INPC, "$(P)$(R)Cycle-Cnt CPP")
|
||||
field(INPD, "$(P)$(R)ImageMode_RBV NPP")
|
||||
field(OOPT, "When Zero")
|
||||
field(OUT, "$(P)$(R)#SoftSeqDisable PP")
|
||||
}
|
||||
|
||||
record(calcout, "$(P)$(R)#StopAfterAcq0") {
|
||||
field(DESC, "Stop seq when acquire 0")
|
||||
field(CALC, "A = 0")
|
||||
field(INPA, "$(P)$(R)Acquire CPP")
|
||||
field(OOPT, "When Non-zero")
|
||||
field(OUT, "$(P)$(R)#SoftSeqDisable PP")
|
||||
}
|
||||
|
||||
record(longin, "$(P)$(R)#Cycle-Cnt") {
|
||||
field(DESC, "Cycle Counter")
|
||||
field(SCAN, "Passive")
|
||||
field(INP, "$(EVR):SoftSeq-0-NumOfStarts-I CPP")
|
||||
field(FLNK, "$(P)$(R)#CountSeq")
|
||||
}
|
||||
|
||||
record(seq, "$(P)$(R)#CountSeq") {
|
||||
field(SELM, "All")
|
||||
field(DOL1, "$(P)$(R)#Cycle-Cnt")
|
||||
field(LNK1, "$(P)$(R)#EVRCounts PP")
|
||||
}
|
||||
|
||||
record(ao, "$(P)$(R)#EVRCounts") {
|
||||
field(DTYP, "asynInt32")
|
||||
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))EVR_COUNTS")
|
||||
}
|
||||
|
||||
record(longin, "$(P)$(R)#TriggerSinceStart") {
|
||||
field(DTYP, "asynInt32")
|
||||
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))EVR_TRIGGERS_SINCE_ACQ_START")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
|
||||
record(longin, "$(P)$(R)TriggerDropped-RB") {
|
||||
field(DESC, "Counter with EVR trigger dropped")
|
||||
field(DTYP, "asynInt32")
|
||||
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))EVR_TRIGGER_DROPPED")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
|
||||
##########################################################################
|
||||
@@ -306,21 +453,20 @@ record(mbbi, "$(P)$(R)BitPerChannel-RB") {
|
||||
##########################################################################
|
||||
# Trigger source (mode 4)
|
||||
record(mbbo, "$(P)$(R)TriggerSource-S") {
|
||||
field(DESC,"")
|
||||
field(PINI, "YES")
|
||||
field(DTYP, "asynInt32")
|
||||
field(ZRVL, "1")
|
||||
field(ZRST, "Internal")
|
||||
field(ONVL, "2")
|
||||
field(ONST, "External")
|
||||
field(TWVL, "3")
|
||||
field(TWST, "Software")
|
||||
field(THVL, "4")
|
||||
field(THST, "Master Pulse")
|
||||
# field(DRVL, "1")
|
||||
# field(DRVH, "4")
|
||||
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_TRIGGER_SOURCE")
|
||||
field(VAL, "1")
|
||||
field(DESC,"")
|
||||
field(PINI, "YES")
|
||||
field(DTYP, "asynInt32")
|
||||
field(ZRVL, "1")
|
||||
field(ZRST, "Internal")
|
||||
field(ONVL, "2")
|
||||
field(ONST, "External")
|
||||
field(TWVL, "3")
|
||||
field(TWST, "Software")
|
||||
field(THVL, "4")
|
||||
field(THST, "Master Pulse")
|
||||
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_TRIGGER_SOURCE")
|
||||
field(VAL, "1")
|
||||
field(FLNK, "$(P)$(R)AcquirePeriod.PROC PP MS")
|
||||
}
|
||||
|
||||
record(mbbi, "$(P)$(R)TriggerSource-RB") {
|
||||
@@ -345,10 +491,8 @@ record(mbbo, "$(P)$(R)TriggerMode-S") {
|
||||
field(DTYP, "asynInt32")
|
||||
field(ZRVL, "1")
|
||||
field(ZRST, "Normal")
|
||||
field(ONVL, "2")
|
||||
field(ONVL, "6")
|
||||
field(ONST, "Start")
|
||||
# field(DRVL, "1")
|
||||
# field(DRVH, "2")
|
||||
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_TRIGGER_MODE")
|
||||
field(VAL, "1")
|
||||
}
|
||||
@@ -602,7 +746,7 @@ record(mbbo, "$(P)$(R)Binning-S") {
|
||||
field(ZRST, "1x1")
|
||||
field(ONVL, "2")
|
||||
field(ONST, "2x2")
|
||||
field(TWVL, "3")
|
||||
field(TWVL, "4")
|
||||
field(TWST, "4x4")
|
||||
# field(DRVL, "1")
|
||||
# field(DRVH, "3")
|
||||
@@ -617,7 +761,7 @@ record(mbbi, "$(P)$(R)Binning-RB") {
|
||||
field(ZRST, "1x1")
|
||||
field(ONVL, "2")
|
||||
field(ONST, "2x2")
|
||||
field(TWVL, "3")
|
||||
field(TWVL, "4")
|
||||
field(TWST, "4x4")
|
||||
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_BINNING")
|
||||
field(SCAN, "I/O Intr")
|
||||
@@ -653,26 +797,6 @@ record(mbbi, "$(P)$(R)SubarrayMode-RB") {
|
||||
}
|
||||
|
||||
|
||||
##########################################################################
|
||||
# Feature #
|
||||
##########################################################################
|
||||
record(ao, "$(P)$(R)ExposureTime-S") {
|
||||
field(DESC, "")
|
||||
field(PINI, "YES")
|
||||
field(DTYP, "asynFloat64")
|
||||
field(DRVL, "0.001004")
|
||||
field(DRVH, "10.0")
|
||||
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_EXPOSURE_TIME")
|
||||
field(VAL, "0.009998")
|
||||
}
|
||||
|
||||
record(ai, "$(P)$(R)ExposureTime-RB") {
|
||||
field(DESC, "")
|
||||
field(DTYP, "asynFloat64")
|
||||
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_EXPOSURE_TIME")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
|
||||
##########################################################################
|
||||
# ALU #
|
||||
##########################################################################
|
||||
@@ -801,13 +925,13 @@ record(mbbo, "$(P)$(R)OutputTriggerSource0-S") {
|
||||
field(DESC, "")
|
||||
field(PINI, "YES")
|
||||
field(DTYP, "asynInt32")
|
||||
field(ZRVL, "2")
|
||||
field(ZRVL, "0")
|
||||
field(ZRST, "Read Out End")
|
||||
field(ONVL, "3")
|
||||
field(ONVL, "1")
|
||||
field(ONST, "VSync")
|
||||
field(TWVL, "4")
|
||||
field(TWVL, "2")
|
||||
field(TWST, "HSync")
|
||||
field(THVL, "6")
|
||||
field(THVL, "3")
|
||||
field(THST, "Trigger")
|
||||
# field(DRVL, "2")
|
||||
# field(DRVH, "6")
|
||||
@@ -816,6 +940,40 @@ record(mbbo, "$(P)$(R)OutputTriggerSource0-S") {
|
||||
}
|
||||
|
||||
record(mbbi, "$(P)$(R)OutputTriggerSource0-RB") {
|
||||
field(DESC, "")
|
||||
field(DTYP, "asynInt32")
|
||||
field(ZRVL, "0")
|
||||
field(ZRST, "Read Out End")
|
||||
field(ONVL, "1")
|
||||
field(ONST, "VSync")
|
||||
field(TWVL, "2")
|
||||
field(THST, "HSync")
|
||||
field(THVL, "3")
|
||||
field(THST, "Trigger")
|
||||
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_OUTPUT_TRIGGER_SOURCE0")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
##########################################################################
|
||||
# Output Trigger Source 1 (mode 4)
|
||||
record(mbbo, "$(P)$(R)OutputTriggerSource1-S") {
|
||||
field(DESC, "")
|
||||
field(PINI, "YES")
|
||||
field(DTYP, "asynInt32")
|
||||
field(ZRVL, "2")
|
||||
field(ZRST, "Read Out End")
|
||||
field(ONVL, "3")
|
||||
field(ONST, "VSync")
|
||||
field(TWVL, "4")
|
||||
field(TWST, "HSync")
|
||||
field(THVL, "6")
|
||||
field(THST, "Trigger")
|
||||
# field(DRVL, "2")
|
||||
# field(DRVH, "6")
|
||||
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_OUTPUT_TRIGGER_SOURCE1")
|
||||
field(VAL, "0")
|
||||
}
|
||||
|
||||
record(mbbi, "$(P)$(R)OutputTriggerSource1-RB") {
|
||||
field(DESC, "")
|
||||
field(DTYP, "asynInt32")
|
||||
field(ZRVL, "2")
|
||||
@@ -826,7 +984,41 @@ record(mbbi, "$(P)$(R)OutputTriggerSource0-RB") {
|
||||
field(THST, "HSync")
|
||||
field(THVL, "6")
|
||||
field(THST, "Trigger")
|
||||
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_OUTPUT_TRIGGER_SOURCE0")
|
||||
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_OUTPUT_TRIGGER_SOURCE1")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
|
||||
# Output Trigger Source 2 (mode 4)
|
||||
record(mbbo, "$(P)$(R)OutputTriggerSource2-S") {
|
||||
field(DESC, "")
|
||||
field(PINI, "YES")
|
||||
field(DTYP, "asynInt32")
|
||||
field(ZRVL, "2")
|
||||
field(ZRST, "Read Out End")
|
||||
field(ONVL, "3")
|
||||
field(ONST, "VSync")
|
||||
field(TWVL, "4")
|
||||
field(TWST, "HSync")
|
||||
field(THVL, "6")
|
||||
field(THST, "Trigger")
|
||||
# field(DRVL, "2")
|
||||
# field(DRVH, "6")
|
||||
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_OUTPUT_TRIGGER_SOURCE2")
|
||||
field(VAL, "0")
|
||||
}
|
||||
|
||||
record(mbbi, "$(P)$(R)OutputTriggerSource2-RB") {
|
||||
field(DESC, "")
|
||||
field(DTYP, "asynInt32")
|
||||
field(ZRVL, "2")
|
||||
field(ZRST, "Read Out End")
|
||||
field(ONVL, "3")
|
||||
field(ONST, "VSync")
|
||||
field(TWVL, "4")
|
||||
field(THST, "HSync")
|
||||
field(THVL, "6")
|
||||
field(THST, "Trigger")
|
||||
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_OUTPUT_TRIGGER_SOURCE2")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
|
||||
@@ -856,20 +1048,61 @@ record(mbbi, "$(P)$(R)OutputTriggerPolarity0-RB") {
|
||||
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_OUTPUT_TRIGGER_POLARITY0")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
##########################################################################
|
||||
# Internal Trigger Active (mode 1)
|
||||
record(mbbo, "$(P)$(R)OutputTriggerActive0-S") {
|
||||
|
||||
# Output Trigger Polarity 1 (mode 2)
|
||||
record(mbbo, "$(P)$(R)OutputTriggerPolarity1-S") {
|
||||
field(DESC, "")
|
||||
field(DTYP, "asynInt32")
|
||||
field(PINI, "YES")
|
||||
field(DTYP, "asynInt32")
|
||||
field(ZRVL, "1")
|
||||
field(ZRST, "Edge")
|
||||
field(ZRST, "Negative")
|
||||
field(ONVL, "2")
|
||||
field(ONST, "Positive")
|
||||
# field(DRVL, "1")
|
||||
# field(DRVH, "1")
|
||||
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_OUTPUT_TRIGGER_ACTIVE0")
|
||||
# field(DRVH, "2")
|
||||
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_OUTPUT_TRIGGER_POLARITY1")
|
||||
field(VAL, "1")
|
||||
}
|
||||
|
||||
record(mbbi, "$(P)$(R)OutputTriggerPolarity1-RB") {
|
||||
field(DESC, "")
|
||||
field(DTYP, "asynInt32")
|
||||
field(ZRVL, "1")
|
||||
field(ZRST, "Negative")
|
||||
field(ONVL, "2")
|
||||
field(ONST, "Positive")
|
||||
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_OUTPUT_TRIGGER_POLARITY1")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
# Output Trigger Polarity 2 (mode 2)
|
||||
record(mbbo, "$(P)$(R)OutputTriggerPolarity2-S") {
|
||||
field(DESC, "")
|
||||
field(PINI, "YES")
|
||||
field(DTYP, "asynInt32")
|
||||
field(ZRVL, "1")
|
||||
field(ZRST, "Negative")
|
||||
field(ONVL, "2")
|
||||
field(ONST, "Positive")
|
||||
# field(DRVL, "1")
|
||||
# field(DRVH, "2")
|
||||
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_OUTPUT_TRIGGER_POLARITY2")
|
||||
field(VAL, "1")
|
||||
}
|
||||
|
||||
record(mbbi, "$(P)$(R)OutputTriggerPolarity2-RB") {
|
||||
field(DESC, "")
|
||||
field(DTYP, "asynInt32")
|
||||
field(ZRVL, "1")
|
||||
field(ZRST, "Negative")
|
||||
field(ONVL, "2")
|
||||
field(ONST, "Positive")
|
||||
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_OUTPUT_TRIGGER_POLARITY2")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
|
||||
|
||||
##########################################################################
|
||||
# Internal Trigger Active (mode 1)
|
||||
record(mbbi, "$(P)$(R)OutputTriggerActive0-RB") {
|
||||
field(DESC, "")
|
||||
field(DTYP, "asynInt32")
|
||||
@@ -879,6 +1112,26 @@ record(mbbi, "$(P)$(R)OutputTriggerActive0-RB") {
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
|
||||
# Internal Trigger Active (mode 1)
|
||||
record(mbbi, "$(P)$(R)OutputTriggerActive1-RB") {
|
||||
field(DESC, "")
|
||||
field(DTYP, "asynInt32")
|
||||
field(ZRVL, "1")
|
||||
field(ZRST, "Edge")
|
||||
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_OUTPUT_TRIGGER_ACTIVE1")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
|
||||
# Internal Trigger Active (mode 1)
|
||||
record(mbbi, "$(P)$(R)OutputTriggerActive2-RB") {
|
||||
field(DESC, "")
|
||||
field(DTYP, "asynInt32")
|
||||
field(ZRVL, "1")
|
||||
field(ZRST, "Edge")
|
||||
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_OUTPUT_TRIGGER_ACTIVE2")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
|
||||
##########################################################################
|
||||
# Output Trigger Delay 0
|
||||
record(ao, "$(P)$(R)OutputTriggerDelay0-S") {
|
||||
@@ -890,7 +1143,6 @@ record(ao, "$(P)$(R)OutputTriggerDelay0-S") {
|
||||
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_OUTPUT_TRIGGER_DELAY0")
|
||||
field(VAL, "0")
|
||||
}
|
||||
|
||||
record(ai, "$(P)$(R)OutputTriggerDelay0-RB") {
|
||||
field(DESC, "")
|
||||
field(DTYP, "asynFloat64")
|
||||
@@ -898,6 +1150,41 @@ record(ai, "$(P)$(R)OutputTriggerDelay0-RB") {
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
|
||||
# Output Trigger Delay 1
|
||||
record(ao, "$(P)$(R)OutputTriggerDelay1-1") {
|
||||
field(DESC, "")
|
||||
field(PINI, "YES")
|
||||
field(DTYP, "asynFloat64")
|
||||
field(DRVL, "0")
|
||||
field(DRVH, "10.0")
|
||||
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_OUTPUT_TRIGGER_DELAY1")
|
||||
field(VAL, "0")
|
||||
}
|
||||
record(ai, "$(P)$(R)OutputTriggerDelay1-RB") {
|
||||
field(DESC, "")
|
||||
field(DTYP, "asynFloat64")
|
||||
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_OUTPUT_TRIGGER_DELAY1")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
|
||||
# Output Trigger Delay 2
|
||||
record(ao, "$(P)$(R)OutputTriggerDelay2-S") {
|
||||
field(DESC, "")
|
||||
field(PINI, "YES")
|
||||
field(DTYP, "asynFloat64")
|
||||
field(DRVL, "0")
|
||||
field(DRVH, "10.0")
|
||||
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_OUTPUT_TRIGGER_DELAY2")
|
||||
field(VAL, "0")
|
||||
}
|
||||
|
||||
record(ai, "$(P)$(R)OutputTriggerDelay2-RB") {
|
||||
field(DESC, "")
|
||||
field(DTYP, "asynFloat64")
|
||||
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_OUTPUT_TRIGGER_DELAY2")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
|
||||
##########################################################################
|
||||
# Output Trigger Period 0
|
||||
record(ao, "$(P)$(R)OutputTriggerPeriod0-S") {
|
||||
@@ -907,9 +1194,8 @@ record(ao, "$(P)$(R)OutputTriggerPeriod0-S") {
|
||||
field(DRVL, "0.000001")
|
||||
field(DRVH, "10.0")
|
||||
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_OUTPUT_TRIGGER_PERIOD0")
|
||||
field(VAL, "0")
|
||||
field(VAL, "0.000001")
|
||||
}
|
||||
|
||||
record(ai, "$(P)$(R)OutputTriggerPeriod0-RB") {
|
||||
field(DESC, "")
|
||||
field(DTYP, "asynFloat64")
|
||||
@@ -917,6 +1203,41 @@ record(ai, "$(P)$(R)OutputTriggerPeriod0-RB") {
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
|
||||
# Output Trigger Period 1
|
||||
record(ao, "$(P)$(R)OutputTriggerPeriod1-S") {
|
||||
field(DESC, "")
|
||||
field(PINI, "YES")
|
||||
field(DTYP, "asynFloat64")
|
||||
field(DRVL, "0.000001")
|
||||
field(DRVH, "10.0")
|
||||
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_OUTPUT_TRIGGER_PERIOD1")
|
||||
field(VAL, "0.000001")
|
||||
}
|
||||
record(ai, "$(P)$(R)OutputTriggerPeriod1-RB") {
|
||||
field(DESC, "")
|
||||
field(DTYP, "asynFloat64")
|
||||
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_OUTPUT_TRIGGER_PERIOD1")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
|
||||
# Output Trigger Period 2
|
||||
record(ao, "$(P)$(R)OutputTriggerPeriod2-S") {
|
||||
field(DESC, "")
|
||||
field(PINI, "YES")
|
||||
field(DTYP, "asynFloat64")
|
||||
field(DRVL, "0.000001")
|
||||
field(DRVH, "10.0")
|
||||
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_OUTPUT_TRIGGER_PERIOD2")
|
||||
field(VAL, "0.000001")
|
||||
}
|
||||
|
||||
record(ai, "$(P)$(R)OutputTriggerPeriod2-RB") {
|
||||
field(DESC, "")
|
||||
field(DTYP, "asynFloat64")
|
||||
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_OUTPUT_TRIGGER_PERIOD2")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
|
||||
##########################################################################
|
||||
# Output Trigger Kind 0 (mode 5)
|
||||
record(mbbo, "$(P)$(R)OutputTriggerKind0-S") {
|
||||
@@ -935,8 +1256,6 @@ record(mbbo, "$(P)$(R)OutputTriggerKind0-S") {
|
||||
field(FRST, "High")
|
||||
field(FVVL, "6")
|
||||
field(FVST, "Any Row Exposure")
|
||||
# field(DRVL, "1")
|
||||
# field(DRVH, "6")
|
||||
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_OUTPUT_TRIGGER_KIND0")
|
||||
field(VAL, "1")
|
||||
}
|
||||
@@ -960,6 +1279,86 @@ record(mbbi, "$(P)$(R)OutputTriggerKind0-RB") {
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
|
||||
# Output Trigger Kind 1 (mode 5)
|
||||
record(mbbo, "$(P)$(R)OutputTriggerKind1-S") {
|
||||
field(DESC, "")
|
||||
field(DTYP, "asynInt32")
|
||||
field(PINI, "YES")
|
||||
field(ZRVL, "1")
|
||||
field(ZRST, "Low")
|
||||
field(ONVL, "2")
|
||||
field(ONST, "Global Exposure")
|
||||
field(TWVL, "3")
|
||||
field(TWST, "Programable")
|
||||
field(THVL, "4")
|
||||
field(THST, "Trigger Ready")
|
||||
field(FRVL, "5")
|
||||
field(FRST, "High")
|
||||
field(FVVL, "6")
|
||||
field(FVST, "Any Row Exposure")
|
||||
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_OUTPUT_TRIGGER_KIND1")
|
||||
field(VAL, "1")
|
||||
}
|
||||
|
||||
record(mbbi, "$(P)$(R)OutputTriggerKind1-RB") {
|
||||
field(DESC, "")
|
||||
field(DTYP, "asynInt32")
|
||||
field(ZRVL, "1")
|
||||
field(ZRST, "Low")
|
||||
field(ONVL, "2")
|
||||
field(ONST, "Global Exposure")
|
||||
field(TWVL, "3")
|
||||
field(TWST, "Programable")
|
||||
field(THVL, "4")
|
||||
field(THST, "Trigger Ready")
|
||||
field(FRVL, "5")
|
||||
field(FRST, "High")
|
||||
field(FVVL, "6")
|
||||
field(FVST, "Any Row Exposure")
|
||||
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_OUTPUT_TRIGGER_KIND1")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
|
||||
# Output Trigger Kind 2 (mode 5)
|
||||
record(mbbo, "$(P)$(R)OutputTriggerKind2-S") {
|
||||
field(DESC, "")
|
||||
field(DTYP, "asynInt32")
|
||||
field(PINI, "YES")
|
||||
field(ZRVL, "1")
|
||||
field(ZRST, "Low")
|
||||
field(ONVL, "2")
|
||||
field(ONST, "Global Exposure")
|
||||
field(TWVL, "3")
|
||||
field(TWST, "Programable")
|
||||
field(THVL, "4")
|
||||
field(THST, "Trigger Ready")
|
||||
field(FRVL, "5")
|
||||
field(FRST, "High")
|
||||
field(FVVL, "6")
|
||||
field(FVST, "Any Row Exposure")
|
||||
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_OUTPUT_TRIGGER_KIND2")
|
||||
field(VAL, "1")
|
||||
}
|
||||
|
||||
record(mbbi, "$(P)$(R)OutputTriggerKind2-RB") {
|
||||
field(DESC, "")
|
||||
field(DTYP, "asynInt32")
|
||||
field(ZRVL, "1")
|
||||
field(ZRST, "Low")
|
||||
field(ONVL, "2")
|
||||
field(ONST, "Global Exposure")
|
||||
field(TWVL, "3")
|
||||
field(TWST, "Programable")
|
||||
field(THVL, "4")
|
||||
field(THST, "Trigger Ready")
|
||||
field(FRVL, "5")
|
||||
field(FRST, "High")
|
||||
field(FVVL, "6")
|
||||
field(FVST, "Any Row Exposure")
|
||||
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_OUTPUT_TRIGGER_KIND2")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
|
||||
##########################################################################
|
||||
# Output Trigger PreHsyncCount0
|
||||
record(ao, "$(P)$(R)OutputTriggerPreHsyncCount-S") {
|
||||
@@ -1014,6 +1413,75 @@ record(mbbi, "$(P)$(R)OutputTriggerBaseSensor0-RB") {
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
|
||||
# Output Trigger Base Sensor 1 (mode 4)
|
||||
record(mbbo, "$(P)$(R)OutputTriggerBaseSensor1-S") {
|
||||
field(DESC, "")
|
||||
field(PINI, "YES")
|
||||
field(DTYP, "asynInt32")
|
||||
field(ZRVL, "1")
|
||||
field(ZRST, "View 1")
|
||||
field(ONVL, "2")
|
||||
field(ONST, "View 2")
|
||||
field(TWVL, "15")
|
||||
field(TWST, "Any View")
|
||||
field(THVL, "16")
|
||||
field(THST, "All Views")
|
||||
# field(DRVL, "1")
|
||||
# field(DRVH, "4")
|
||||
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_OUTPUT_TRIGGER_BASE_SENSOR1")
|
||||
field(VAL, "1")
|
||||
}
|
||||
|
||||
record(mbbi, "$(P)$(R)OutputTriggerBaseSensor1-RB") {
|
||||
field(DESC, "")
|
||||
field(DTYP, "asynInt32")
|
||||
field(ZRVL, "1")
|
||||
field(ZRST, "View 1")
|
||||
field(ONVL, "2")
|
||||
field(ONST, "View 2")
|
||||
field(TWVL, "15")
|
||||
field(TWST, "Any View")
|
||||
field(THVL, "16")
|
||||
field(THST, "All Views")
|
||||
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_OUTPUT_TRIGGER_BASE_SENSOR1")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
|
||||
# Output Trigger Base Sensor 2 (mode 4)
|
||||
record(mbbo, "$(P)$(R)OutputTriggerBaseSensor2-S") {
|
||||
field(DESC, "")
|
||||
field(PINI, "YES")
|
||||
field(DTYP, "asynInt32")
|
||||
field(ZRVL, "1")
|
||||
field(ZRST, "View 1")
|
||||
field(ONVL, "2")
|
||||
field(ONST, "View 2")
|
||||
field(TWVL, "15")
|
||||
field(TWST, "Any View")
|
||||
field(THVL, "16")
|
||||
field(THST, "All Views")
|
||||
# field(DRVL, "1")
|
||||
# field(DRVH, "4")
|
||||
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_OUTPUT_TRIGGER_BASE_SENSOR2")
|
||||
field(VAL, "1")
|
||||
}
|
||||
|
||||
record(mbbi, "$(P)$(R)OutputTriggerBaseSensor2-RB") {
|
||||
field(DESC, "")
|
||||
field(DTYP, "asynInt32")
|
||||
field(ZRVL, "1")
|
||||
field(ZRST, "View 1")
|
||||
field(ONVL, "2")
|
||||
field(ONST, "View 2")
|
||||
field(TWVL, "15")
|
||||
field(TWST, "Any View")
|
||||
field(THVL, "16")
|
||||
field(THST, "All Views")
|
||||
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_OUTPUT_TRIGGER_BASE_SENSOR2")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
|
||||
|
||||
##########################################################################
|
||||
# Master Pulse #
|
||||
##########################################################################
|
||||
@@ -1028,10 +1496,8 @@ record(mbbo, "$(P)$(R)MasterPulseMode-S") {
|
||||
field(ONST, "Start")
|
||||
field(TWVL, "3")
|
||||
field(THST, "Burst")
|
||||
# field(DRVL, "1")
|
||||
# field(DRVH, "3")
|
||||
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_MASTERPULSE_MODE")
|
||||
field(VAL, "1")
|
||||
field(VAL, "0")
|
||||
}
|
||||
|
||||
record(mbbi, "$(P)$(R)MasterPulseMode-RB") {
|
||||
@@ -1080,6 +1546,7 @@ record(ao, "$(P)$(R)MasterPulseInterval-S") {
|
||||
field(DESC, "")
|
||||
field(PINI, "YES")
|
||||
field(DTYP, "asynFloat64")
|
||||
field(PREC, "6")
|
||||
field(DRVL, "0.00001")
|
||||
field(DRVH, "10")
|
||||
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_MASTERPULSE_INTERVAL")
|
||||
@@ -1089,6 +1556,7 @@ record(ao, "$(P)$(R)MasterPulseInterval-S") {
|
||||
record(ai, "$(P)$(R)MasterPulseInterval-RB") {
|
||||
field(DESC, "")
|
||||
field(DTYP, "asynFloat64")
|
||||
field(PREC, "6")
|
||||
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_MASTERPULSE_INTERVAL")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
@@ -1121,6 +1589,7 @@ record(ai, "$(P)$(R)TimingReadoutTime-RB") {
|
||||
field(DTYP, "asynFloat64")
|
||||
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_TIMING_READOUT_TIME")
|
||||
field(EGU, "Sec")
|
||||
field(PREC, "9")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
|
||||
@@ -1190,8 +1659,6 @@ record(ai, "$(P)$(R)TimingInvalidExposurePeriod-RB") {
|
||||
record(ao, "$(P)$(R)InternalFrameRate-S") {
|
||||
field(DESC, "")
|
||||
field(DTYP, "asynFloat64")
|
||||
field(DRVL, "0.1")
|
||||
field(DRVH, "100.022862")
|
||||
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_INTERNAL_FRAME_RATE")
|
||||
field(EGU, "Hz")
|
||||
}
|
||||
@@ -1209,8 +1676,6 @@ record(ai, "$(P)$(R)InternalFrameRate-RB") {
|
||||
record(ao, "$(P)$(R)InternalFrameInternal-S") {
|
||||
field(DESC, "")
|
||||
field(DTYP, "asynFloat64")
|
||||
field(DRVL, "0.00998")
|
||||
field(DRVH, "10.0")
|
||||
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_INTERNAL_FRAME_INTERVAL")
|
||||
field(EGU, "Sec")
|
||||
}
|
||||
@@ -1227,9 +1692,8 @@ record(ai, "$(P)$(R)InternalFrameInternal-RB") {
|
||||
# Internal Line Speed
|
||||
record(ao, "$(P)$(R)InternalLineSpeed-S") {
|
||||
field(DESC, "")
|
||||
field(PINI, "YES")
|
||||
field(DTYP, "asynFloat64")
|
||||
field(DRVL, "0.667052")
|
||||
field(DRVH, "0.667052")
|
||||
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_INTERNAL_LINE_SPEED")
|
||||
field(EGU, "m/s")
|
||||
}
|
||||
@@ -1246,9 +1710,8 @@ record(ai, "$(P)$(R)InternalLineSpeed-RB") {
|
||||
# Internal Line Interval
|
||||
record(ao, "$(P)$(R)InternalLineInterval-S") {
|
||||
field(DESC, "")
|
||||
field(PINI, "YES")
|
||||
field(DTYP, "asynFloat64")
|
||||
field(DRVL, "0.00001")
|
||||
field(DRVH, "0.00001")
|
||||
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_INTERNAL_LINE_INTERVAL")
|
||||
field(EGU, "Sec")
|
||||
}
|
||||
@@ -1268,8 +1731,8 @@ record(ai, "$(P)$(R)InternalLineInterval-RB") {
|
||||
record(mbbi, "$(P)$(R)ColorType-R") {
|
||||
field(DESC,"")
|
||||
field(DTYP, "asynInt32")
|
||||
field(ZRVL, "0")
|
||||
field(ZRST, "BW")
|
||||
field(ZRVL, "1")
|
||||
field(ZRST, "B & W")
|
||||
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_COLOR_TYPE")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
/* ADHamaMain.cpp */
|
||||
/* ADOrcaMain.cpp */
|
||||
/* Author: Tomasz Brys */
|
||||
/* Date: 2022-03-16 */
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
1
ADOrcaApp/src/orca.dbd
Normal file
1
ADOrcaApp/src/orca.dbd
Normal file
@@ -0,0 +1 @@
|
||||
registrar("orcaRegister")
|
||||
@@ -1,13 +1,17 @@
|
||||
#ifndef DRV_HAMA_H
|
||||
#define DRV_HAMA_H
|
||||
|
||||
|
||||
#include "ADDriver.h"
|
||||
#include "dcamapi4.h"
|
||||
|
||||
#define MAX_FEATURE_NAME_LEN 64
|
||||
|
||||
#define hFrameRateString "H_FRAME_RATE" /* asynOctet ro */
|
||||
#define hHamaNameString "H_HAMA_NAME" /* asynOctet ro */
|
||||
#define MAX_H_SENSOR_SIZE 2048
|
||||
#define MAX_V_SENSOR_SIZE 2048
|
||||
|
||||
#define hFrameRateString "H_FRAMERATE"
|
||||
#define hOrcaNameString "H_HAMA_NAME" /* asynOctet ro */
|
||||
#define hVendorString "H_VENDOR" /* asynOctet ro */
|
||||
#define hModelString "H_MODEL" /* asynOctet ro */
|
||||
#define hCameraIDString "H_CAMERAID" /* asynOctet ro */
|
||||
@@ -17,143 +21,147 @@
|
||||
#define hModuleVersionString "H_MODULE_VERSION" /* asynOctet ro */
|
||||
#define hDcamApiVersionString "H_DCAM_API_VERSION" /* asynOctet ro */
|
||||
|
||||
// Sensor mode and speed
|
||||
#define hSensorModeString "H_SENSOR_MODE" /* asynint32 rw */
|
||||
#define hReadoutSpeedString "H_READOUT_SPEED" /* asynInt32 rw */
|
||||
#define hReadoutDirectionString "H_READOUT_DIRECTION" /* asynIekt32 rw */
|
||||
// Sensor mode and speed
|
||||
#define hSensorModeString "H_SENSOR_MODE" /* asynint32 rw */
|
||||
#define hReadoutSpeedString "H_READOUT_SPEED" /* asynInt32 rw */
|
||||
#define hReadoutDirectionString "H_READOUT_DIRECTION" /* asynIekt32 rw */
|
||||
|
||||
// Trigger
|
||||
#define hTriggerSourceString "H_TRIGGER_SOURCE" /* asynInt32 rw */
|
||||
#define hTriggerModeString "H_TRIGGER_MODE" /* asynInt32 rw */
|
||||
#define hTriggerActiveString "H_TRIGGER_ACTIVE" /* asynInt32 rw */
|
||||
#define hTriggerSourceString "H_TRIGGER_SOURCE" /* asynInt32 rw */
|
||||
#define hTriggerModeString "H_TRIGGER_MODE" /* asynInt32 rw */
|
||||
#define hTriggerActiveString "H_TRIGGER_ACTIVE" /* asynInt32 rw */
|
||||
#define hTriggerGlobalExposureString "H_TRIGGER_GLOBAL_EXPOSURE" /* asynInt32 rw */
|
||||
#define hTriggerPolarityString "H_TRIGGER_POLARITY" /* asynInt32 rw */
|
||||
#define hTriggerPolarityString "H_TRIGGER_POLARITY" /* asynInt32 rw */
|
||||
#define hTriggerConnectorString "H_TRIGGER_CONNECTOR" /* asynInt32 rw */
|
||||
#define hTriggerTimesString "H_TRIGGER_TIMES" /* asynInt32 rw */
|
||||
#define hTriggerDelayString "H_TRIGGER_DELAY" /* asynFloat64 rw */
|
||||
#define hTriggerTimesString "H_TRIGGER_TIMES" /* asynInt32 rw */
|
||||
#define hTriggerDelayString "H_TRIGGER_DELAY" /* asynFloat64 rw */
|
||||
#define hInternalTriggerHandlingString "H_INTERNAL_TRIGGER_HANDLING" /* asynInt32 rw */
|
||||
|
||||
// Sensor cooler
|
||||
#define hSensorTemperatureString "H_SENSOR_TEMPERATURE" /* asynFloat64 ro */
|
||||
#define hSensorCoolerString "H_SENSOR_COOLER" /* asynInt32 rw */
|
||||
#define hSensorCoolerStatusString "H_SENSOR_COOLER_STATUS" /* asynInt32 ro */
|
||||
#define hSensorTemperatureString "H_SENSOR_TEMPERATURE" /* asynFloat64 ro */
|
||||
#define hSensorCoolerString "H_SENSOR_COOLER" /* asynInt32 rw */
|
||||
#define hSensorCoolerStatusString "H_SENSOR_COOLER_STATUS" /* asynInt32 ro */
|
||||
|
||||
// Binning and ROI
|
||||
#define hBinningString "H_BINNING" /* asynInt32 rw */
|
||||
#define hSubarrayHPosString "H_SUBARRAY_HPOST" /* asynInt32 rw */
|
||||
#define hSubarrayHSizeString "H_SUBARRAY_HSIZE" /* asynInt32 rw */
|
||||
#define hSubarrayVPosString "H_SUBARRAY_VPOS" /* asynInt32 rw */
|
||||
#define hSubarrayVSizeString "H_SUBARRAY_VSIZE" /* asynInt32 rw */
|
||||
#define hSubarrayModeString "H_SUBARRAY_MODE" /* asynInt32 rw */
|
||||
#define hBinningString "H_BINNING" /* asynInt32 rw */
|
||||
#define hSubarrayHPosString "H_SUBARRAY_HPOST" /* asynInt32 rw */
|
||||
#define hSubarrayHSizeString "H_SUBARRAY_HSIZE" /* asynInt32 rw */
|
||||
#define hSubarrayVPosString "H_SUBARRAY_VPOS" /* asynInt32 rw */
|
||||
#define hSubarrayVSizeString "H_SUBARRAY_VSIZE" /* asynInt32 rw */
|
||||
#define hSubarrayModeString "H_SUBARRAY_MODE" /* asynInt32 rw */
|
||||
// #define hFrameBundleMode (usb3 only not implemented)
|
||||
// #define hFrameBundleNumber (usb3 only not implemented)
|
||||
|
||||
// Feature
|
||||
#define hExposureTimeString "H_EXPOSURE_TIME" /* asynFloat64 rw */
|
||||
|
||||
// ALU
|
||||
#define hDefectCorrectModeString "H_DEFECTCORRECT_MODE" /* asynInt32 rw */
|
||||
#define hHotPixelCorrectLevelString "H_HOT_PIXEL_CORRECT_LEVEL" /* asynInt32 rw */
|
||||
#define hIntensityLutModeString "H_INTENSITY_LUT_MODE" /* asynInt32 rw */
|
||||
#define hIntensityLutPageString "H_INTENSITY_LUT_PAGE" /* asynInt32 ro */
|
||||
#define hExtractionModeString "H_EXTRACTION_MODE" /* asynInt32 ro */
|
||||
#define hDefectCorrectModeString "H_DEFECTCORRECT_MODE" /* asynInt32 rw */
|
||||
#define hHotPixelCorrectLevelString "H_HOT_PIXEL_CORRECT_LEVEL" /* asynInt32 rw */
|
||||
#define hIntensityLutModeString "H_INTENSITY_LUT_MODE" /* asynInt32 rw */
|
||||
#define hIntensityLutPageString "H_INTENSITY_LUT_PAGE" /* asynInt32 ro */
|
||||
#define hExtractionModeString "H_EXTRACTION_MODE" /* asynInt32 ro */
|
||||
|
||||
// output trigger
|
||||
#define hNumberOfOutputTriggerConnectorString "H_NUMBEROF_OUTPUTTRIGGERCONNECTOR" /* asynInt32 ro */
|
||||
#define hOutputTriggerSource0String "H_OUTPUT_TRIGGER_SOURCE0" /* asynInt32 rw */
|
||||
#define hOutputTriggerSource1String "H_OUTPUT_TRIGGER_SOURCE1" /* asynInt32 rw */
|
||||
#define hOutputTriggerSource2String "H_OUTPUT_TRIGGER_SOURCE2" /* asynInt32 rw */
|
||||
#define hOutputTriggerSource0String "H_OUTPUT_TRIGGER_SOURCE0" /* asynInt32 rw */
|
||||
#define hOutputTriggerSource1String "H_OUTPUT_TRIGGER_SOURCE1" /* asynInt32 rw */
|
||||
#define hOutputTriggerSource2String "H_OUTPUT_TRIGGER_SOURCE2" /* asynInt32 rw */
|
||||
#define hOutputTriggerPolarity0String "H_OUTPUT_TRIGGER_POLARITY0" /* asynInt32 rw */
|
||||
#define hOutputTriggerPolarity1String "H_OUTPUT_TRIGGER_POLARITY1" /* asynInt32 rw */
|
||||
#define hOutputTriggerPolarity2String "H_OUTPUT_TRIGGER_POLARITY2" /* asynInt32 rw */
|
||||
#define hOutputTriggerActive0String "H_OUTPUT_TRIGGER_ACTIVE0" /* asynInt32 ro */
|
||||
#define hOutputTriggerActive1String "H_OUTPUT_TRIGGER_ACTIVE1" /* asynInt32 ro */
|
||||
#define hOutputTriggerActive2String "H_OUTPUT_TRIGGER_ACTIVE2" /* asynInt32 ro */
|
||||
#define hOutputTriggerDelay0String "H_OUTPUT_TRIGGER_DELAY0" /* asynFloat64 rw */
|
||||
#define hOutputTriggerDelay1String "H_OUTPUT_TRIGGER_DELAY1" /* asynFloat64 rw */
|
||||
#define hOutputTriggerDelay2String "H_OUTPUT_TRIGGER_DELAY2" /* asynFloat64 rw */
|
||||
#define hOutputTriggerPeriod0String "H_OUTPUT_TRIGGER_PERIOD0" /* asynFloat64 rw */
|
||||
#define hOutputTriggerPeriod1String "H_OUTPUT_TRIGGER_PERIOD1" /* asynFloat64 rw */
|
||||
#define hOutputTriggerPeriod2String "H_OUTPUT_TRIGGER_PERIOD2" /* asynFloat64 rw */
|
||||
#define hOutputTriggerKind0String "H_OUTPUT_TRIGGER_KIND0" /* asynInt32 rw */
|
||||
#define hOutputTriggerKind1String "H_OUTPUT_TRIGGER_KIND1" /* asynInt32 rw */
|
||||
#define hOutputTriggerKind2String "H_OUTPUT_TRIGGER_KIND2" /* asynInt32 rw */
|
||||
#define hOutputTriggerActive0String "H_OUTPUT_TRIGGER_ACTIVE0" /* asynInt32 ro */
|
||||
#define hOutputTriggerActive1String "H_OUTPUT_TRIGGER_ACTIVE1" /* asynInt32 ro */
|
||||
#define hOutputTriggerActive2String "H_OUTPUT_TRIGGER_ACTIVE2" /* asynInt32 ro */
|
||||
#define hOutputTriggerDelay0String "H_OUTPUT_TRIGGER_DELAY0" /* asynFloat64 rw */
|
||||
#define hOutputTriggerDelay1String "H_OUTPUT_TRIGGER_DELAY1" /* asynFloat64 rw */
|
||||
#define hOutputTriggerDelay2String "H_OUTPUT_TRIGGER_DELAY2" /* asynFloat64 rw */
|
||||
#define hOutputTriggerPeriod0String "H_OUTPUT_TRIGGER_PERIOD0" /* asynFloat64 rw */
|
||||
#define hOutputTriggerPeriod1String "H_OUTPUT_TRIGGER_PERIOD1" /* asynFloat64 rw */
|
||||
#define hOutputTriggerPeriod2String "H_OUTPUT_TRIGGER_PERIOD2" /* asynFloat64 rw */
|
||||
#define hOutputTriggerKind0String "H_OUTPUT_TRIGGER_KIND0" /* asynInt32 rw */
|
||||
#define hOutputTriggerKind1String "H_OUTPUT_TRIGGER_KIND1" /* asynInt32 rw */
|
||||
#define hOutputTriggerKind2String "H_OUTPUT_TRIGGER_KIND2" /* asynInt32 rw */
|
||||
#define hOutputTriggerBaseSensor0String "H_OUTPUT_TRIGGER_BASE_SENSOR0" /* asynInt32 rw */
|
||||
#define hOutputTriggerBaseSensor1String "H_OUTPUT_TRIGGER_BASE_SENSOR1" /* asynInt32 rw */
|
||||
#define hOutputTriggerBaseSensor2String "H_OUTPUT_TRIGGER_BASE_SENSOR2" /* asynInt32 rw */
|
||||
#define hOutputTriggerPreHsyncCountString "H_OUTPUT_TRIGGER_PRE_HSYNC_COUNT" /* asynInt32 rw */
|
||||
|
||||
// Master Puls
|
||||
#define hMasterPulseModeString "H_MASTERPULSE_MODE" /* asynInt32 rw */
|
||||
#define hMasterPulseModeString "H_MASTERPULSE_MODE" /* asynInt32 rw */
|
||||
#define hMasterPulseTriggerSourceString "H_MASTERPULSE_TRIGGER_SOURCE" /* asynInt32 rw */
|
||||
#define hMasterPulseIntervalString "H_MASTERPULSE_INTERVAL" /* asynFloat64 rw */
|
||||
#define hMasterPulseIntervalString "H_MASTERPULSE_INTERVAL" /* asynFloat64 rw */
|
||||
#define hMasterPulseBurstTimesString "H_MASTERPULSE_BURST_TIMES" /* asynInt32 rw */
|
||||
|
||||
// Synchronious Timing
|
||||
#define hTimingReadoutTimeString "H_TIMING_READOUT_TIME" /* asynFloat64 ro */
|
||||
#define hTimingReadoutTimeString "H_TIMING_READOUT_TIME" /* asynFloat64 ro */
|
||||
#define hTimingCyclicTriggerPeriodString "H_TIMING_CYCLICTRIGGERPERIOD" /* asynFloat64 ro */
|
||||
#define hTimingMinTriggerBlankingString "H_TIMING_MIN_TRIGGER_BLANKING" /* asynFloat64 ro */
|
||||
#define hTimingMinTriggerIntervalString "H_TIMING_MIN_TRIGGER_INTERVAL" /* asynFloat64 ro */
|
||||
#define hTimingGlobalExposureDelayString "H_TIMING_GLOBAL_EXPOSURE_DELAY" /* asynFloat64 ro */
|
||||
#define hTimingExposureString "H_TIMING_EXPOSURE" /* asynInt32 ro */
|
||||
#define hTimingExposureString "H_TIMING_EXPOSURE" /* asynInt32 ro */
|
||||
#define hTimingInvalidExposurePeriodString "H_TIMING_INVALID_EXPOSURE_PERIOD" /* asynFloat64 ro */
|
||||
#define hInternalFrameRateString "H_INTERNAL_FRAME_RATE" /* asynFloat64 rw */
|
||||
#define hInternalFrameRateString "H_INTERNAL_FRAME_RATE" /* asynFloat64 rw */
|
||||
#define hInternalFrameIntervalString "H_INTERNAL_FRAME_INTERVAL" /* asynFloat64 rw */
|
||||
#define hInternalLineSpeedString "H_INTERNAL_LINE_SPEED" /* asynFloat64 rw */
|
||||
#define hInternalLineIntervalString "H_INTERNAL_LINE_INTERVAL" /* asynFloat64 rw */
|
||||
#define hInternalLineSpeedString "H_INTERNAL_LINE_SPEED" /* asynFloat64 rw */
|
||||
#define hInternalLineIntervalString "H_INTERNAL_LINE_INTERVAL" /* asynFloat64 rw */
|
||||
|
||||
// System information
|
||||
#define hColorTypeString "H_COLOR_TYPE" /* asynInt32 ro */
|
||||
#define hBitPerChannelString "H_BIT_PER_CHANNEL" /* asynInt32 rw */
|
||||
//#define hImageWidthString "H_IMAGE_WIDTH" /* asynInt32 ro */
|
||||
//#define hImageHeightString "H_IMAGE_HEIGHT" /* asynInt32 ro */
|
||||
#define hImageRowBytesString "H_IMAGE_ROWBYTES" /* asynInt32 ro */
|
||||
#define hImageFrameBytesString "H_IMAGE_FRAMEBYTES" /* asynInt32 ro */
|
||||
#define hImageTopOffsetBytesString "H_IMAGE_TOP_OFFSETBYTES" /* asynInt32 ro */
|
||||
#define hImagePixelTypeString "H_IMAGE_PIXEL_TYPE" /* asynInt32 rw */
|
||||
#define hBufferRowbytesString "H_BUFFER_ROWBYTES" /* asynInt32 ro */
|
||||
#define hBufferFramebytesString "H_BUFFER_FRAMEBYTES" /* asynInt32 ro */
|
||||
#define hBufferTopOffsetBytesString "H_BUFFER_TOP_OFFSETBYTES" /* asynInt32 ro */
|
||||
#define hBufferPixelTypeString "H_BUFFER_PIXEL_TYPE" /* asynInt32 ro */
|
||||
#define hColorTypeString "H_COLOR_TYPE" /* asynInt32 ro */
|
||||
#define hBitPerChannelString "H_BIT_PER_CHANNEL" /* asynInt32 rw */
|
||||
//#define hImageWidthString "H_IMAGE_WIDTH" /* asynInt32 ro */
|
||||
//#define hImageHeightString "H_IMAGE_HEIGHT" /* asynInt32 ro */
|
||||
#define hImageRowBytesString "H_IMAGE_ROWBYTES" /* asynInt32 ro */
|
||||
#define hImageFrameBytesString "H_IMAGE_FRAMEBYTES" /* asynInt32 ro */
|
||||
#define hImageTopOffsetBytesString "H_IMAGE_TOP_OFFSETBYTES" /* asynInt32 ro */
|
||||
#define hImagePixelTypeString "H_IMAGE_PIXEL_TYPE" /* asynInt32 rw */
|
||||
#define hBufferRowbytesString "H_BUFFER_ROWBYTES" /* asynInt32 ro */
|
||||
#define hBufferFramebytesString "H_BUFFER_FRAMEBYTES" /* asynInt32 ro */
|
||||
#define hBufferTopOffsetBytesString "H_BUFFER_TOP_OFFSETBYTES" /* asynInt32 ro */
|
||||
#define hBufferPixelTypeString "H_BUFFER_PIXEL_TYPE" /* asynInt32 ro */
|
||||
#define hRecordFixedBytesPerFileString "H_RECORD_FIXED_BYTES_PER_FILE" /* asynInt32 ro */
|
||||
#define hRecordFixedBytesPerSessionString "H_RECORD_FIXED_BYTES_PER_SESION" /* asynInt32 ro */
|
||||
#define hRecordFixedBytesPerFrameString "H_RECORD_FIXED_BYTES_PER_FRAME" /* asynInt32 ro */
|
||||
#define hSystemAliveString "H_SYSTEM_ALIVE" /* asynInt32 ro */
|
||||
#define hSystemAliveString "H_SYSTEM_ALIVE" /* asynInt32 ro */
|
||||
#define hConversionFactorCoeffString "H_CONVERSIONFACTOR_COEFF" /* asynFloat64 ro */
|
||||
#define hConversionFactorOffsetString "H_CONVERSIONFACTOR_OFFSET" /* asynFloat64 ro */
|
||||
#define hNumberOfViewString "H_NUMBER_OF_VIEW" /* asynInt32 ro */
|
||||
#define hNumberOfViewString "H_NUMBER_OF_VIEW" /* asynInt32 ro */
|
||||
#define hImageDetectorPixelWidthString "H_IMAGE_DETECTOR_PIXEL_WIDTH" /* asynFloat64 ro */
|
||||
#define hImageDetectorPixelHeightString "H_IMAGE_DETECTOR_PIXEL_HEIGHT" /* asynFloat64 ro */
|
||||
#define hImageDetectorPixelNumHorzString "H_IMAGE_DETECTOR_PIXEL_NUM_HORZ" /* asynInt32 ro */
|
||||
#define hImageDetectorPixelNumVertString "H_IMAGE_DETECTOR_PIXEL_NUM_VERT" /* asynInt32 ro */
|
||||
#define hTimeStampProducerString "H_TIMESTAMP_PRODUCER" /* asynInt32 ro */
|
||||
#define hFrameStampProducerString "H_FRAMESTAMP_PRODUCER" /* asynInt32 ro */
|
||||
#define hTimeStampString "H_TIMESTAMP" /* asynFloat64 ro */
|
||||
#define evrTimeStampString "EVR_TIMESTAMP"
|
||||
#define evrCountString "EVR_COUNTS"
|
||||
#define evrCountSinceAcqStartString "EVR_TRIGGERS_SINCE_ACQ_START"
|
||||
#define evrTriggerDroppedString "EVR_TRIGGER_DROPPED"
|
||||
#define hAcqControlString "H_ACQ_CONTROL"
|
||||
|
||||
// For some reason these two addresses are not defined in the dcamapi4 neither in dcamprop.h
|
||||
#define DETECTOR_PIXEL_NUM_HORZ 0x00420830
|
||||
#define DETECTOR_PIXEL_NUM_VERT 0x00420840
|
||||
|
||||
class epicsShareClass Hama : public ADDriver {
|
||||
class epicsShareClass Orca : public ADDriver {
|
||||
|
||||
public:
|
||||
Hama(const char*, int, int, size_t, int, int, int);
|
||||
// ~Hama();
|
||||
Orca(const char*, int, int, size_t, int, int, int);
|
||||
// ~Orca();
|
||||
/* override ADDriver methods */
|
||||
virtual asynStatus writeInt32(asynUser *pasynUser, epicsInt32 value);
|
||||
virtual asynStatus writeFloat64(asynUser *pasynUser, epicsFloat64 value);
|
||||
|
||||
// virtual asynStatus getBounds(asynUser *, epicsInt32 *low, epicsInt32 *high);
|
||||
//virtual asynStatus readEnum(asynUser *pasynUser, char *strings[], int values[],
|
||||
// int severities[], size_t nElements, size_t *nIn);
|
||||
virtual void report(FILE *fp, int details);
|
||||
|
||||
int readParameter(int propertyID, bool processPV = true);
|
||||
int readParameterStr(int paramIndex);
|
||||
|
||||
epicsUInt32 mTimeStampSec;
|
||||
epicsUInt32 mTimeStampNsec;
|
||||
|
||||
void imageTask();
|
||||
void temperatureTask();
|
||||
|
||||
protected:
|
||||
int hFrameRate;
|
||||
#define FIRST_HAMA_PARAM hFrameRate
|
||||
int hHamaName;
|
||||
int hOrcaName;
|
||||
int hVendor;
|
||||
int hModel;
|
||||
int hCameraID;
|
||||
@@ -260,9 +268,13 @@ protected:
|
||||
int hImageDetectorPixelNumVert;
|
||||
int hTimeStampProducer;
|
||||
int hFrameStampProducer;
|
||||
int evrCounts;
|
||||
int evrCountsSinceAcqStart;
|
||||
int evrTriggerDropped;
|
||||
int hAcqControl;
|
||||
int evrTimeStamp;
|
||||
//----
|
||||
int hTimeStamp;
|
||||
//#define LAST_HAMA_PARAM hTimeStamp
|
||||
//#define LAST_HAMA_PARAM evrTimeStamp
|
||||
|
||||
|
||||
private:
|
||||
@@ -279,31 +291,32 @@ private:
|
||||
|
||||
epicsEventId startEvent_;
|
||||
|
||||
// Helper functions
|
||||
asynStatus startAcquire(void);
|
||||
asynStatus stopAcquire(void);
|
||||
void getImageInformation(HDCAM hdcam, int32& pixeltype, int32& width, int32& rowbytes, int32& height, int32& framebytes);
|
||||
asynStatus accessCapturedImage(HDCAM hdcam, int32 iFrame, void* buf, int32 rowbytes, int32 cx, int32 cy, int32& ts_sec, int32& ts_microsec);
|
||||
asynStatus accessCapturedImage(HDCAM hdcam, int32 iFrame, void* buf, int32 rowbytes, int32 cx, int32 cy, epicsUInt32& ts_sec, epicsUInt32& ts_microsec);
|
||||
asynStatus imageTransferStatus(HDCAM hdcam, DCAMCAP_TRANSFERINFO &captransferinfo);
|
||||
|
||||
// wrapper functions for dcamapi
|
||||
int allocateBuffers(unsigned int);
|
||||
int freeBuffers();
|
||||
|
||||
// These function will be read only once
|
||||
int connectCamera();
|
||||
int disconnectCamera();
|
||||
int initCamera();
|
||||
asynStatus updateSensorSize();
|
||||
asynStatus getParameter(int paramIndex);
|
||||
|
||||
|
||||
|
||||
// helper functions for dcamapi
|
||||
void printError(HDCAM hdcam, DCAMERR errid, const char* apiname, const char* fmt=NULL, ...);
|
||||
void printInfo(HDCAM hdcam);
|
||||
int dcamdev_string( DCAMERR& err, HDCAM hdcam, int32 idStr, char* text, int32 textbytes );
|
||||
int setParameter(int paramIndex);
|
||||
int getParameterStr(int paramIndex);
|
||||
|
||||
|
||||
int getProperties();
|
||||
int setFeature(int featureIndex, double value);
|
||||
int roundToNearestMultipleOfFour(int value);
|
||||
|
||||
asynStatus setFeature(int featureIndex, double value);
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -15,15 +15,15 @@ conda create -n hama epics-base require tclx make compilers adcore busy
|
||||
|
||||
To activate env:
|
||||
|
||||
conda activate hama
|
||||
conda activate orca
|
||||
|
||||
git clone ...
|
||||
|
||||
cd git/ADHama
|
||||
cd git/ADOrca
|
||||
|
||||
compilation:
|
||||
|
||||
make -f ADHama.Makefile LIBVERSION=0.1 clean uninstall build db install
|
||||
make -f ADOrca.Makefile LIBVERSION=0.1 clean uninstall build db install
|
||||
|
||||
execution:
|
||||
|
||||
|
||||
59
cmds/st.cmd
59
cmds/st.cmd
@@ -1,23 +1,28 @@
|
||||
# This should be a test startup script
|
||||
require adhama
|
||||
require adorca
|
||||
require adpluginkafka
|
||||
|
||||
|
||||
epicsEnvSet("PREFIX", "Hama:")
|
||||
epicsEnvSet("PORT", "HAMA")
|
||||
epicsEnvSet("PREFIX", "Orca:")
|
||||
epicsEnvSet("PORT", "ORCA")
|
||||
epicsEnvSet("CAMERA", "0")
|
||||
epicsEnvSet("QSIZE", "21")
|
||||
epicsEnvSet("XSIZE", "10")
|
||||
epicsEnvSet("YSIZE", "10")
|
||||
epicsEnvSet("XSIZE", "2048")
|
||||
epicsEnvSet("YSIZE", "2048")
|
||||
epicsEnvSet("NCHANS", "2048")
|
||||
# Number of Elements
|
||||
epicsEnvSet("NELEMENTS", "4194304")
|
||||
epicsEnvSet("EPICS_CA_MAX_ARRAY_BYTES", "64000000")
|
||||
|
||||
# iocshLoad("$(adhama_DIR)ADHama.iocsh")
|
||||
#EVR settings
|
||||
#epicsEnvSet("EVR", "LabS-NIDO:Ctrl-EVR-01")
|
||||
epicsEnvSet("EVR", "Labs-ECDC:TS-EVR-11")
|
||||
epicsEnvSet("EVR_EVENT", "B")
|
||||
|
||||
devHamamatsuConfig("$(PORT)", $(CAMERA), 0, 0, 0, 0, 10)
|
||||
# iocshLoad("$(adorca_DIR)ADOrca.iocsh")
|
||||
|
||||
dbLoadRecords("$(adhama_DIR)db/hama.db","P=$(PREFIX),R=cam1:,EVR=LabS-Utgard-VIP:TS-EVR-3,E=F,PORT=$(PORT),ADDR=0,TIMEOUT=1")
|
||||
devOrcamatsuConfig("$(PORT)", $(CAMERA), 0, 0, 0, 0, 10)
|
||||
|
||||
dbLoadRecords("$(adorca_DIR)db/orca.db","P=$(PREFIX),R=cam1:,EVR=$(EVR),E=$(EVR_EVENT),PORT=$(PORT),ADDR=0,TIMEOUT=1")
|
||||
|
||||
#asynSetTraceMask("$(PORT)",-1,0x9)
|
||||
#asynSetTraceIOMask("$(PORT)",-1,0x2)
|
||||
@@ -32,27 +37,35 @@ NDPvaConfigure("PVA1", $(QSIZE), 0, "$(PORT)", 0, "$(PREFIX)Pva1:Image", 0, 0, 0
|
||||
dbLoadRecords("$(adcore_DIR)/db/NDPva.template", "P=$(PREFIX),R=Pva1:, PORT=PVA1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=$(PORT)")
|
||||
#
|
||||
|
||||
# Create a standard arrays plugin, set it to get data from hama driver.
|
||||
# Create a standard arrays plugin, set it to get data from orca driver.
|
||||
NDStdArraysConfigure("Image1", "$(QSIZE)", 0, "$(PORT)", 0, 0)
|
||||
dbLoadRecords("NDStdArrays.template", "P=$(PREFIX),R=image1:,PORT=Image1,ADDR=0,TIMEOUT=1,NDARRAY_PORT=$(PORT),TYPE=Int32,FTVL=LONG,NELEMENTS=$(NELEMENTS)")
|
||||
|
||||
# Create a kafka plugin, set it to get data from orca driver.
|
||||
#epicsEnvSet("KFK_TOPIC", "ymir_camera")
|
||||
epicsEnvSet("KFK_TOPIC", "nido_camera")
|
||||
|
||||
# Kafka plugin
|
||||
epicsEnvSet("KFK_CONFIG_FILE_PATH", "/home/iocuser/git/adhama/cmds/kafka.conf")
|
||||
|
||||
KafkaPluginConfigure("KFK1", 3, 1, "$(PORT)", 0, -1, "$(KFK_TOPIC)", "hama_kfk1","$(KFK_CONFIG_FILE_PATH)")
|
||||
dbLoadRecords("$(adpluginkafka_DIR)db/adpluginkafka.db", "P=$(PREFIX), R=Kfk1:, PORT=KFK1, ADDR=0, TIMEOUT=1, NDARRAY_PORT=$(PORT)")
|
||||
|
||||
startPVAServer
|
||||
|
||||
#
|
||||
#
|
||||
# Start iocInit function===================================================================================
|
||||
#
|
||||
iocInit()
|
||||
#
|
||||
# End iocInit function ====================================================================================
|
||||
#
|
||||
|
||||
dbpf Hama:cam1:PoolUsedMem.SCAN 0
|
||||
dbpf Hama:image1:EnableCallbacks 1
|
||||
dbpf Orca:cam1:PoolUsedMem.SCAN 0
|
||||
dbpf Orca:image1:EnableCallbacks 1
|
||||
dbpf Orca:Kfk1:EnableCallbacks 1
|
||||
|
||||
dbpf Orca:cam1:AcquireTime .001
|
||||
dbpf Orca:cam1:AcquirePeriod .02
|
||||
dbpf Orca:cam1:TriggerSource-S 1 # external
|
||||
dbpf Orca:cam1:NumImages 10
|
||||
dbpf Orca:cam1:ImageMode 1
|
||||
|
||||
#dbpf Orca:cam1:TriggerPolarity-S # 2-positive, 1-negative
|
||||
|
||||
epicsThreadSleep(1.0)
|
||||
|
||||
dbl > pv.list
|
||||
#
|
||||
# END of st.cmd
|
||||
#
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
# This should be the included snippet to configure and run the deployed IOC. It should be loaded with
|
||||
#
|
||||
# iocshLoad("$(ADHama_DIR)/ADHama.iocsh")
|
||||
# iocshLoad("$(ADOrca_DIR)/ADOrca.iocsh")
|
||||
1
support/dcamsdk4/lib/linux-x86_64/libdcamapi.so
Symbolic link
1
support/dcamsdk4/lib/linux-x86_64/libdcamapi.so
Symbolic link
@@ -0,0 +1 @@
|
||||
libdcamapi.so.4.0.6269
|
||||
1
support/dcamsdk4/lib/linux-x86_64/libdcamapi.so.4
Symbolic link
1
support/dcamsdk4/lib/linux-x86_64/libdcamapi.so.4
Symbolic link
@@ -0,0 +1 @@
|
||||
libdcamapi.so.4.0.6269
|
||||
Reference in New Issue
Block a user