Re: [PATCH v2 07/10] iio: core: Introduce IIO_CHAN_INFO_FILTER_OUTLIERS_THRESH and _PERIOD

From: Jonathan Cameron
Date: Mon Jan 26 2015 - 14:01:54 EST


On 26/01/15 14:40, Daniel Baluta wrote:
> On Mon, Jan 26, 2015 at 1:07 AM, Jonathan Cameron <jic23@xxxxxxxxxx> wrote:
>> On 11/01/15 19:10, Irina Tirdea wrote:
>>> 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 <irina.tirdea@xxxxxxxxx>
>> I wonder if the naming here is infact too generic. They aren't what
>> people would normally think of as outliers. That would be removing
>> missidentified steps mid way through grabbing data (to my mind).
>>
>> These are almost a 'debounce' of the transition from stationary to
>> walking... Maybe there is another better term. All suggestions welcome!
>
> What about:
>
> in_steps_debounce_count instead of in_steps_filter_outlier_thresh
> and
> in_steps_debounce_delay instead of in_steps_filter_outlier_period.
>
> Also in_steps_debounce_time could work for in_steps_filter_outlier_period.
Hmm. Slight preference for debounce_time.

I can't come up with a better option, but we'd best see if anyone else has
a better idea for a day or two!
>
>>
>>> ---
>>> 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: linux-iio@xxxxxxxxxxxxxxx
>>> +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: linux-iio@xxxxxxxxxxxxxxx
>>> +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 {
>>>
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-iio" in
>> the body of a message to majordomo@xxxxxxxxxxxxxxx
>> More majordomo info at http://vger.kernel.org/majordomo-info.html
> --
> To unsubscribe from this list: send the line "unsubscribe linux-iio" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>

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