From f833736dd6675ade030006872c4be93cf9ce1281 Mon Sep 17 00:00:00 2001 From: TekuConcept Date: Tue, 21 Mar 2017 21:24:57 -0600 Subject: [PATCH 1/2] Added Hardware Shutdown Promise --- BoneCentral/Brain/CppInterface/Factory.js | 2 +- BoneCentral/Brain/CppInterface/PowerManager.js | 4 +++- BoneCentral/Brain/Sockets/index.js | 15 ++++++++++++--- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/BoneCentral/Brain/CppInterface/Factory.js b/BoneCentral/Brain/CppInterface/Factory.js index 2727448..f1a36d2 100644 --- a/BoneCentral/Brain/CppInterface/Factory.js +++ b/BoneCentral/Brain/CppInterface/Factory.js @@ -30,7 +30,7 @@ module.exports = (function() { }; Factory.prototype.createPowerManager = function () { - return new PowerManager(dispatcherSocket.Input); + return new PowerManager(this.dispatcherSocket.Input, this.dispatcherSocket.OnExit); }; Factory.prototype.createThrustController = function () { diff --git a/BoneCentral/Brain/CppInterface/PowerManager.js b/BoneCentral/Brain/CppInterface/PowerManager.js index d10e7e6..e34f494 100644 --- a/BoneCentral/Brain/CppInterface/PowerManager.js +++ b/BoneCentral/Brain/CppInterface/PowerManager.js @@ -1,7 +1,8 @@ module.exports = (function(){ - function PowerManager(cmdOut) { + function PowerManager(cmdOut, onExit) { this._cmdOut = cmdOut; + this._onExit = onExit; } PowerManager.prototype.turnOnEscs = function(){ @@ -22,6 +23,7 @@ module.exports = (function(){ PowerManager.prototype.exit = function () { this._cmdOut.write("exit\n"); + return this._onExit; }; return PowerManager; diff --git a/BoneCentral/Brain/Sockets/index.js b/BoneCentral/Brain/Sockets/index.js index 4882c3a..d50c89b 100644 --- a/BoneCentral/Brain/Sockets/index.js +++ b/BoneCentral/Brain/Sockets/index.js @@ -3,15 +3,24 @@ */ var Streams = require('stream'); -var Net = require('net'); +var Net = require('net'); +var $ = require('../Utilities').Promises module.exports.createSocket = function (port) { - var input = new Streams.PassThrough(); + var input = new Streams.PassThrough(); var output = new Streams.PassThrough(); + var onExit = $.Deferred(); Net.createServer(function (socket) { _handleClient(socket, input, output); + socket.on("close", function() { + onExit.resolve(); + }); }).listen(port); - return {Input: input, Output: output}; + return { + Input: input, + Output: output, + OnExit: onExit.promise() + }; }; var _handleClient = function (socket, input, output) { From 008e8c9ebc95bba5f38b9b398be6df5c2e1fbeca Mon Sep 17 00:00:00 2001 From: TekuConcept Date: Mon, 20 Mar 2017 21:59:59 +0000 Subject: [PATCH 2/2] Added Hardware Connect Promise --- BoneCentral/Brain/CppInterface/Factory.js | 2 +- BoneCentral/Brain/CppInterface/PowerManager.js | 10 +++++++--- BoneCentral/Brain/Sockets/index.js | 15 +++++++++++---- 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/BoneCentral/Brain/CppInterface/Factory.js b/BoneCentral/Brain/CppInterface/Factory.js index f1a36d2..f07ccf2 100644 --- a/BoneCentral/Brain/CppInterface/Factory.js +++ b/BoneCentral/Brain/CppInterface/Factory.js @@ -30,7 +30,7 @@ module.exports = (function() { }; Factory.prototype.createPowerManager = function () { - return new PowerManager(this.dispatcherSocket.Input, this.dispatcherSocket.OnExit); + return new PowerManager(this.dispatcherSocket.Input, this.dispatcherSocket.Events); }; Factory.prototype.createThrustController = function () { diff --git a/BoneCentral/Brain/CppInterface/PowerManager.js b/BoneCentral/Brain/CppInterface/PowerManager.js index e34f494..fd9d71b 100644 --- a/BoneCentral/Brain/CppInterface/PowerManager.js +++ b/BoneCentral/Brain/CppInterface/PowerManager.js @@ -1,8 +1,8 @@ module.exports = (function(){ - function PowerManager(cmdOut, onExit) { + function PowerManager(cmdOut, events) { this._cmdOut = cmdOut; - this._onExit = onExit; + this._events = events; } PowerManager.prototype.turnOnEscs = function(){ @@ -20,10 +20,14 @@ module.exports = (function(){ PowerManager.prototype.turnOffImu = function () { this._cmdOut.write("turnOffImuSensor\n"); }; + + PowerManager.prototype.connect = function() { + return this._events.OnConnect; + } PowerManager.prototype.exit = function () { this._cmdOut.write("exit\n"); - return this._onExit; + return this._events.OnExit; }; return PowerManager; diff --git a/BoneCentral/Brain/Sockets/index.js b/BoneCentral/Brain/Sockets/index.js index d50c89b..a2da922 100644 --- a/BoneCentral/Brain/Sockets/index.js +++ b/BoneCentral/Brain/Sockets/index.js @@ -7,19 +7,26 @@ var Net = require('net'); var $ = require('../Utilities').Promises module.exports.createSocket = function (port) { - var input = new Streams.PassThrough(); - var output = new Streams.PassThrough(); - var onExit = $.Deferred(); + var input = new Streams.PassThrough(); + var output = new Streams.PassThrough(); + var onExit = $.Deferred(); + var onConnect = $.Deferred(); + Net.createServer(function (socket) { _handleClient(socket, input, output); socket.on("close", function() { onExit.resolve(); }); + onConnect.resolve(); }).listen(port); + return { Input: input, Output: output, - OnExit: onExit.promise() + Events: { + OnConnect: onConnect.promise(), + OnExit: onExit.promise() + } }; };