Re: [PATCH 3/8] iio: core: Introduce SPEED channel type

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 29/12/14 18:13, Tirdea, Irina wrote:
> 
> 
>> -----Original Message-----
>> From: Jonathan Cameron [mailto:jic23@xxxxxxxxxx]
>> Sent: 26 December, 2014 15:28
>> To: Tirdea, Irina; linux-iio@xxxxxxxxxxxxxxx
>> Cc: linux-kernel@xxxxxxxxxxxxxxx; Dogaru, Vlad; Baluta, Daniel; Hartmut Knaack; Lars-Peter Clausen; Peter Meerwald
>> Subject: Re: [PATCH 3/8] iio: core: Introduce SPEED channel type
>>
>> On 19/12/14 22:57, Irina Tirdea wrote:
>>> Some devices export the current speed value of the user.
>>>
>>> One of this devices is Freescale's MMA9553L
>>> (http://www.freescale.com/files/sensors/doc/ref_manual/MMA9553LSWRM.pdf)
>>> that computes the speed of the user based on the number of steps and
>>> stride length.
>>>
>>> Introduce a new channel type SPEED to export these values.
>>>
>> A fun question raised by this is whether we are going to end up with
>> both speed and velocity (depending on whether it is signed or not).
>> I suppose there isn't much to be done about that though and this looks fine
>> to me (as does the previous one).
> 
> We might be able to unify speed and velocity if we use modifiers.
> 
> I am not sure how a device would export velocity information, but I
> assume it would be similar to acceleration (since we are talking
> about a vector as well). In this case we would need one channel type
> IIO_VELOCITY with modifiers for the 3 axes (IIO_MOD_X, IIO_MOD_Y,
> IIO_MOD_Z). We can further compute speed as the magnitude or the norm
> of the velocity vector (root of the sum squared values for x, y, z),
> so we can export it as an additional modifier IIO_MOD_NORM.
Good, except for the last bit. We already have IIO_MOD_ROOT_SUM_SQUARED_X_Y so
should add IIO_MOD_ROOT_SUM_SQUARED_X_Y_Z for 3D devices and use that.  A little
confusing perhaps for people just looking for a speed though.  Meh. Most
people will use this through a library anyway so that can wrap up the
measurement as speed if it wants to.
Note resulting attribute names will end up as the somewhat convoluted

in_velocity_sqrt(x^2+y^2+z^2)_* 

I suppose that's clear enough...
> 
> The pedometer only gives speed information without keeping track of
> the direction, so in this case we will have one channel IIO_VELOCITY
> with one modifier IIO_MOD_NORM.
> 
> Would this be a better approach than just exporting IIO_SPEED?> 
Saves us some confusion later, so yes I prefer this.
> Thanks,
> Irina
> 
>>> Signed-off-by: Irina Tirdea <irina.tirdea@xxxxxxxxx>
>>> ---
>>>  Documentation/ABI/testing/sysfs-bus-iio |    9 +++++++++
>>>  drivers/iio/industrialio-core.c         |    1 +
>>>  include/linux/iio/types.h               |    1 +
>>>  3 files changed, 11 insertions(+)
>>>
>>> diff --git a/Documentation/ABI/testing/sysfs-bus-iio b/Documentation/ABI/testing/sysfs-bus-iio
>>> index a5c1dcc..07acef7 100644
>>> --- a/Documentation/ABI/testing/sysfs-bus-iio
>>> +++ b/Documentation/ABI/testing/sysfs-bus-iio
>>> @@ -295,6 +295,7 @@ What:		/sys/bus/iio/devices/iio:deviceX/in_rot_from_north_true_tilt_comp_scale
>>>  What:		/sys/bus/iio/devices/iio:deviceX/in_pressureY_scale
>>>  What:		/sys/bus/iio/devices/iio:deviceX/in_pressure_scale
>>>  What:		/sys/bus/iio/devices/iio:deviceX/in_humidityrelative_scale
>>> +What:		/sys/bus/iio/devices/iio:deviceX/in_speed_scale
>>>  KernelVersion:	2.6.35
>>>  Contact:	linux-iio@xxxxxxxxxxxxxxx
>>>  Description:
>>> @@ -1146,6 +1147,14 @@ Description:
>>>  		present, output should be considered as processed with the
>>>  		unit in milliamps.
>>>
>>> +What:		/sys/.../iio:deviceX/in_speed_input
>>> +What:		/sys/.../iio:deviceX/in_speed_raw
>>> +KernelVersion:	3.19
>>> +Contact:	linux-iio@xxxxxxxxxxxxxxx
>>> +Description:
>>> +		This attribute is used to read the current speed value of the user.
>>> +		Units after application of scale are m/s.
>>> +
>>>  What:		/sys/.../iio:deviceX/in_steps_en
>>>  KernelVersion:	3.19
>>>  Contact:	linux-iio@xxxxxxxxxxxxxxx
>>> diff --git a/drivers/iio/industrialio-core.c b/drivers/iio/industrialio-core.c
>>> index 4a10d31..5e50aca 100644
>>> --- a/drivers/iio/industrialio-core.c
>>> +++ b/drivers/iio/industrialio-core.c
>>> @@ -74,6 +74,7 @@ static const char * const iio_chan_type_name_spec[] = {
>>>  	[IIO_STEPS] = "steps",
>>>  	[IIO_CALORIES] = "calories",
>>>  	[IIO_DISTANCE] = "distance",
>>> +	[IIO_SPEED] = "speed",
>>>  };
>>>
>>>  static const char * const iio_modifier_names[] = {
>>> diff --git a/include/linux/iio/types.h b/include/linux/iio/types.h
>>> index b98f751..c848f45 100644
>>> --- a/include/linux/iio/types.h
>>> +++ b/include/linux/iio/types.h
>>> @@ -34,6 +34,7 @@ enum iio_chan_type {
>>>  	IIO_STEPS,
>>>  	IIO_CALORIES,
>>>  	IIO_DISTANCE,
>>> +	IIO_SPEED,
>>>  };
>>>
>>>  enum iio_modifier {
>>>
> 

--
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



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Input]     [Linux Kernel]     [Linux SCSI]     [X.org]

  Powered by Linux