174240656SPoul-Henning Kamp.\" Copyright (c) 2003 Sergey A. Osokin <osa@FreeBSD.org> 274240656SPoul-Henning Kamp.\" All rights reserved. 374240656SPoul-Henning Kamp.\" 474240656SPoul-Henning Kamp.\" Redistribution and use in source and binary forms, with or without 574240656SPoul-Henning Kamp.\" modification, are permitted provided that the following conditions 674240656SPoul-Henning Kamp.\" are met: 774240656SPoul-Henning Kamp.\" 1. Redistributions of source code must retain the above copyright 874240656SPoul-Henning Kamp.\" notice, this list of conditions and the following disclaimer. 974240656SPoul-Henning Kamp.\" 2. Redistributions in binary form must reproduce the above copyright 1074240656SPoul-Henning Kamp.\" notice, this list of conditions and the following disclaimer in the 1174240656SPoul-Henning Kamp.\" documentation and/or other materials provided with the distribution. 1274240656SPoul-Henning Kamp.\" 1374240656SPoul-Henning Kamp.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND 1474240656SPoul-Henning Kamp.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1574240656SPoul-Henning Kamp.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 1674240656SPoul-Henning Kamp.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE 1774240656SPoul-Henning Kamp.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 1874240656SPoul-Henning Kamp.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 1974240656SPoul-Henning Kamp.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2074240656SPoul-Henning Kamp.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2174240656SPoul-Henning Kamp.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2274240656SPoul-Henning Kamp.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2374240656SPoul-Henning Kamp.\" SUCH DAMAGE. 2474240656SPoul-Henning Kamp.\" 2574240656SPoul-Henning Kamp.\" $FreeBSD$ 2674240656SPoul-Henning Kamp.\" 2774240656SPoul-Henning Kamp.Dd November 3, 2003 2874240656SPoul-Henning Kamp.Dt LED 4 2974240656SPoul-Henning Kamp.Os 3074240656SPoul-Henning Kamp.Sh NAME 3174240656SPoul-Henning Kamp.Nm led 3281f403e4SPoul-Henning Kamp.Nd API for manipulating LED's, lamps and other announciators. 3374240656SPoul-Henning Kamp.Sh SYNOPSIS 3474240656SPoul-Henning Kamp.In dev/led/led.h 3574240656SPoul-Henning Kamp.Bd -literal 3674240656SPoul-Henning Kamptypedef void led_t(void *priv, int onoff); 3774240656SPoul-Henning Kamp.Ed 3874240656SPoul-Henning Kamp.Ft dev_t 39121b0769SPoul-Henning Kamp.Fo led_create 40121b0769SPoul-Henning Kamp.Fa "led_t *func" 41121b0769SPoul-Henning Kamp.Fa "void *priv" 42121b0769SPoul-Henning Kamp.Fa "char const *name" 43121b0769SPoul-Henning Kamp.Fc 4474240656SPoul-Henning Kamp.Ft void 45121b0769SPoul-Henning Kamp.Fo led_destroy 46121b0769SPoul-Henning Kamp.Fa "dev_t dev" 47121b0769SPoul-Henning Kamp.Fc 4874240656SPoul-Henning Kamp.Sh DESCRIPTION 4974240656SPoul-Henning KampThe 5074240656SPoul-Henning Kamp.Nm 5174240656SPoul-Henning Kampdriver provides generic support for handling LEDs, lamps and other 5274240656SPoul-Henning Kampannounciators. 5374240656SPoul-Henning Kamp.Pp 5474240656SPoul-Henning KampThe hardware driver must supply a function to turn the announciator on and off 5574240656SPoul-Henning Kampand the device 5674240656SPoul-Henning Kamp.Va name 5774240656SPoul-Henning Kampof the announciator relative "/dev/led/". 5874240656SPoul-Henning KampThe 5974240656SPoul-Henning Kamp.Va priv 6074240656SPoul-Henning Kampargument is passed back to this on/off function and can be used however 6174240656SPoul-Henning Kampthe hardware driver sees fit. 6274240656SPoul-Henning Kamp.Pp 6374240656SPoul-Henning KampThe lamp can be controlled by opening and writing ascii strings to the 6474240656SPoul-Henning Kamp"/dev/led/bla" device. 6574240656SPoul-Henning Kamp.Pp 6674240656SPoul-Henning KampIn the following we will use this special notation to indicate the resulting 6774240656SPoul-Henning Kampoutput of the announciator: 6874240656SPoul-Henning Kamp.Bl -tag -width Ds -offset indent -compact 6974240656SPoul-Henning Kamp.It Ic * 7074240656SPoul-Henning KampThe announciator is on for 1/10th secound. 7174240656SPoul-Henning Kamp.It Ic _ 7274240656SPoul-Henning KampThe announciator is off for 1/10th secound. 7374240656SPoul-Henning Kamp.El 7474240656SPoul-Henning Kamp.Pp 7574240656SPoul-Henning KampState can be set directly, and since the change happens immediately, 7674240656SPoul-Henning Kampit is possible to flash the announciator with very short periods and 7774240656SPoul-Henning Kampsynchronize it with program events. 7874240656SPoul-Henning KampIt should be noted that there is a non-trivial overhead, so this may 7974240656SPoul-Henning Kampnot be usable for benchmarking or measuring short intervals. 8074240656SPoul-Henning Kamp.Bl -tag -width Ds -offset indent -compact 8174240656SPoul-Henning Kamp.It Ic 0 8274240656SPoul-Henning KampTurn the announciator off immediately. 8374240656SPoul-Henning Kamp.It Ic 1 8474240656SPoul-Henning KampTurn the announciator on immediately. 8574240656SPoul-Henning Kamp.El 8674240656SPoul-Henning Kamp.Pp 8774240656SPoul-Henning KampFlashing can be set with a given period. The pattern continues endlessly. 8874240656SPoul-Henning Kamp.Bl -tag -width Ds -offset indent -compact 8974240656SPoul-Henning Kamp.It Ic f 9074240656SPoul-Henning Kamp_* 9174240656SPoul-Henning Kamp.It Ic f1 9274240656SPoul-Henning Kamp_* 9374240656SPoul-Henning Kamp.It Ic f2 9474240656SPoul-Henning Kamp__** 9574240656SPoul-Henning Kamp.It Ic f3 9674240656SPoul-Henning Kamp___*** 9774240656SPoul-Henning Kamp.It Ic ... 9874240656SPoul-Henning Kamp.It Ic f9 9974240656SPoul-Henning Kamp_________********* 10074240656SPoul-Henning Kamp.El 10174240656SPoul-Henning Kamp.Pp 10274240656SPoul-Henning KampThree high-level commands are available: 10374240656SPoul-Henning Kamp.Bl -tag -width Ds -offset indent -compact 10474240656SPoul-Henning Kamp.It Ic d%d 10574240656SPoul-Henning Kampnumbers. Each digit is blinked out at 1/10th second, zero as 10674240656SPoul-Henning Kampten pulses. Between digits a one second pause and after the last 10774240656SPoul-Henning Kampdigit a two second pause after which the sequence is repeated. 10874240656SPoul-Henning Kamp.It Ic s%s 10974240656SPoul-Henning Kampstring. 11074240656SPoul-Henning KampThis gives full control over the announciator. 1119491306aSPoul-Henning KampLetters 'A' ... 'J' turns the announciator on for from 1/10th to one full 11274240656SPoul-Henning Kampsecond. 1139491306aSPoul-Henning KampLetters 'a' ... 'j' turns the announciator off for 1/10th 114500ae5beSPoul-Henning Kampto one full second. 115500ae5beSPoul-Henning KampUnless terminated with a '.', the sequence is immediately repeated. 11674240656SPoul-Henning Kamp.It Ic m%s 11774240656SPoul-Henning Kampmorse. 11874240656SPoul-Henning Kamp.Bl -tag -width Ds -offset indent -compact 11974240656SPoul-Henning Kamp.It Ic '.' 12074240656SPoul-Henning Kampbecomes _* 12174240656SPoul-Henning Kamp.It Ic '-' 12274240656SPoul-Henning Kampbecomes _*** 12374240656SPoul-Henning Kamp.It Ic ' ' 12474240656SPoul-Henning Kampbecomes __ 12574240656SPoul-Henning Kamp.It Ic '\en' 12674240656SPoul-Henning Kampbecomes ____ 12774240656SPoul-Henning Kamp.El 12874240656SPoul-Henning Kamp.Pp 12974240656SPoul-Henning Kamp.El 130121b0769SPoul-Henning KampThe sequence is repeated after a one second pause. 13174240656SPoul-Henning Kamp.Sh EXAMPLES 13274240656SPoul-Henning KampA 'd12' flashes the lamp 13374240656SPoul-Henning Kamp.Bd -literal -offset indent 13474240656SPoul-Henning Kamp*__________*_*______________________________ 13574240656SPoul-Henning Kamp.Ed 13674240656SPoul-Henning Kamp.Pp 13774240656SPoul-Henning KampA 'sAaAbBa' flashes 13874240656SPoul-Henning Kamp.Bd -literal -offset indent 13974240656SPoul-Henning Kamp_*_**__* 14074240656SPoul-Henning Kamp.Ed 14174240656SPoul-Henning Kamp.Pp 14274240656SPoul-Henning Kamp/usr/games/morse -l "Soekris rocks" > /dev/led/error 14374240656SPoul-Henning Kamp.Sh FILES 14474240656SPoul-Henning Kamp.Bl -tag -width /dev/led/* 14574240656SPoul-Henning Kamp.It Pa /dev/led/* 14674240656SPoul-Henning Kamp.El 14774240656SPoul-Henning Kamp.Sh SEE ALSO 14874240656SPoul-Henning Kamp.Xr morse 6 14974240656SPoul-Henning Kamp.Sh HISTORY 15074240656SPoul-Henning KampThe 15174240656SPoul-Henning Kamp.Nm 15274240656SPoul-Henning Kampdriver first appeared in 15374240656SPoul-Henning Kamp.Fx 5.2 . 15474240656SPoul-Henning Kamp.Sh AUTHORS 15574240656SPoul-Henning Kamp.An -nosplit 15674240656SPoul-Henning KampThis software was written by 15774240656SPoul-Henning Kamp.An Poul-Henning Kamp 15874240656SPoul-Henning Kamp.Aq phk@FreeBSD.org . 15974240656SPoul-Henning Kamp.Pp 16074240656SPoul-Henning KampThis manual page was written by 16174240656SPoul-Henning Kamp.An Sergey A. Osokin 16274240656SPoul-Henning Kamp.Aq osa@FreeBSD.org 16374240656SPoul-Henning Kampand 16474240656SPoul-Henning Kamp.An Poul-Henning Kamp 16574240656SPoul-Henning Kamp.Aq phk@FreeBSD.org . 166