diff --git a/ecmcPlugin_FFT-loc/ecmcPlugin_FFTApp/Db/ecmcPluginFFT.template b/ecmcPlugin_FFT-loc/ecmcPlugin_FFTApp/Db/ecmcPluginFFT.template index bd53c44..6eb9f71 100644 --- a/ecmcPlugin_FFT-loc/ecmcPlugin_FFTApp/Db/ecmcPluginFFT.template +++ b/ecmcPlugin_FFT-loc/ecmcPlugin_FFTApp/Db/ecmcPluginFFT.template @@ -3,7 +3,7 @@ record(longin,"$(P)Plugin-FFT${INDEX}-stat"){ field(DESC, "Status") field(PINI, "1") field(DTYP, "asynInt32") - field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))T_SMP_MS=$(T_SMP_MS=1000)/TYPE=asynInt32/plugin.fft${INDEX}.status?") + field(INP, "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1000))T_SMP_MS=$(T_SMP_MS=1000)/TYPE=asynInt32/plugin.fft${INDEX}.status?") field(SCAN, "I/O Intr") field(TSE, "$(TSE=-2)") } @@ -13,11 +13,11 @@ record(waveform,"$(P)Plugin-FFT${INDEX}-Source"){ field(DESC, "Data source name") field(PINI, "1") field(DTYP, "asynInt8ArrayIn") - field(INP, "@asyn($(PORT),$(ADDR),$(TIMEOUT))T_SMP_MS=$(T_SMP_MS=1000)/TYPE=asynInt8ArrayIn/plugin.fft${INDEX}.source?") - field(FTVL, "CHAR")asynParamInt8Array + field(INP, "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1000))T_SMP_MS=$(T_SMP_MS=1000)/TYPE=asynInt8ArrayIn/plugin.fft${INDEX}.source?") + field(FTVL, "CHAR") field(NELM, "1024") field(SCAN, "I/O Intr") - field(TSE, "$(TSE=-2)") + field(TSE, "$(TSE=-2)") } # Rawdata @@ -26,7 +26,7 @@ record(waveform,"$(P)Plugin-FFT${INDEX}-Raw-Data-Act"){ field(DESC, "Raw data") field(PINI, "1") field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn($(PORT),$(ADDR=),$(TIMEOUT=1))T_SMP_MS=$(T_SMP_MS=1000)/TYPE=asynFloat64ArrayIn/plugin.fft${INDEX}.rawdata?") + field(INP, "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1000))T_SMP_MS=$(T_SMP_MS=1000)/TYPE=asynFloat64ArrayIn/plugin.fft${INDEX}.rawdata?") field(FTVL, "DOUBLE") field(NELM, "$(NELM)") field(SCAN, "I/O Intr") @@ -39,7 +39,7 @@ record(waveform,"$(P)Plugin-FFT${INDEX}-Spectrum-Amp-Act"){ field(DESC, "FFT spectrum amplitude result") field(PINI, "1") field(DTYP, "asynFloat64ArrayIn") - field(INP, "@asyn($(PORT),$(ADDR=),$(TIMEOUT=1))T_SMP_MS=$(T_SMP_MS=1000)/TYPE=asynFloat64ArrayIn/plugin.fft${INDEX}.fftamplitude?") + field(INP, "@asyn($(PORT),$(ADDR=0=),$(TIMEOUT=1000=1))T_SMP_MS=$(T_SMP_MS=1000)/TYPE=asynFloat64ArrayIn/plugin.fft${INDEX}.fftamplitude?") field(FTVL, "DOUBLE") field(NELM, "$(NELM)") field(SCAN, "I/O Intr") @@ -49,7 +49,7 @@ record(waveform,"$(P)Plugin-FFT${INDEX}-Spectrum-Amp-Act"){ record(bo,"$(P)Plugin-FFT${INDEX}-Enable"){ field(DESC, "FFT Enable") field(DTYP,"asynInt32") - field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))T_SMP_MS=$(T_SMP_MS=1000)/TYPE=asynInt32/plugin.fft${INDEX}.enable=") + field(OUT, "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1000))T_SMP_MS=$(T_SMP_MS=1000)/TYPE=asynInt32/plugin.fft${INDEX}.enable=") field(ZNAM,"FALSE") field(ONAM,"TRUE") field(DOL, "0") @@ -59,7 +59,7 @@ record(bo,"$(P)Plugin-FFT${INDEX}-Enable"){ record(bo,"$(P)Plugin-FFT${INDEX}-Trigg"){ field(DESC, "FFT Trigg measurement") field(DTYP,"asynInt32") - field(OUT, "@asyn($(PORT),$(ADDR),$(TIMEOUT))T_SMP_MS=$(T_SMP_MS=1000)/TYPE=asynInt32/plugin.fft${INDEX}.trigg=") + field(OUT, "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1000))T_SMP_MS=$(T_SMP_MS=1000)/TYPE=asynInt32/plugin.fft${INDEX}.trigg=") field(ZNAM,"FALSE") field(ONAM,"TRUE") field(DOL, "0") @@ -71,7 +71,7 @@ record(longout,"$(P)Plugin-FFT${INDEX}-Mode-RB"){ field(PINI, "1") field(TSE, -2) field(DTYP, "asynInt32") - field(OUT, "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=0))T_SMP_MS=$(T_SMP_MS=1000)/TYPE=asynInt32/plugin.fft${INDEX}.mode=") + field(OUT, "@asyn($(PORT),$(ADDR=0=0),$(TIMEOUT=1000=0))T_SMP_MS=$(T_SMP_MS=1000)/TYPE=asynInt32/plugin.fft${INDEX}.mode=") field(SCAN, "Passive") field(TSE, "$(TSE=0)") } diff --git a/ecmcPlugin_FFT-loc/ecmcPlugin_FFTApp/src/ecmcFFT.cpp b/ecmcPlugin_FFT-loc/ecmcPlugin_FFTApp/src/ecmcFFT.cpp index 2098291..bc28af1 100644 --- a/ecmcPlugin_FFT-loc/ecmcPlugin_FFTApp/src/ecmcFFT.cpp +++ b/ecmcPlugin_FFT-loc/ecmcPlugin_FFTApp/src/ecmcFFT.cpp @@ -621,12 +621,12 @@ void ecmcFFT::initAsyn() { paramName = ECMC_PLUGIN_ASYN_PREFIX + to_string(objectId_) + "." + ECMC_PLUGIN_ASYN_FFT_MODE; - asynFFTMode_ = asynPort_->addNewAvailParam(paramName.c_str(), // name - asynParamInt32, // asyn type - (uint8_t *)cfgMode_, // pointer to data - sizeof(cfgMode_), // size of data - ECMC_EC_S32, // ecmc data type - 0); // die if fail + asynFFTMode_ = asynPort_->addNewAvailParam(paramName.c_str(), // name + asynParamInt32, // asyn type + (uint8_t *)(&cfgMode_), // pointer to data + sizeof(cfgMode_), // size of data + ECMC_EC_S32, // ecmc data type + 0); // die if fail if(!asynFFTMode_) { throw std::runtime_error("Failed to create asyn parameter \"" + paramName +"\".\n"); @@ -639,12 +639,12 @@ void ecmcFFT::initAsyn() { paramName = ECMC_PLUGIN_ASYN_PREFIX + to_string(objectId_) + "." + ECMC_PLUGIN_ASYN_FFT_STAT; - asynFFTStat_ = asynPort_->addNewAvailParam(paramName.c_str(), // name - asynParamInt32, // asyn type - (uint8_t *)status_, // pointer to data - sizeof(status_), // size of data - ECMC_EC_S32, // ecmc data type - 0); // die if fail + asynFFTStat_ = asynPort_->addNewAvailParam(paramName.c_str(), // name + asynParamInt32, // asyn type + (uint8_t *)(&status_), // pointer to data + sizeof(status_), // size of data + ECMC_EC_S32, // ecmc data type + 0); // die if fail if(!asynFFTStat_) { throw std::runtime_error("Failed to create asyn parameter \"" + paramName +"\".\n"); @@ -675,18 +675,18 @@ void ecmcFFT::initAsyn() { paramName = ECMC_PLUGIN_ASYN_PREFIX + to_string(objectId_) + "." + ECMC_PLUGIN_ASYN_FFT_TRIGG; - asynTrigg_ = asynPort_->addNewAvailParam(paramName.c_str(), // name - asynParamInt32, // asyn type - (uint8_t *)triggOnce_, // pointer to data - sizeof(triggOnce_), // size of data - ECMC_EC_S32, // ecmc data type - 0); // die if fail + asynTrigg_ = asynPort_->addNewAvailParam(paramName.c_str(), // name + asynParamInt32, // asyn type + (uint8_t *)(&triggOnce_), // pointer to data + sizeof(triggOnce_), // size of data + ECMC_EC_S32, // ecmc data type + 0); // die if fail if(!asynTrigg_) { throw std::runtime_error("Failed to create asyn parameter \"" + paramName +"\".\n"); } - asynTrigg_->setAllowWriteToEcmc(false); + asynTrigg_->setAllowWriteToEcmc(true); asynTrigg_->refreshParam(1); // read once into asyn param lib } diff --git a/ecmcPlugin_FFT.Makefile b/ecmcPlugin_FFT.Makefile index 69e3125..8b0c7cf 100644 --- a/ecmcPlugin_FFT.Makefile +++ b/ecmcPlugin_FFT.Makefile @@ -46,6 +46,7 @@ USR_LDFLAGS += -lstdc++ USR_INCLUDES += -I$(where_am_I)$(APPSRC) TEMPLATES += $(wildcard $(APPDB)/*.db) +TEMPLATES += $(wildcard $(APPDB)/*.template) SOURCES += $(APPSRC)/ecmcPluginFFT.c SOURCES += $(APPSRC)/ecmcFFTWrap.cpp SOURCES += $(APPSRC)/ecmcFFT.cpp