diff --git a/ecmcPlugin_FFT-loc/ecmcPlugin_FFTApp/src/ecmcFFT.cpp b/ecmcPlugin_FFT-loc/ecmcPlugin_FFTApp/src/ecmcFFT.cpp index f9fac64..303ff50 100644 --- a/ecmcPlugin_FFT-loc/ecmcPlugin_FFTApp/src/ecmcFFT.cpp +++ b/ecmcPlugin_FFT-loc/ecmcPlugin_FFTApp/src/ecmcFFT.cpp @@ -124,6 +124,7 @@ ecmcFFT::ecmcFFT(int fftIndex, // index of this object (if several is cr cfgDbgMode_ = 0; cfgNfft_ = ECMC_PLUGIN_DEFAULT_NFFT; // samples in fft (must be n^2) cfgDcRemove_ = 0; + cfgLinRemove_ = 0; cfgApplyScale_ = 1; // Scale as default to get correct amplitude in fft cfgEnable_ = 0; // start disabled (enable over asyn) cfgMode_ = TRIGG; @@ -232,12 +233,18 @@ void ecmcFFT::parseConfigStr(char *configStr) { cfgApplyScale_ = atoi(pThisOption); } - // ECMC_PLUGIN_DC_REMOVE_OPTION_CMD (1/0) - else if (!strncmp(pThisOption, ECMC_PLUGIN_DC_REMOVE_OPTION_CMD, strlen(ECMC_PLUGIN_DC_REMOVE_OPTION_CMD))) { - pThisOption += strlen(ECMC_PLUGIN_DC_REMOVE_OPTION_CMD); + // ECMC_PLUGIN_RM_DC_OPTION_CMD (1/0) + else if (!strncmp(pThisOption, ECMC_PLUGIN_RM_DC_OPTION_CMD, strlen(ECMC_PLUGIN_RM_DC_OPTION_CMD))) { + pThisOption += strlen(ECMC_PLUGIN_RM_DC_OPTION_CMD); cfgDcRemove_ = atoi(pThisOption); } + // ECMC_PLUGIN_RM_LIN_OPTION_CMD (1/0) + else if (!strncmp(pThisOption, ECMC_PLUGIN_RM_LIN_OPTION_CMD, strlen(ECMC_PLUGIN_RM_LIN_OPTION_CMD))) { + pThisOption += strlen(ECMC_PLUGIN_RM_LIN_OPTION_CMD); + cfgLinRemove_ = atoi(pThisOption); + } + // ECMC_PLUGIN_ENABLE_OPTION_CMD (1/0) else if (!strncmp(pThisOption, ECMC_PLUGIN_ENABLE_OPTION_CMD, strlen(ECMC_PLUGIN_ENABLE_OPTION_CMD))) { pThisOption += strlen(ECMC_PLUGIN_ENABLE_OPTION_CMD); diff --git a/ecmcPlugin_FFT-loc/ecmcPlugin_FFTApp/src/ecmcFFT.h b/ecmcPlugin_FFT-loc/ecmcPlugin_FFTApp/src/ecmcFFT.h index 375f05e..9beb013 100644 --- a/ecmcPlugin_FFT-loc/ecmcPlugin_FFTApp/src/ecmcFFT.h +++ b/ecmcPlugin_FFT-loc/ecmcPlugin_FFTApp/src/ecmcFFT.h @@ -96,6 +96,7 @@ class ecmcFFT : public asynPortDriver { int cfgDbgMode_; // Config: allow dbg printouts int cfgApplyScale_; // Config: apply scale 1/nfft int cfgDcRemove_; // Config: remove dc (average) + int cfgLinRemove_; // Config: remove linear componet (by least square) size_t cfgNfft_; // Config: Data set size int cfgEnable_; // Config: Enable data acq./calc. FFT_MODE cfgMode_; // Config: Mode continous or triggered. diff --git a/ecmcPlugin_FFT-loc/ecmcPlugin_FFTApp/src/ecmcFFTDefs.h b/ecmcPlugin_FFT-loc/ecmcPlugin_FFTApp/src/ecmcFFTDefs.h index 4aecff6..6a5187e 100644 --- a/ecmcPlugin_FFT-loc/ecmcPlugin_FFTApp/src/ecmcFFTDefs.h +++ b/ecmcPlugin_FFT-loc/ecmcPlugin_FFTApp/src/ecmcFFTDefs.h @@ -19,9 +19,10 @@ #define ECMC_PLUGIN_SOURCE_OPTION_CMD "SOURCE=" #define ECMC_PLUGIN_NFFT_OPTION_CMD "NFFT=" #define ECMC_PLUGIN_APPLY_SCALE_OPTION_CMD "APPLY_SCALE=" -#define ECMC_PLUGIN_DC_REMOVE_OPTION_CMD "RM_DC=" +#define ECMC_PLUGIN_RM_DC_OPTION_CMD "RM_DC=" #define ECMC_PLUGIN_ENABLE_OPTION_CMD "ENABLE=" #define ECMC_PLUGIN_RATE_OPTION_CMD "RATE=" +#define ECMC_PLUGIN_RM_LIN_OPTION_CMD "RM_LIN=" // CONT, TRIGG #define ECMC_PLUGIN_MODE_OPTION_CMD "MODE=" diff --git a/ecmcPlugin_FFT-loc/ecmcPlugin_FFTApp/src/ecmcPluginFFT.c b/ecmcPlugin_FFT-loc/ecmcPlugin_FFTApp/src/ecmcPluginFFT.c index 24dcb4c..c5d2ce5 100644 --- a/ecmcPlugin_FFT-loc/ecmcPlugin_FFTApp/src/ecmcPluginFFT.c +++ b/ecmcPlugin_FFT-loc/ecmcPlugin_FFTApp/src/ecmcPluginFFT.c @@ -12,7 +12,7 @@ // Needed to get headers in ecmc right... #define ECMC_IS_PLUGIN -#define ECMC_EXAMPLE_PLUGIN_VERSION 1 +#define ECMC_EXAMPLE_PLUGIN_VERSION 2 #ifdef __cplusplus extern "C" { @@ -119,7 +119,8 @@ struct ecmcPluginData pluginDataDef = { " "ECMC_PLUGIN_SOURCE_OPTION_CMD" : Sets source variable for FFT (example: ec0.s1.AI_1).\n" " "ECMC_PLUGIN_NFFT_OPTION_CMD" : Data points to collect, default = 4096.\n" " "ECMC_PLUGIN_APPLY_SCALE_OPTION_CMD"<1/0> : Apply scale, default = disabled.\n" - " "ECMC_PLUGIN_DC_REMOVE_OPTION_CMD"<1/0> : Remove DC offset of input data (SOURCE), default = disabled.\n" + " "ECMC_PLUGIN_RM_DC_OPTION_CMD"<1/0> : Remove DC offset of input data (SOURCE), default = disabled.\n" + " "ECMC_PLUGIN_RM_LIN_OPTION_CMD"<1/0> : Remove linear component in data (SOURCE) by least square, default = disabled.\n" " "ECMC_PLUGIN_ENABLE_OPTION_CMD"<1/0> : Enable data acq. and calcs (can be controlled over asyn), default = disabled.\n" " "ECMC_PLUGIN_MODE_OPTION_CMD" : Continious or triggered mode, defaults to TRIGG\n" " "ECMC_PLUGIN_RATE_OPTION_CMD" : fft data sample rate in hz (must be lower than ecmc rate and (ecmc_rate/fft_rate)=integer), default = ecmc rate."