Fix samplerate asyn param

This commit is contained in:
Anders Sandström
2020-12-01 08:40:38 +01:00
parent f1e460e6dc
commit b43aa23f4b
2 changed files with 9 additions and 9 deletions

View File

@@ -122,8 +122,8 @@ ecmcFFT::ecmcFFT(int fftIndex, // index of this object (if several is cr
asynSRateId_ = -1; // Sample rate Hz
asynElementsInBuffer_= -1;
ecmcSampleRateHz_ = getEcmcSampleRate();
cfgEcmcSampleRateHz_ = ecmcSampleRateHz_;
ecmcSampleRateHz_ = getEcmcSampleRate();
cfgFFTSampleRateHz_ = ecmcSampleRateHz_;
cfgDataSampleRateHz_ = ecmcSampleRateHz_;
// Config defaults
@@ -143,17 +143,17 @@ ecmcFFT::ecmcFFT(int fftIndex, // index of this object (if several is cr
}
// Check valid sample rate
if(cfgEcmcSampleRateHz_ <= 0) {
if(cfgFFTSampleRateHz_ <= 0) {
throw std::out_of_range("FFT Invalid sample rate");
}
if(cfgEcmcSampleRateHz_ > ecmcSampleRateHz_) {
if(cfgFFTSampleRateHz_ > ecmcSampleRateHz_) {
printf("Warning FFT sample rate faster than ecmc rate. FFT rate will be set to ecmc rate.\n");
cfgEcmcSampleRateHz_ = ecmcSampleRateHz_;
cfgFFTSampleRateHz_ = ecmcSampleRateHz_;
}
// Se if any data update cycles should be ignored
// example ecmc 1000Hz, fft 100Hz then ignore 9 cycles (could be strange if not multiples)
ignoreCycles_ = ecmcSampleRateHz_ / cfgEcmcSampleRateHz_ -1;
ignoreCycles_ = ecmcSampleRateHz_ / cfgFFTSampleRateHz_ -1;
// set scale factor
scale_ = 1.0 / ((double)cfgNfft_); // sqrt((double)cfgNfft_);
@@ -278,7 +278,7 @@ void ecmcFFT::parseConfigStr(char *configStr) {
// ECMC_PLUGIN_RATE_OPTION_CMD rate in HZ
else if (!strncmp(pThisOption, ECMC_PLUGIN_RATE_OPTION_CMD, strlen(ECMC_PLUGIN_RATE_OPTION_CMD))) {
pThisOption += strlen(ECMC_PLUGIN_RATE_OPTION_CMD);
cfgEcmcSampleRateHz_ = atof(pThisOption);
cfgFFTSampleRateHz_ = atof(pThisOption);
}
// ECMC_PLUGIN_SCALE_OPTION_CMD rate in HZ
@@ -325,7 +325,7 @@ void ecmcFFT::connectToDataSource() {
}
// Add oversampling
cfgDataSampleRateHz_ = cfgDataSampleRateHz_ * dataItem_->getEcmcDataSize()/dataItem_->getEcmcDataElementSize();
cfgDataSampleRateHz_ = cfgFFTSampleRateHz_ * dataItem_->getEcmcDataSize()/dataItem_->getEcmcDataElementSize();
setDoubleParam(asynSRateId_, cfgDataSampleRateHz_);
callParamCallbacks();

View File

@@ -102,7 +102,7 @@ class ecmcFFT : public asynPortDriver {
size_t cfgNfft_; // Config: Data set size
int cfgEnable_; // Config: Enable data acq./calc.
FFT_MODE cfgMode_; // Config: Mode continous or triggered.
double cfgEcmcSampleRateHz_; // Config: Sample rate (defaults to ecmc rate)
double cfgFFTSampleRateHz_; // Config: Sample rate (defaults to ecmc rate)
double cfgScale_;
double cfgDataSampleRateHz_; // Config: Sample for data