Re: "advanced" LED controllers

From: NeilBrown
Date: Wed Feb 25 2015 - 18:56:12 EST


On Wed, 25 Feb 2015 22:49:41 +0100 Pavel Machek <pavel@xxxxxx> wrote:

> On Mon 2015-02-23 16:58:36, Felipe Balbi wrote:
> > On Mon, Feb 23, 2015 at 11:34:57PM +0100, Pavel Machek wrote:
> > > On Thu 2015-02-19 15:14:24, Felipe Balbi wrote:
> > > > Hi,
> > > >
> > > > Do we have support for LED controllers which can handle patterns of
> > > > different kinds ? I mean, currently, if we have an LED controller such
> > > > as TPIC2810 [1] which can control 8 different leds and each LED
> > > > corresponds to one bit on register 0x44, we could control leds by just
> > > > "playing" a wave file on the controller and create easy patterns with
> > > > that.
>
> > > > [1] http://www.ti.com/product/tpic2810
> > > >
> > > > ps: tpic2810 is probably the simplest example, lp551, lp5523 and others
> > > > have even more advanced pattern engines which can even handle RGB leds.
> > >
> > > Well... some more advanced pattern engines can actually run code, up
> > > to and including prime number computation. So yes, this is complex,
> > > and how to handle it nicely is a question...
> > >
> > > I have "notcc" to compile for that.
> >
> > right, the point is that this is a solution which only works with lp5523
> > and IMO linux led subsystem should do a little more for such devices.
>
> Well, question is what we want. Possibilities I see:
>
> 1) We won't support all the features, just some common subset. Kernel
> will get commands for LED controller and translate them. Question is
> what reasonable subset is, then.
>
> I guess "delay", "set led brightness to X", "jump" would be minimal
> shared command set. lp5523 can do also "slowly increase/decrease
> brightness to X" (I believe we should support that one), arithmetics,
> conditional jumps, and communications between 3 threads.
>
> 2) We want to support all the features. I guess that would mean doing
> compilation in userspace, and having "compiler" for each led
> controller. Having common source code would still be nice.
>
> Pavel

All (most) current options for controlling LEDs are based on what a user
might want, rather than what the hardware can provide.

I think it would be good to keep that approach, but add more "interesting"
functions which each hardware can support in whichever way suits it best.

So "ramp_blink" which allow a ramp on/off time to be specified would be
useful.

"audio_meter" which allows a particular sound card (or output or something)
to be specified would also be useful. You could also specify a what volume
the LED saturates.
Then if you set each led on a given controller to saturate at different level
and to use the same sound source, then you could get the "graphic equaliser"
effect.

Maybe 'blinking' should have a 'synchronise' setting to that a bunch of LEDs
can be synchonised so you can create a "cylon eye" effect.

i.e. don't focus on the low-level 'what can we provide' but on the high level
"what might users want".

NeilBrown

Attachment: pgpOxYVNX5xWV.pgp
Description: OpenPGP digital signature