6 Commits
1.5.2 ... 2.0.2

3 changed files with 24 additions and 54 deletions

View File

@@ -2,11 +2,13 @@ include /ioc/tools/driver.makefile
MODULE = ecmc_plugin_daq MODULE = ecmc_plugin_daq
BUILDCLASSES = Linux # "Transfer" module name to plugin
ARCH_FILTER = deb10% USR_CFLAGS +=-DECMC_PLUGIN_MODULE_NAME=${MODULE}
# Run 7.0.6 for now BUILDCLASSES = Linux
EXCLUDE_VERSIONS+=3 7.0.5 7.0.6 ARCH_FILTER = deb10% deb12%
EXCLUDE_VERSIONS+=3 7.0.5 7.0.6 7.0.7 7.0.9
IGNORE_MODULES += asynMotor IGNORE_MODULES += asynMotor
IGNORE_MODULES += motorBase IGNORE_MODULES += motorBase
@@ -16,7 +18,7 @@ OPT_CXXFLAGS_YES = -O3
# dependencies # dependencies
ECmasterECMC_VERSION = v1.1.0 ECmasterECMC_VERSION = v1.1.0
ecmc_VERSION = 9 ecmc_VERSION = 10.0
BASE_DIR = . BASE_DIR = .
SRC_DIR = $(BASE_DIR)/src SRC_DIR = $(BASE_DIR)/src

View File

@@ -32,11 +32,11 @@ static char* lastConfStr = NULL;
static int alreadyLoaded = 0; static int alreadyLoaded = 0;
/** Optional. /** 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. * Return value other than 0 will be considered error.
* configStr can be used for configuration parameters. * configStr can be used for configuration parameters.
**/ **/
int daqConstruct(char *configStr) static int daqConstruct(char *configStr)
{ {
if(alreadyLoaded) { if(alreadyLoaded) {
printf("Error: Plugin ecmc_plugin_daq already loaded and can only be loaded once."); printf("Error: Plugin ecmc_plugin_daq already loaded and can only be loaded once.");
@@ -51,7 +51,7 @@ int daqConstruct(char *configStr)
/** Optional function. /** Optional function.
* Will be called once at unload. * Will be called once at unload.
**/ **/
void daqDestruct(void) static void daqDestruct(void)
{ {
// Segfaults here during destruction?! need to check.. // Segfaults here during destruction?! need to check..
//deleteAllDAQs(); //deleteAllDAQs();
@@ -61,19 +61,19 @@ void daqDestruct(void)
} }
/** Optional function. /** Optional function.
* Will be called each realtime cycle if definded * Will be called each realtime cycle if defined
* ecmcError: Error code of ecmc. Makes it posible for * ecmcError: Error code of ecmc. Makes it possible for
* this plugin to react on ecmc errors * this plugin to react on ecmc errors
* Return value other than 0 will be considered to be an error code in ecmc. * 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; lastEcmcError = ecmcError;
return executeDAQs(); return executeDAQs();
} }
int daqEnterRT(){ static int daqEnterRT(){
return validateDAQs(); //linkDataToDAQs(); return validateDAQs(); //linkDataToDAQs();
} }
@@ -81,31 +81,16 @@ int daqEnterRT(){
* Will be called once just before leaving realtime mode * Will be called once just before leaving realtime mode
* Return value other than 0 will be considered error. * Return value other than 0 will be considered error.
**/ **/
int daqExitRT(void){ static int daqExitRT(void){
return 0; 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 // Register data for plugin so ecmc know what to use
struct ecmcPluginData pluginDataDef = { static struct ecmcPluginData pluginDataDef = {
// Allways use ECMC_PLUG_VERSION_MAGIC // Allways use ECMC_PLUG_VERSION_MAGIC
.ifVersion = ECMC_PLUG_VERSION_MAGIC, .ifVersion = ECMC_PLUG_VERSION_MAGIC,
// Name // Name
.name = "ecmcPlugin_DAQ", .name = "ecmc_plugin_daq",
// Description // Description
.desc = "DAQ plugin for use with ecmc.", .desc = "DAQ plugin for use with ecmc.",
// Option description // Option description
@@ -124,28 +109,6 @@ struct ecmcPluginData pluginDataDef = {
.realtimeExitFnc = daqExitRT, .realtimeExitFnc = daqExitRT,
// PLC funcs // PLC funcs
.funcs[0] = {0}, .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.. .consts[0] = {0}, // last element set all to zero..
}; };

View File

@@ -10,10 +10,15 @@
#-############################################################################### #-###############################################################################
#- #-
#- Arguments #- Arguments
#- PLUGIN_ID : Id of plugin to load (mandatory) #- PLUGIN_ID : Id of plugin to load (optional)
#- #-
################################################################################# #################################################################################
#- Load plugin: #- Load plugin:
epicsEnvSet(ECMC_PLUGIN_FILNAME,"$(ecmc_plugin_daq_DIR)lib/${EPICS_HOST_ARCH=linux-x86_64}/libecmc_plugin_daq.so") epicsEnvSet(ECMC_PLUGIN_FILNAME,"$(ecmc_plugin_daq_DIR)lib/${EPICS_HOST_ARCH=linux-x86_64}/libecmc_plugin_daq.so")
${SCRIPTEXEC} ${ecmccfg_DIR}loadPlugin.cmd, "PLUGIN_ID=${PLUGIN_ID}, FILE='${ECMC_PLUGIN_FILNAME}' , CONFIG='NOT USED',REPORT=1" ecmcIf("${PLUGIN_ID=-1}=-1")
${IF_TRUE}${SCRIPTEXEC} ${ecmccfg_DIR}loadPlugin.cmd, "FILE='${ECMC_PLUGIN_FILNAME}' , CONFIG='NOT USED',REPORT=1"
#else
${IF_FALSE}${SCRIPTEXEC} ${ecmccfg_DIR}loadPlugin.cmd, "PLUGIN_ID=${PLUGIN_ID}, FILE='${ECMC_PLUGIN_FILNAME}' , CONFIG='NOT USED',REPORT=1"
ecmcEndIf()