diff --git a/app/index.html b/app/index.html
index a4fca49..7666178 100644
--- a/app/index.html
+++ b/app/index.html
@@ -45,8 +45,9 @@
-
-
+
+
+
diff --git a/app/js/app.js b/app/js/app.js
index d6e3ab3..69b74ab 100644
--- a/app/js/app.js
+++ b/app/js/app.js
@@ -2519,10 +2519,8 @@ mcopy.state = {
direction : true
},
sequence : {
- size : 24,
- arr : ['CF', 'PF'],
- light : ['255,255,255', ''],
pads: {
+ //gaaaaaaaaah
cam_forward: 'CF',
proj_forward : 'PF',
black_forward : 'BF',
@@ -2531,8 +2529,7 @@ mcopy.state = {
proj_backward : 'PB',
black_backward : 'BB',
- light_set : 'L'//,
- /*
+ light_set : 'L',
cam2_forward : 'C2F',
cam2_backward : 'C2B',
@@ -2552,7 +2549,6 @@ mcopy.state = {
proj_forward_proj2_backward : 'PFPB',
proj_backward_proj2_forward : 'PBPF'
- */
}
}
};
diff --git a/app/lib/sequencer/index.js b/app/lib/sequencer/index.js
index cd8c483..71b46dc 100644
--- a/app/lib/sequencer/index.js
+++ b/app/lib/sequencer/index.js
@@ -4,6 +4,8 @@ const Log = require("log");
let seq;
class Sequencer {
constructor(cfg, cmd) {
+ this.running = false;
+ this.paused = false;
this.arr = [];
this.loops = 1;
this.CMDS = {};
@@ -31,9 +33,21 @@ class Sequencer {
}
async listener(event, arg) {
console.dir(arg);
- if (arg && arg.set) {
+ if (arg && arg.start) {
+ this.start(arg);
+ }
+ else if (arg && arg.stop) {
+ this.stop();
+ }
+ else if (arg && arg.pause) {
+ this.pause();
+ }
+ else if (arg && arg.set) {
this.setSteps(arg.set);
}
+ else if (arg && arg.unset) {
+ this.unsetSteps(arg.unset);
+ }
else if (arg && arg.loops) {
this.loops = arg.loops;
}
@@ -42,24 +56,36 @@ class Sequencer {
setSteps(steps) {
console.dir(steps);
}
- //new
+ unsetSteps(steps) {
+ }
+ //new, replaces exec and init
async start(arg) {
if (arg && arg.arr) {
- this.arr = arg.arr;
+ this.arr = arg.arr; //overwrite sequence
}
if (arg && arg.loops) {
- this.loops = arg.loops;
+ this.loops = arg.loops; //overwrite loops
}
+ this.running = true;
+ this.paused = false;
for (let x = 0; x < this.loops; x++) {
+ //start loop
for (let y = 0; y < this.arr.length; y++) {
+ //start step
if (this.running) {
+ while (this.paused) {
+ await delay(42);
+ }
await this.step(y);
}
+ //end step
}
+ //end loop
}
}
//new
pause() {
+ this.paused = true;
}
/**
* Stop the sequence
diff --git a/app/lib/sequencer/index.js.map b/app/lib/sequencer/index.js.map
index e8fcdce..26a4a56 100644
--- a/app/lib/sequencer/index.js.map
+++ b/app/lib/sequencer/index.js.map
@@ -1 +1 @@
-{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sequencer/index.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sequencer/index.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/app/lib/ui/devices.js b/app/lib/ui/devices.js
index 414694c..f20b22d 100644
--- a/app/lib/ui/devices.js
+++ b/app/lib/ui/devices.js
@@ -218,9 +218,11 @@ devices.digitalCb = function (evt, args) {
$('#projector_type_digital').prop('checked', 'checked');
gui.notify('DEVICES', `Using video ${state.fileName}`);
- mcopy.state.sequence.arr = ['PF', 'CF'];
- grid.setLight(1, color);
+ seq.set(0, 'PF');
grid.state(0);
+
+ seq.set(1, 'CF');
+ seq.setLight(1, color);
grid.state(1);
if (light.disabled) {
diff --git a/app/lib/ui/grid.js b/app/lib/ui/grid.js
index 6e83b55..1a1abe3 100644
--- a/app/lib/ui/grid.js
+++ b/app/lib/ui/grid.js
@@ -14,19 +14,20 @@ grid.init = function () {
* Set a specific grid pad to the state stored in the sequence
* array at that step
*
- * @param {integer} i Step in sequence
+ * @param {integer} x Step in sequence
**/
-grid.state = function (i) {
+grid.state = function (x) {
'use strict';
- const elem = $(`input[x=${i}]`);
- const lightElem = $(`.L[x=${i}]`);
- if (typeof mcopy.state.sequence.arr[i] !== 'undefined') {
+ const elem = $(`input[x=${x}]`);
+ const lightElem = $(`.L[x=${x}]`);
+ const step = seq.arr[x];
+ if (typeof step !== 'undefined') {
elem.prop('checked', false);
- $(`.${mcopy.state.sequence.arr[i]}[x=${i}]`).prop('checked', true);
- if (mcopy.state.sequence.arr[i] === 'CF' || mcopy.state.sequence.arr[i] === 'CB') {
- lightElem.css('background', `rgb(${mcopy.state.sequence.light[i]})`)
+ $(`.${step.cmd}[x=${x}]`).prop('checked', true);
+ if (step.cmd === 'CF' || step.cmd === 'CB') {
+ lightElem.css('background', `rgb(${step.light})`)
.addClass('a')
- .prop('title', `rgb(${mcopy.state.sequence.light[i]})`);
+ .prop('title', `rgb(${seq.light})`);
} else {
lightElem.css('background', 'transparent')
@@ -46,7 +47,14 @@ grid.state = function (i) {
**/
grid.refresh = function () {
'use strict';
- const cmds = ['cam_forward', 'proj_forward', 'cam_backward', 'proj_backward', 'light_set', 'numbers'];
+ const cmds = [
+ 'cam_forward',
+ 'proj_forward',
+ 'cam_backward',
+ 'proj_backward',
+ 'light_set',
+ 'numbers'
+ ];
const check = '
';
const div = '
';
const width = 970 - 34 + ((940 / 24) * Math.abs(24 - seq.size));
@@ -77,22 +85,17 @@ grid.refresh = function () {
**/
grid.click = function (t) {
'use strict';
- const i = parseInt($(t).attr('x'));
+ const x = parseInt($(t).attr('x'));
let c;
- //TODO: ADD OTHER STATES
if ($(t).prop('checked')) {
+
c = $(t).attr('class').replace('.', '');
- mcopy.state.sequence.arr[i] = c;
- if (c === 'CF' || c === 'CB') {
- mcopy.state.sequence.light[i] = light.color.join(',');
- } else {
- mcopy.state.sequence.light[i] = '';
- }
+ seq.set(x, c);
} else {
- mcopy.state.sequence.arr[i] = undefined;
- delete mcopy.state.sequence.arr[i];
+ //seq.arr[i] = undefined;
+ //delete seq.arr[i];
}
- grid.state(i);
+ grid.state(x);
seq.stats();
};
/**
@@ -106,7 +109,7 @@ grid.clear = function () {
seq.clear();
grid.refresh();
seq.stats();
- console.log('Sequencer cleared');
+ log.info('Sequencer cleared');
}
};
/**
@@ -116,19 +119,7 @@ grid.plus_24 = function () {
'use strict';
seq.size += 24;
grid.refresh();
- console.log(`Sequencer expanded to ${seq.size} steps`);
-};
-/**
- * Set the light value at a specific step and then update
- * GUI grid via .state()
- *
- * @param {integer} x Step in sequence
- * @param {array} rgb Light value in RGB
- **/
-grid.setLight = function (x, rgb) {
- 'use strict';
- mcopy.state.sequence.light[x] = rgb.join(',');
- grid.state(x);
+ log.info(`Sequencer expanded to ${seq.size} steps`);
};
/**
* Set light value to black (0,0,0) when double clicked
@@ -137,14 +128,14 @@ grid.setLight = function (x, rgb) {
**/
grid.blackout = function (t) {
const elem = $(t);
- const i = elem.attr('x');
- if (typeof mcopy.state.sequence.light[i] === 'undefined') {
+ const x = elem.attr('x');
+ if (typeof seq.arr[x].light === 'undefined') {
return false;
}
- if (mcopy.state.sequence.light[i] === '0,0,0') {
- grid.setLight(i, light.color);
+ if (seq.arr[x].light === '0,0,0') {
+ seq.setLight(i, light.color);
} else {
- grid.setLight(i, [0, 0, 0]);
+ seq.setLight(i, [0, 0, 0]);
}
};
@@ -156,7 +147,9 @@ grid.blackout = function (t) {
*/
grid.changeAll = function (rgb) {
'use strict';
- for (let [i, c] of mcopy.state.sequence.arr.entries()) {
+ let c;
+ for (let step of seq.arr) {
+ c = step.cmd;
if (c === 'CF' || c === 'CB') {
grid.setLight(i, rgb);
}
@@ -170,7 +163,7 @@ grid.changeAll = function (rgb) {
**/
grid.swatches = function (x) {
'use strict';
- const current = mcopy.state.sequence.light[x];
+ const current = seq.arr[x].light;
grid.swatchesElem = w2popup.open({
title : 'Select Color',
body : $('#light-swatches').html(),
@@ -229,7 +222,7 @@ grid.events = function () {
});
//$(document.body).on('click', '.L', function () {
//alert('click');
- //console.log('please dont happen');
+ //log.warn('please dont happen');
//});
$(document.body).on('dblclick', '.L', function () {
grid.blackout(this);
diff --git a/app/lib/ui/mscript.js b/app/lib/ui/mscript.js
index 2d7f522..ea0d38b 100644
--- a/app/lib/ui/mscript.js
+++ b/app/lib/ui/mscript.js
@@ -35,9 +35,11 @@ mse.mscript.fromSequence = function () {
let str;
let tmp = [];
let cont;
- //str = mcopy.state.sequence.arr.join('\n'); //quick hack
- console.dir(mcopy.state.sequence);
- for (let cmd of mcopy.state.sequence.arr) {
+ let cmd;
+ //str = seq.arr.map(step => { return step.cmd }).join('\n'); //quick hack
+ console.dir(seq.arr);
+ for (let step of seq.arr) {
+ cmd = step.cmd;
if (tmp.length > 0 && tmp[tmp.length - 1].cmd === cmd) {
tmp[tmp.length - 1].num++;
continue;
@@ -69,18 +71,19 @@ mse.mscript.fromSequence = function () {
mse.mscript.toGUI = function () {
'use strict';
let c;
- for (let i = 0; i < mse.mscript.data.arr.length; i++) {
- c = mse.mscript.data.arr[i];
- mcopy.state.sequence.arr[i] = c;
+ let step;
+ for (let x = 0; x < mse.mscript.data.arr.length; x++) {
+ c = mse.mscript.data.arr[x];
+ seq.set(x, c);
console.dir(mse.mscript.data);
if (c === 'CF' || c === 'CB') {
- if (typeof mse.mscript.data.light[i] !== 'undefined' && mse.mscript.data.light[i] !== '') {
- mcopy.state.sequence.light[i] = mse.mscript.data.light[i];
+ if (typeof mse.mscript.data.light[x] !== 'undefined' && mse.mscript.data.light[x] !== '') {
+ seq.setLight(x, mse.mscript.data.light[x]);
} else {
- mcopy.state.sequence.light[i] = light.color.join(',');
+ seq.setLight(x, light.color.join(','));
}
} else {
- mcopy.state.sequence.light[i] = '';
+ //unset light?
}
grid.state(i);
}
diff --git a/app/lib/ui/seq.js b/app/lib/ui/seq.js
index 3fa7557..f0fd98d 100644
--- a/app/lib/ui/seq.js
+++ b/app/lib/ui/seq.js
@@ -3,117 +3,27 @@ seq.id = 'sequence';
seq.arr = [];
seq.loops = 1;
seq.size = 24;
+seq.time = 0;
+seq.running = false;
/******
Sequence Object
*******/
-/*seq.run = function () {
+seq.stop = function (s) {
'use strict';
- var c = mcopy.state.sequence.arr[seq.i],
- timeEnd = 0,
- rgb,
- action = function () {
- setTimeout(function () {
- seq.i++;
- seq.run();
- }, cfg.arduino.sequenceDelay);
- }
- if (seq.i == 0) {
- $('#loop_current').text(gui.fmtZero(mcopy.loopCount + 1, 6));
- ipcRenderer.send('seq', { action : 'loop' });
- }
- if (seq.stop()) {
- $('.row input').removeClass('h');
- $('#numbers div').removeClass('h');
- //console.log('Sequence stepped');
- log.info('Sequence stopped', 'SERIAL', true);
- return false;
- }
- if (seq.i <= mcopy.state.sequence.arr.length && c !== undefined) {
- log.info('Step ' + seq.i + ' command ' + c, 'SEQUENCE', true);
- //gui action
- $('.row input').removeClass('h');
- $('#numbers div').removeClass('h');
- $('.row input[x=' + seq.i + ']').addClass('h');
- $('#numbers div[x=' + seq.i + ']').addClass('h');
- if (c === cfg.cmd.camera_forward){
- rgb = mcopy.state.sequence.light[seq.i].split(',');
- cmd.camera_forward(rgb, action);
- } else if (c === cfg.cmd.camera_backward) {
- rgb = mcopy.state.sequence.light[seq.i].split(',');
- cmd.camera_backward(rgb, action);
- } else if (c === cfg.cmd.projector_forward) {
- cmd.projector_forward(action);
- } else if (c === cfg.cmd.projector_backward) {
- cmd.projector_backward(action);
- } else if (c === cfg.cmd.black_forward) {
- cmd.black_forward(action);
- } else if (c === cfg.cmd.black_backward) {
- cmd.black_backward(action);
- }
- } else {
- mcopy.loopCount++;
- $('#loop_current').text(gui.fmtZero(mcopy.loopCount + 1, 6));
- if (mcopy.loopCount < mcopy.loop) {
- log.info('Loop ' + mcopy.loopCount + ' completed', 'SEQUENCE', true);
- $('.row input').removeClass('h');
- $('#numbers div').removeClass('h');
- seq.i = 0;
- seq.run();
- } else {
- timeEnd = +new Date();
- timeEnd = timeEnd - seq.time;
- if (timeEnd < 2000) {
- log.info('Sequence completed in ' + timeEnd + 'ms', 'SEQUENCE', true);
- } else {
- log.info('Sequence completed in ' + humanizeDuration(timeEnd), 'SEQUENCE', true);
- }
- ipcRenderer.send('seq', { action : 'stop' });
- gui.notify('Sequence done!', (mcopy.state.sequence.arr.length * mcopy.loop) + ' actions completed in ' + humanizeDuration(timeEnd));
- //clear gui
- $('.row input').removeClass('h');
- $('#numbers div').removeClass('h');
- $('#loop_current').text('');
- seq.stats();
- }
- }
-};*/
-seq.stop = function (state) {
- 'use strict';
- ipcRenderer.send('seq', { action : 'stop' });
- /*
- if (typeof state === 'undefined') {
- if (seq.stopState === true) {
- ipcRenderer.send('seq', { action : 'stop' });
- }
- return seq.stopState;
- } else {
- seq.stopState = state;
- }
- if (state === false) {
- mcopy.loopCount = 0
- $('#loop_current').text('');
- } else {
- ipcRenderer.send('seq', { action : 'stop' });
- }*/
- return state
+ ipcRenderer.send(seq.id, { stop : true });
+ $('#loop_current').text('');
};
-seq.init = function (start) {
+seq.start = function (start) {
'use strict';
- /*if (typeof start === 'undefined') {
- start = 0;
- mcopy.loopCount = 0;
- seq.time = +new Date();
- }*/
- //seq.stop(false);
- //seq.i = start;
+ seq.time = +new Date();
- ipcRenderer.send('seq', { action : 'start' });
- //seq.run();
+ ipcRenderer.send(seq.id, { start : true });
};
seq.set = function (x, cmd) {
+ 'use strict';
let increase = 0;
if (x >= seq.arr.length + 1) {
increase = x - seq.arr.length;
@@ -136,6 +46,26 @@ seq.set = function (x, cmd) {
//update grid?
}
+seq.unset = function (x) {
+ 'use strict';
+ seq.arr[x] = undefined
+ ipcRenderer.send(seq.id, { unset : [ x ]});
+}
+
+/**
+ * Set the light value at a specific step and then update
+ * GUI grid via .state()
+ *
+ * @param {integer} x Step in sequence
+ * @param {array} rgb Light value in RGB
+ **/
+seq.setLight = function (x, rgb) {
+ 'use strict';
+ let color = rgb.join(',');
+ seq.arr[x].light = color;
+ ipcRenderer.send(seq.id, { x, cmd : seq.arr[x].cmd, light : color });
+};
+
/**
* Function bound to the change event on the loop counter
* input element
@@ -155,7 +85,7 @@ seq.stats = function () {
let c = '';
let cam_total = 0;
let proj_total = 0;
- let real_total = mcopy.state.sequence.arr.filter(function (elem) {
+ let real_total = seq.arr.filter(function (elem) {
if (elem === undefined) {
return false;
}
@@ -163,7 +93,8 @@ seq.stats = function () {
});
//timing
- for (let c of mcopy.state.sequence.arr) {
+ for (let step of seq.arr) {
+ c = seq.cmd;
if (c === cfg.cmd.camera_forward || c === cfg.cmd.camera_backward){
ms += cfg.arduino.cam.time;
ms += cfg.arduino.cam.delay;
@@ -216,92 +147,18 @@ seq.stats = function () {
$('#seq_stats .seq_count span').text(real_total.length * seq.loops);
return ms;
};
+
seq.clear = function () {
'use strict';
seq.size = 24;
seq.arr = [];
};
-/**
- * Queue for exec function
- */
-seq.queue = [];
-seq.running = false;
-seq.state = {};
-/**
- * Execute an array of commands, locking up the UI during execution.
- */
-seq.exec = function (arr) {
- 'use strict';
- seq.running = true;
- seq.state.len = arr.length;
- //setup queue
- seq.queue = arr;
- //console.dir(arr);
- gui.overlay(true);
- gui.spinner(true, `Running sequence of ${arr.length} frame${(arr.length === 1 ? '' : 's')}`, 0, true);
- log.info(`Sequence started`, 'SEQUENCE', true);
- ipcRenderer.send('seq', { action : 'start' });
- //seq.step();
-};
-
seq.cancel = function () {
gui.spinner(true, `Cancelling sequence...`);
seq.running = false;
+ seq.stop();
}
-seq.execStop = function (msg) {
- 'use strict';
- gui.overlay(false);
- gui.spinner(false);
- log.info(`Sequence ${msg}`, 'SEQUENCE', true);
- return false;
-};
-
-seq.step = function () {
- 'use strict';
- let elem;
- let c;
- let rgb;
- let current;
- let max;
-
- if (!seq.running) {
- return seq.execStop('stopped');
- }
-
- return setTimeout(() => {
- elem = seq.queue.shift();
- if (typeof elem !== 'undefined') {
- c = elem.cmd;
- if (typeof elem.light !== 'undefined') {
- rgb = elem.light.split(',');
- } else {
- rgb = light.color;
- }
- } else {
- return seq.execStop('completed');
- }
- if (typeof elem !== 'undefined') {
- current = seq.state.len - seq.queue.length;
- max = seq.state.len;
- gui.spinner(true, `Sequence: step ${c} ${current}/${max}`, (current / max) * 100, true);
- log.info(`Sequence: step ${c} ${current}/${max}`, 'SEQUENCE', true);
- if (c === cfg.cmd.camera_forward){
- cmd.camera_forward(rgb, seq.step);
- } else if (c === cfg.cmd.camera_backward) {
- cmd.camera_backward(rgb, seq.step);
- } else if (c === cfg.cmd.projector_forward) {
- cmd.projector_forward(seq.step);
- } else if (c === cfg.cmd.projector_backward) {
- cmd.projector_backward(seq.step);
- } else if (c === cfg.cmd.black_forward) {
- cmd.black_forward(seq.step);
- } else if (c === cfg.cmd.black_backward) {
- cmd.black_backward(seq.step);
- }
- }
- }, cfg.arduino.sequenceDelay);
-};
module.exports = seq;
\ No newline at end of file
diff --git a/app/main.js b/app/main.js
index d464714..433d687 100644
--- a/app/main.js
+++ b/app/main.js
@@ -117,22 +117,19 @@ var init = async function () {
log.error('Error enumerating connected devices', err)
}
-
light = require('light')(arduino, cfg, mainWindow.webContents)
dig = require('digital')(display, ffmpeg, ffprobe, mainWindow.webContents, light)
cam = require('cam')(arduino, cfg, mainWindow.webContents, dig)
proj = require('proj')(arduino, cfg, mainWindow.webContents, dig)
- cmd = require('cmd')(cfg, proj, cam, light);
- seq = require('sequencer')(cfg, cmd);
+ cmd = require('cmd')(cfg, proj, cam, light)
+ seq = require('sequencer')(cfg, cmd)
}
app.on('ready', init)
app.on('window-all-closed', () => {
- //if (process.platform !== 'darwin') {
- app.quit();
- //}
+ app.quit();
});
app.on('activate', () => {
diff --git a/app/src/index.js b/app/src/index.js
index 4e005df..dfe91cd 100644
--- a/app/src/index.js
+++ b/app/src/index.js
@@ -45,10 +45,8 @@ mcopy.state = {
direction : true
},
sequence : {
- size : 24,
- arr : ['CF', 'PF'],
- light : ['255,255,255', ''],
pads: {
+ //gaaaaaaaaah
cam_forward: 'CF',
proj_forward : 'PF',
black_forward : 'BF',
@@ -57,8 +55,7 @@ mcopy.state = {
proj_backward : 'PB',
black_backward : 'BB',
- light_set : 'L'//,
- /*
+ light_set : 'L',
cam2_forward : 'C2F',
cam2_backward : 'C2B',
@@ -78,7 +75,6 @@ mcopy.state = {
proj_forward_proj2_backward : 'PFPB',
proj_backward_proj2_forward : 'PBPF'
- */
}
}
};
diff --git a/cli/lib/sequencer/index.js b/cli/lib/sequencer/index.js
index cd8c483..71b46dc 100644
--- a/cli/lib/sequencer/index.js
+++ b/cli/lib/sequencer/index.js
@@ -4,6 +4,8 @@ const Log = require("log");
let seq;
class Sequencer {
constructor(cfg, cmd) {
+ this.running = false;
+ this.paused = false;
this.arr = [];
this.loops = 1;
this.CMDS = {};
@@ -31,9 +33,21 @@ class Sequencer {
}
async listener(event, arg) {
console.dir(arg);
- if (arg && arg.set) {
+ if (arg && arg.start) {
+ this.start(arg);
+ }
+ else if (arg && arg.stop) {
+ this.stop();
+ }
+ else if (arg && arg.pause) {
+ this.pause();
+ }
+ else if (arg && arg.set) {
this.setSteps(arg.set);
}
+ else if (arg && arg.unset) {
+ this.unsetSteps(arg.unset);
+ }
else if (arg && arg.loops) {
this.loops = arg.loops;
}
@@ -42,24 +56,36 @@ class Sequencer {
setSteps(steps) {
console.dir(steps);
}
- //new
+ unsetSteps(steps) {
+ }
+ //new, replaces exec and init
async start(arg) {
if (arg && arg.arr) {
- this.arr = arg.arr;
+ this.arr = arg.arr; //overwrite sequence
}
if (arg && arg.loops) {
- this.loops = arg.loops;
+ this.loops = arg.loops; //overwrite loops
}
+ this.running = true;
+ this.paused = false;
for (let x = 0; x < this.loops; x++) {
+ //start loop
for (let y = 0; y < this.arr.length; y++) {
+ //start step
if (this.running) {
+ while (this.paused) {
+ await delay(42);
+ }
await this.step(y);
}
+ //end step
}
+ //end loop
}
}
//new
pause() {
+ this.paused = true;
}
/**
* Stop the sequence
diff --git a/cli/lib/sequencer/index.js.map b/cli/lib/sequencer/index.js.map
index e8fcdce..26a4a56 100644
--- a/cli/lib/sequencer/index.js.map
+++ b/cli/lib/sequencer/index.js.map
@@ -1 +1 @@
-{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sequencer/index.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sequencer/index.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/lib/sequencer/index.js b/lib/sequencer/index.js
index cd8c483..71b46dc 100644
--- a/lib/sequencer/index.js
+++ b/lib/sequencer/index.js
@@ -4,6 +4,8 @@ const Log = require("log");
let seq;
class Sequencer {
constructor(cfg, cmd) {
+ this.running = false;
+ this.paused = false;
this.arr = [];
this.loops = 1;
this.CMDS = {};
@@ -31,9 +33,21 @@ class Sequencer {
}
async listener(event, arg) {
console.dir(arg);
- if (arg && arg.set) {
+ if (arg && arg.start) {
+ this.start(arg);
+ }
+ else if (arg && arg.stop) {
+ this.stop();
+ }
+ else if (arg && arg.pause) {
+ this.pause();
+ }
+ else if (arg && arg.set) {
this.setSteps(arg.set);
}
+ else if (arg && arg.unset) {
+ this.unsetSteps(arg.unset);
+ }
else if (arg && arg.loops) {
this.loops = arg.loops;
}
@@ -42,24 +56,36 @@ class Sequencer {
setSteps(steps) {
console.dir(steps);
}
- //new
+ unsetSteps(steps) {
+ }
+ //new, replaces exec and init
async start(arg) {
if (arg && arg.arr) {
- this.arr = arg.arr;
+ this.arr = arg.arr; //overwrite sequence
}
if (arg && arg.loops) {
- this.loops = arg.loops;
+ this.loops = arg.loops; //overwrite loops
}
+ this.running = true;
+ this.paused = false;
for (let x = 0; x < this.loops; x++) {
+ //start loop
for (let y = 0; y < this.arr.length; y++) {
+ //start step
if (this.running) {
+ while (this.paused) {
+ await delay(42);
+ }
await this.step(y);
}
+ //end step
}
+ //end loop
}
}
//new
pause() {
+ this.paused = true;
}
/**
* Stop the sequence
diff --git a/lib/sequencer/index.js.map b/lib/sequencer/index.js.map
index e8fcdce..26a4a56 100644
--- a/lib/sequencer/index.js.map
+++ b/lib/sequencer/index.js.map
@@ -1 +1 @@
-{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sequencer/index.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sequencer/index.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
diff --git a/src/sequencer/index.ts b/src/sequencer/index.ts
index d875f46..6f3a6a5 100644
--- a/src/sequencer/index.ts
+++ b/src/sequencer/index.ts
@@ -6,7 +6,8 @@ let seq : Sequencer;
class Sequencer {
private time : number;
- private running : boolean;
+ private running : boolean = false;
+ private paused : boolean = false;
private arr : any[] = [];
private loops : number = 1;
@@ -46,8 +47,16 @@ class Sequencer {
private async listener (event : any, arg : any) {
console.dir(arg)
- if (arg && arg.set) {
+ if (arg && arg.start) {
+ this.start(arg);
+ } else if (arg && arg.stop) {
+ this.stop();
+ } else if (arg && arg.pause) {
+ this.pause();
+ } else if (arg && arg.set) {
this.setSteps(arg.set);
+ } else if (arg && arg.unset) {
+ this.unsetSteps(arg.unset);
} else if (arg && arg.loops) {
this.loops = arg.loops;
}
@@ -57,26 +66,39 @@ class Sequencer {
public setSteps (steps : any) {
console.dir(steps)
}
- //new
+ public unsetSteps (steps : number[]) {
+
+ }
+ //new, replaces exec and init
public async start (arg : any) {
if (arg && arg.arr) {
- this.arr = arg.arr;
+ this.arr = arg.arr; //overwrite sequence
}
if (arg && arg.loops) {
- this.loops = arg.loops;
+ this.loops = arg.loops; //overwrite loops
}
+
+ this.running = true;
+ this.paused = false;
for (let x = 0; x < this.loops; x++) {
+ //start loop
for (let y = 0; y < this.arr.length; y++) {
+ //start step
if (this.running) {
+ while (this.paused) {
+ await delay(42);
+ }
await this.step(y);
}
+ //end step
}
+ //end loop
}
}
//new
public pause () {
-
+ this.paused = true;
}
/**
* Stop the sequence