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.\" 27526b59ddSPoul-Henning Kamp.Dd April 24, 2007 2874240656SPoul-Henning Kamp.Dt LED 4 2974240656SPoul-Henning Kamp.Os 3074240656SPoul-Henning Kamp.Sh NAME 3174240656SPoul-Henning Kamp.Nm led 329ae4f36dSRuslan Ermilov.Nd API for manipulating LED's, lamps and other annunciators 3374240656SPoul-Henning Kamp.Sh SYNOPSIS 3474240656SPoul-Henning Kamp.In dev/led/led.h 359ae4f36dSRuslan Ermilov.Pp 369ae4f36dSRuslan Ermilov.Fd "typedef void led_t(void *priv, int onoff);" 379e56be4cSSimon L. B. Nielsen.Ft struct cdev * 3851cb2d58SPoul-Henning Kamp.Fn led_create_state "led_t *func" "void *priv" "char const *name" "int state" 3951cb2d58SPoul-Henning Kamp.Ft struct cdev * 409ae4f36dSRuslan Ermilov.Fn led_create "led_t *func" "void *priv" "char const *name" 4174240656SPoul-Henning Kamp.Ft void 429e56be4cSSimon L. B. Nielsen.Fn led_destroy "struct cdev *" 4374240656SPoul-Henning Kamp.Sh DESCRIPTION 4474240656SPoul-Henning KampThe 4574240656SPoul-Henning Kamp.Nm 4674240656SPoul-Henning Kampdriver provides generic support for handling LEDs, lamps and other 47c48524c2SMike Pritchardannunciators. 4874240656SPoul-Henning Kamp.Pp 49c48524c2SMike PritchardThe hardware driver must supply a function to turn the annunciator on and off 5074240656SPoul-Henning Kampand the device 519ae4f36dSRuslan Ermilov.Fa name 529ae4f36dSRuslan Ermilovof the annunciator relative to 539ae4f36dSRuslan Ermilov.Pa /dev/led/ . 5474240656SPoul-Henning KampThe 559ae4f36dSRuslan Ermilov.Fa priv 5674240656SPoul-Henning Kampargument is passed back to this on/off function and can be used however 5774240656SPoul-Henning Kampthe hardware driver sees fit. 5874240656SPoul-Henning Kamp.Pp 599ae4f36dSRuslan ErmilovThe lamp can be controlled by opening and writing 609ae4f36dSRuslan Ermilov.Tn ASCII 619ae4f36dSRuslan Ermilovstrings to the 629ae4f36dSRuslan Ermilov.Pa /dev/led/bla 639ae4f36dSRuslan Ermilovdevice. 6474240656SPoul-Henning Kamp.Pp 659ae4f36dSRuslan ErmilovIn the following, we will use this special notation to indicate the resulting 66c48524c2SMike Pritchardoutput of the annunciator: 679ae4f36dSRuslan Ermilov.Pp 689ae4f36dSRuslan Ermilov.Bl -tag -width indent -offset indent -compact 6974240656SPoul-Henning Kamp.It Ic * 70c48524c2SMike PritchardThe annunciator is on for 1/10th second. 7174240656SPoul-Henning Kamp.It Ic _ 72c48524c2SMike PritchardThe annunciator is off for 1/10th second. 7374240656SPoul-Henning Kamp.El 7474240656SPoul-Henning Kamp.Pp 7574240656SPoul-Henning KampState can be set directly, and since the change happens immediately, 76c48524c2SMike Pritchardit is possible to flash the annunciator 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. 809ae4f36dSRuslan Ermilov.Pp 819ae4f36dSRuslan Ermilov.Bl -tag -width indent -offset indent -compact 8274240656SPoul-Henning Kamp.It Ic 0 83c48524c2SMike PritchardTurn the annunciator off immediately. 8474240656SPoul-Henning Kamp.It Ic 1 85c48524c2SMike PritchardTurn the annunciator on immediately. 8674240656SPoul-Henning Kamp.El 8774240656SPoul-Henning Kamp.Pp 889ae4f36dSRuslan ErmilovFlashing can be set with a given period. 899ae4f36dSRuslan ErmilovThe pattern continues endlessly. 909ae4f36dSRuslan Ermilov.Pp 919ae4f36dSRuslan Ermilov.Bl -tag -width indent -offset indent -compact 9274240656SPoul-Henning Kamp.It Ic f 9374240656SPoul-Henning Kamp_* 9474240656SPoul-Henning Kamp.It Ic f1 9574240656SPoul-Henning Kamp_* 9674240656SPoul-Henning Kamp.It Ic f2 9774240656SPoul-Henning Kamp__** 9874240656SPoul-Henning Kamp.It Ic f3 9974240656SPoul-Henning Kamp___*** 1009ae4f36dSRuslan Ermilov.It ... 10174240656SPoul-Henning Kamp.It Ic f9 10274240656SPoul-Henning Kamp_________********* 10374240656SPoul-Henning Kamp.El 10474240656SPoul-Henning Kamp.Pp 10574240656SPoul-Henning KampThree high-level commands are available: 1069ae4f36dSRuslan Ermilov.Bl -tag -width indent -offset indent 10774240656SPoul-Henning Kamp.It Ic d%d 1089ae4f36dSRuslan ErmilovNumbers. 1099ae4f36dSRuslan ErmilovEach digit is blinked out at 1/10th second, zero as ten pulses. 1109ae4f36dSRuslan ErmilovBetween digits a one second pause and after the last 11174240656SPoul-Henning Kampdigit a two second pause after which the sequence is repeated. 11274240656SPoul-Henning Kamp.It Ic s%s 1139ae4f36dSRuslan ErmilovString. 114c48524c2SMike PritchardThis gives full control over the annunciator. 1159ae4f36dSRuslan ErmilovLetters 1169ae4f36dSRuslan Ermilov.Ql A 1179ae4f36dSRuslan Ermilov.No ... 1189ae4f36dSRuslan Ermilov.Ql J 1199ae4f36dSRuslan Ermilovturn the annunciator on for from 1/10th to one full 12074240656SPoul-Henning Kampsecond. 1219ae4f36dSRuslan ErmilovLetters 1229ae4f36dSRuslan Ermilov.Ql a 1239ae4f36dSRuslan Ermilov.No ... 1249ae4f36dSRuslan Ermilov.Ql j 1259ae4f36dSRuslan Ermilovturn the annunciator off for 1/10th 126500ae5beSPoul-Henning Kampto one full second. 1271e48d031SPoul-Henning KampLetters 1281e48d031SPoul-Henning Kamp.Ql u 1291e48d031SPoul-Henning Kampand 1301e48d031SPoul-Henning Kamp.Ql U 1311eb95843SCeri Daviesturn the annunciator off and on respectively when the next 1321e48d031SPoul-Henning KampUTC second starts. 1339ae4f36dSRuslan ErmilovUnless terminated with a 1349ae4f36dSRuslan Ermilov.Ql \&. , 1359ae4f36dSRuslan Ermilovthe sequence is immediately repeated. 13674240656SPoul-Henning Kamp.It Ic m%s 1379ae4f36dSRuslan ErmilovMorse. 1389ae4f36dSRuslan Ermilov.Pp 1399ae4f36dSRuslan Ermilov.Bl -tag -width indent -offset indent -compact 1409ae4f36dSRuslan Ermilov.It Ql \&. 1419ae4f36dSRuslan Ermilovbecomes 1429ae4f36dSRuslan Ermilov.Ql _* 1439ae4f36dSRuslan Ermilov.It Ql - 1449ae4f36dSRuslan Ermilovbecomes 1459ae4f36dSRuslan Ermilov.Sq Li _*** 1469ae4f36dSRuslan Ermilov.It Ql "\ " 1479ae4f36dSRuslan Ermilovbecomes 1489ae4f36dSRuslan Ermilov.Sq Li __ 1499ae4f36dSRuslan Ermilov.It Ql \en 1509ae4f36dSRuslan Ermilovbecomes 1519ae4f36dSRuslan Ermilov.Sq Li ____ 1529ae4f36dSRuslan Ermilov.El 15374240656SPoul-Henning Kamp.El 15474240656SPoul-Henning Kamp.Pp 155121b0769SPoul-Henning KampThe sequence is repeated after a one second pause. 1569cbda590SRuslan Ermilov.Sh FILES 1579cbda590SRuslan Ermilov.Bl -tag -width ".Pa /dev/led/*" 1589cbda590SRuslan Ermilov.It Pa /dev/led/* 1599cbda590SRuslan Ermilov.El 16074240656SPoul-Henning Kamp.Sh EXAMPLES 1619ae4f36dSRuslan ErmilovA 1629ae4f36dSRuslan Ermilov.Sq Li d12 1639ae4f36dSRuslan Ermilovflashes the lamp 16474240656SPoul-Henning Kamp.Pp 1659ae4f36dSRuslan Ermilov.Dl *__________*_*______________________________ 16674240656SPoul-Henning Kamp.Pp 1679ae4f36dSRuslan ErmilovA 1689ae4f36dSRuslan Ermilov.Sq Li sAaAbBa 1699ae4f36dSRuslan Ermilovflashes 1709ae4f36dSRuslan Ermilov.Pp 17111232b9dSPoul-Henning Kamp.Dl *_*__**_ 1729ae4f36dSRuslan Ermilov.Pp 1739ae4f36dSRuslan Ermilov.Bd -literal 17474240656SPoul-Henning Kamp/usr/games/morse -l "Soekris rocks" > /dev/led/error 1759ae4f36dSRuslan Ermilov.Ed 17674240656SPoul-Henning Kamp.Sh SEE ALSO 17774240656SPoul-Henning Kamp.Xr morse 6 17874240656SPoul-Henning Kamp.Sh HISTORY 17974240656SPoul-Henning KampThe 18074240656SPoul-Henning Kamp.Nm 18174240656SPoul-Henning Kampdriver first appeared in 18274240656SPoul-Henning Kamp.Fx 5.2 . 18374240656SPoul-Henning Kamp.Sh AUTHORS 18474240656SPoul-Henning Kamp.An -nosplit 18574240656SPoul-Henning KampThis software was written by 18674240656SPoul-Henning Kamp.An Poul-Henning Kamp 18774240656SPoul-Henning Kamp.Aq phk@FreeBSD.org . 18874240656SPoul-Henning Kamp.Pp 18974240656SPoul-Henning KampThis manual page was written by 19074240656SPoul-Henning Kamp.An Sergey A. Osokin 19174240656SPoul-Henning Kamp.Aq osa@FreeBSD.org 19274240656SPoul-Henning Kampand 19374240656SPoul-Henning Kamp.An Poul-Henning Kamp 19474240656SPoul-Henning Kamp.Aq phk@FreeBSD.org . 195