UNPKG

@jcoreio/iron-pi-ipc-codec

Version:

Encodes and decodes SPI bus messages exchanged with the Iron Pi

73 lines (52 loc) 1.75 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.UNIX_SOCKET_PATH = undefined; var _protobufjs = require('protobufjs'); var _protobufjs2 = _interopRequireDefault(_protobufjs); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const UNIX_SOCKET_PATH = exports.UNIX_SOCKET_PATH = '/tmp/socket-iron-pi'; class IronPiIPCCodec { constructor() { const root = _protobufjs2.default.Root.fromJSON(require('./protocol.json')); const getType = type => root.lookupType(`IronPi.${type}`); this._MessageFromDriver = getType('MessageFromDriver'); this._MessageToDriver = getType('MessageToDriver'); } // Encode messages from driver encodeHardwareInfo(hardwareInfo) { return this._encodeMessageFromDriver({ hardwareInfo }); } encodeDeviceInputStates(deviceInputStates) { return this._encodeMessageFromDriver({ deviceInputStates }); } // Emcode messages to driver encodeSetOutputs(setOutputs) { return this._encodeMessageToDriver({ setOutputs }); } encodeSetLEDs(setLEDs) { return this._encodeMessageToDriver({ setLEDs }); } // Decode messages decodeMessageFromDriver(buf) { return decode(this._MessageFromDriver, buf); } decodeMessageToDriver(buf) { return decode(this._MessageToDriver, buf); } // Encode helpers _encodeMessageFromDriver(message) { return encode(this._MessageFromDriver, message); } _encodeMessageToDriver(message) { return encode(this._MessageToDriver, message); } } exports.default = IronPiIPCCodec; function encode(type, message) { return type.encode(message).finish(); } function decode(type, buf) { return type.toObject(type.decode(buf)); }