Пример #1
0
// Determine KMA scale
float DetermineKMA(int index) {
  int i, arrIdx, mX, mY, mZ;
  float result;
  
  arrIdx = index; 
  mX = mAxisBuf.tmp_data_x_lcd[arrIdx];
  mY = mAxisBuf.tmp_data_y_lcd[arrIdx];
  mZ = mAxisBuf.tmp_data_z_lcd[arrIdx];
  
  // get spot value of ACC(n)
  ACCn = (int)sqrt( (mX) * (mX) + (mY) * (mY) + (mZ) * (mZ) );
  
  if(KMACount < ACCnFifty - 1) {
    
    ACCnArr[KMACount] = ACCn;
    KMACount++;
    
  } else if(KMACount == ACCnFifty - 1) {
    
    ACCnArr[KMACount] = ACCn;
    for(i=0; i<KMACount; i++) {
      ACCnAddition += ACCnArr[i]; 
    }
    MeanACC = ACCnAddition / 50;
    result = ExtractMaxMeanACC(MeanACC);
    ACCnAddition = 0;   // Clear addition
    KMACount++;
    
  } else {  // KMACount >= 50
    
    ShiftArrayAndAddData(ACCnArr, ACCn, sizeof(ACCnArr) / sizeof(*ACCnArr));
    for(i=0; i<KMACount; i++) {
      ACCnAddition += ACCnArr[i]; 
    }
    MeanACC = ACCnAddition / 50;
    result = ExtractMaxMeanACC(MeanACC);
    ACCnAddition = 0;   // Clear addition
    
    if(KMACount >= 0x400) { // 1024
      KMACount = ACCnFifty;
    } else {
      KMACount++; 
    }
  }
  
  return result;
  
  /*
  int GalDataPlusOne = mAxisData.data_g[index+1];
  int GalDataIndex = mAxisData.data_g[index];
  
  if(GalDataPlusOne > GalDataIndex) {
    max_gal = mAxisData.data_g[index+1];
  } else {
    max_gal = max_gal;
  }
  */
}
Пример #2
0
// Determine KMA scale
int DetermineKMA(int index) {
  int i, arrIdx, mX, mY, mZ;
  int result;
  
  arrIdx = index; 
  CheckSignAndToInt(arrIdx);
  
  mX = mAxisBuf.tmp_data_x_lcd[arrIdx] >> 2;
  mY = mAxisBuf.tmp_data_y_lcd[arrIdx] >> 2;
  mZ = mAxisBuf.tmp_data_z_lcd[arrIdx] >> 2;
  
  // get spot value of ACC(n)
  ACCn = (int)sqrt( ((mX) * (mX)) + ((mY) * (mY)) + ((mZ) * (mZ)) );
  
  if(KMACount < ACCnFifty - 1) {
    
    ACCnArr[KMACount] = ACCn;
    
  } else if(KMACount == ACCnFifty - 1) {
    
    ACCnArr[KMACount] = ACCn;
    for(i=0; i<ACCnFifty; i++) {
      ACCnAddition += ACCnArr[i];
    }
    MeanACC = ACCnAddition / 50;
    result = ExtractMaxMeanACC(MeanACC);
    ACCnAddition = 0;   // Clear addition
    //return result;
   
  } else {  // KMACount >= 50
    
    ShiftArrayAndAddData(ACCnArr, ACCn, sizeof(ACCnArr) / sizeof(*ACCnArr));
    for(i=0; i<ACCnFifty; i++) {
      ACCnAddition += ACCnArr[i];
    }
    MeanACC = ACCnAddition / 50;
    result = ExtractMaxMeanACC(MeanACC);
    ACCnAddition = 0;   // Clear addition
  }
  
  if(KMACount != 50) {
    KMACount++; 
  }
  
  return result;
}