// 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; } */ }
// 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; }