UNPKG

js-gpiozero

Version:

A simple interface to GPIO devices with Raspberry Pi using nodejs

51 lines (46 loc) 1.45 kB
const exc = require('../exc.js'); /** * Represents a single device of any type; GPIO-based, SPI-based, I2C-based, * etc. This is the base class of the device hierarchy. It defines the * basic services applicable to all devices (specifically the {@link Device#is_active|is_active} * property, the {@link Device#value|value} property, and the {@link Device#close|close} method). * * @class */ function Device() { // eslint-disable-next-line no-empty-function } /** * Returns a value representing the device's state. Frequently, this is a * boolean value, or a number between 0 and 1 but some devices use larger * ranges (e.g. -1 to +1) and composite devices usually use tuples to * return the states of all their subordinate components. */ Device.prototype.value = function() { throw new exc.NotImplementedError(); }; /** * Returns `true` if the device is currently active and `false` * otherwise. This property is usually derived from `value` attribute. Unlike * `value` attribute, this is *always* a boolean. */ Device.prototype.is_active = function() { return (this.value !== undefined); }; /** * Internal method to check if device is available. * * @private */ Device.prototype._check_open = function() { if (this.closed()) { throw new exc.DeviceClosed('is closed or uninitialized'); } }; /** * @abstract */ Device.prototype.close = function() { return; }; exports.Device = Device;