UNPKG

js-gpiozero

Version:

A simple interface to GPIO devices with Raspberry Pi using nodejs

48 lines (41 loc) 1.73 kB
const GPIODevice = require('../devices/GPIODevice.js').GPIODevice; const inherit = require('../tools.js').inherit; exports.InputDevice = InputDevice; /** * Represents a generic GPIO input device. * This class extends {@link GPIODevice} to add facilities common to GPIO * input devices. The constructor adds the optional *pull_up* parameter to * specify how the pin should be pulled by the internal resistors. The * {@link InputDevice#is_active|is_active} property is adjusted accordingly so that * ``true`` still means active regardless of the {@link InputDevice#pull_up|pullup} setting. * * @param {int | Pin} pin - The GPIO pin (in Broadcom numbering) that the device is connected to. * @param {boolean} [pullup] - If ``true``, the pin will be pulled high with an internal resistor. If * ``false`` (the default), the pin will be pulled low. * @class * @augments GPIODevice * @throws GPIODeviceError */ function InputDevice (pin, pullup) { GPIODevice.call(this, pin); if (typeof pullup === 'undefined') { pullup = false; } const pull = pullup ? 'up' : 'down'; if (this._pin.pull() !== pull) { this._pin.pull(pull); } this._active_state = !pullup; this._inactive_state = pullup; } InputDevice.prototype = inherit(GPIODevice.prototype); InputDevice.prototype.constructor = InputDevice; /** * If ``true``, the device uses a pull-up resistor to set the GPIO pin "high" by default. */ InputDevice.prototype.pull_up = function () { return (this._pin.pull() === 'up'); }; InputDevice.prototype.toString = function () { return '<gpiozero.InputDevice object on pin ' + this._pin + ', pull_up=' + this.pull_up() + ', is_active=' + this.is_active() + '>'; }