From 7f79cdeb03e98554e70e0309ec56020861b711d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20Sandstr=C3=B6m?= Date: Tue, 5 Mar 2024 08:35:27 +0100 Subject: [PATCH] WIP --- GNUmakefile | 7 +++---- src/ecmcDAQDataArray.cpp | 4 ++++ src/ecmcDAQDataArray.h | 23 ++++++++++++----------- src/ecmcDAQWrap.cpp | 18 ++++++++++-------- 4 files changed, 29 insertions(+), 23 deletions(-) diff --git a/GNUmakefile b/GNUmakefile index 7b297b2..bdc50db 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -31,7 +31,6 @@ DBDS += $(SRC_DIR)/ecmcDAQPlg.dbd TEMPLATES += $(wildcard $(DB_DIR)/*.template) SCRIPTS += ./startup.cmd SCRIPTS += $(SCRIPTS_DIR)/ecmcAddDaqArray.cmd -SCRIPTS += $(SCRIPTS_DIR)ecmcAddDaqChannel.cmd -SCRIPTS += $(SCRIPTS_DIR)ecmcAddDaqDataItem.cmd -SCRIPTS += $(SCRIPTS_DIR)ecmcLoadDaqArrayRecords.cmd - +SCRIPTS += $(SCRIPTS_DIR)/ecmcAddDaqChannel.cmd +SCRIPTS += $(SCRIPTS_DIR)/ecmcAddDaqDataItem.cmd +SCRIPTS += $(SCRIPTS_DIR)/ecmcLoadDaqArrayRecords.cmd diff --git a/src/ecmcDAQDataArray.cpp b/src/ecmcDAQDataArray.cpp index 99deeef..fe0cde2 100644 --- a/src/ecmcDAQDataArray.cpp +++ b/src/ecmcDAQDataArray.cpp @@ -222,3 +222,7 @@ size_t ecmcDAQDataArray::getArraySize() { return totalElementCount_; } +std::string ecmcDAQDataArray::getName() { + return name_; +} + diff --git a/src/ecmcDAQDataArray.h b/src/ecmcDAQDataArray.h index 362131a..7ac0cea 100644 --- a/src/ecmcDAQDataArray.h +++ b/src/ecmcDAQDataArray.h @@ -24,19 +24,20 @@ class ecmcDAQDataArray : public asynPortDriver { public: ecmcDAQDataArray(const char* name, const char* portName); ~ecmcDAQDataArray(); - void connectToDataSources(); - void execute(); - void addChannel(int type); - // Always add to last added channel - void addDataItemToChannel(const char* name, int format); - void setEnable(int enable); - size_t getArraySize(); - int validate(); + void connectToDataSources(); + void execute(); + void addChannel(int type); + void addDataItemToChannel(const char* name, int format); // Always add to last added channel + void setEnable(int enable); + size_t getArraySize(); + int validate(); + std::string getName(); private: - void buildArrayHeader(); - void initAsyn(); - void updateAsyn(); + void buildArrayHeader(); + void initAsyn(); + void updateAsyn(); + std::string name_; double *buffer_; std::vector dataChannels_; diff --git a/src/ecmcDAQWrap.cpp b/src/ecmcDAQWrap.cpp index 41c3019..5b8cad1 100644 --- a/src/ecmcDAQWrap.cpp +++ b/src/ecmcDAQWrap.cpp @@ -22,11 +22,12 @@ #include "ecmcDAQDefs.h" #include #include +#include "envDefs.h" #define ECMC_PLUGIN_DAQ_ERROR_CODE 1 static std::vector arrays; -static int arrayCounter = 0; +static int arrayCounter = 0; ecmcDAQDataArray* getDAQArrayFromName(const char *name) { // Find group by name @@ -42,14 +43,14 @@ ecmcDAQDataArray* getDAQArrayFromName(const char *name) { int createDAQArray(const char* name, const char* portName ) { // Check if already exists - ecmcDAQDataArray array = getDAQArrayFromName(name); + ecmcDAQDataArray *array = getDAQArrayFromName(name); if(array){ printf("Error: DAQ-Array %s already defined.\n",name); return ECMC_PLUGIN_DAQ_ERROR_CODE; } - // create new ecmcFFT object - ecmcDAQDataArray* array = NULL; + // create new ecmcDAQDataArray object + array = NULL; try { array = new ecmcDAQDataArray(name, portName); @@ -69,7 +70,7 @@ int createDAQArray(const char* name, const char* portName ) { } int getDAQDataArrayNelm(const char *name){ - ecmcDAQDataArray array = getDAQArrayFromName(name); + ecmcDAQDataArray *array = getDAQArrayFromName(name); if(!array){ printf("Error: DAQ-Array %s not found.\n",name); return -1; @@ -312,7 +313,8 @@ void ecmcDAQReadNelmHelp() { printf(" : Variable for return value.\n"); printf("\n"); } -nelmBuffer[100]; + +static char nelmBuffer[100]; int ecmcDAQReadNelm(const char* name, const char* result_var) { if(!name) { @@ -333,7 +335,7 @@ int ecmcDAQReadNelm(const char* name, const char* result_var) { int nelm = 0; try { nelm = getDAQDataArrayNelm(name); - sprintf(nelmBuffer, "%zu", nelm); + sprintf(nelmBuffer, "%d", nelm); epicsEnvSet(result_var, nelmBuffer); } catch(std::exception& e) { @@ -362,7 +364,7 @@ static void initCallFunc_3(const iocshArgBuf *args) { * EPICS iocsh shell command: ecmcDAQConnectToDataSource */ -int ecmcDAQConnectToDataSource() { +int ecmcDAQConnectToDataSource(int dummy) { try { linkDataToDAQs();