Add comment for sensor internal selftest results handling
authorTimo Toikkanen <timo.toikkanen@ixonos.com>
Tue, 26 Mar 2013 12:07:02 +0000 (14:07 +0200)
committerTelle-Tiia Pitkänen <telle-tiia.pitkanen@ixonos.com>
Wed, 3 Apr 2013 12:19:06 +0000 (15:19 +0300)
Change-Id: I22f375cda5b01d9d5b279a17ee9d36dcd9e8ec65

inc/compassprocessor.h
packaging/sensor-plugins-mfld-blackbay.changes
src/compassprocessor.cpp

index 8830556..67ea232 100644 (file)
@@ -33,11 +33,13 @@ public:
      virtual int get_property(unsigned int property_level,
                               base_property_struct &result);
      virtual void process_input_events(const std::vector <input_event *> &events);
+private:
      double min_xyz[AXES];
      double max_xyz[AXES];
      double offset[AXES];
      double mgval[AXES];
      double head[AXES];
+     double previous[AXES];
 };
 
 #endif // COMPASSPROCESSOR_H
index c4fd933..f89a92f 100644 (file)
@@ -1,3 +1,6 @@
+* Tue Mar 26 2013 Timo Toikkanen <timo.toikkanen@ixonos.com> Obsolete_Repo@cb11ba4
+- Add comment for sensor internal selftest results handling
+
 * Fri Mar 22 2013 Timo Toikkanen <timo.toikkanen@ixonos.com> submit/trunk/20130219.093127@af95230
 - Magnetometer and Proximity new evens
 
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];
      }