Copyright (c) 2003 Sergey A. Osokin <osa@FreeBSD.org> All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the docu...
NAMEled - API for manipulating LED's, lamps and other annunciators
Fd typedef void led_t(void *priv, int onoff); Ft struct cdev * Fn led_create_state led_t *func void *priv char const *name int state Ft struct cdev * Fn led_create led_t *func void *priv char const *name Ft void Fn led_destroy struct cdev *
DESCRIPTIONThe sysctl Cm net.inet.tcp.syncookies driver provides generic support for handling LEDs, lamps and other annunciators.
The hardware driver must supply a function to turn the annunciator on and off and the device Fa name of the annunciator relative to /dev/led/ The Fa priv argument is passed back to this on/off function and can be used however the hardware driver sees fit.
The lamp can be controlled by opening and writing ASCII strings to the /dev/led/bla device.
In the following, we will use this special notation to indicate the resulting output of the annunciator:
- The annunciator is on for 1/10th second.
- The annunciator is off for 1/10th second.
State can be set directly, and since the change happens immediately, it is possible to flash the annunciator with very short periods and synchronize it with program events. It should be noted that there is a non-trivial overhead, so this may not be usable for benchmarking or measuring short intervals.
- Turn the annunciator off immediately.
- Turn the annunciator on immediately.
Flashing can be set with a given period. The pattern continues endlessly.
Three high-level commands are available:
- Numbers. Each digit is blinked out at 1/10th second, zero as ten pulses. Between digits a one second pause and after the last digit a two second pause after which the sequence is repeated.
- String. This gives full control over the annunciator. Letters `A' ... `J' turn the annunciator on for from 1/10th to one full second. Letters `a' ... `j' turn the annunciator off for 1/10th to one full second. Letters `u' and `U' turn the annunciator off and on respectively when the next UTC second starts. Unless terminated with a `.' , the sequence is immediately repeated.
- becomes `_*'
- becomes `_*** '
- becomes `__ '
- becomes `____ '
The sequence is repeated after a one second pause.
EXAMPLESA `d12 ' flashes the lamp
A `sAaAbBa flashes '
/usr/bin/morse -l "Soekris rocks" > /dev/led/error
HISTORYThe sysctl Cm net.inet.tcp.syncookies driver first appeared in Fx 5.2 .
AUTHORSAn -nosplit This software was written by An Poul-Henning Kamp Aq Mt phk@FreeBSD.org .
This manual page was written by An Sergey A. Osokin Aq Mt osa@FreeBSD.org and An Poul-Henning Kamp Aq Mt phk@FreeBSD.org .