sensor: fix flush interface implement

Change-Id: Ie29ff4edf0adad6b49f5fe1ae057e723128585ac
Tracked-On: https://jira.ndg.intel.com/browse/MARVIN-880
Signed-off-by: Baixing Tan <baixingx.tan@intel.com>
Reviewed-on: https://android.intel.com/421534
Reviewed-by: Ledentec, AlexandreX <alexandrex.ledentec@intel.com>
Reviewed-by: Tasayco Loarte, VictorX <victorx.tasayco.loarte@intel.com>
diff --git a/libsensors_iio/src/HWSensorBase.cpp b/libsensors_iio/src/HWSensorBase.cpp
index d029114..e569c2a 100644
--- a/libsensors_iio/src/HWSensorBase.cpp
+++ b/libsensors_iio/src/HWSensorBase.cpp
@@ -299,7 +299,7 @@
 	return err;
 }
 
-int HWSensorBase::FlushData()
+int HWSensorBase::FlushData(int base)
 {
 	int err;
 
@@ -315,7 +315,10 @@
 	} else
 		return -EINVAL;
 
-	return SensorBase::FlushData();
+	if (base)
+		return SensorBase::FlushData(0);
+	else
+		return 0;
 }
 
 void HWSensorBase::ThreadTask()
diff --git a/libsensors_iio/src/HWSensorBase.h b/libsensors_iio/src/HWSensorBase.h
index d7fb8a0..4a6f319 100644
--- a/libsensors_iio/src/HWSensorBase.h
+++ b/libsensors_iio/src/HWSensorBase.h
@@ -76,7 +76,7 @@
 	virtual ~HWSensorBase();
 
 	virtual int Enable(int handle, bool enable);
-	virtual int FlushData();
+	virtual int FlushData(int base);
 	virtual void ThreadTask();
 };
 
diff --git a/libsensors_iio/src/SWSensorBase.cpp b/libsensors_iio/src/SWSensorBase.cpp
index b08b225..320752e 100644
--- a/libsensors_iio/src/SWSensorBase.cpp
+++ b/libsensors_iio/src/SWSensorBase.cpp
@@ -72,20 +72,20 @@
 	return SensorBase::AddSensorDependency(p);
 }
 
-int SWSensorBase::FlushData()
+int SWSensorBase::FlushData(int)
 {
 	int err, i;
 
 	if (GetStatus() && (GetMinTimeout() > 0)) {
 		for (i = 0; i < (int)dependencies_num; i++) {
-			err = dependencies[i]->FlushData();
+			err = dependencies[i]->FlushData(0);
 			if (err < 0)
 				return -EINVAL;
 		}
 	} else
 		return -EINVAL;
 
-	return SensorBase::FlushData();
+	return SensorBase::FlushData(0);
 }
 
 void SWSensorBase::ThreadTask()
diff --git a/libsensors_iio/src/SWSensorBase.h b/libsensors_iio/src/SWSensorBase.h
index 06330d0..55abb86 100644
--- a/libsensors_iio/src/SWSensorBase.h
+++ b/libsensors_iio/src/SWSensorBase.h
@@ -42,7 +42,7 @@
 	virtual ~SWSensorBase();
 
 	int AddSensorDependency(SensorBase *p);
-	virtual int FlushData();
+	virtual int FlushData(int base);
 	virtual void ThreadTask();
 };
 
diff --git a/libsensors_iio/src/SensorBase.cpp b/libsensors_iio/src/SensorBase.cpp
index 827077d..c6cb908 100644
--- a/libsensors_iio/src/SensorBase.cpp
+++ b/libsensors_iio/src/SensorBase.cpp
@@ -355,7 +355,7 @@
 	return true;
 }
 
-int SensorBase::FlushData()
+int SensorBase::FlushData(int)
 {
 	int err;
 	sensors_event_t flush_event_data;
diff --git a/libsensors_iio/src/SensorBase.h b/libsensors_iio/src/SensorBase.h
index 6187ec3..9b73dcc 100644
--- a/libsensors_iio/src/SensorBase.h
+++ b/libsensors_iio/src/SensorBase.h
@@ -140,7 +140,7 @@
 
 	bool FillSensor_tData(struct sensor_t *data);
 
-	virtual int FlushData();
+	virtual int FlushData(int);
 
 	virtual void ProcessData(SensorBaseData *data);
 	virtual void ProcessEvent(struct iio_event_data *event_data);
diff --git a/libsensors_iio/src/SensorHAL.cpp b/libsensors_iio/src/SensorHAL.cpp
index 15366db..90f1931 100644
--- a/libsensors_iio/src/SensorHAL.cpp
+++ b/libsensors_iio/src/SensorHAL.cpp
@@ -584,12 +584,12 @@
 static int st_hal_dev_flush(struct sensors_poll_device_1 *dev, int handle)
 {
 	STSensorHAL_data *hal_data = (STSensorHAL_data *)dev;
-	ALOGD("st_hal_dev_flush type=%d", ((struct sensor_t) hal_data->sensor_t_list[handle]).type);
+	ALOGD("st_hal_dev_flush type=%u", ((struct sensor_t) hal_data->sensor_t_list[handle-1]).type);
 	/* One-shot sensor must return -EINVAL and not generate any flush complete metadata event */
-	if (SENSOR_TYPE_SIGNIFICANT_MOTION == ((struct sensor_t) hal_data->sensor_t_list[handle]).type)
+	if (SENSOR_TYPE_SIGNIFICANT_MOTION == ((struct sensor_t) hal_data->sensor_t_list[handle-1]).type)
 		return -EINVAL;
 
-	return hal_data->sensor_classes[handle]->FlushData();
+	return hal_data->sensor_classes[handle]->FlushData(1);
 }
 
 /**