From 1ec9ec9f50a7727357ff7bf4df59e86fdc11fb13 Mon Sep 17 00:00:00 2001 From: Douglas Araujo Date: Thu, 12 Sep 2024 11:59:37 +0200 Subject: [PATCH] Add createAsynParams method to tidy up the constructor --- ADOrcaApp/src/orca.cpp | 70 ++++++++++++++++++++++-------------------- ADOrcaApp/src/orca.h | 1 + 2 files changed, 38 insertions(+), 33 deletions(-) diff --git a/ADOrcaApp/src/orca.cpp b/ADOrcaApp/src/orca.cpp index d6c7781..0e892e4 100644 --- a/ADOrcaApp/src/orca.cpp +++ b/ADOrcaApp/src/orca.cpp @@ -46,6 +46,40 @@ Orca::Orca(const char* portName, int cameraId, int maxBuffers, size_t maxMemory, return; } + createAsynParams(); + + setIntegerParam(NDArrayCallbacks, 1); + setStringParam(ADStatusMessage, "Idle"); + callParamCallbacks(); + + connectCamera(); + printf( + "\n\n============================ Init Camera " + "=========================\n"); + initCamera(); + + printf( + "\n\n============================ Start Threads " + "=======================\n"); + /* launch image read task */ + epicsThreadCreate("OrcaImageTask", epicsThreadPriorityMedium, + epicsThreadGetStackSize(epicsThreadStackMedium), + c_imagetask, this); + + /* launch temp read task */ + epicsThreadCreate("OrcaTemperatureTask", epicsThreadPriorityMedium, + epicsThreadGetStackSize(epicsThreadStackMedium), + c_temperaturetask, this); + + /* shutdown on exit */ + // epicsAtExit(c_shutdown, this); + + printf("\n\n=== END Constructor ADOrca ===\n"); + printf( + "===================================================================\n"); +} + +void Orca::createAsynParams() { // General createParam(hFrameRateString, asynParamFloat64, &hFrameRate); createParam(hOrcaNameString, asynParamOctet, &hOrcaName); @@ -101,9 +135,9 @@ Orca::Orca(const char* portName, int cameraId, int maxBuffers, size_t maxMemory, createParam(hNumberOfOutputTriggerConnectorString, asynParamInt32, &hNumberOfOutputTriggerConnector); createParam(hOutputTriggerSource0String, asynParamInt32, - &hOutputTriggerSource0), - createParam(hOutputTriggerSource1String, asynParamInt32, - &hOutputTriggerSource1); + &hOutputTriggerSource0); + createParam(hOutputTriggerSource1String, asynParamInt32, + &hOutputTriggerSource1); createParam(hOutputTriggerSource2String, asynParamInt32, &hOutputTriggerSource2); createParam(hOutputTriggerPolarity0String, asynParamInt32, @@ -213,36 +247,6 @@ Orca::Orca(const char* portName, int cameraId, int maxBuffers, size_t maxMemory, &evrCountsSinceAcqStart); createParam(evrTriggerDroppedString, asynParamInt32, &evrTriggerDropped); createParam(hAcqControlString, asynParamInt32, &hAcqControl); - - setIntegerParam(NDArrayCallbacks, 1); - setStringParam(ADStatusMessage, "Idle"); - callParamCallbacks(); - - connectCamera(); - printf( - "\n\n============================ Init Camera " - "=========================\n"); - initCamera(); - - printf( - "\n\n============================ Start Threads " - "=======================\n"); - /* launch image read task */ - epicsThreadCreate("OrcaImageTask", epicsThreadPriorityMedium, - epicsThreadGetStackSize(epicsThreadStackMedium), - c_imagetask, this); - - /* launch temp read task */ - epicsThreadCreate("OrcaTemperatureTask", epicsThreadPriorityMedium, - epicsThreadGetStackSize(epicsThreadStackMedium), - c_temperaturetask, this); - - /* shutdown on exit */ - // epicsAtExit(c_shutdown, this); - - printf("\n\n=== END Constructor ADOrca ===\n"); - printf( - "===================================================================\n"); } int Orca::initCamera() { diff --git a/ADOrcaApp/src/orca.h b/ADOrcaApp/src/orca.h index 8802136..6aa1d1d 100644 --- a/ADOrcaApp/src/orca.h +++ b/ADOrcaApp/src/orca.h @@ -199,6 +199,7 @@ class epicsShareClass Orca : public ADDriver { virtual asynStatus writeFloat64(asynUser* pasynUser, epicsFloat64 value); virtual void report(FILE* fp, int details); + void createAsynParams(); int readParameter(int propertyID, bool processPV = true); int readParameterStr(int paramIndex);