fix some errors, add ADDriver::writeInt32, ADDriver::writeFloat64

This commit is contained in:
Iocuser
2022-11-29 17:37:05 +01:00
parent 71f12cfdcf
commit 3db0cf6913
3 changed files with 152 additions and 72 deletions
+81 -15
View File
@@ -244,7 +244,6 @@ int Hama::initCamera(){
err |= getParameter(DETECTOR_PIXEL_NUM_HORZ);
err |= getParameter(DETECTOR_PIXEL_NUM_VERT);
err |= getParameter( DCAM_IDPROP_IMAGE_PIXELTYPE);
err |= getParameter( DCAM_IDPROP_IMAGE_WIDTH);
err |= getParameter( DCAM_IDPROP_IMAGE_ROWBYTES);
@@ -256,7 +255,6 @@ int Hama::initCamera(){
err |= getParameter( DCAM_IDPROP_SUBARRAYHSIZE);
err |= getParameter( DCAM_IDPROP_SUBARRAYVSIZE);
err |= getParameter(DCAM_IDPROP_TRIGGERSOURCE);
err |= getParameter(DCAM_IDPROP_TRIGGER_MODE);
err |= getParameter(DCAM_IDPROP_TRIGGERACTIVE);
@@ -267,11 +265,23 @@ int Hama::initCamera(){
err |= getParameter(DCAM_IDPROP_TRIGGERDELAY);
err |= getParameter(DCAM_IDPROP_INTERNALTRIGGER_HANDLING);
err |= getParameter(DCAM_IDPROP_TIMESTAMP_PRODUCER);
err |= getParameter(DCAM_IDPROP_IMAGE_TOPOFFSETBYTES);
err |= getParameter(DCAM_IDPROP_BUFFER_ROWBYTES);
err |= getParameter(DCAM_IDPROP_BUFFER_FRAMEBYTES);
err |= getParameter(DCAM_IDPROP_BUFFER_TOPOFFSETBYTES);
err |= getParameter(DCAM_IDPROP_BUFFER_PIXELTYPE);
err |= getParameter(DCAM_IDPROP_RECORDFIXEDBYTES_PERFILE);
err |= getParameter(DCAM_IDPROP_RECORDFIXEDBYTES_PERSESSION);
err |= getParameter(DCAM_IDPROP_RECORDFIXEDBYTES_PERFRAME);
err |= getParameter(DCAM_IDPROP_SYSTEM_ALIVE);
err |= getParameter(DCAM_IDPROP_CONVERSIONFACTOR_COEFF);
err |= getParameter(DCAM_IDPROP_CONVERSIONFACTOR_OFFSET);
err |= getParameter(DCAM_IDPROP_NUMBEROF_VIEW);
err |= getParameter(DCAM_IDPROP_TIMESTAMP_PRODUCER);
err |= getParameter(DCAM_IDPROP_FRAMESTAMP_PRODUCER);
callParamCallbacks();
if(err){
// asynPrint(pasynUser, ASYN_TRACEIO_DRIVER, "%s:%s: port=%s, value=%d, status=%d\n",
// driverName, functionName, this->portName, value, (int)status);
@@ -339,6 +349,7 @@ int Hama::getParameterStr(int propertyID){
}
callParamCallbacks();
return int(status);
}
@@ -494,10 +505,67 @@ asynStatus Hama::getParameter(int propertyID){
status = setIntegerParam(hInternalTriggerHandling, dvalue);
break;
case DCAM_IDPROP_TIMESTAMP_PRODUCER:
case DCAM_IDPROP_COLORTYPE:
m_err = dcamprop_getvalue(m_hdcam, DCAM_IDPROP_COLORTYPE, &dvalue);
status = setIntegerParam(hColorType, dvalue);
break;
case DCAM_IDPROP_IMAGE_TOPOFFSETBYTES:
m_err = dcamprop_getvalue(m_hdcam, DCAM_IDPROP_IMAGE_TOPOFFSETBYTES, &dvalue);
status = setIntegerParam(hImageTopOffsetBytes, dvalue);
break;
case DCAM_IDPROP_BUFFER_ROWBYTES:
m_err = dcamprop_getvalue(m_hdcam, DCAM_IDPROP_BUFFER_ROWBYTES, &dvalue);
status = setIntegerParam(hBufferRowbytes, dvalue);
break;
case DCAM_IDPROP_BUFFER_FRAMEBYTES:
m_err = dcamprop_getvalue(m_hdcam, DCAM_IDPROP_BUFFER_FRAMEBYTES, &dvalue);
status = setIntegerParam(hBufferFramebytes, dvalue);
break;
case DCAM_IDPROP_BUFFER_TOPOFFSETBYTES:
m_err = dcamprop_getvalue(m_hdcam, DCAM_IDPROP_BUFFER_TOPOFFSETBYTES, &dvalue);
status = setIntegerParam(hBufferTopOffsetBytes, dvalue);
break;
case DCAM_IDPROP_BUFFER_PIXELTYPE:
m_err = dcamprop_getvalue(m_hdcam, DCAM_IDPROP_BUFFER_PIXELTYPE, &dvalue);
status = setIntegerParam(hBufferPixelType, dvalue);
break;
case DCAM_IDPROP_RECORDFIXEDBYTES_PERFILE:
m_err = dcamprop_getvalue(m_hdcam, DCAM_IDPROP_RECORDFIXEDBYTES_PERFILE, &dvalue);
status = setIntegerParam(hRecordFixedBytesPerFile, dvalue);
break;
case DCAM_IDPROP_RECORDFIXEDBYTES_PERSESSION:
m_err = dcamprop_getvalue(m_hdcam, DCAM_IDPROP_RECORDFIXEDBYTES_PERSESSION, &dvalue);
status = setIntegerParam(hRecordFixedBytesPerSession, dvalue);
break;
case DCAM_IDPROP_RECORDFIXEDBYTES_PERFRAME:
m_err = dcamprop_getvalue(m_hdcam, DCAM_IDPROP_RECORDFIXEDBYTES_PERFRAME, &dvalue);
status = setIntegerParam(hRecordFixedBytesPerFrame, dvalue);
break;
case DCAM_IDPROP_SYSTEM_ALIVE:
m_err = dcamprop_getvalue(m_hdcam, DCAM_IDPROP_SYSTEM_ALIVE, &dvalue);
status = setIntegerParam(hSystemAlive, dvalue);
break;
case DCAM_IDPROP_CONVERSIONFACTOR_COEFF:
m_err = dcamprop_getvalue(m_hdcam, DCAM_IDPROP_CONVERSIONFACTOR_COEFF, &dvalue);
status = setDoubleParam(hConversionFactorCoeff, dvalue);
break;
case DCAM_IDPROP_CONVERSIONFACTOR_OFFSET:
m_err = dcamprop_getvalue(m_hdcam, DCAM_IDPROP_CONVERSIONFACTOR_OFFSET, &dvalue);
status = setDoubleParam(hConversionFactorOffset, dvalue);
break;
case DCAM_IDPROP_NUMBEROF_VIEW:
m_err = dcamprop_getvalue(m_hdcam, DCAM_IDPROP_NUMBEROF_VIEW, &dvalue);
status = setIntegerParam(hNumberOfView, dvalue);
break;
case DCAM_IDPROP_TIMESTAMP_PRODUCER:
m_err = dcamprop_getvalue(m_hdcam, DCAM_IDPROP_TIMESTAMP_PRODUCER, &dvalue);
status = setIntegerParam(hTimeStampProducer, dvalue);
break;
status = setIntegerParam(hTimeStampProducer, dvalue);
break;
case DCAM_IDPROP_FRAMESTAMP_PRODUCER:
m_err = dcamprop_getvalue(m_hdcam, DCAM_IDPROP_FRAMESTAMP_PRODUCER, &dvalue);
status = setIntegerParam(hFrameStampProducer, dvalue);
break;
default:
char text[256];
@@ -813,13 +881,7 @@ asynStatus Hama::writeInt32(asynUser *pasynUser, epicsInt32 value){
printError(m_hdcam, m_err, "dcamprop_setgetvalue()", "IDPROP:0x%08x, VALUE:%f\n", index, dvalue);
}
}
else if (index == hColorType) {
printf("[DEBUG]::function ColorType %d\n", value);
m_err = dcamprop_setgetvalue(m_hdcam, DCAM_IDPROP_COLORTYPE, &dvalue);
if(failed(m_err)) {
printError(m_hdcam, m_err, "dcamprop_setgetvalue()", "IDPROP:0x%08x, VALUE:%f\n", index, dvalue);
}
}
else if (index == hBitPerChannel) {
printf("[DEBUG]::function BitPerChannel %d\n", value);
m_err = dcamprop_setgetvalue(m_hdcam, DCAM_IDPROP_BITSPERCHANNEL, &dvalue);
@@ -891,8 +953,8 @@ asynStatus Hama::writeInt32(asynUser *pasynUser, epicsInt32 value){
}
}
else if (index == hDefectCorrectMode) {
printf("[DEBUG]::function DefectCorrerMode %d\n", value);
m_err = dcamprop_setgetvalue(m_hdcam, DCAM_IDPROP_DEFECTCORRECT_MODE, &dvalue);
printf("[DEBUG]::function DefectCorrerMode %f\n", dvalue);
if(failed(m_err)) {
printError(m_hdcam, m_err, "dcamprop_setgetvalue()", "IDPROP:0x%08x, VALUE:%f\n", index, dvalue);
}
@@ -1176,6 +1238,8 @@ asynStatus Hama::writeInt32(asynUser *pasynUser, epicsInt32 value){
}
else{
if(index < FIRST_HAMA_PARAM){
status = ADDriver::writeInt32(pasynUser, value);
printf("Call function ADDriver::writeInt32\n");
printf("[DEBUG]::function writeInt32 did not find a parameter, call ADDriver::writeInit32 %s\n", paramName);
printf("[DEBUG]::function writeInt32 FIRST = %d / LAST = %d, %d)\n",
FIRST_HAMA_PARAM, LAST_HAMA_PARAM, LAST_HAMA_PARAM-FIRST_HAMA_PARAM);
@@ -1365,6 +1429,8 @@ asynStatus Hama::writeFloat64(asynUser *pasynUser, epicsFloat64 value){
}
}
else{
status = ADDriver::writeFloat64(pasynUser, value);
printf("Call function ADDriver::writeFloat64\n");
printf("[DEBUG]::function writeFloat64 did not find a parameter\n");
}