Remove special case for ec-emtry. Handle in ecmc instead.

This commit is contained in:
Anders Sandström
2020-11-10 14:00:23 +01:00
parent fd3115bbcf
commit b163fcab98
2 changed files with 4 additions and 37 deletions

View File

@@ -106,7 +106,6 @@ ecmcFFT::ecmcFFT(int fftIndex, // index of this object (if several is cr
cycleCounter_ = 0;
ignoreCycles_ = 0;
dataSourceLinked_ = 0;
isEcEntry_ = 0;
// Asyn
asynEnableId_ = -1; // Enable/disable acq./calcs
@@ -302,7 +301,7 @@ void ecmcFFT::connectToDataSource() {
if( dataSourceLinked_ ) {
return;
}
isEcEntry_ = sourceIsEcEntry();
// Get dataItem
dataItem_ = (ecmcDataItem*) getEcmcDataItem(cfgDataSourceStr_);
if(!dataItem_) {
@@ -373,13 +372,9 @@ void ecmcFFT::dataUpdatedCallback(uint8_t* data,
size_t dataElementSize = getEcDataTypeByteSize(dt);
// Special case for ec data 8byte but might only be a single 2 byte value..
if(isEcEntry_) {
size = dataElementSize; // Only one loop below
}
uint8_t *pData = data;
for(unsigned int i = 0; i < size / dataElementSize; ++i) {
for(unsigned int i = 0; i < size / dataElementSize; ++i) {
//printf("dataElementSize=%d, size=%d\n",dataElementSize,size);
switch(dt) {
case ECMC_EC_U8:
addDataToBuffer((double)getUint8(pData));
@@ -475,12 +470,7 @@ void ecmcFFT::calcFFTXAxis() {
double freq = 0;
size_t size = dataItemInfo_->dataSize;
// Specail case for ecdata.. always 8byte but might only accupy a 1 byte element
if(isEcEntry_) {
size = dataItemInfo_->dataElementSize; //Only one element per sample..
}
double deltaFreq = ecmcSampleRateHz_* ((double)size /
(double)dataItemInfo_->dataElementSize) / ((double)(cfgNfft_));
for(unsigned int i = 0; i < (cfgNfft_ / 2 + 1); ++i) {
@@ -1041,23 +1031,3 @@ int ecmcFFT::leastSquare(int n, const double y[], double* k, double* m){
*m = (sumy * sumx2 - sumx * sumxy) / denom;
return 0;
}
/*Ec data is always 8byte but still is just 1 element need specail treatment!!!!!*/
int ecmcFFT::sourceIsEcEntry() {
int master=-1;
int slave =-1;
int bit = -1;
char buffer[ECMC_MAX_FIELD_CHAR_LENGTH];
int errorCode = parseEcPath(cfgDataSourceStr_,
&master,
&slave,
&buffer[0],
&bit);
if(errorCode) {
return 0; //is _not_ ec entry
}
return 1; //is ec entry
}

View File

@@ -68,7 +68,6 @@ class ecmcFFT : public asynPortDriver {
void initAsyn();
void updateStatus(FFT_STATUS status); // Also updates asynparam
static int dataTypeSupported(ecmcEcDataType dt);
int sourceIsEcEntry();
ecmcDataItem *dataItem_;
ecmcDataItemInfo *dataItemInfo_;
@@ -105,8 +104,6 @@ class ecmcFFT : public asynPortDriver {
FFT_MODE cfgMode_; // Config: Mode continous or triggered.
double cfgFFTSampleRateHz_; // Config: Sample rate (defaukts to ecmc rate)
double cfgScale_;
bool isEcEntry_;
// Asyn
int asynEnableId_; // Enable/disable acq./calcs