From 66f0001a39c4a8aef9ae217e2d68d4996eaadd3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20Sandstr=C3=B6m?= Date: Fri, 13 Dec 2024 16:10:24 +0100 Subject: [PATCH] New plugin concept and cleanup --- GNUmakefile | 5 +++- src/ecmcPluginDAQ.c | 57 ++++++++------------------------------------- 2 files changed, 14 insertions(+), 48 deletions(-) diff --git a/GNUmakefile b/GNUmakefile index 77a3aea..3280792 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -2,6 +2,9 @@ include /ioc/tools/driver.makefile MODULE = ecmc_plugin_daq +# "Transfer" module name to plugin +USR_CFLAGS +=-DECMC_PLUGIN_MODULE_NAME=${MODULE} + BUILDCLASSES = Linux ARCH_FILTER = deb10% @@ -16,7 +19,7 @@ OPT_CXXFLAGS_YES = -O3 # dependencies ECmasterECMC_VERSION = v1.1.0 -ecmc_VERSION = 9.5.0 +ecmc_VERSION = sandst_a BASE_DIR = . SRC_DIR = $(BASE_DIR)/src diff --git a/src/ecmcPluginDAQ.c b/src/ecmcPluginDAQ.c index 1dd519d..61487ec 100644 --- a/src/ecmcPluginDAQ.c +++ b/src/ecmcPluginDAQ.c @@ -32,11 +32,11 @@ static char* lastConfStr = NULL; static int alreadyLoaded = 0; /** Optional. - * Will be called once after successfull load into ecmc. + * Will be called once after successful load into ecmc. * Return value other than 0 will be considered error. * configStr can be used for configuration parameters. **/ -int daqConstruct(char *configStr) +static int daqConstruct(char *configStr) { if(alreadyLoaded) { printf("Error: Plugin ecmc_plugin_daq already loaded and can only be loaded once."); @@ -51,7 +51,7 @@ int daqConstruct(char *configStr) /** Optional function. * Will be called once at unload. **/ -void daqDestruct(void) +static void daqDestruct(void) { // Segfaults here during destruction?! need to check.. //deleteAllDAQs(); @@ -61,19 +61,19 @@ void daqDestruct(void) } /** Optional function. - * Will be called each realtime cycle if definded - * ecmcError: Error code of ecmc. Makes it posible for + * Will be called each realtime cycle if defined + * ecmcError: Error code of ecmc. Makes it possible for * this plugin to react on ecmc errors * Return value other than 0 will be considered to be an error code in ecmc. **/ -int daqRealtime(int ecmcError) +static int daqRealtime(int ecmcError) { lastEcmcError = ecmcError; return executeDAQs(); } -int daqEnterRT(){ +static int daqEnterRT(){ return validateDAQs(); //linkDataToDAQs(); } @@ -81,31 +81,16 @@ int daqEnterRT(){ * Will be called once just before leaving realtime mode * Return value other than 0 will be considered error. **/ -int daqExitRT(void){ +static int daqExitRT(void){ return 0; } -// // Plc function for clear of buffers -// double daq_clear(double index) { -// return (double)clearDAQ((int)index); -// } - -// Plc function for enable -//double daq_enable(double index, double enable) { -// return 0; //(double)enableDAQ((int)index, (int)enable); -//} - -// // Plc function for trigg new measurement (will clear buffers) -// double daq_trigg(double index) { -// return (double)triggDAQ((int)index); -// } - // Register data for plugin so ecmc know what to use -struct ecmcPluginData pluginDataDef = { +static struct ecmcPluginData pluginDataDef = { // Allways use ECMC_PLUG_VERSION_MAGIC .ifVersion = ECMC_PLUG_VERSION_MAGIC, // Name - .name = "ecmcPlugin_DAQ", + .name = "ecmc_plugin_daq", // Description .desc = "DAQ plugin for use with ecmc.", // Option description @@ -124,28 +109,6 @@ struct ecmcPluginData pluginDataDef = { .realtimeExitFnc = daqExitRT, // PLC funcs .funcs[0] = {0}, -// { /*----fft_clear----*/ -// // Function name (this is the name you use in ecmc plc-code) -// .funcName = "daq_enable", -// // Function description -// .funcDesc = "daq_enable(index,enable) : Enable/disaable daq[index].", -// /** -// * 12 different prototypes allowed (only doubles since reg in plc). -// * Only funcArg${argCount} func shall be assigned the rest set to NULL. -// **/ -// .funcArg0 = NULL, -// .funcArg1 = NULL, -// .funcArg2 = daq_enable, -// .funcArg3 = NULL, -// .funcArg4 = NULL, -// .funcArg5 = NULL, -// .funcArg6 = NULL, -// .funcArg7 = NULL, -// .funcArg8 = NULL, -// .funcArg9 = NULL, -// .funcArg10 = NULL, -// .funcGenericObj = NULL, -// }, .consts[0] = {0}, // last element set all to zero.. };