Gpio provides high level access to GPIO pins through the Linux /sys/class/gpio interface.

See Gpio chapter for details.


Void close()

Close this port.


Void listen(Str mode, Duration? timeout, |Int callback)

Register an interrupt handler to listen for GPIO output changes. The mode should be one of the strings "rising", "falling" or "both" to indicate which edge(s) the ISR is to be triggered on. Invoke the given callback function when a change occurs. This method will block listening until close is called.

If timeout is non-null, then callback will be invoked at every duration of timeout regardless of whether a state change occurred. If timeout is null, this method blocks until a state change is detected.

Note that after calling listen, you will receive an initial callback with the state of the pin. This prevents the race condition between getting the initial state of the pin and turning on interrupts.


const static Gpio open(Int pin, Str dir)

Open a GPIO port with given pin and direction, where dir is "in" or "out".


Int read()

Read the current value of the pin.


This write(Int val)

Write the given value to the GPIO. The GPIO should be configured as an output. Valid values are 0 for logic low, or 1 for logic high. Other non-zero values will result in logic high being output. Returns this.