Compiles.

This commit is contained in:
Anders Sandström
2020-04-07 10:59:55 +02:00
parent 32b7b39f41
commit ad8c8778b6
5 changed files with 29 additions and 22 deletions

View File

@@ -241,6 +241,7 @@ void ecmcFFT::dataUpdatedCallback(uint8_t* data,
calcFFT(); // FFT cacluation ()
scaleFFT(); // Scale FFT
calcFFTAmp(); // Calculate amplitude from complex
triggOnce_ = 0; // Wait for nex trigger if in trigg mode
// Update asyn with both input and result
asynRawData_->refreshParamRT(1); // Forced update (do not consider record rate)
@@ -255,8 +256,11 @@ void ecmcFFT::dataUpdatedCallback(uint8_t* data,
ECMC_EC_F64,
objectId_);
}
// Buffer new data
clearBuffers();
// If mode continious then start over
if(cfgMode_ == CONT) {
clearBuffers();
}
}
return;
}

View File

@@ -26,11 +26,11 @@
#define ECMC_PLUGIN_MODE_CONT_OPTION "CONT"
#define ECMC_PLUGIN_MODE_TRIGG_OPTION "TRIGG"
enum FFT_MODE{
typedef enum FFT_MODE{
NO_MODE = 0,
CONT = 1,
TRIGG = 2,
};
} FFT_MODE;
/** Just one error code in "c" part of plugin
(error handled with exceptions i c++ part) */

View File

@@ -89,7 +89,7 @@ int clearFFT(int fftIndex) {
return 0;
}
int triggFFT(int fftIndex) {
int triggFFT(int fftIndex) {
try {
ffts.at(fftIndex)->triggFFT();
}
@@ -100,9 +100,9 @@ int triggFFT(int fftIndex) {
return 0;
}
int setModeFFT(int fftIndex, FFT_MODE mode) {
int modeFFT(int fftIndex, FFT_MODE mode) {
try {
ffts.at(fftIndex)->setMode(mode);
ffts.at(fftIndex)->setModeFFT(mode);
}
catch(std::exception& e) {
printf("Exception: %s. FFT index out of range.\n",e.what());

View File

@@ -17,13 +17,16 @@
extern "C" {
# endif // ifdef __cplusplus
// To one fft object
int createFFT(char *source);
int linkDataToFFTs();
void deleteAllFFTs();
int enableFFT(int fftIndex, int enable);
int clearFFT(int fftIndex);
int triggFFT(int fftIndex);
int setModeFFT(int fftIndex, FFT_MODE mode);
int modeFFT(int fftIndex, FFT_MODE mode);
// To all fft objects
int linkDataToFFTs();
void deleteAllFFTs();
# ifdef __cplusplus
}
# endif // ifdef __cplusplus

View File

@@ -80,7 +80,7 @@ int fftExitRT(void){
return 0;
}
// Plc function for clear
// Plc function for clear of buffers
double fft_clear(double index) {
return (double)clearFFT((int)index);
}
@@ -90,14 +90,14 @@ double fft_enable(double index, double enable) {
return (double)enableFFT((int)index, (int)enable);
}
// Plc function for trigg new measurement
// Plc function for trigg new measurement (will clear buffers)
double fft_trigg(double index) {
return (double)triggFFT((int)index);
}
// Plc function for enable
double fft_mode(double index, double mode) {
return (double)setModeFFT((int)index, (FFT_MODE)mode);
return (double)modeFFT((int)index, (FFT_MODE)((int)mode));
}
// Register data for plugin so ecmc know what to use
@@ -120,15 +120,15 @@ struct ecmcPluginData pluginDataDef = {
// Plugin version
.version = ECMC_EXAMPLE_PLUGIN_VERSION,
// Optional construct func, called once at load. NULL if not definded.
.constructFnc = fft_exampleConstruct,
.constructFnc = fftConstruct,
// Optional destruct func, called once at unload. NULL if not definded.
.destructFnc = fft_exampleDestruct,
.destructFnc = fftDestruct,
// Optional func that will be called each rt cycle. NULL if not definded.
.realtimeFnc = fft_exampleRealtime,
.realtimeFnc = fftRealtime,
// Optional func that will be called once just before enter realtime mode
.realtimeEnterFnc = fft_exampleEnterRT,
.realtimeEnterFnc = fftEnterRT,
// Optional func that will be called once just before exit realtime mode
.realtimeExitFnc = fft_exampleExitRT,
.realtimeExitFnc = fftExitRT,
// PLC funcs
.funcs[0] =
{ /*----fft_clear----*/
@@ -179,7 +179,7 @@ struct ecmcPluginData pluginDataDef = {
// Function name (this is the name you use in ecmc plc-code)
.funcName = "fft_trigg",
// Function description
.funcDesc = "double fft_trigg(index) : Trigg new measurement for fft[index].",
.funcDesc = "double fft_trigg(index) : Trigg new measurement for fft[index]. Will clear buffers.",
/**
* 7 different prototypes allowed (only doubles since reg in plc).
* Only funcArg${argCount} func shall be assigned the rest set to NULL.
@@ -208,7 +208,7 @@ struct ecmcPluginData pluginDataDef = {
**/
.funcArg0 = NULL,
.funcArg1 = NULL,
.funcArg2 = fft_trigg,
.funcArg2 = fft_mode,
.funcArg3 = NULL,
.funcArg4 = NULL,
.funcArg5 = NULL,
@@ -222,13 +222,13 @@ struct ecmcPluginData pluginDataDef = {
// PLC consts
/* CONTINIOUS MODE = 1 */
.consts[0] = {
.constName = "fft_MODE_CONT",
.constName = "fft_CONT",
.constDesc = "Continious mode",
.constValue = CONT
},
/* TRIGGERED MODE = 2 */
.consts[1] = {
.constName = "fft_MODE_TRIGG",
.constName = "fft_TRIGG",
.constDesc = "Triggered mode",
.constValue = TRIGG
},