xref: /freebsd/share/man/man4/led.4 (revision 526b59ddc5465cf514bafd5c441814ae107a313a)
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