Add comment for sensor internal selftest results handling
[adaptation/intel_mfld/sensor-plugins-mfld-blackbay.git] / src / compassprocessor.cpp
index 7b9dedc..f1f3414 100644 (file)
@@ -36,6 +36,7 @@ CompassProcessor::CompassProcessor()
      for(i=0; i < AXES; ++i) {
                min_xyz[i] = 700;
                max_xyz[i] = -700;
+               previous[i] = 0;
      }
 }
 
@@ -85,7 +86,6 @@ int CompassProcessor::get_property(unsigned int property_level,
           return -1;
      }
 
-
      return 0;
 }
 
@@ -97,29 +97,28 @@ void CompassProcessor::process_input_events(const std::vector <input_event *> &e
      double sf[AXES] = {1,1,1};
      BaseProcessor::process_input_events(events);
 
-     if( mValues[0] > 550 &&  mValues[0] < 850) {
-           return;
-     }
      for(i=0; i < AXES; ++i) {
+           // remove internal kernel driver selftest results !
+           if (fabs(previous[i]-mValues[i]) > 150 ) {
+               previous[i] = mValues[i];
+               return;
+           }
+           previous[i] = mValues[i];
            if (min_xyz[i] > mValues[i] && mValues[i] != 0) {
                min_xyz[i] = mValues[i];
            }
            if (max_xyz[i] < mValues[i] && mValues[i] != 0) {
                max_xyz[i] = mValues[i];
            }
+           temp[i] = max_xyz[i] - min_xyz[i];
      }
-     for(i=0; i < AXES; ++i) {
-         temp[i] = max_xyz[i] - min_xyz[i];
-     }
+
      sf[0] = (temp[1]/temp[0]) > 1 ? (temp[1]/temp[0]) : 1;
      sf[1] = (temp[0]/temp[1]) > 1 ? (temp[0]/temp[1]) : 1;
      sf[2] = (temp[0]/temp[2]) > 1 ? (temp[0]/temp[2]) : 1;
 
      for(i=0; i < AXES; ++i) {
          offset[i] =((temp[i])/2-max_xyz[i])*sf[i];
-     }
-
-     for(i=0; i < AXES; ++i) {
          mgval[i] = (mValues[i]+offset[i]) * sf[i];
      }