Re: [Patch 0/4] IndustrialIO subsystem (ADCs, accelerometers etc)

Ben Dooks
2008-07-24T10:08:54Z

On Thu, Jul 24, 2008 at 11:44:36AM +0200, Eric Piel wrote:
> Henrique de Moraes Holschuh schreef:
>> On Wed, 23 Jul 2008, Jonathan Cameron wrote:
>>> The subsystem is now in a functional state with a small set of drivers:
>>>
>>> Max1363 (supports numerous Maxim i2c ADC's) (tested with max1363 and max1238 chips)
>>> - Uses a periodic timer to provide ring buffer mode.
>>> - All reads form these devices are scan modes so direct single element access
>>> is not provided.
>>> - Monitor mode on max1363 is not yet supported (need to do a bit debugging of
>>> the board I have so as to be able to test this).
>>>
>>> ST LIS3L02DQ - SPI accelerometer.
>>> - Uses a datardy interrupt to driver a software ring buffer.
>>> - Most functionality of this device is supported.
>>>
>>> VTI SCA3000 (tested with an e05)
>>> - Hardware ring buffer.
>>
>> I'd like to see something done to have the common parts of interfaces of the
>> same class (e.g. accelerometers) be standard. Like hwmon does with
>> temp#_input, etc.
>>
>> Otherwise you made it easier to write drivers, but did nothing to help
>> userspace to USE the drivers :-)
> Hi,
> I completely agree with Henrique. There already exist 3 accelerometer
> drivers in the kernel (and I'm writing a fourth on). What we are
> desperately in need of is a _user_ interface. So that a generic program
> can pop up and say "Oh, there is an accelerometer on this computer, I'll
> use it to detect free falls."
>
> IMHO, I think the ADC should have a much more specific and specialised
> (user and kernel) API corresponding to the accelerometers. Granted, you
> probably had in mind only the accelerometers for industrial usage, but
> it would be much better if the current accelerometer drivers had a
> reason to be ported to this new subsystem.
>
> In particular, what I think would be worthy would be:
> * Up to 3 pre-defined axes (X, Y, Z) - that's provided by your current
> version of industrialio
> * If the accelerometer is soldered on the computer, define once for all
> to which _physical_ movement corresponds which axis (eg: a laptop on its
> normal position going up has axis Z increasing).
> * Free fall event. Either it's hardware detected, or the accelerometer
> infrastructure will detect it in software.
> * For each axis, what is the maximum and minimum bound and the unit -
> Probably worthy for the whole ADC infrastructure
> * Joystick emulation (calibrated so that when the computer is not
> moving, all the values are at 0). All the current drivers have it.

I think if we're trying to make something that will cover a number
of device classes, we need to be more like HID and have a system
that reports and possibly records the following:

1) What data is possible to be returned from each event, with the
units, magnitude and any scale applied by the device sending.

2) Each event should be able to report a number of items, so that
if the sensor reports X/Y/Z in one go, there is just a single
event containing those values.

3) A well defined set of information that can be read (like #1)
that can provide details of the device and how it relates to
the environment it is in.

--
Ben (ben@fluff.org, http://www.fluff.org/)

'a smiley only costs 4 bytes'