dial-a-device-node
Version:
dial-a-device-node is the device interface for dial-a-device
286 lines (186 loc) • 7.42 kB
JavaScript
(function (exports) {
function hex2a(hexx) {
var hex = hexx.toString();//force conversion
var str = '';
for (var i = 0; i < hex.length; i += 2)
str += String.fromCharCode(parseInt(hex.substr(i, 2), 16));
return str;
}
var device_model = {
customui: "",
bbplatform: [],
lastserialmessage: "",
usrled0: '0',
usrled1: '0',
usrled2: '0',
usrled3: '0',
serialstatus: false,
serialport: "",
serialbaud: "",
serialdatabit: 8,
serialparity: "none",
serialstopbit: 1,
seriallinebreak: hex2a('0D'),
serialsuffix: hex2a('0D'),
serialprefix: ""
};
exports.init = function (eventbus) {
if (typeof String.prototype.startsWith != 'function') {
String.prototype.startsWith = function (str) {
return this.indexOf(str) == 0;
};
}
eventbus.on("device.initialized", function () {
});
eventbus.on("device.heartbeat", function () {
var b = require('bonescript');
// device_model.bbplatform = b.getPlatform();
eventbus.emit('ui.update', {
"component": "bbplatform",
"model": device_model
});
eventbus.emit('device.assumeconnected');
});
eventbus.on("device.command", function (data) {
if (data.command == "retrievecustomui") {
var b = require('bonescript');
b.readTextFile('/var/lib/cloud9/customui.txt', function(x) {
if ((x.data != null) && (x.data.length != 0)) {
device_model.customui = x.data;
eventbus.emit('ui.update', {
"component": "bbplatform",
"model": device_model
});
device_model.customui = "";
}
});
}
if (data.command == "setled") {
var b = require('bonescript');
b.pinMode(data.led, b.OUTPUT);
b.digitalWrite(data.led, data.value);
if (data.led == "USR0") {
device_model.usrled0 = data.value
}
if (data.led == "USR1") {
device_model.usrled1 = data.value
}
if (data.led == "USR2") {
device_model.usrled2 = data.value
}
if (data.led == "USR3") {
device_model.usrled3 = data.value
}
}
if (data.command == "sendserial") {
localeventbus.emit("serial.immediatecommand", data.value);
}
if (data.command == "sendraw") {
localeventbus.emit("serial.sendraw", data.value);
}
if (data.command == "serialsetport") {
localeventbus.emit("serial.set.port", data.value);
device_model.serialport = data.value;
eventbus.emit('ui.update', {
"component": "all",
"model": device_model
});
}
if (data.command == "serialsetdatabit") {
localeventbus.emit("serial.set.databit", data.value);
device_model.serialdatabit = data.value;
eventbus.emit('ui.update', {
"component": "all",
"model": device_model
});
}
if (data.command == "serialsetparity") {
localeventbus.emit("serial.set.parity", data.value);
device_model.serialparity = data.value;
eventbus.emit('ui.update', {
"component": "all",
"model": device_model
});
}
if (data.command == "serialsetstopbit") {
localeventbus.emit("serial.set.stopbit", data.value);
device_model.serialstopbit = data.value;
eventbus.emit('ui.update', {
"component": "all",
"model": device_model
});
}
if (data.command == "serialsetbaud") {
localeventbus.emit("serial.set.baud", parseInt(data.value));
device_model.serialbaud = data.value;
eventbus.emit('ui.update', {
"component": "all",
"model": device_model
});
}
if (data.command == "serialsetlinebreak") {
localeventbus.emit("serial.set.linebreak", data.value);
device_model.seriallinebreak = data.value;
eventbus.emit('ui.update', {
"component": "all",
"model": device_model
});
}
if (data.command == "serialsetprefix") {
localeventbus.emit("serial.set.prefix", data.value);
device_model.serialprefix = data.value;
eventbus.emit('ui.update', {
"component": "all",
"model": device_model
});
}
if (data.command == "serialsetsuffix") {
localeventbus.emit("serial.set.suffix", data.value);
device_model.serialsuffix = data.value;
eventbus.emit('ui.update', {
"component": "all",
"model": device_model
});
}
if (data.command == "serialopen") {
localeventbus.emit("serial.connect", data.value);
eventbus.emit('ui.update', {
"component": "all",
"model": device_model
});
}
if (data.command == "serialclose") {
localeventbus.emit("serial.close", data.value);
eventbus.emit('ui.update', {
"component": "all",
"model": device_model
});
}
});
eventbus.on("serial.portopened", function(port, baud) {
device_model.serialstatus = true;
device_model.serialport = port;
device_model.serialbaud = baud;
});
eventbus.on("serial.portclosed", function(port) {
device_model.serialstatus = false;
});
eventbus.on("serial.retrieve", function (data) {
device_model.lastserialmessage = data;
eventbus.emit('ui.update', {
"component": "all",
"model": device_model
});
device_model.lastserialmessage = "";
});
eventbus.on("serial.rawretrieve", function (data) {
device_model.lastserialmessage = data;
eventbus.emit('ui.update', {
"component": "all",
"model": device_model
});
device_model.lastserialmessage = "";
});
eventbus.emit("device.initialized");
};
})(typeof exports == 'undefined' ? this['device'] = {} : exports);