diff --git a/hardware/intel/mraa-gpio-led.html b/hardware/intel/mraa-gpio-led.html
index 2462791a..985774fa 100644
--- a/hardware/intel/mraa-gpio-led.html
+++ b/hardware/intel/mraa-gpio-led.html
@@ -7,6 +7,7 @@
defaults: {
name: {value:""},
pin: {value:"", required: true},
+ color: {value:"", required: true},
},
inputs:1,
outputs:0,
@@ -56,14 +57,21 @@
+
+
+
+
+
+
diff --git a/hardware/intel/mraa-gpio-led.js b/hardware/intel/mraa-gpio-led.js
index d809c64d..d9a4ce08 100644
--- a/hardware/intel/mraa-gpio-led.js
+++ b/hardware/intel/mraa-gpio-led.js
@@ -3,71 +3,75 @@ module.exports = function(RED) {
function LEDNode(n) {
RED.nodes.createNode(this, n);
this.pin = Number(n.pin);
- this.led0 = new m.Led(0); /*user-led1-green*/
- this.led1 = new m.Led(1); /*user-led1-red*/
- this.led2 = new m.Led(2); /*user-led2-green*/
- this.led3 = new m.Led(3); /*user-led2-red*/
+ this.color = Number(n.color);
+
+ if (this.pin == 0) {
+ this.user1_green = new m.Led(0); /*user-led1-green*/
+ this.user1_red = new m.Led(1); /*user-led1-red*/
+ } if(this.pin == 1) {
+ this.user2_green = new m.Led(2); /*user-led2-green*/
+ this.user2_red = new m.Led(3); /*user-led2-red*/
+ }
+
+ function set_led_green(led_green, led_red) {
+ led_green.setBrightness(1);
+ led_red.setBrightness(0);
+ }
+
+ function set_led_red(led_green, led_red) {
+ led_green.setBrightness(0);
+ led_red.setBrightness(1);
+ }
+
+ function set_led_orange(led_green, led_red) {
+ led_green.setBrightness(1);
+ led_red.setBrightness(1);
+ }
+
+ function turn_off_led(led_green, led_red) {
+ led_green.setBrightness(0);
+ led_red.setBrightness(0);
+ }
+
this.on("input", function(msg) {
+ if (this.pin == 0) {
+ this.led_green = this.user1_green;
+ this.led_red = this.user1_red;
+ }
+ else if (this.pin == 1) {
+ this.led_green = this.user2_green;
+ this.led_red = this.user2_red;
+ }
+
if (msg.payload == "1") {
- switch(this.pin)
- {
- case 0: /*User0 Led Green*/
- this.led0.setBrightness(1);
+ switch(this.color) {
+ case 0:
+ set_led_green(this.led_green, this.led_red);
break;
- case 1: /*User0 Led Red*/
- this.led1.setBrightness(1);
+ case 1:
+ set_led_red(this.led_green, this.led_red);
break;
- case 2: /*User0 Orange*/
- this.led0.setBrightness(1);
- this.led1.setBrightness(1);
- break;
- case 3: /*User1 Led Green*/
- this.led2.setBrightness(1);
- break;
- case 4: /*User1 Led Red*/
- this.led3.setBrightness(1);
- break;
- case 5: /*User1 Orange*/
- this.led2.setBrightness(1);
- this.led3.setBrightness(1);
+ case 2:
+ set_led_orange(this.led_green, this.led_red);
break;
default:
+ console.log("unexpected");
break;
}
}
else {
- switch(this.pin)
- {
- case 0: /*User1 Led Green*/
- this.led0.setBrightness(0);
- break;
- case 1: /*User1 Led Red*/
- this.led1.setBrightness(0);
- break;
- case 2: /*User1 Orange*/
- this.led0.setBrightness(0);
- this.led1.setBrightness(0);
- break;
- case 3: /*User2 Led Green*/
- this.led2.setBrightness(0);
- break;
- case 4: /*User2 Led Red*/
- this.led3.setBrightness(0);
- break;
- case 5: /*User2 Orange*/
- this.led2.setBrightness(0);
- this.led3.setBrightness(0);
- break;
- default:
- break;
- }
+ turn_off_led(this.led_green, this.led_red);
}
});
+
this.on('close', function() {
- this.led0.close();
- this.led1.close();
- this.led2.close();
- this.led3.close();
+ if (this.pin == 0) {
+ this.user1_green.close();
+ this.user1_red.close();
+ } if(this.pin == 1) {
+ this.user2_green.close();
+ this.user2_red.close();
+ }
});
}
RED.nodes.registerType("mraa-gpio-led", LEDNode);