add binning, feature, master pulse
This commit is contained in:
+271
-9
@@ -244,7 +244,7 @@ record(mbbi, "$(P)$(R)ReadoutDirection-RB") {
|
||||
# Trigger source (mode 4)
|
||||
record(mbbo, "$(P)$(R)TriggerSource-S") {
|
||||
field(DESC,"")
|
||||
#field(PINI, "YES")
|
||||
field(PINI, "YES")
|
||||
field(DTYP, "asynInt32")
|
||||
field(ZRVL, "1")
|
||||
field(ZRST, "Internal")
|
||||
@@ -331,9 +331,9 @@ record(mbbo, "$(P)$(R)TriggerGlobalExposure-S") {
|
||||
field(PINI, "YES")
|
||||
field(DTYP, "asynInt32")
|
||||
field(ZRVL, "3")
|
||||
field(ZRST, "Global Exposure Delay")
|
||||
field(ZRST, "Delay")
|
||||
field(ONVL, "5")
|
||||
field(ONST, "Global Exposure Reset")
|
||||
field(ONST, "Reset")
|
||||
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_TRIGGER_GLOBAL_EXPOSURE")
|
||||
field(VAL, "3")
|
||||
}
|
||||
@@ -342,9 +342,9 @@ record(mbbi, "$(P)$(R)TriggerGlobalExposure-RB") {
|
||||
field(DESC, "")
|
||||
field(DTYP, "asynInt32")
|
||||
field(ZRVL, "3")
|
||||
field(ZRST, "Global Exposure Delay")
|
||||
field(ZRST, "Delay")
|
||||
field(ONVL, "5")
|
||||
field(ONST, "Global Exposure Reset")
|
||||
field(ONST, "Reset")
|
||||
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_TRIGGER_GLOBAL_EXPOSURE")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
@@ -379,9 +379,9 @@ record(mbbo, "$(P)$(R)TriggerConnector-S") {
|
||||
field(PINI, "YES")
|
||||
field(DTYP, "asynInt32")
|
||||
field(ZRVL, "1")
|
||||
field(ZRST, "Connector Interface")
|
||||
field(ZRST, "Interface")
|
||||
field(ONVL, "2")
|
||||
field(ONST, "Connector BNC")
|
||||
field(ONST, "BNC")
|
||||
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_TRIGGER_CONNECTOR")
|
||||
field(VAL, "1")
|
||||
field(TPRO, "1")
|
||||
@@ -391,9 +391,9 @@ record(mbbi, "$(P)$(R)TriggerConnector-RB") {
|
||||
field(DESC, "")
|
||||
field(DTYP, "asynInt32")
|
||||
field(ZRVL, "1")
|
||||
field(ZRST, "Connector Interface")
|
||||
field(ZRST, "Interface")
|
||||
field(ONVL, "2")
|
||||
field(ONST, "Connector BNC")
|
||||
field(ONST, "BNC")
|
||||
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_TRIGGER_CONNECTOR")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
@@ -512,17 +512,190 @@ record(mbbi, "$(P)$(R)CoolerStatus-R") {
|
||||
##########################################################################
|
||||
# Binning and ROI #
|
||||
##########################################################################
|
||||
# Binning
|
||||
record(mbbo, "$(P)$(R)Binning-S") {
|
||||
field(DESC, "")
|
||||
field(PINI, "YES")
|
||||
field(DTYP, "asynInt32")
|
||||
field(ZRVL, "1")
|
||||
field(ZRST, "1")
|
||||
field(ONVL, "2")
|
||||
field(ONST, "2")
|
||||
field(TWVL, "4")
|
||||
field(TWST, "4")
|
||||
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_BINNING")
|
||||
field(VAL, "0")
|
||||
}
|
||||
|
||||
record(mbbi, "$(P)$(R)Binning-RB") {
|
||||
field(DESC, "")
|
||||
field(DTYP, "asynInt32")
|
||||
field(ZRVL, "1")
|
||||
field(ZRST, "1x1")
|
||||
field(ONVL, "2")
|
||||
field(ONST, "2x2")
|
||||
field(TWVL, "4")
|
||||
field(TWST, "4x4")
|
||||
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_BINNING")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
|
||||
# these records are defined in the ADBase.template
|
||||
# SubarrayHPos
|
||||
# SubarrayHSize
|
||||
# SubarrayVPos
|
||||
# SubarrayVSize
|
||||
|
||||
record(mbbo, "$(P)$(R)SubarrayMode-S") {
|
||||
field(DESC, "")
|
||||
field(PINI, "YES")
|
||||
field(DTYP, "asynInt32")
|
||||
field(ZRVL, "1")
|
||||
field(ZRST, "OFF")
|
||||
field(ONVL, "2")
|
||||
field(ONST, "ON")
|
||||
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_BINNING")
|
||||
field(VAL, "1")
|
||||
}
|
||||
|
||||
record(mbbi, "$(P)$(R)SubarrayMode-RB") {
|
||||
field(DESC, "")
|
||||
field(DTYP, "asynInt32")
|
||||
field(ZRVL, "1")
|
||||
field(ZRST, "OFF")
|
||||
field(ONVL, "2")
|
||||
field(ONST, "ON")
|
||||
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_BINNING")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
|
||||
|
||||
##########################################################################
|
||||
# Feature #
|
||||
##########################################################################
|
||||
record(ao, "$(P)$(R)ExposureTime-S") {
|
||||
field(DESC, "")
|
||||
field(PINI, "YES")
|
||||
field(DTYP, "asynFloat64")
|
||||
field(DRVL, "0")
|
||||
field(DRVH, "10.0")
|
||||
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_EXPOSURE_TIME")
|
||||
field(VAL, "0")
|
||||
}
|
||||
|
||||
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 #
|
||||
##########################################################################
|
||||
# Defect Correct Mode
|
||||
record(mbbo, "$(P)$(R)DefectCorrectMode-S") {
|
||||
field(DESC, "")
|
||||
field(PINI, "YES")
|
||||
field(DTYP, "asynInt32")
|
||||
field(ZRVL, "1")
|
||||
field(ZRST, "OFF")
|
||||
field(ONVL, "2")
|
||||
field(ONST, "ON")
|
||||
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_DEFECTCORRECT_MODE")
|
||||
field(VAL, "1")
|
||||
}
|
||||
|
||||
record(mbbi, "$(P)$(R)DefectCorrectMode-RB") {
|
||||
field(DESC, "")
|
||||
field(DTYP, "asynInt32")
|
||||
field(ZRVL, "1")
|
||||
field(ZRST, "OFF")
|
||||
field(ONVL, "2")
|
||||
field(ONST, "ON")
|
||||
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_DEFECTCORRECT_MODE")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
|
||||
##########################################################################
|
||||
# Hot Pixel Correct Level
|
||||
record(mbbo, "$(P)$(R)HotPixelCorrectLevel-S") {
|
||||
field(DESC, "")
|
||||
field(PINI, "YES")
|
||||
field(DTYP, "asynInt32")
|
||||
field(ZRVL, "1")
|
||||
field(ZRST, "Standard")
|
||||
field(ONVL, "2")
|
||||
field(ONST, "Minimum")
|
||||
field(TWVL, "3")
|
||||
field(TWST, "Aggressive")
|
||||
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_HOT_PIXEL_CORRECT_LEVEL")
|
||||
field(VAL, "1")
|
||||
}
|
||||
|
||||
record(mbbi, "$(P)$(R)HotPixelCorrectLevel-RB") {
|
||||
field(DESC, "")
|
||||
field(DTYP, "asynInt32")
|
||||
field(ZRVL, "1")
|
||||
field(ZRST, "Standard")
|
||||
field(ONVL, "2")
|
||||
field(ONST, "Minimum")
|
||||
field(TWVL, "3")
|
||||
field(TWST, "Aggressive")
|
||||
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_HOT_PIXEL_CORRECT_LEVEL")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
|
||||
##########################################################################
|
||||
# Intensity Lut
|
||||
record(mbbo, "$(P)$(R)IntensityLutMode-S") {
|
||||
field(DESC, "")
|
||||
field(PINI, "YES")
|
||||
field(DTYP, "asynInt32")
|
||||
field(ZRVL, "1")
|
||||
field(ZRST, "Through")
|
||||
field(ONVL, "2")
|
||||
field(ONST, "Page")
|
||||
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_INTENSITY_LUT_MODE")
|
||||
field(VAL, "1")
|
||||
}
|
||||
|
||||
record(mbbi, "$(P)$(R)IntensityLutMode-RB") {
|
||||
field(DESC, "")
|
||||
field(DTYP, "asynInt32")
|
||||
field(ZRVL, "1")
|
||||
field(ZRST, "Through")
|
||||
field(ONVL, "2")
|
||||
field(ONST, "Page")
|
||||
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_INTENSITY_LUT_MODE")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
|
||||
##########################################################################
|
||||
# Intensity Lut Page
|
||||
record(ao, "$(P)$(R)IntensityLutPage-S") {
|
||||
field(DESC, "")
|
||||
field(PINI, "YES")
|
||||
field(DTYP, "asynInt32")
|
||||
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_INTENSITY_LUT_PAGE")
|
||||
field(VAL, "1")
|
||||
}
|
||||
|
||||
record(ai, "$(P)$(R)IntensityLutPage-RB") {
|
||||
field(DESC, "")
|
||||
field(DTYP, "asynInt32")
|
||||
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_INTENSITY_LUT_PAGE")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
|
||||
##########################################################################
|
||||
# Extraction Mode
|
||||
record(ai, "$(P)$(R)ExtractionMode-RB") {
|
||||
field(DESC, "")
|
||||
field(DTYP, "asynInt32")
|
||||
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_EXTRACTION_MODE")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
|
||||
##########################################################################
|
||||
# Output Trigger #
|
||||
@@ -747,7 +920,96 @@ record(mbbi, "$(P)$(R)OutputTriggerBaseSensor0-RB") {
|
||||
##########################################################################
|
||||
# Master Pulse #
|
||||
##########################################################################
|
||||
# Master Pulse Mode
|
||||
record(mbbo, "$(P)$(R)MasterPulseMode-S") {
|
||||
field(DESC, "")
|
||||
field(PINI, "YES")
|
||||
field(DTYP, "asynInt32")
|
||||
field(ZRVL, "1")
|
||||
field(ZRST, "Continous")
|
||||
field(ONVL, "2")
|
||||
field(ONST, "Start")
|
||||
field(TWVL, "3")
|
||||
field(THST, "Burst")
|
||||
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_MASTERPULSE_MODE")
|
||||
field(VAL, "1")
|
||||
}
|
||||
|
||||
record(mbbi, "$(P)$(R)MasterPulseMode-RB") {
|
||||
field(DESC, "")
|
||||
field(DTYP, "asynInt32")
|
||||
field(ZRVL, "1")
|
||||
field(ZRST, "Continous")
|
||||
field(ONVL, "2")
|
||||
field(ONST, "Start")
|
||||
field(TWVL, "3")
|
||||
field(TWST, "Burst")
|
||||
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_MASTERPULSE_MODE")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
|
||||
##########################################################################
|
||||
# Master Pulse Trigger Source
|
||||
record(mbbo, "$(P)$(R)MasterPulseTriggerSource-S") {
|
||||
field(DESC, "")
|
||||
field(PINI, "YES")
|
||||
field(DTYP, "asynInt32")
|
||||
field(ZRVL, "1")
|
||||
field(ZRST, "External")
|
||||
field(ONVL, "2")
|
||||
field(ONST, "Software")
|
||||
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_MASTERPULSE_TRIGGER_SOURCE")
|
||||
field(VAL, "1")
|
||||
}
|
||||
|
||||
record(mbbi, "$(P)$(R)MasterPulseTriggerSource-RB") {
|
||||
field(DESC, "")
|
||||
field(DTYP, "asynInt32")
|
||||
field(ZRVL, "1")
|
||||
field(ZRST, "External")
|
||||
field(ONVL, "2")
|
||||
field(ONST, "Software")
|
||||
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_MASTERPULSE_TRIGGER_SOURCE")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
|
||||
##########################################################################
|
||||
# Mster Pulse Interval
|
||||
record(ao, "$(P)$(R)MasterPulseInterval-S") {
|
||||
field(DESC, "")
|
||||
field(PINI, "YES")
|
||||
field(DTYP, "asynFloat64")
|
||||
field(DRVL, "0.00001")
|
||||
field(DRVH, "10")
|
||||
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_MASTERPULSE_INTERVAL")
|
||||
field(VAL, "0.1")
|
||||
}
|
||||
|
||||
record(ai, "$(P)$(R)MasterPulseInterval-RB") {
|
||||
field(DESC, "")
|
||||
field(DTYP, "asynFloat64")
|
||||
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_MASTERPULSE_INTERVAL")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
|
||||
##########################################################################
|
||||
# Mster Pulse Burst Times
|
||||
record(ao, "$(P)$(R)MasterPulseBurstTimes-S") {
|
||||
field(DESC, "")
|
||||
field(PINI, "YES")
|
||||
field(DTYP, "asynInt32")
|
||||
field(DRVL, "1")
|
||||
field(DRVH, "10000")
|
||||
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_MASTERPULSE_BURST_TIMES")
|
||||
field(VAL, "0")
|
||||
}
|
||||
|
||||
record(ai, "$(P)$(R)MasterPulseBurstTimes-RB") {
|
||||
field(DESC, "")
|
||||
field(DTYP, "asynInt32")
|
||||
field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_MASTERPULSE_BURST_TIMES")
|
||||
field(SCAN, "I/O Intr")
|
||||
}
|
||||
|
||||
##########################################################################
|
||||
# Synchronious Timing #
|
||||
|
||||
+35
-12
@@ -146,8 +146,9 @@ Hama::Hama(const char* portName, int cameraId, int maxBuffers, size_t maxMemory,
|
||||
|
||||
connectCamera();
|
||||
|
||||
/*
|
||||
int err = 0;
|
||||
/*
|
||||
|
||||
err |= getParameter(DCAM_IDPROP_SENSORMODE);
|
||||
err |= getParameter(DCAM_IDPROP_READOUTSPEED);
|
||||
err |= getParameter(DCAM_IDPROP_READOUT_DIRECTION);
|
||||
@@ -160,7 +161,6 @@ Hama::Hama(const char* portName, int cameraId, int maxBuffers, size_t maxMemory,
|
||||
err |= getParameter(DCAM_IDPROP_TRIGGERTIMES);
|
||||
err |= getParameter(DCAM_IDPROP_TRIGGERDELAY);
|
||||
err |= getParameter(DCAM_IDPROP_INTERNALTRIGGER_HANDLING);
|
||||
*/
|
||||
|
||||
err |= getParameterStr(DCAM_IDSTR_VENDOR);
|
||||
err |= getParameterStr(DCAM_IDSTR_MODEL);
|
||||
@@ -172,6 +172,7 @@ Hama::Hama(const char* portName, int cameraId, int maxBuffers, size_t maxMemory,
|
||||
err |= getParameterStr(DCAM_IDSTR_DCAMAPIVERSION);
|
||||
|
||||
printf("[DEBUG] Error = %d\n", err);
|
||||
*/
|
||||
printf("[DEBUG] === END Constructor ADHama ===\n");
|
||||
}
|
||||
//============================================================================
|
||||
@@ -413,6 +414,8 @@ asynStatus Hama::writeInt32(asynUser *pasynUser, epicsInt32 value){
|
||||
|
||||
getParamName(index, ¶mName);
|
||||
|
||||
double value_d = 0;
|
||||
//getIntegerParam(index, &value);
|
||||
|
||||
if (index == ADAcquire) {
|
||||
printf("function ADAcquire\n");
|
||||
@@ -420,9 +423,6 @@ asynStatus Hama::writeInt32(asynUser *pasynUser, epicsInt32 value){
|
||||
else if (index == ADImageMode) {
|
||||
printf("function ADImageMode\n");
|
||||
}
|
||||
else if (index == ADTriggerMode) {
|
||||
printf("function ADTriggerMode\n");
|
||||
}
|
||||
else if (index == ADNumExposures) {
|
||||
printf("function ADNumExposures\n");
|
||||
}
|
||||
@@ -459,23 +459,46 @@ asynStatus Hama::writeInt32(asynUser *pasynUser, epicsInt32 value){
|
||||
printf("function BitPerChannel\n");
|
||||
}
|
||||
else if (index == hTriggerSource) {
|
||||
printf("function TriggerSorce\n");
|
||||
double value_d = 0;
|
||||
//getIntegerParam(index, &value);
|
||||
printf("Hi value = %d, value_d = %f\n", value, value_d);
|
||||
dcamprop_setvalue(m_hdcam, DCAM_IDPROP_TRIGGERSOURCE, value);
|
||||
dcamprop_getvalue(m_hdcam, DCAM_IDPROP_TRIGGERSOURCE, &value_d);
|
||||
printf("value = %d, value_d = %f\n", value, value_d);
|
||||
setIntegerParam(index, value_d);
|
||||
}
|
||||
else if (index == hTriggerMode) {
|
||||
dcamprop_setvalue(m_hdcam, DCAM_IDPROP_TRIGGER_MODE, value);
|
||||
dcamprop_getvalue(m_hdcam, DCAM_IDPROP_TRIGGER_MODE, &value_d);
|
||||
}
|
||||
else if (index == hTriggerActive) {
|
||||
dcamprop_setvalue(m_hdcam, DCAM_IDPROP_TRIGGERACTIVE, value);
|
||||
dcamprop_getvalue(m_hdcam, DCAM_IDPROP_TRIGGERACTIVE, &value_d);
|
||||
}
|
||||
else if (index == hTriggerGlobalExposure) {
|
||||
dcamprop_setvalue(m_hdcam, DCAM_IDPROP_TRIGGER_GLOBALEXPOSURE, value);
|
||||
dcamprop_getvalue(m_hdcam, DCAM_IDPROP_TRIGGER_GLOBALEXPOSURE, &value_d);
|
||||
}
|
||||
else if (index == hTriggerPolarity) {
|
||||
dcamprop_setvalue(m_hdcam, DCAM_IDPROP_TRIGGERPOLARITY, value);
|
||||
dcamprop_getvalue(m_hdcam, DCAM_IDPROP_TRIGGERPOLARITY, &value_d);
|
||||
}
|
||||
else if (index == hTriggerConnector) {
|
||||
dcamprop_setvalue(m_hdcam, DCAM_IDPROP_TRIGGER_CONNECTOR, value);
|
||||
dcamprop_getvalue(m_hdcam, DCAM_IDPROP_TRIGGER_CONNECTOR, &value_d);
|
||||
}
|
||||
else if (index == hTriggerTimes) {
|
||||
dcamprop_setvalue(m_hdcam, DCAM_IDPROP_TRIGGERTIMES, value);
|
||||
dcamprop_getvalue(m_hdcam, DCAM_IDPROP_TRIGGERTIMES, &value_d);
|
||||
}
|
||||
else if (index == hInternalTriggerHandling) {
|
||||
dcamprop_setvalue(m_hdcam, DCAM_IDPROP_INTERNALTRIGGER_HANDLING, value);
|
||||
dcamprop_getvalue(m_hdcam, DCAM_IDPROP_INTERNALTRIGGER_HANDLING, &value_d);
|
||||
}
|
||||
else{
|
||||
printf("function ELSE.... \n");
|
||||
|
||||
}
|
||||
|
||||
setIntegerParam(index, value_d);
|
||||
|
||||
/* Do callbacks so higher layers see any changes */
|
||||
status = (asynStatus) callParamCallbacks();
|
||||
status = (asynStatus) callParamCallbacks();
|
||||
|
||||
if (status)
|
||||
asynPrint(pasynUser, ASYN_TRACE_ERROR,
|
||||
|
||||
Reference in New Issue
Block a user