Skip to content

Commit dce943a

Browse files
committed
initial commit
0 parents  commit dce943a

File tree

398 files changed

+25288
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

398 files changed

+25288
-0
lines changed

1-data/fileLoader/fileLoader.html

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<script type="text/javascript">
2+
RED.nodes.registerType('fileLoader',{
3+
category: 'data',
4+
color: '#A6BBCF',
5+
defaults: {
6+
name: {value:""},
7+
fileName: {value:"",required:true}
8+
},
9+
inputs:1,
10+
outputs:1,
11+
icon: "file.png",
12+
label: function() {
13+
return this.name||"fileLoader";
14+
}
15+
});
16+
</script>
17+
18+
<script type="text/x-red" data-template-name="fileLoader">
19+
<div class="form-row">
20+
<label for="node-input-name"><i class="icon-tag"></i>Name</label>
21+
<input type="text" id="node-input-name" placeholder="Name">
22+
</div>
23+
24+
<div class="form-row">
25+
<label for="node-input-fileName"><i class="icon-tag"></i>File Name</label>
26+
<input type="text" id="node-input-fileName">
27+
</div>
28+
29+
30+
</script>
31+
32+
<script type="text/x-red" data-help-name="fileLoader">
33+
<p>Loads a file</p>
34+
</script>

1-data/fileLoader/fileLoader.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
2+
3+
module.exports = function(RED) {
4+
5+
function FileLoaderNode(config) {
6+
RED.nodes.createNode(this,config);
7+
8+
var globalContext = this.context().global;
9+
var maxBufferSize = Number(config.maxBufferSize);
10+
11+
var node = this;
12+
13+
var alreadyComputedMetrics = false;
14+
15+
this.on('input', function(msg){
16+
//TODO
17+
});
18+
19+
}
20+
21+
RED.nodes.registerType("fileLoader",FileLoaderNode);
22+
}

1-data/fileLoader/package.json

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"name": "node-red-contrib-fileLoader",
3+
"version": "0.0.1",
4+
"description": "Loads a data file",
5+
"dependencies": {},
6+
"keywords": [
7+
"node-red"
8+
],
9+
"node-red": {
10+
"nodes": {
11+
"fileLoader": "fileLoader.js"
12+
}
13+
}
14+
}

1-data/ringBuffer/package-lock.json

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

1-data/ringBuffer/package.json

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"name": "node-red-contrib-ringBuffer",
3+
"version": "0.0.1",
4+
"description": "Stores data in a ring buffer visible at the entire flow",
5+
"dependencies": {},
6+
"keywords": [
7+
"node-red"
8+
],
9+
"node-red": {
10+
"nodes": {
11+
"ringBuffer": "ringBuffer.js"
12+
}
13+
}
14+
}

1-data/ringBuffer/ringBuffer.html

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
<script type="text/javascript">
2+
RED.nodes.registerType('ringBuffer',{
3+
category: 'data',
4+
color: '#A6BBCF',
5+
defaults: {
6+
name: {value:""},
7+
maxBufferSize: {value:"401",required:true,validate:RED.validators.number()},
8+
eventOffset: {value:"0",required:false,validate:RED.validators.number()},
9+
numAxes: {value:"6",required:true,validate:RED.validators.number()}
10+
},
11+
inputs:1,
12+
outputs:1,
13+
icon: "db.png",
14+
label: function() {
15+
return this.name||"ringBuffer";
16+
}
17+
});
18+
</script>
19+
20+
<script type="text/x-red" data-template-name="ringBuffer">
21+
<div class="form-row">
22+
<label for="node-input-name"><i class="icon-tag"></i>Name</label>
23+
<input type="text" id="node-input-name" placeholder="Name">
24+
</div>
25+
26+
<div class="form-row">
27+
<label for="node-input-maxBufferSize"><i class="icon-tag"></i>Buffer Size</label>
28+
<input type="text" id="node-input-maxBufferSize">
29+
</div>
30+
31+
<div class="form-row">
32+
<label for="node-input-eventOffset"><i class="icon-tag"></i>Event offset</label>
33+
<input type="text" id="node-input-eventOffset">
34+
</div>
35+
36+
<div class="form-row">
37+
<label for="node-input-numAxes"><i class="icon-tag"></i>Number of Axes</label>
38+
<input type="text" id="node-input-numAxes">
39+
</div>
40+
41+
</script>
42+
43+
<script type="text/x-red" data-help-name="ringBuffer">
44+
<p>Stores the data in a ring buffer. Outputs the last sample, or the sample at index n-eventOffset.</p>
45+
</script>

1-data/ringBuffer/ringBuffer.js

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
2+
3+
module.exports = function(RED) {
4+
5+
function RingBufferNode(config) {
6+
RED.nodes.createNode(this,config);
7+
8+
var globalContext = this.context().global;
9+
var maxBufferSize = Number(config.maxBufferSize);
10+
11+
var node = this;
12+
13+
initializeRingBuffer(node);
14+
15+
var alreadyComputedMetrics = false;
16+
17+
this.on('input', function(msg){
18+
19+
var globalContext = node.context().global;
20+
var ringBuffer = globalContext.get(global.WDKConstants.kRingBufferStr);
21+
var maxBufferSize = Number(config.maxBufferSize);
22+
var eventOffset = Number(config.eventOffset);
23+
ringBuffer.nAxes = config.numAxes;
24+
25+
var newSample = msg.payload;
26+
if(msg.parts.index < msg.parts.count){
27+
if(newSample.length == config.numAxes){
28+
ringBuffer.data[ringBuffer.endIdx] = newSample;
29+
30+
if(ringBuffer.size < maxBufferSize){
31+
ringBuffer.size++;
32+
}
33+
34+
//select sample at end-offset
35+
if(eventOffset < ringBuffer.size){
36+
var eventIdx = ringBuffer.endIdx - eventOffset;
37+
if(eventIdx < 0){
38+
eventIdx += maxBufferSize;
39+
}
40+
msg.payload = ringBuffer.data[eventIdx];
41+
}
42+
43+
ringBuffer.endIdx++;
44+
if(ringBuffer.endIdx >= maxBufferSize){
45+
ringBuffer.endIdx = 0;
46+
}
47+
48+
computeMetrics(node);
49+
50+
globalContext.set(WDKConstants.kRingBufferStr,ringBuffer);
51+
node.send(msg);
52+
53+
} else {
54+
console.log('Trying to add %d components to ring buffer. Should be %d',newSample.length,config.numAxes);
55+
}
56+
}
57+
});
58+
59+
function initializeRingBuffer(node){
60+
61+
var globalContext = node.context().global;
62+
63+
var ringBuffer = {
64+
size : 0,
65+
endIdx : 0,
66+
nAxes : 0,
67+
data : []
68+
};
69+
70+
globalContext.set(global.WDKConstants.kRingBufferStr,ringBuffer);
71+
}
72+
73+
function computeMetrics(node){
74+
75+
if(!node.alreadyComputedMetrics){
76+
var memory = config.maxBufferSize * config.numAxes * 4;
77+
global.Metrics.memory += memory;
78+
node.alreadyComputedMetrics = true;
79+
}
80+
global.Metrics.flops += 10;
81+
}
82+
}
83+
84+
RED.nodes.registerType("ringBuffer",RingBufferNode);
85+
}

2-preprocessing/S1/package.json

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"name": "node-red-contrib-S1",
3+
"version": "0.0.1",
4+
"description": "Calculates the S1 metric of a set of values",
5+
"dependencies": {},
6+
"keywords": [
7+
"node-red"
8+
],
9+
"node-red": {
10+
"nodes": {
11+
"S1": "S1.js"
12+
}
13+
}
14+
}

2-preprocessing/S1/s1.html

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<script type="text/javascript">
2+
RED.nodes.registerType('S1',{
3+
category: 'preprocessing',
4+
color: '#C0DEED',
5+
defaults: {
6+
name: {value:""},
7+
k: {value:"",required:true,validate:RED.validators.number()}
8+
},
9+
inputs:1,
10+
outputs:1,
11+
icon: "function.png",
12+
label: function() {
13+
return this.name||"S1";
14+
}
15+
});
16+
</script>
17+
18+
<script type="text/x-red" data-template-name="S1">
19+
<div class="form-row">
20+
<label for="node-input-name"><i class="icon-tag"></i>Name</label>
21+
<input type="text" id="node-input-name" placeholder="Name">
22+
</div>
23+
24+
<div class="form-row">
25+
<label for="node-input-k"><i class="icon-tag"></i>k</label>
26+
<input type="text" id="node-input-k">
27+
</div>
28+
</script>
29+
30+
<script type="text/x-red" data-help-name="S1">
31+
<p>Calculates the k metric of the values in the message payload</p>
32+
</script>

2-preprocessing/S1/s1.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
module.exports = function(RED) {
2+
3+
function S1(config) {
4+
RED.nodes.createNode(this,config);
5+
var node = this;
6+
node.on('input', function(msg) {
7+
//TODO
8+
node.send(msg);
9+
});
10+
}
11+
12+
RED.nodes.registerType("S1",S1);
13+
}

0 commit comments

Comments
 (0)