xref: /dflybsd-src/share/man/man4/led.4 (revision e92835134993dfda5aebadb12a9bae3a605f8b5e)
1*e9283513SSascha Wildner.\" Copyright (c) 2003 Sergey A. Osokin <osa@FreeBSD.org>
2*e9283513SSascha Wildner.\" All rights reserved.
3*e9283513SSascha Wildner.\"
4*e9283513SSascha Wildner.\" Redistribution and use in source and binary forms, with or without
5*e9283513SSascha Wildner.\" modification, are permitted provided that the following conditions
6*e9283513SSascha Wildner.\" are met:
7*e9283513SSascha Wildner.\" 1. Redistributions of source code must retain the above copyright
8*e9283513SSascha Wildner.\"    notice, this list of conditions and the following disclaimer.
9*e9283513SSascha Wildner.\" 2. Redistributions in binary form must reproduce the above copyright
10*e9283513SSascha Wildner.\"    notice, this list of conditions and the following disclaimer in the
11*e9283513SSascha Wildner.\"    documentation and/or other materials provided with the distribution.
12*e9283513SSascha Wildner.\"
13*e9283513SSascha Wildner.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND
14*e9283513SSascha Wildner.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15*e9283513SSascha Wildner.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16*e9283513SSascha Wildner.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE
17*e9283513SSascha Wildner.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18*e9283513SSascha Wildner.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19*e9283513SSascha Wildner.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20*e9283513SSascha Wildner.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21*e9283513SSascha Wildner.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22*e9283513SSascha Wildner.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23*e9283513SSascha Wildner.\" SUCH DAMAGE.
24*e9283513SSascha Wildner.\"
25*e9283513SSascha Wildner.\" $FreeBSD: head/share/man/man4/led.4 267938 2014-06-26 21:46:14Z bapt $
26*e9283513SSascha Wildner.\"
27*e9283513SSascha Wildner.Dd October 19, 2014
28*e9283513SSascha Wildner.Dt LED 4
29*e9283513SSascha Wildner.Os
30*e9283513SSascha Wildner.Sh NAME
31*e9283513SSascha Wildner.Nm led
32*e9283513SSascha Wildner.Nd API for manipulating LEDs, lamps and other annunciators
33*e9283513SSascha Wildner.Sh SYNOPSIS
34*e9283513SSascha Wildner.In dev/misc/led/led.h
35*e9283513SSascha Wildner.Pp
36*e9283513SSascha Wildner.Fd "typedef void led_t(void *priv, int onoff);"
37*e9283513SSascha Wildner.Ft struct cdev *
38*e9283513SSascha Wildner.Fn led_create_state "led_t *func" "void *priv" "char const *name" "int state"
39*e9283513SSascha Wildner.Ft struct cdev *
40*e9283513SSascha Wildner.Fn led_create "led_t *func" "void *priv" "char const *name"
41*e9283513SSascha Wildner.Ft void
42*e9283513SSascha Wildner.Fn led_destroy "struct cdev *"
43*e9283513SSascha Wildner.Sh DESCRIPTION
44*e9283513SSascha WildnerThe
45*e9283513SSascha Wildner.Nm
46*e9283513SSascha Wildnerdriver provides generic support for handling LEDs, lamps and other
47*e9283513SSascha Wildnerannunciators.
48*e9283513SSascha Wildner.Pp
49*e9283513SSascha WildnerThe hardware driver must supply a function to turn the annunciator on and off
50*e9283513SSascha Wildnerand the device
51*e9283513SSascha Wildner.Fa name
52*e9283513SSascha Wildnerof the annunciator relative to
53*e9283513SSascha Wildner.Pa /dev/led/ .
54*e9283513SSascha WildnerThe
55*e9283513SSascha Wildner.Fa priv
56*e9283513SSascha Wildnerargument is passed back to this on/off function and can be used however
57*e9283513SSascha Wildnerthe hardware driver sees fit.
58*e9283513SSascha Wildner.Pp
59*e9283513SSascha WildnerThe lamp can be controlled by opening and writing
60*e9283513SSascha Wildner.Tn ASCII
61*e9283513SSascha Wildnerstrings to the
62*e9283513SSascha Wildner.Pa /dev/led/bla
63*e9283513SSascha Wildnerdevice.
64*e9283513SSascha Wildner.Pp
65*e9283513SSascha WildnerIn the following, we will use this special notation to indicate the resulting
66*e9283513SSascha Wildneroutput of the annunciator:
67*e9283513SSascha Wildner.Pp
68*e9283513SSascha Wildner.Bl -tag -width indent -offset indent -compact
69*e9283513SSascha Wildner.It Ic *
70*e9283513SSascha WildnerThe annunciator is on for 1/10th second.
71*e9283513SSascha Wildner.It Ic _
72*e9283513SSascha WildnerThe annunciator is off for 1/10th second.
73*e9283513SSascha Wildner.El
74*e9283513SSascha Wildner.Pp
75*e9283513SSascha WildnerState can be set directly, and since the change happens immediately,
76*e9283513SSascha Wildnerit is possible to flash the annunciator with very short periods and
77*e9283513SSascha Wildnersynchronize it with program events.
78*e9283513SSascha WildnerIt should be noted that there is a non-trivial overhead, so this may
79*e9283513SSascha Wildnernot be usable for benchmarking or measuring short intervals.
80*e9283513SSascha Wildner.Pp
81*e9283513SSascha Wildner.Bl -tag -width indent -offset indent -compact
82*e9283513SSascha Wildner.It Ic 0
83*e9283513SSascha WildnerTurn the annunciator off immediately.
84*e9283513SSascha Wildner.It Ic 1
85*e9283513SSascha WildnerTurn the annunciator on immediately.
86*e9283513SSascha Wildner.El
87*e9283513SSascha Wildner.Pp
88*e9283513SSascha WildnerFlashing can be set with a given period.
89*e9283513SSascha WildnerThe pattern continues endlessly.
90*e9283513SSascha Wildner.Pp
91*e9283513SSascha Wildner.Bl -tag -width indent -offset indent -compact
92*e9283513SSascha Wildner.It Ic f
93*e9283513SSascha Wildner_*
94*e9283513SSascha Wildner.It Ic f1
95*e9283513SSascha Wildner_*
96*e9283513SSascha Wildner.It Ic f2
97*e9283513SSascha Wildner__**
98*e9283513SSascha Wildner.It Ic f3
99*e9283513SSascha Wildner___***
100*e9283513SSascha Wildner.It ...
101*e9283513SSascha Wildner.It Ic f9
102*e9283513SSascha Wildner_________*********
103*e9283513SSascha Wildner.El
104*e9283513SSascha Wildner.Pp
105*e9283513SSascha WildnerThree high-level commands are available:
106*e9283513SSascha Wildner.Bl -tag -width indent -offset indent
107*e9283513SSascha Wildner.It Ic d%d
108*e9283513SSascha WildnerNumbers.
109*e9283513SSascha WildnerEach digit is blinked out at 1/10th second, zero as ten pulses.
110*e9283513SSascha WildnerBetween digits a one second pause and after the last
111*e9283513SSascha Wildnerdigit a two second pause after which the sequence is repeated.
112*e9283513SSascha Wildner.It Ic s%s
113*e9283513SSascha WildnerString.
114*e9283513SSascha WildnerThis gives full control over the annunciator.
115*e9283513SSascha WildnerLetters
116*e9283513SSascha Wildner.Ql A
117*e9283513SSascha Wildner.No ...
118*e9283513SSascha Wildner.Ql J
119*e9283513SSascha Wildnerturn the annunciator on for from 1/10th to one full
120*e9283513SSascha Wildnersecond.
121*e9283513SSascha WildnerLetters
122*e9283513SSascha Wildner.Ql a
123*e9283513SSascha Wildner.No ...
124*e9283513SSascha Wildner.Ql j
125*e9283513SSascha Wildnerturn the annunciator off for 1/10th
126*e9283513SSascha Wildnerto one full second.
127*e9283513SSascha WildnerLetters
128*e9283513SSascha Wildner.Ql u
129*e9283513SSascha Wildnerand
130*e9283513SSascha Wildner.Ql U
131*e9283513SSascha Wildnerturn the annunciator off and on respectively when the next
132*e9283513SSascha WildnerUTC second starts.
133*e9283513SSascha WildnerUnless terminated with a
134*e9283513SSascha Wildner.Ql \&. ,
135*e9283513SSascha Wildnerthe sequence is immediately repeated.
136*e9283513SSascha Wildner.It Ic m%s
137*e9283513SSascha WildnerMorse.
138*e9283513SSascha Wildner.Pp
139*e9283513SSascha Wildner.Bl -tag -width indent -offset indent -compact
140*e9283513SSascha Wildner.It Ql \&.
141*e9283513SSascha Wildnerbecomes
142*e9283513SSascha Wildner.Ql _*
143*e9283513SSascha Wildner.It Ql -
144*e9283513SSascha Wildnerbecomes
145*e9283513SSascha Wildner.Sq Li _***
146*e9283513SSascha Wildner.It Ql "\ "
147*e9283513SSascha Wildnerbecomes
148*e9283513SSascha Wildner.Sq Li __
149*e9283513SSascha Wildner.It Ql \en
150*e9283513SSascha Wildnerbecomes
151*e9283513SSascha Wildner.Sq Li ____
152*e9283513SSascha Wildner.El
153*e9283513SSascha Wildner.El
154*e9283513SSascha Wildner.Pp
155*e9283513SSascha WildnerThe sequence is repeated after a one second pause.
156*e9283513SSascha Wildner.Sh FILES
157*e9283513SSascha Wildner.Bl -tag -width ".Pa /dev/led/*"
158*e9283513SSascha Wildner.It Pa /dev/led/*
159*e9283513SSascha Wildner.El
160*e9283513SSascha Wildner.Sh EXAMPLES
161*e9283513SSascha WildnerA
162*e9283513SSascha Wildner.Sq Li d12
163*e9283513SSascha Wildnerflashes the lamp
164*e9283513SSascha Wildner.Pp
165*e9283513SSascha Wildner.Dl *__________*_*______________________________
166*e9283513SSascha Wildner.Pp
167*e9283513SSascha WildnerA
168*e9283513SSascha Wildner.Sq Li sAaAbBa
169*e9283513SSascha Wildnerflashes
170*e9283513SSascha Wildner.Pp
171*e9283513SSascha Wildner.Dl *_*__**_
172*e9283513SSascha Wildner.Bd -literal
173*e9283513SSascha Wildner/usr/games/morse -l "Soekris rocks" > /dev/led/error
174*e9283513SSascha Wildner.Ed
175*e9283513SSascha Wildner.Sh SEE ALSO
176*e9283513SSascha Wildner.Xr morse 6
177*e9283513SSascha Wildner.Sh HISTORY
178*e9283513SSascha WildnerThe
179*e9283513SSascha Wildner.Nm
180*e9283513SSascha Wildnerdriver first appeared in
181*e9283513SSascha Wildner.Fx 5.2 .
182*e9283513SSascha Wildner.Sh AUTHORS
183*e9283513SSascha Wildner.An -nosplit
184*e9283513SSascha WildnerThis software was written by
185*e9283513SSascha Wildner.An Poul-Henning Kamp Aq Mt phk@FreeBSD.org .
186*e9283513SSascha Wildner.Pp
187*e9283513SSascha WildnerThis manual page was written by
188*e9283513SSascha Wildner.An Sergey A. Osokin Aq Mt osa@FreeBSD.org
189*e9283513SSascha Wildnerand
190*e9283513SSascha Wildner.An Poul-Henning Kamp Aq Mt phk@FreeBSD.org .
191