The pedometer needs to filter out false steps that might be generated by
tapping the foot, sitting, etc. To do that it computes the number of
steps that occur in a given time and decides the user is moving only
if this value is over a threshold. E.g.: the user starts moving only
if he takes 4 steps in 3 seconds. This filter is applied only when
the user starts moving.

A device that has such pedometer functionality is Freescale's MMA9553L:
http://www.freescale.com/files/sensors/doc/ref_manual/MMA9553LSWRM.pdf.

To export this feature, this patch introduces
IIO_CHAN_INFO_FILTER_OUTLIERS_THRESH and IIO_CHAN_INFO_FILTER_OUTLIERS_PERIOD.
For the pedometer, in_steps_filter_outlier_thresh will specify the number of
steps that need to occur in in_steps_filter_outlier_period seconds so that
the pedometer decides the user is moving.

Signed-off-by: Irina Tirdea <[email protected]>
---
 Documentation/ABI/testing/sysfs-bus-iio | 21 +++++++++++++++++++++
 drivers/iio/industrialio-core.c         |  2 ++
 include/linux/iio/iio.h                 |  2 ++
 3 files changed, 25 insertions(+)

diff --git a/Documentation/ABI/testing/sysfs-bus-iio 
b/Documentation/ABI/testing/sysfs-bus-iio
index c03a140..e009f49 100644
--- a/Documentation/ABI/testing/sysfs-bus-iio
+++ b/Documentation/ABI/testing/sysfs-bus-iio
@@ -1193,3 +1193,24 @@ Description:
                This attribute is used to read the current speed value of the
                user (which is the norm or magnitude of the velocity vector).
                Units after application of scale are m/s.
+
+What:          /sys/.../iio:deviceX/in_steps_filter_outliers_period
+KernelVersion: 3.20
+Contact:       [email protected]
+Description:
+               Specifies the number of seconds in which we compute the
+               values so we can decide if they are outlier values and
+               need to be filter out. These computed values are then
+               compared with in_steps_filter_outliers_thresh. E.g. for steps:
+               specifies number of seconds in which we compute the steps
+               that occur in order to decide if the consumer is making steps.
+
+What:          /sys/.../iio:deviceX/in_steps_filter_outliers_thresh
+KernelVersion: 3.20
+Contact:       [email protected]
+Description:
+               Specifies a threshold for filtering outlier values: if value
+               measured in in_steps_filter_outliers_period seconds is below
+               threshold, we filter it out. E.g. for steps: specifies number
+               of steps that must occur within in_steps_filter_outliers_period
+               for the pedometer to decide the consumer is making steps.
diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c
index 4ee6fdf..81678b3 100644
--- a/drivers/iio/industrialio-core.c
+++ b/drivers/iio/industrialio-core.c
@@ -126,6 +126,8 @@ static const char * const iio_chan_info_postfix[] = {
        [IIO_CHAN_INFO_ENABLE] = "en",
        [IIO_CHAN_INFO_CALIBHEIGHT] = "calibheight",
        [IIO_CHAN_INFO_CALIBWEIGHT] = "calibweight",
+       [IIO_CHAN_INFO_FILTER_OUTLIERS_THRESH] = "filter_outliers_thresh",
+       [IIO_CHAN_INFO_FILTER_OUTLIERS_PERIOD] = "filter_outliers_period",
 };
 
 /**
diff --git a/include/linux/iio/iio.h b/include/linux/iio/iio.h
index 752a929..b6b12ac 100644
--- a/include/linux/iio/iio.h
+++ b/include/linux/iio/iio.h
@@ -41,6 +41,8 @@ enum iio_chan_info_enum {
        IIO_CHAN_INFO_ENABLE,
        IIO_CHAN_INFO_CALIBHEIGHT,
        IIO_CHAN_INFO_CALIBWEIGHT,
+       IIO_CHAN_INFO_FILTER_OUTLIERS_THRESH,
+       IIO_CHAN_INFO_FILTER_OUTLIERS_PERIOD,
 };
 
 enum iio_shared_by {
-- 
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to