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