UNPKG

opengpio

Version:

A performant c++ based general purpose GPIO controller for linux devices. OpenGPIO is written using libgpiod, line & chip based abstractions.

38 lines (31 loc) 956 B
import lib from '../lib'; import { CleanupCallback, Gpio, PinGetter, PinSetter } from '../types'; export enum Direction { Input, Output, } export class Pin { private getter: PinGetter = () => false; private setter: PinSetter = () => {}; private cleanup: CleanupCallback = () => {}; constructor(private readonly gpio: Gpio, private readonly direction: Direction) { if (direction === Direction.Input) { const [getter, cleanup] = lib.input(gpio.chip, gpio.line) this.getter = getter; this.cleanup = cleanup; }else if (direction === Direction.Output) { const [setter, cleanup] = lib.output(gpio.chip, gpio.line) this.setter = setter; this.cleanup = cleanup; } } stop() { this.cleanup(); } get value() { return this.getter(); } set value(value:boolean) { this.setter(value); } }