xref: /netbsd-src/share/man/man3lua/gpio.3lua (revision 59be07b1072c336f34d3a47be3b642030de1a2d9)
1*59be07b1Sabhinav.\"	$NetBSD: gpio.3lua,v 1.5 2016/06/11 15:17:34 abhinav Exp $
216ffcab8Smbalmer.\"
38905acc6Smbalmer.\" Copyright (c) 2013, 2014 Marc Balmer <mbalmer@NetBSD.org>.
48905acc6Smbalmer.\" All rights reserved.
516ffcab8Smbalmer.\"
616ffcab8Smbalmer.\" Redistribution and use in source and binary forms, with or without
716ffcab8Smbalmer.\" modification, are permitted provided that the following conditions
816ffcab8Smbalmer.\" are met:
916ffcab8Smbalmer.\" 1. Redistributions of source code must retain the above copyright
1016ffcab8Smbalmer.\"    notice, this list of conditions and the following disclaimer.
1116ffcab8Smbalmer.\" 2. Redistributions in binary form must reproduce the above copyright
1216ffcab8Smbalmer.\"    notice, this list of conditions and the following disclaimer in the
1316ffcab8Smbalmer.\"    documentation and/or other materials provided with the distribution.
1416ffcab8Smbalmer.\" 3. Neither the name of the University nor the names of its contributors
1516ffcab8Smbalmer.\"    may be used to endorse or promote products derived from this software
1616ffcab8Smbalmer.\"    without specific prior written permission.
1716ffcab8Smbalmer.\"
1816ffcab8Smbalmer.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
1916ffcab8Smbalmer.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
2016ffcab8Smbalmer.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2116ffcab8Smbalmer.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
2216ffcab8Smbalmer.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2316ffcab8Smbalmer.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2416ffcab8Smbalmer.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2516ffcab8Smbalmer.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2616ffcab8Smbalmer.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2716ffcab8Smbalmer.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
2816ffcab8Smbalmer.\" SUCH DAMAGE.
2916ffcab8Smbalmer.\"
3016ffcab8Smbalmer.\"
31*59be07b1Sabhinav.Dd January 7, 2014
3216ffcab8Smbalmer.Dt GPIO 3lua
3316ffcab8Smbalmer.Os
3416ffcab8Smbalmer.Sh NAME
3516ffcab8Smbalmer.Nm gpio
3616ffcab8Smbalmer.Nd access
3716ffcab8Smbalmer.Xr gpio 4
3816ffcab8Smbalmerpins from Lua
3916ffcab8Smbalmer.Sh SYNOPSIS
408905acc6Smbalmer.Cd "local gpio = require 'gpio'"
4116ffcab8Smbalmer.Pp
4216ffcab8Smbalmer.Bl -tag -width XXXX -compact
4316ffcab8Smbalmer.It Dv gpiodev = gpio.open(path)
4416ffcab8Smbalmer.It Dv pins = gpio.info(gpiodev)
4516ffcab8Smbalmer.It Dv gpio.close(gpiodev)
4616ffcab8Smbalmer.It Dv gpio.set(gpiodev, pin, flags)
4716ffcab8Smbalmer.It Dv gpio.unset(gpiodev, pin)
4816ffcab8Smbalmer.It Dv state = gpio.read(gpiodev, pin)
4916ffcab8Smbalmer.It Dv oldstate = gpio.write(gpiodev, pin, state)
5016ffcab8Smbalmer.It Dv gpio.toggle(gpiodev, pin)
5116ffcab8Smbalmer.It Dv gpio.attach(gpiodev, driver, offset, mask [, flags])
5216ffcab8Smbalmer.El
5316ffcab8Smbalmer.Sh DESCRIPTION
5416ffcab8SmbalmerThe
5516ffcab8Smbalmer.Nm
5610538f71SmbalmerLua binding provides access to a
5716ffcab8Smbalmer.Xr gpio 4
5816ffcab8Smbalmerdevice using the
5916ffcab8Smbalmer.Xr ioctl 2
6016ffcab8Smbalmerinterface.
6116ffcab8Smbalmer.Pp
6216ffcab8Smbalmer.Bl -tag -width XXXX -compact
6316ffcab8Smbalmer.It Dv gpiodev = gpio.open(path)
6416ffcab8SmbalmerOpen the gpio device and return an object to access its pins.
6516ffcab8Smbalmer.Pp
6616ffcab8Smbalmer.It Dv pins = gpio.info(gpiodev)
6716ffcab8SmbalmerReturns the number of pins.
6816ffcab8SmbalmerAs with all remaining functions, this can also be called using the :
6916ffcab8Smbalmernotation, i.e. as
7016ffcab8Smbalmer.Em gpiodev:info() .
7116ffcab8Smbalmer.Pp
7216ffcab8Smbalmer.It Dv gpio.close(gpiodev)
7316ffcab8SmbalmerClose the gpio device.
7416ffcab8Smbalmer.Pp
7516ffcab8Smbalmer.It Dv gpio.set(gpiodev, pin, flags)
7616ffcab8SmbalmerSet gpio pin flags.
7716ffcab8SmbalmerNote that the pin number in this and all remaining functions is zero based and
7816ffcab8Smbalmernot one based, this to avoid confusion with tools like
7916ffcab8Smbalmer.Xr gpioctl 8
8016ffcab8Smbalmerwhich also number pins starting at zero.
8116ffcab8SmbalmerThe following flags are defined:
8216ffcab8Smbalmer.Pp
8316ffcab8Smbalmer.Bl -tag -width XXXX -compact
8416ffcab8Smbalmer.It Dv gpio.PIN_INPUT
8516ffcab8SmbalmerPin is an input.
8616ffcab8Smbalmer.Pp
8716ffcab8Smbalmer.It Dv gpio.PIN_OUTPUT
8816ffcab8SmbalmerPin is an output.
8916ffcab8Smbalmer.Pp
9016ffcab8Smbalmer.It Dv gpio.PIN_INOUT
9116ffcab8SmbalmerPin is birectional.
9216ffcab8Smbalmer.Pp
9316ffcab8Smbalmer.It Dv gpio.PIN_OPENDRAIN
9416ffcab8SmbalmerPin is an open-drain output.
9516ffcab8Smbalmer.Pp
9616ffcab8Smbalmer.It Dv gpio.PIN_PUSHPULL
9716ffcab8SmbalmerPin is a push-pull output.
9816ffcab8Smbalmer.Pp
9916ffcab8Smbalmer.It Dv gpio.PIN_TRISTATE
10016ffcab8SmbalmerPin is tri-state (output disabled).
10116ffcab8Smbalmer.Pp
10216ffcab8Smbalmer.It Dv gpio.PIN_PULLUP
10316ffcab8SmbalmerPin has an internal pull-up enabled.
10416ffcab8Smbalmer.Pp
10516ffcab8Smbalmer.It Dv gpio.PIN_PULLDOWN
10616ffcab8SmbalmerPin has an internal pull-down enabled.
10716ffcab8Smbalmer.Pp
10816ffcab8Smbalmer.It Dv gpio.PIN_INVIN
10916ffcab8SmbalmerInvert input.
11016ffcab8Smbalmer.Pp
11116ffcab8Smbalmer.It Dv gpio.PIN_INVOUT
11216ffcab8SmbalmerInvert output.
11316ffcab8Smbalmer.Pp
11416ffcab8Smbalmer.It Dv gpio.PIN_USER
11516ffcab8SmbalmerPin accessible by users.
11616ffcab8Smbalmer.Pp
11716ffcab8Smbalmer.It Dv gpio.PIN_PULSATE
11816ffcab8SmbalmerPulsate pin at a hardware set frequency.
11916ffcab8Smbalmer.Pp
12016ffcab8Smbalmer.It Dv gpio.PIN_SET
12116ffcab8SmbalmerPin is set.
12216ffcab8Smbalmer.El
12316ffcab8Smbalmer.Pp
12416ffcab8Smbalmer.It Dv gpio.unset(gpiodev, pin)
12516ffcab8SmbalmerUnset gpio pin.
12616ffcab8Smbalmer.Pp
12716ffcab8Smbalmer.It Dv stat = gpio.read(gpiodev, pin)
12816ffcab8SmbalmerRead the current pin state.
12916ffcab8Smbalmer.Pp
13016ffcab8Smbalmer.It Dv oldstate = gpio.write(gpiodev, pin, state)
13116ffcab8SmbalmerWrite the pin state returning the old state.
13216ffcab8SmbalmerThe following states are defined:
13316ffcab8Smbalmer.Pp
13416ffcab8Smbalmer.Bl -tag -width XXXX -compact
13516ffcab8Smbalmer.It Dv gpio.PIN_LOW
13616ffcab8SmbalmerPin is in the low state.
13716ffcab8Smbalmer.Pp
13816ffcab8Smbalmer.It Dv gpio.PIN_HIGH
13916ffcab8SmbalmerPin is in the high state.
14016ffcab8Smbalmer.El
14116ffcab8Smbalmer.Pp
14216ffcab8Smbalmer.It Dv gpio.toggle(gpiodev, pin)
14316ffcab8SmbalmerToggle pin state.
14416ffcab8Smbalmer.Pp
14516ffcab8Smbalmer.It Dv gpio.attach(gpiodev, driver, offset, mask [, flags])
14616ffcab8SmbalmerAttach a device driver with offset, mask, and optional flags at a pin.
14716ffcab8Smbalmer.El
14816ffcab8Smbalmer.Sh EXAMPLES
14916ffcab8SmbalmerThe following example code opens
15016ffcab8Smbalmer.Pa /dev/gpio0
15116ffcab8Smbalmerand prints all pin values:
15216ffcab8Smbalmer.Bd -literal
15316ffcab8Smbalmerlocal gpio = require 'gpio'
15416ffcab8Smbalmer
15516ffcab8Smbalmergpiodev = gpio.open('/dev/gpio0')
15616ffcab8Smbalmer
15716ffcab8Smbalmerlocal npins = gpiodev:info()
15816ffcab8Smbalmer
15916ffcab8Smbalmerfor n = 1, npins do
16016ffcab8Smbalmer	print('pin ' .. n .. ': ' .. gpiodev:read(n - 1))
16116ffcab8Smbalmerend
16216ffcab8Smbalmer.Ed
16316ffcab8Smbalmer.Sh SEE ALSO
16416ffcab8Smbalmer.Xr lua 1 ,
16516ffcab8Smbalmer.Xr luac 1 ,
16616ffcab8Smbalmer.Xr intro 3lua ,
16716ffcab8Smbalmer.Xr gpio 4
16816ffcab8Smbalmer.Sh HISTORY
1697da1f424SwizA
17016ffcab8Smbalmer.Nm
17116ffcab8Smbalmermanual appeared in
17216ffcab8Smbalmer.Nx 7.0 .
17316ffcab8Smbalmer.Sh AUTHORS
17416ffcab8Smbalmer.An -nosplit
17516ffcab8SmbalmerThe
17616ffcab8Smbalmer.Nm
17716ffcab8SmbalmerLua binding was written by
17816ffcab8Smbalmer.An Marc Balmer Aq Mt mbalmer@NetBSD.org .
179