1
0
mirror of https://github.com/node-red/node-red-nodes.git synced 2023-10-10 13:36:58 +02:00
node-red-nodes/hardware/intel/mraa-gpio-led.html
Chao Zeng 3ca4456c2b
Refact: Separate LED selection and state control (#957)
Separation of class LED selection and state control.
The label of the LED corresponds to the silk screen of the iot2050.

Before we use one list to enumerate all the led and its state.
like: User1 Led Red User1 Led Green User1 Led Orange
      User2 Led Red User2 Led Green User2 Led Orange
if we need to add or delete the LED, we should change this list
After Separation of class LED selection and state control
one is Led selection: USER1 USER2
the other is status selection: Green Red Orange

For this structure, if the led or status changes, We don't need
to enumerate all the states.

Also there is a problem with the old version:
When we use one node to control led show green, then we use another node to control
led show red. The result we expect is led red, but the actually result is led orange.
This is caused the previous green do not turn off. State change is wrong.
This refact would also fix it.

Signed-off-by: chao zeng <chao.zeng@siemens.com>

Signed-off-by: chao zeng <chao.zeng@siemens.com>
2022-10-26 15:17:28 +01:00

86 lines
3.2 KiB
HTML

<script type="text/javascript">
RED.nodes.registerType('mraa-gpio-led',{
category: 'GPIO',
color: '#a6bbcf',
paletteLabel: 'led',
defaults: {
name: {value:""},
pin: {value:"", required: true},
color: {value:"", required: true},
},
inputs:1,
outputs:0,
icon: "arrow.png",
align: "right",
label: function() {
return this.name || "led";
},
labelStyle: function() {
return this.name?"node_label_italic":"";
},
oneditprepare: function() {
var pinnow = this.pin;
$.getJSON('mraa-gpio/'+this.id,function(data) {
var t = "unknown";
if (data === 0) { t = "Galileo v1"; }
if (data === 1) { t = "Galileo v2"; }
if (data === 2) { t = "Edison Fab C"; }
if (data === 3) { t = "DE3813 Baytrail"; }
if (data === 4) { t = "Minnow Max"; }
if (data === 5) { t = "Raspberry Pi"; }
if (data === 6) { t = "Beaglebone"; }
if (data === 7) { t = "Banana"; }
if (data === 26) { t = "IOT2050"; }
$('#btype').text(t);
$('#node-input-pin').val(pinnow);
});
$.getJSON('mraa-version/'+this.id,function(data) {
$('#ver-tip').text(data);
});
var setstate = function () {
if ($('#node-input-set').is(":checked")) {
$("#node-set-state").show();
} else {
$("#node-set-state").hide();
}
};
$("#node-input-set").change(function () { setstate(); });
setstate();
}
});
</script>
<script type="text/x-red" data-template-name="mraa-gpio-led">
<div class="form-row">
<label for="node-input-pin"><i class="fa fa-circle"></i> Led</label>
<select type="text" id="node-input-pin" style="width: 250px;">
<option value='' disabled selected style='display:none;'><span data-i18n="rpi-gpio.label.selectpin"></span></option>
<option value="0">USER1</option>
<option value="1">USER2</option>
</select>
</div>
<div class="form-row">
<label for="node-input-color"><i class="fa fa-circle"></i> Color</label>
<select type="text" id="node-input-color" style="width:250px;">
<option value='' disabled selected style='display:none;'><span data-i18n="rpi-gpio.label.selectpin"></span></option>
<option value="0">GREEN</option>
<option value="1">RED</option>
<option value="2">ORANGE</option>
</select>
</div>
<div class="form-row">
<label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
<input type="text" id="node-input-name" placeholder="Name" style="width: 250px;">
</div>
<div class="form-tips">Board : <span id="btype">n/a</span><br/>mraa version : <span id="ver-tip">n/a</span></div>
</script>
<script type="text/x-red" data-help-name="mraa-gpio-led">
<p>Led Control for a board.</p>
<p>The <code>msg.payload</code> should contain the value 0 or 1.</p>
</script>