iio: core: Introduce IIO_CHAN_INFO_DEBOUNCE_COUNT and _TIME
authorIrina Tirdea <irina.tirdea@intel.com>
Tue, 27 Jan 2015 18:41:52 +0000 (20:41 +0200)
committerJonathan Cameron <jic23@kernel.org>
Thu, 29 Jan 2015 18:49:57 +0000 (18:49 +0000)
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_DEBOUNCE_COUNT
and IIO_CHAN_INFO_DEBOUNCE_TIME. For the pedometer, in_steps_debounce_count
will specify the number of steps that need to occur in
in_steps_debounce_time seconds so that the pedometer decides the user is
moving.

Signed-off-by: Irina Tirdea <irina.tirdea@intel.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Documentation/ABI/testing/sysfs-bus-iio
drivers/iio/industrialio-core.c
include/linux/iio/iio.h

index c03a140..b4ea9c5 100644 (file)
@@ -1193,3 +1193,18 @@ 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_debounce_count
+KernelVersion: 3.20
+Contact:       linux-iio@vger.kernel.org
+Description:
+               Specifies the number of steps that must occur within
+               in_steps_filter_debounce_time for the pedometer to decide the
+               consumer is making steps.
+
+What:          /sys/.../iio:deviceX/in_steps_debounce_time
+KernelVersion: 3.20
+Contact:       linux-iio@vger.kernel.org
+Description:
+               Specifies number of seconds in which we compute the steps
+               that occur in order to decide if the consumer is making steps.
index 4ee6fdf..aaba9d3 100644 (file)
@@ -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_DEBOUNCE_COUNT] = "debounce_count",
+       [IIO_CHAN_INFO_DEBOUNCE_TIME] = "debounce_time",
 };
 
 /**
index 51f1643..80d8550 100644 (file)
@@ -41,6 +41,8 @@ enum iio_chan_info_enum {
        IIO_CHAN_INFO_ENABLE,
        IIO_CHAN_INFO_CALIBHEIGHT,
        IIO_CHAN_INFO_CALIBWEIGHT,
+       IIO_CHAN_INFO_DEBOUNCE_COUNT,
+       IIO_CHAN_INFO_DEBOUNCE_TIME,
 };
 
 enum iio_shared_by {