From 25d7d668ef1123d1182ece9e6c2ccd4ddc3d3c03 Mon Sep 17 00:00:00 2001 From: Ivan Mikhaylov Date: Tue, 6 Sep 2022 12:19:28 +0000 Subject: [PATCH] Add IOT2050 board into mraa Intel nodes (#940) * mraa-gpio-led: add led This patch introduces LED node in GPIO category. Signed-off-by: zengchao Signed-off-by: Jan Kiszka Signed-off-by: Ivan Mikhaylov * mraa-gpio-ain: add iot2050 board Add IOT2050 board in list of possible boards. Signed-off-by: zengchao Signed-off-by: Jan Kiszka Signed-off-by: Ivan Mikhaylov * mraa-gpio-dout: add iot2050 board Add IOT2050 board into list of possible boards. Signed-off-by: zengchao Signed-off-by: Jan Kiszka Signed-off-by: Ivan Mikhaylov * mraa-gpio-pwm: add iot2050 board Add IOT2050 board into list of possible boards. Signed-off-by: zengchao Signed-off-by: Jan Kiszka Signed-off-by: Ivan Mikhaylov * mraa-gpio: clean up on close for ain, pwm, dout Required as nodejs will only lazily delete the node objects, and we may race with the next user requesting the resources. Signed-off-by: Jan Kiszka Signed-off-by: Ivan Mikhaylov * mraa-gpio-din: add USER button Signed-off-by: Jan Kiszka Signed-off-by: zengchao Signed-off-by: Jan Kiszka Signed-off-by: Ivan Mikhaylov Co-authored-by: Jan Kiszka --- hardware/intel/mraa-gpio-ain.html | 5 +- hardware/intel/mraa-gpio-ain.js | 5 ++ hardware/intel/mraa-gpio-din.html | 1 + hardware/intel/mraa-gpio-dout.html | 5 +- hardware/intel/mraa-gpio-dout.js | 1 + hardware/intel/mraa-gpio-led.html | 77 ++++++++++++++++++++++++++++ hardware/intel/mraa-gpio-led.js | 82 ++++++++++++++++++++++++++++++ hardware/intel/mraa-gpio-pwm.html | 32 ++++++++---- hardware/intel/mraa-gpio-pwm.js | 1 + hardware/intel/package.json | 3 +- 10 files changed, 197 insertions(+), 15 deletions(-) create mode 100644 hardware/intel/mraa-gpio-led.html create mode 100644 hardware/intel/mraa-gpio-led.js diff --git a/hardware/intel/mraa-gpio-ain.html b/hardware/intel/mraa-gpio-ain.html index 93d5a5ae..7dfa3d98 100644 --- a/hardware/intel/mraa-gpio-ain.html +++ b/hardware/intel/mraa-gpio-ain.html @@ -1,7 +1,7 @@ diff --git a/hardware/intel/mraa-gpio-dout.js b/hardware/intel/mraa-gpio-dout.js index 020db558..6bb833d3 100644 --- a/hardware/intel/mraa-gpio-dout.js +++ b/hardware/intel/mraa-gpio-dout.js @@ -29,6 +29,7 @@ module.exports = function(RED) { }); this.on('close', function() { + node.p.close(); }); } RED.nodes.registerType("mraa-gpio-dout", gpioDout); diff --git a/hardware/intel/mraa-gpio-led.html b/hardware/intel/mraa-gpio-led.html new file mode 100644 index 00000000..66c0c19c --- /dev/null +++ b/hardware/intel/mraa-gpio-led.html @@ -0,0 +1,77 @@ + + + + + + diff --git a/hardware/intel/mraa-gpio-led.js b/hardware/intel/mraa-gpio-led.js new file mode 100644 index 00000000..d809c64d --- /dev/null +++ b/hardware/intel/mraa-gpio-led.js @@ -0,0 +1,82 @@ +module.exports = function(RED) { + var m = require('mraa'); + 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.on("input", function(msg) { + if (msg.payload == "1") { + switch(this.pin) + { + case 0: /*User0 Led Green*/ + this.led0.setBrightness(1); + break; + case 1: /*User0 Led Red*/ + this.led1.setBrightness(1); + 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); + break; + default: + 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; + } + } + }); + this.on('close', function() { + this.led0.close(); + this.led1.close(); + this.led2.close(); + this.led3.close(); + }); + } + RED.nodes.registerType("mraa-gpio-led", LEDNode); + + RED.httpAdmin.get('/mraa-gpio/:id', RED.auth.needsPermission('mraa-gpio.read'), function(req,res) { + res.json(m.getPlatformType()); + }); + + RED.httpAdmin.get('/mraa-version/:id', RED.auth.needsPermission('mraa-version.read'), function(req,res) { + res.json(m.getVersion()); + }); +} diff --git a/hardware/intel/mraa-gpio-pwm.html b/hardware/intel/mraa-gpio-pwm.html index 2dfb95e6..319fa113 100644 --- a/hardware/intel/mraa-gpio-pwm.html +++ b/hardware/intel/mraa-gpio-pwm.html @@ -1,7 +1,7 @@ diff --git a/hardware/intel/mraa-gpio-pwm.js b/hardware/intel/mraa-gpio-pwm.js index 22b02cb4..6a2469f2 100644 --- a/hardware/intel/mraa-gpio-pwm.js +++ b/hardware/intel/mraa-gpio-pwm.js @@ -21,6 +21,7 @@ module.exports = function(RED) { this.on('close', function() { node.p.enable(false); + node.p.close(); }); } RED.nodes.registerType("mraa-gpio-pwm", gpioPWM); diff --git a/hardware/intel/package.json b/hardware/intel/package.json index 0d1c7d5b..0af217e7 100644 --- a/hardware/intel/package.json +++ b/hardware/intel/package.json @@ -16,7 +16,8 @@ "mraa-gpio-ain": "mraa-gpio-ain.js", "mraa-gpio-din": "mraa-gpio-din.js", "mraa-gpio-dout": "mraa-gpio-dout.js", - "mraa-gpio-pwm": "mraa-gpio-pwm.js" + "mraa-gpio-pwm": "mraa-gpio-pwm.js", + "mraa-gpio-led": "mraa-gpio-led.js" } }, "author": {