From cae755d948b6e483b5fdd5d1f3d2ff5ea3fc2cde Mon Sep 17 00:00:00 2001 From: dceejay Date: Thu, 29 Jan 2015 15:52:57 +0000 Subject: [PATCH] Cleanup closing down of Pi gpio nodes --- nodes/core/hardware/36-rpi-gpio.html | 6 +++- nodes/core/hardware/36-rpi-gpio.js | 42 ++++++---------------------- 2 files changed, 14 insertions(+), 34 deletions(-) diff --git a/nodes/core/hardware/36-rpi-gpio.html b/nodes/core/hardware/36-rpi-gpio.html index 31650b7c8..b613f7825 100644 --- a/nodes/core/hardware/36-rpi-gpio.html +++ b/nodes/core/hardware/36-rpi-gpio.html @@ -325,7 +325,11 @@ outputs:1, icon: "rpi.png", label: function() { - return this.name||"Pi Mouse" ; + var na = "Pi Mouse"; + if (this.butt === "1") { na += " Left"; } + if (this.butt === "2") { na += " Right"; } + if (this.butt === "4") { na += " Middle"; } + return this.name||na; }, labelStyle: function() { return this.name?"node_label_italic":""; diff --git a/nodes/core/hardware/36-rpi-gpio.js b/nodes/core/hardware/36-rpi-gpio.js index 1e7153dac..ce59354c5 100644 --- a/nodes/core/hardware/36-rpi-gpio.js +++ b/nodes/core/hardware/36-rpi-gpio.js @@ -87,10 +87,11 @@ module.exports = function(RED) { }); node.child.on('close', function (code) { - if (RED.settings.verbose) { node.log("ret: "+code+" :"); } node.child = null; node.running = false; node.status({fill:"red",shape:"circle",text:""}); + if (RED.settings.verbose) { node.log("closed"); } + node.done(); }); node.child.on('error', function (err) { @@ -104,15 +105,6 @@ module.exports = function(RED) { node.error("Invalid GPIO pin: "+node.pin); } - var wfi = function(done) { - if (!node.running) { - if (RED.settings.verbose) { node.log("end"); } - done(); - return; - } - setTimeout( function() { wfi(done); }, 333 ); - } - node.on("close", function(done) { node.status({fill:"red",shape:"circle",text:""}); delete pinsInUse[node.pin]; @@ -120,7 +112,7 @@ module.exports = function(RED) { node.child.stdin.write(" close "+node.pin); node.child.kill('SIGKILL'); } - wfi(done); + node.done = done; }); } RED.nodes.registerType("rpi-gpio in",GPIOInNode); @@ -177,10 +169,11 @@ module.exports = function(RED) { }); node.child.on('close', function (code) { - if (RED.settings.verbose) { node.log("ret: "+code+" :"); } node.child = null; node.running = false; node.status({fill:"red",shape:"circle",text:""}); + if (RED.settings.verbose) { node.log("closed"); } + node.done(); }); node.child.on('error', function (err) { @@ -194,15 +187,6 @@ module.exports = function(RED) { node.error("Invalid GPIO pin: "+node.pin); } - var wfi = function(done) { - if (!node.running) { - if (RED.settings.verbose) { node.log("end"); } - done(); - return; - } - setTimeout( function() { wfi(done); }, 333 ); - } - node.on("close", function(done) { node.status({fill:"red",shape:"circle",text:""}); delete pinsInUse[node.pin]; @@ -210,7 +194,7 @@ module.exports = function(RED) { node.child.stdin.write(" close "+node.pin); node.child.kill('SIGKILL'); } - wfi(done); + node.done = done; }); } @@ -249,10 +233,11 @@ module.exports = function(RED) { }); node.child.on('close', function (code) { - if (RED.settings.verbose) { node.log("ret: "+code+" :"); } node.child = null; node.running = false; node.status({fill:"red",shape:"circle",text:""}); + if (RED.settings.verbose) { node.log("closed"); } + node.done(); }); node.child.on('error', function (err) { @@ -261,22 +246,13 @@ module.exports = function(RED) { else { node.log('error: ' + err); } }); - var wfi = function(done) { - if (!node.running) { - if (RED.settings.verbose) { node.log("end"); } - done(); - return; - } - setTimeout( function() { wfi(done); }, 333 ); - } - node.on("close", function(done) { node.status({fill:"red",shape:"circle",text:""}); if (node.child != null) { node.child.kill('SIGINT'); node.child = null; } - wfi(done()); + node.done = done; }); } RED.nodes.registerType("rpi-mouse",PiMouseNode);