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