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.\" 25526b59ddSPoul-Henning Kamp.Dd April 24, 2007 2674240656SPoul-Henning Kamp.Dt LED 4 2774240656SPoul-Henning Kamp.Os 2874240656SPoul-Henning Kamp.Sh NAME 2974240656SPoul-Henning Kamp.Nm led 309ae4f36dSRuslan Ermilov.Nd API for manipulating LED's, lamps and other annunciators 3174240656SPoul-Henning Kamp.Sh SYNOPSIS 3274240656SPoul-Henning Kamp.In dev/led/led.h 339ae4f36dSRuslan Ermilov.Pp 349ae4f36dSRuslan Ermilov.Fd "typedef void led_t(void *priv, int onoff);" 359e56be4cSSimon L. B. Nielsen.Ft struct cdev * 3651cb2d58SPoul-Henning Kamp.Fn led_create_state "led_t *func" "void *priv" "char const *name" "int state" 3751cb2d58SPoul-Henning Kamp.Ft struct cdev * 389ae4f36dSRuslan Ermilov.Fn led_create "led_t *func" "void *priv" "char const *name" 3974240656SPoul-Henning Kamp.Ft void 409e56be4cSSimon L. B. Nielsen.Fn led_destroy "struct cdev *" 4174240656SPoul-Henning Kamp.Sh DESCRIPTION 4274240656SPoul-Henning KampThe 4374240656SPoul-Henning Kamp.Nm 4474240656SPoul-Henning Kampdriver provides generic support for handling LEDs, lamps and other 45c48524c2SMike Pritchardannunciators. 4674240656SPoul-Henning Kamp.Pp 47c48524c2SMike PritchardThe hardware driver must supply a function to turn the annunciator on and off 4874240656SPoul-Henning Kampand the device 499ae4f36dSRuslan Ermilov.Fa name 509ae4f36dSRuslan Ermilovof the annunciator relative to 519ae4f36dSRuslan Ermilov.Pa /dev/led/ . 5274240656SPoul-Henning KampThe 539ae4f36dSRuslan Ermilov.Fa priv 5474240656SPoul-Henning Kampargument is passed back to this on/off function and can be used however 5574240656SPoul-Henning Kampthe hardware driver sees fit. 5674240656SPoul-Henning Kamp.Pp 579ae4f36dSRuslan ErmilovThe lamp can be controlled by opening and writing 589ae4f36dSRuslan Ermilov.Tn ASCII 599ae4f36dSRuslan Ermilovstrings to the 609ae4f36dSRuslan Ermilov.Pa /dev/led/bla 619ae4f36dSRuslan Ermilovdevice. 6274240656SPoul-Henning Kamp.Pp 639ae4f36dSRuslan ErmilovIn the following, we will use this special notation to indicate the resulting 64c48524c2SMike Pritchardoutput of the annunciator: 659ae4f36dSRuslan Ermilov.Pp 669ae4f36dSRuslan Ermilov.Bl -tag -width indent -offset indent -compact 6774240656SPoul-Henning Kamp.It Ic * 68c48524c2SMike PritchardThe annunciator is on for 1/10th second. 6974240656SPoul-Henning Kamp.It Ic _ 70c48524c2SMike PritchardThe annunciator is off for 1/10th second. 7174240656SPoul-Henning Kamp.El 7274240656SPoul-Henning Kamp.Pp 7374240656SPoul-Henning KampState can be set directly, and since the change happens immediately, 74c48524c2SMike Pritchardit is possible to flash the annunciator with very short periods and 7574240656SPoul-Henning Kampsynchronize it with program events. 7674240656SPoul-Henning KampIt should be noted that there is a non-trivial overhead, so this may 7774240656SPoul-Henning Kampnot be usable for benchmarking or measuring short intervals. 789ae4f36dSRuslan Ermilov.Pp 799ae4f36dSRuslan Ermilov.Bl -tag -width indent -offset indent -compact 8074240656SPoul-Henning Kamp.It Ic 0 81c48524c2SMike PritchardTurn the annunciator off immediately. 8274240656SPoul-Henning Kamp.It Ic 1 83c48524c2SMike PritchardTurn the annunciator on immediately. 8474240656SPoul-Henning Kamp.El 8574240656SPoul-Henning Kamp.Pp 869ae4f36dSRuslan ErmilovFlashing can be set with a given period. 879ae4f36dSRuslan ErmilovThe pattern continues endlessly. 889ae4f36dSRuslan Ermilov.Pp 899ae4f36dSRuslan Ermilov.Bl -tag -width indent -offset indent -compact 9074240656SPoul-Henning Kamp.It Ic f 9174240656SPoul-Henning Kamp_* 9274240656SPoul-Henning Kamp.It Ic f1 9374240656SPoul-Henning Kamp_* 9474240656SPoul-Henning Kamp.It Ic f2 9574240656SPoul-Henning Kamp__** 9674240656SPoul-Henning Kamp.It Ic f3 9774240656SPoul-Henning Kamp___*** 989ae4f36dSRuslan Ermilov.It ... 9974240656SPoul-Henning Kamp.It Ic f9 10074240656SPoul-Henning Kamp_________********* 10174240656SPoul-Henning Kamp.El 10274240656SPoul-Henning Kamp.Pp 10374240656SPoul-Henning KampThree high-level commands are available: 1049ae4f36dSRuslan Ermilov.Bl -tag -width indent -offset indent 10574240656SPoul-Henning Kamp.It Ic d%d 1069ae4f36dSRuslan ErmilovNumbers. 1079ae4f36dSRuslan ErmilovEach digit is blinked out at 1/10th second, zero as ten pulses. 1089ae4f36dSRuslan ErmilovBetween digits a one second pause and after the last 10974240656SPoul-Henning Kampdigit a two second pause after which the sequence is repeated. 11074240656SPoul-Henning Kamp.It Ic s%s 1119ae4f36dSRuslan ErmilovString. 112c48524c2SMike PritchardThis gives full control over the annunciator. 1139ae4f36dSRuslan ErmilovLetters 1149ae4f36dSRuslan Ermilov.Ql A 1159ae4f36dSRuslan Ermilov.No ... 1169ae4f36dSRuslan Ermilov.Ql J 1179ae4f36dSRuslan Ermilovturn the annunciator on for from 1/10th to one full 11874240656SPoul-Henning Kampsecond. 1199ae4f36dSRuslan ErmilovLetters 1209ae4f36dSRuslan Ermilov.Ql a 1219ae4f36dSRuslan Ermilov.No ... 1229ae4f36dSRuslan Ermilov.Ql j 1239ae4f36dSRuslan Ermilovturn the annunciator off for 1/10th 124500ae5beSPoul-Henning Kampto one full second. 1251e48d031SPoul-Henning KampLetters 1261e48d031SPoul-Henning Kamp.Ql u 1271e48d031SPoul-Henning Kampand 1281e48d031SPoul-Henning Kamp.Ql U 1291eb95843SCeri Daviesturn the annunciator off and on respectively when the next 1301e48d031SPoul-Henning KampUTC second starts. 1319ae4f36dSRuslan ErmilovUnless terminated with a 1329ae4f36dSRuslan Ermilov.Ql \&. , 1339ae4f36dSRuslan Ermilovthe sequence is immediately repeated. 13474240656SPoul-Henning Kamp.It Ic m%s 1359ae4f36dSRuslan ErmilovMorse. 1369ae4f36dSRuslan Ermilov.Pp 1379ae4f36dSRuslan Ermilov.Bl -tag -width indent -offset indent -compact 1389ae4f36dSRuslan Ermilov.It Ql \&. 1399ae4f36dSRuslan Ermilovbecomes 1409ae4f36dSRuslan Ermilov.Ql _* 1419ae4f36dSRuslan Ermilov.It Ql - 1429ae4f36dSRuslan Ermilovbecomes 1439ae4f36dSRuslan Ermilov.Sq Li _*** 1449ae4f36dSRuslan Ermilov.It Ql "\ " 1459ae4f36dSRuslan Ermilovbecomes 1469ae4f36dSRuslan Ermilov.Sq Li __ 1479ae4f36dSRuslan Ermilov.It Ql \en 1489ae4f36dSRuslan Ermilovbecomes 1499ae4f36dSRuslan Ermilov.Sq Li ____ 1509ae4f36dSRuslan Ermilov.El 15174240656SPoul-Henning Kamp.El 15274240656SPoul-Henning Kamp.Pp 153121b0769SPoul-Henning KampThe sequence is repeated after a one second pause. 1549cbda590SRuslan Ermilov.Sh FILES 1559cbda590SRuslan Ermilov.Bl -tag -width ".Pa /dev/led/*" 1569cbda590SRuslan Ermilov.It Pa /dev/led/* 1579cbda590SRuslan Ermilov.El 15874240656SPoul-Henning Kamp.Sh EXAMPLES 1599ae4f36dSRuslan ErmilovA 1609ae4f36dSRuslan Ermilov.Sq Li d12 1619ae4f36dSRuslan Ermilovflashes the lamp 16274240656SPoul-Henning Kamp.Pp 1639ae4f36dSRuslan Ermilov.Dl *__________*_*______________________________ 16474240656SPoul-Henning Kamp.Pp 1659ae4f36dSRuslan ErmilovA 1669ae4f36dSRuslan Ermilov.Sq Li sAaAbBa 1679ae4f36dSRuslan Ermilovflashes 1689ae4f36dSRuslan Ermilov.Pp 16911232b9dSPoul-Henning Kamp.Dl *_*__**_ 1709ae4f36dSRuslan Ermilov.Bd -literal 171*11d9aa67SColin Percival/usr/bin/morse -l "Soekris rocks" > /dev/led/error 1729ae4f36dSRuslan Ermilov.Ed 17374240656SPoul-Henning Kamp.Sh SEE ALSO 17474240656SPoul-Henning Kamp.Xr morse 6 17574240656SPoul-Henning Kamp.Sh HISTORY 17674240656SPoul-Henning KampThe 17774240656SPoul-Henning Kamp.Nm 17874240656SPoul-Henning Kampdriver first appeared in 17974240656SPoul-Henning Kamp.Fx 5.2 . 18074240656SPoul-Henning Kamp.Sh AUTHORS 18174240656SPoul-Henning Kamp.An -nosplit 18274240656SPoul-Henning KampThis software was written by 1836c899950SBaptiste Daroussin.An Poul-Henning Kamp Aq Mt phk@FreeBSD.org . 18474240656SPoul-Henning Kamp.Pp 18574240656SPoul-Henning KampThis manual page was written by 1866c899950SBaptiste Daroussin.An Sergey A. Osokin Aq Mt osa@FreeBSD.org 18774240656SPoul-Henning Kampand 1886c899950SBaptiste Daroussin.An Poul-Henning Kamp Aq Mt phk@FreeBSD.org . 189