fix bug in parameter library, fix some small bugs
This commit is contained in:
@@ -1292,6 +1292,8 @@ record(mbbo, "$(P)$(R)BitsPerChannel-S") {
|
||||
field(ZRST, "12 bits")
|
||||
field(ONVL, "16")
|
||||
field(ONST, "16 bits")
|
||||
field(DRVL, "12")
|
||||
field(DRVH, "16")
|
||||
field(VAL, "16")
|
||||
field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))H_BIT_PER_CHANNEL")
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
#include <unistd.h>
|
||||
|
||||
|
||||
#define NUM_HAMA_PARAMS ((int)(&LAST_HAMA_PARAM - &FIRST_HAMA_PARAM + 1))
|
||||
//#define NUM_HAMA_PARAMS ((int)(&LAST_HAMA_PARAM - &FIRST_HAMA_PARAM + 1))
|
||||
|
||||
static const char *driverName="drvHama";
|
||||
|
||||
@@ -37,7 +37,7 @@ static void c_temperaturetask(void *arg) {
|
||||
//============================================================================
|
||||
Hama::Hama(const char* portName, int cameraId, int maxBuffers, size_t maxMemory,
|
||||
int priority, int stackSize, int maxFrames)
|
||||
: ADDriver(portName, 1, NUM_HAMA_PARAMS, maxBuffers, maxMemory,
|
||||
: ADDriver(portName, 1, 0, maxBuffers, maxMemory,
|
||||
asynEnumMask, asynEnumMask,
|
||||
ASYN_CANBLOCK, /* ASYN_CANBLOCK=1 ASYN_MULTIDEVICE=0 */
|
||||
1, /* autoConnect=1 */
|
||||
@@ -62,7 +62,8 @@ Hama::Hama(const char* portName, int cameraId, int maxBuffers, size_t maxMemory,
|
||||
|
||||
//General
|
||||
|
||||
createParam( HamaName, asynParamOctet, &hHamaName);
|
||||
createParam( hFrameRateString, asynParamOctet, &hFrameRate);
|
||||
createParam( hHamaNameString, asynParamOctet, &hHamaName);
|
||||
createParam( hVendorString, asynParamOctet, &hVendor);
|
||||
createParam( hModelString, asynParamOctet, &hModel);
|
||||
createParam( hCameraIDString, asynParamOctet, &hCameraID);
|
||||
@@ -192,6 +193,9 @@ Hama::Hama(const char* portName, int cameraId, int maxBuffers, size_t maxMemory,
|
||||
initCamera();
|
||||
|
||||
|
||||
printf("[DEBUG]:: FIRST_HAMA_PARAM = %d \n", FIRST_HAMA_PARAM);
|
||||
//printf("[-DEBUG]:: FIRST_HAMA_PARAM = %d / LAST_HAMA_PARAM = %d, %d)\n",
|
||||
//FIRST_HAMA_PARAM, LAST_HAMA_PARAM, NUM_HAMA_PARAMS);
|
||||
|
||||
// printf("\n\n============================ Info Camera =========================\n");
|
||||
//dcamcon_show_dcamdev_info( m_hdcam );
|
||||
@@ -237,24 +241,12 @@ int Hama::initCamera(){
|
||||
err |= getParameterStr(DCAM_IDSTR_MODULEVERSION);
|
||||
err |= getParameterStr(DCAM_IDSTR_DCAMAPIVERSION);
|
||||
|
||||
// SENSOR MODE AND SPEED ------------------------
|
||||
err |= getParameter(DCAM_IDPROP_SENSORMODE);
|
||||
err |= getParameter(DCAM_IDPROP_READOUTSPEED);
|
||||
err |= getParameter(DCAM_IDPROP_READOUT_DIRECTION);
|
||||
|
||||
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);
|
||||
err |= getParameter( DCAM_IDPROP_IMAGE_HEIGHT);
|
||||
err |= getParameter( DCAM_IDPROP_BINNING);
|
||||
err |= getParameter( DCAM_IDPROP_IMAGE_FRAMEBYTES);
|
||||
err |= getParameter( DCAM_IDPROP_SUBARRAYHPOS);
|
||||
err |= getParameter( DCAM_IDPROP_SUBARRAYVPOS);
|
||||
err |= getParameter( DCAM_IDPROP_SUBARRAYHSIZE);
|
||||
err |= getParameter( DCAM_IDPROP_SUBARRAYVSIZE);
|
||||
|
||||
// TRIGGER --------------------------------------
|
||||
err |= getParameter(DCAM_IDPROP_TRIGGERSOURCE);
|
||||
err |= getParameter(DCAM_IDPROP_TRIGGER_MODE);
|
||||
err |= getParameter(DCAM_IDPROP_TRIGGERACTIVE);
|
||||
@@ -265,6 +257,35 @@ int Hama::initCamera(){
|
||||
err |= getParameter(DCAM_IDPROP_TRIGGERDELAY);
|
||||
err |= getParameter(DCAM_IDPROP_INTERNALTRIGGER_HANDLING);
|
||||
|
||||
// BINNING AND ROI ------------------------------
|
||||
err |= getParameter( DCAM_IDPROP_BINNING);
|
||||
err |= getParameter( DCAM_IDPROP_SUBARRAYHPOS);
|
||||
err |= getParameter( DCAM_IDPROP_SUBARRAYVPOS);
|
||||
err |= getParameter( DCAM_IDPROP_SUBARRAYHSIZE);
|
||||
err |= getParameter( DCAM_IDPROP_SUBARRAYVSIZE);
|
||||
err |= getParameter( DCAM_IDPROP_IMAGE_FRAMEBYTES);
|
||||
err |= getParameter( DCAM_IDPROP_IMAGE_PIXELTYPE);
|
||||
err |= getParameter( DCAM_IDPROP_IMAGE_WIDTH);
|
||||
err |= getParameter( DCAM_IDPROP_IMAGE_ROWBYTES);
|
||||
err |= getParameter( DCAM_IDPROP_IMAGE_HEIGHT);
|
||||
//SUBARRAYMODE
|
||||
|
||||
// FEATURE -----------------------------------------------
|
||||
//EXPOSURETIME
|
||||
|
||||
// ALU ---------------------------------------------------
|
||||
err |= getParameter( DCAM_IDPROP_DEFECTCORRECT_MODE);
|
||||
//HOTPIXEL
|
||||
//INTENSITYLUT_MODE
|
||||
//INTENSITYLUT_PAGE
|
||||
//EXTRAXTIONMODE
|
||||
|
||||
// OUTPUT TRIGGER ----------------------------------------
|
||||
|
||||
// MASTER PULSE ------------------------------------------
|
||||
// SYNCHRONOUS TIMING ------------------------------------
|
||||
// SYSTEM INFORMATION ------------------------------------
|
||||
err |= getParameter(DCAM_IDPROP_BITSPERCHANNEL);
|
||||
err |= getParameter(DCAM_IDPROP_IMAGE_TOPOFFSETBYTES);
|
||||
err |= getParameter(DCAM_IDPROP_BUFFER_ROWBYTES);
|
||||
err |= getParameter(DCAM_IDPROP_BUFFER_FRAMEBYTES);
|
||||
@@ -280,6 +301,8 @@ int Hama::initCamera(){
|
||||
err |= getParameter(DCAM_IDPROP_TIMESTAMP_PRODUCER);
|
||||
err |= getParameter(DCAM_IDPROP_FRAMESTAMP_PRODUCER);
|
||||
|
||||
err |= getParameter(DETECTOR_PIXEL_NUM_HORZ);
|
||||
err |= getParameter(DETECTOR_PIXEL_NUM_VERT);
|
||||
|
||||
|
||||
if(err){
|
||||
@@ -359,10 +382,6 @@ asynStatus Hama::getParameter(int propertyID){
|
||||
asynStatus status = asynSuccess;
|
||||
double dvalue = 0;
|
||||
|
||||
// status |= getIntegerParam(ADMinX, &minH);
|
||||
// m_err = dcamprop_setgetvalue(m_hdcam, DCAM_IDPROP_SUBARRAYHPOS, &dminH);
|
||||
|
||||
|
||||
switch (propertyID){
|
||||
case DETECTOR_PIXEL_NUM_HORZ:
|
||||
m_err = dcamprop_getvalue(m_hdcam, DETECTOR_PIXEL_NUM_HORZ, &dvalue);
|
||||
@@ -436,6 +455,12 @@ asynStatus Hama::getParameter(int propertyID){
|
||||
status = setIntegerParam(ADMinY, dvalue);
|
||||
break;
|
||||
|
||||
// ALU --------------------------------------
|
||||
case DCAM_IDPROP_DEFECTCORRECT_MODE:
|
||||
m_err = dcamprop_getvalue(m_hdcam, DCAM_IDPROP_DEFECTCORRECT_MODE, &dvalue);
|
||||
status = setIntegerParam(hDefectCorrectMode, dvalue);
|
||||
break;
|
||||
|
||||
case DCAM_IDPROP_SENSORMODE:
|
||||
m_err = dcamprop_getvalue(m_hdcam, DCAM_IDPROP_SENSORMODE, &dvalue);
|
||||
if(failed(m_err)) {
|
||||
@@ -505,6 +530,11 @@ asynStatus Hama::getParameter(int propertyID){
|
||||
status = setIntegerParam(hInternalTriggerHandling, dvalue);
|
||||
break;
|
||||
|
||||
case DCAM_IDPROP_BITSPERCHANNEL:
|
||||
m_err = dcamprop_getvalue(m_hdcam, DCAM_IDPROP_BITSPERCHANNEL, &dvalue);
|
||||
status = setIntegerParam(hBitPerChannel, dvalue);
|
||||
break;
|
||||
|
||||
case DCAM_IDPROP_COLORTYPE:
|
||||
m_err = dcamprop_getvalue(m_hdcam, DCAM_IDPROP_COLORTYPE, &dvalue);
|
||||
status = setIntegerParam(hColorType, dvalue);
|
||||
@@ -1240,15 +1270,15 @@ asynStatus Hama::writeInt32(asynUser *pasynUser, epicsInt32 value){
|
||||
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);
|
||||
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);
|
||||
ADDriver::writeInt32(pasynUser, value);
|
||||
}
|
||||
else{
|
||||
printf("[DEBUG]::function writeInt32 did not find a parameter index = %d, %s\n", index, paramName);
|
||||
printf("[DEBUG]::function writeInt32 FIRST = %d / LAST = %d, %d)\n",
|
||||
FIRST_HAMA_PARAM, LAST_HAMA_PARAM, LAST_HAMA_PARAM-FIRST_HAMA_PARAM);
|
||||
printf("[-DEBUG]::function writeInt32 did not find a parameter index = %d, %s\n", index, paramName);
|
||||
//printf("[-DEBUG]::function writeInt32 FIRST = %d / LAST = %d, %d)\n",
|
||||
//FIRST_HAMA_PARAM, LAST_HAMA_PARAM, LAST_HAMA_PARAM-FIRST_HAMA_PARAM);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
#define MAX_FEATURE_NAME_LEN 64
|
||||
|
||||
#define hFrameRateString "H_FRAME_RATE" /* asynOctet ro */
|
||||
#define HamaName "Name" /* asynOctet ro */
|
||||
#define hHamaNameString "H_HAMA_NAME" /* asynOctet ro */
|
||||
#define hVendorString "H_VENDOR" /* asynOctet ro */
|
||||
#define hModelString "H_MODEL" /* asynOctet ro */
|
||||
#define hCameraIDString "H_CAMERAID" /* asynOctet ro */
|
||||
@@ -134,7 +134,7 @@
|
||||
#define DETECTOR_PIXEL_NUM_HORZ 0x00420830
|
||||
#define DETECTOR_PIXEL_NUM_VERT 0x00420840
|
||||
|
||||
class Hama : public ADDriver {
|
||||
class epicsShareClass Hama : public ADDriver {
|
||||
|
||||
public:
|
||||
Hama(const char*, int, int, size_t, int, int, int);
|
||||
@@ -166,7 +166,7 @@ protected:
|
||||
int hReadoutSpeed;
|
||||
int hReadoutDirection;
|
||||
int hColorType;
|
||||
int hBitPerChannel;
|
||||
int hBitPerChannel; //-----------------
|
||||
int hTriggerSource;
|
||||
int hTriggerMode;
|
||||
int hTriggerActive;
|
||||
@@ -253,11 +253,10 @@ protected:
|
||||
int hTimeStampProducer;
|
||||
int hFrameStampProducer;
|
||||
int hTimeStamp;
|
||||
#define LAST_HAMA_PARAM hTimeStamp
|
||||
//#define LAST_HAMA_PARAM hTimeStamp
|
||||
|
||||
|
||||
private:
|
||||
|
||||
|
||||
HDCAM m_hdcam;
|
||||
DCAMAPI_INIT m_apiInit;
|
||||
|
||||
Reference in New Issue
Block a user