@jcoreio/iron-pi-ipc-codec
Version:
Encodes and decodes SPI bus messages exchanged with the Iron Pi
73 lines (52 loc) • 1.75 kB
JavaScript
;
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));
}