One-shot LED Trigger
====================

This is a LED trigger useful for signaling the user of an event where there are
no clear trap points to put standard led-on and led-off settings.  Using this
trigger, the application needs only to signal the trigger when an event has
happened, than the trigger turns the LED on and than keeps it off for a
specified amount of time.

This trigger is meant to be usable both for sporadic and dense events.  In the
first case, the trigger produces a clear single controlled blink for each
event, while in the latter it keeps blinking at constant rate, as to signal
that the events are arriving continuously.

A one-shot LED only stays in a constant state when there are no events.  An
additional "invert" property specifies if the LED has to stay off (normal) or
on (inverted) when not rearmed.

The trigger can be activated from user space on led class devices as shown
below:

  echo oneshot > trigger

This adds the following sysfs attributes to the LED:

  delay_on - specifies for how many milliseconds the LED has to stay at
             LED_FULL brightness after it has been armed.
             Default to 100 ms.

  delay_off - specifies for how many milliseconds the LED has to stay at
              LED_OFF brightness after it has been armed.
              Default to 100 ms.

  invert - reverse the blink logic.  If set to 0 (default) blink on for delay_on
           ms, then blink off for delay_off ms, leaving the LED normally off.  If
           set to 1, blink off for delay_off ms, then blink on for delay_on ms,
           leaving the LED normally on.
           Setting this value also immediately change the LED state.

  shot - write any non-empty string to signal an events, this starts a blink
         sequence if not already running.

Example use-case: network devices, initialization:

  echo oneshot > trigger # set trigger for this led
  echo 33 > delay_on     # blink at 1 / (33 + 33) Hz on continuous traffic
  echo 33 > delay_off

interface goes up:

  echo 1 > invert # set led as normally-on, turn the led on

packet received/transmitted:

  echo 1 > shot # led starts blinking, ignored if already blinking

interface goes down

  echo 0 > invert # set led as normally-off, turn the led off
