Use the import Log = require() method of including log lib. This is cleaner and easier to read when parsing dependencies.
This commit is contained in:
parent
478799965e
commit
fc3cc96cd8
|
@ -1,9 +1,10 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
//import Log = require('log');
|
||||||
|
const delay = require("delay");
|
||||||
const SerialPort = require('serialport');
|
const SerialPort = require('serialport');
|
||||||
const Readline = SerialPort.parsers.Readline;
|
const Readline = SerialPort.parsers.Readline;
|
||||||
const exec = require('child_process').exec;
|
const exec = require('child_process').exec;
|
||||||
const delay = require("delay");
|
|
||||||
const parser = new Readline('');
|
const parser = new Readline('');
|
||||||
const newlineRe = new RegExp('\n', 'g');
|
const newlineRe = new RegExp('\n', 'g');
|
||||||
const returnRe = new RegExp('\r', 'g');
|
const returnRe = new RegExp('\r', 'g');
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1,25 +1,27 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const Intval = require("intval");
|
const Intval = require("intval");
|
||||||
|
const Log = require("log");
|
||||||
/** class representing camera functions **/
|
/** class representing camera functions **/
|
||||||
class Camera {
|
class Camera {
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
**/
|
**/
|
||||||
constructor(arduino, cfg, ui) {
|
constructor(arduino, cfg, ui, dig) {
|
||||||
this.state = { dir: true, digital: false };
|
this.state = { dir: true, digital: false };
|
||||||
this.arduino = null;
|
this.arduino = null;
|
||||||
this.intval = null;
|
this.intval = null;
|
||||||
this.arduino = arduino;
|
this.arduino = arduino;
|
||||||
this.cfg = cfg;
|
this.cfg = cfg;
|
||||||
this.ui = ui;
|
this.ui = ui;
|
||||||
|
this.dig = dig;
|
||||||
this.init();
|
this.init();
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
**/
|
**/
|
||||||
async init() {
|
async init() {
|
||||||
this.log = await require('log')({ label: 'cam' });
|
this.log = await Log({ label: 'cam' });
|
||||||
this.ipc = require('electron').ipcMain;
|
this.ipc = require('electron').ipcMain;
|
||||||
this.listen();
|
this.listen();
|
||||||
}
|
}
|
||||||
|
@ -67,9 +69,9 @@ class Camera {
|
||||||
async move(frame, id) {
|
async move(frame, id) {
|
||||||
const cmd = this.cfg.arduino.cmd.camera;
|
const cmd = this.cfg.arduino.cmd.camera;
|
||||||
let ms;
|
let ms;
|
||||||
//if (this.state.digital) {
|
if (this.dig.state.enabled) {
|
||||||
//await this.dig.start()
|
await this.dig.start();
|
||||||
//}
|
}
|
||||||
if (this.intval) {
|
if (this.intval) {
|
||||||
try {
|
try {
|
||||||
ms = await this.intval.move();
|
ms = await this.intval.move();
|
||||||
|
@ -86,9 +88,9 @@ class Camera {
|
||||||
this.log.error(err);
|
this.log.error(err);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//if (this.state.digital) {
|
if (this.dig.state.enabled) {
|
||||||
// await this.dig.end()
|
await this.dig.end();
|
||||||
//}
|
}
|
||||||
this.log.info('Camera move time', { ms });
|
this.log.info('Camera move time', { ms });
|
||||||
return this.end(cmd, id, ms);
|
return this.end(cmd, id, ms);
|
||||||
}
|
}
|
||||||
|
@ -175,9 +177,8 @@ class Camera {
|
||||||
this.log.info(message, 'CAMERA', true, true);
|
this.log.info(message, 'CAMERA', true, true);
|
||||||
this.ui.send('cam', { cmd: cmd, id: id, ms: ms });
|
this.ui.send('cam', { cmd: cmd, id: id, ms: ms });
|
||||||
}
|
}
|
||||||
;
|
|
||||||
}
|
}
|
||||||
module.exports = function (arduino, cfg, ui) {
|
module.exports = function (arduino, cfg, ui, dig) {
|
||||||
return new Camera(arduino, cfg, ui);
|
return new Camera(arduino, cfg, ui, dig);
|
||||||
};
|
};
|
||||||
//# sourceMappingURL=index.js.map
|
//# sourceMappingURL=index.js.map
|
File diff suppressed because one or more lines are too long
|
@ -1,56 +1,129 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const delay = require("delay");
|
const delay = require("delay");
|
||||||
const dig = {};
|
const Log = require("log");
|
||||||
dig.state = {
|
class Digital {
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
**/
|
||||||
|
constructor(display, ffmpeg, ffprobe, ui, light) {
|
||||||
|
this.state = {
|
||||||
frame: 0,
|
frame: 0,
|
||||||
frames: 0,
|
frames: 0,
|
||||||
path: null,
|
path: null,
|
||||||
fileName: null,
|
fileName: null,
|
||||||
info: {},
|
info: {},
|
||||||
dir: true
|
dir: true,
|
||||||
};
|
enabled: false
|
||||||
dig.set = function (dir) {
|
};
|
||||||
dig.state.dir = dir;
|
this.display = display;
|
||||||
};
|
this.ffmpeg = ffmpeg;
|
||||||
dig.move = async function () {
|
this.ffprobe = ffprobe;
|
||||||
|
this.ui = ui;
|
||||||
|
this.light = light;
|
||||||
|
this.init();
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
**/
|
||||||
|
async init() {
|
||||||
|
this.log = await Log({ label: 'digital' });
|
||||||
|
this.ipc = require('electron').ipcMain;
|
||||||
|
this.listen();
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
**/
|
||||||
|
listen() {
|
||||||
|
this.ipc.on('digital', this.connectDigital.bind(this));
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
**/
|
||||||
|
set(dir) {
|
||||||
|
this.state.dir = dir;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
**/
|
||||||
|
async move() {
|
||||||
let start = +new Date();
|
let start = +new Date();
|
||||||
let last = dig.state.dir + 0;
|
if (this.state.dir) {
|
||||||
if (dig.state.dir) {
|
this.state.frame++;
|
||||||
dig.state.frame++;
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
dig.state.frame--;
|
this.state.frame--;
|
||||||
}
|
}
|
||||||
if (dig.state.frame < 1) {
|
if (this.state.frame < 1) {
|
||||||
dig.state.frame = 1;
|
this.state.frame = 1;
|
||||||
}
|
}
|
||||||
return (+new Date()) - start;
|
return (+new Date()) - start;
|
||||||
};
|
}
|
||||||
dig.start = async function (lightState) {
|
/**
|
||||||
|
*
|
||||||
|
**/
|
||||||
|
async start() {
|
||||||
try {
|
try {
|
||||||
await dig.ffmpeg.clearAll();
|
await this.ffmpeg.clearAll();
|
||||||
}
|
}
|
||||||
catch (err) {
|
catch (err) {
|
||||||
console.error(err);
|
console.error(err);
|
||||||
|
throw err;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
await dig.ffmpeg.frame(dig.state, lightState);
|
await this.ffmpeg.frame(this.state, this.light.state);
|
||||||
}
|
}
|
||||||
catch (err) {
|
catch (err) {
|
||||||
console.error(err);
|
console.error(err);
|
||||||
|
throw err;
|
||||||
}
|
}
|
||||||
dig.display.start(dig.state.frame);
|
this.display.start(this.state.frame);
|
||||||
await delay(20);
|
await delay(20);
|
||||||
};
|
}
|
||||||
dig.end = async function () {
|
/**
|
||||||
|
*
|
||||||
|
**/
|
||||||
|
async end() {
|
||||||
await delay(20);
|
await delay(20);
|
||||||
dig.display.end();
|
this.display.end();
|
||||||
};
|
}
|
||||||
module.exports = (display, ffmpeg, ffprobe) => {
|
/**
|
||||||
dig.display = display;
|
* Use a file as the "digital" source on "projector"
|
||||||
dig.ffmpeg = ffmpeg;
|
*
|
||||||
dig.ffprobe = ffprobe;
|
**/
|
||||||
return dig;
|
async connectDigital(evt, arg) {
|
||||||
|
let info;
|
||||||
|
let frames = 0;
|
||||||
|
try {
|
||||||
|
info = await this.ffprobe.info(arg.path);
|
||||||
|
}
|
||||||
|
catch (err) {
|
||||||
|
//this.log.error(err, 'DIGITAL', true, true);
|
||||||
|
this.state.enabled = false;
|
||||||
|
await this.ui.send('digital', { valid: false });
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
frames = await this.ffprobe.frames(arg.path);
|
||||||
|
}
|
||||||
|
catch (err) {
|
||||||
|
this.log.error(err, 'DIGITAL', true, true);
|
||||||
|
this.state.enabled = false;
|
||||||
|
await this.ui.send('digital', { valid: false });
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
this.state.frame = 0;
|
||||||
|
this.state.path = arg.path;
|
||||||
|
this.state.fileName = arg.fileName;
|
||||||
|
this.state.frames = frames;
|
||||||
|
this.state.info = info;
|
||||||
|
this.log.info(`Opened ${this.state.fileName}`, 'DIGITAL', true, true);
|
||||||
|
this.log.info(`Frames : ${frames}`, 'DIGITAL', true, true);
|
||||||
|
this.state.enabled = true;
|
||||||
|
return await this.ui.send('digital', { valid: true, state: JSON.stringify(this.state) });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
module.exports = (display, ffmpeg, ffprobe, ui, light) => {
|
||||||
|
return new Digital(display, ffmpeg, ffprobe, ui, light);
|
||||||
};
|
};
|
||||||
//# sourceMappingURL=index.js.map
|
//# sourceMappingURL=index.js.map
|
|
@ -1 +1 @@
|
||||||
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/digital/index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,+BAAgC;AAEhC,MAAM,GAAG,GAAS,EAAE,CAAC;AACrB,GAAG,CAAC,KAAK,GAAG;IACX,KAAK,EAAG,CAAC;IACT,MAAM,EAAG,CAAC;IACV,IAAI,EAAG,IAAI;IACX,QAAQ,EAAG,IAAI;IACf,IAAI,EAAG,EAAE;IACT,GAAG,EAAG,IAAI;CACV,CAAC;AAEF,GAAG,CAAC,GAAG,GAAI,UAAU,GAAa;IACjC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;AACrB,CAAC,CAAA;AAED,GAAG,CAAC,IAAI,GAAG,KAAK;IACf,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,EAAE,CAAA;IACvB,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;IAC7B,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE;QAClB,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;KACjB;SAAM;QACN,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;KACjB;IACD,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE;QACxB,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAA;KACnB;IACD,OAAO,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,KAAK,CAAA;AAC7B,CAAC,CAAA;AAED,GAAG,CAAC,KAAK,GAAG,KAAK,WAAW,UAAoB;IAC/C,IAAI;QACH,MAAM,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAA;KAC3B;IAAC,OAAO,GAAG,EAAE;QACb,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;KAClB;IAED,IAAI;QACH,MAAM,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;KAC7C;IAAC,OAAO,GAAG,EAAE;QACb,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;KAClB;IAED,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAClC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAA;AAChB,CAAC,CAAA;AAED,GAAG,CAAC,GAAG,GAAG,KAAK;IACd,MAAM,KAAK,CAAC,EAAE,CAAC,CAAA;IACf,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,CAAA;AAClB,CAAC,CAAA;AAED,MAAM,CAAC,OAAO,GAAG,CAAC,OAAa,EAAE,MAAY,EAAE,OAAa,EAAE,EAAE;IAC/D,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;IACtB,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;IACpB,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;IACtB,OAAO,GAAG,CAAC;AACZ,CAAC,CAAA"}
|
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/digital/index.ts"],"names":[],"mappings":"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"}
|
|
@ -1,6 +1,7 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const delay = require("delay");
|
const delay = require("delay");
|
||||||
|
const Log = require("log");
|
||||||
class Light {
|
class Light {
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -16,7 +17,7 @@ class Light {
|
||||||
*
|
*
|
||||||
**/
|
**/
|
||||||
async init() {
|
async init() {
|
||||||
this.log = await require('log')({ label: 'light' });
|
this.log = await Log({ label: 'light' });
|
||||||
this.ipc = require('electron').ipcMain;
|
this.ipc = require('electron').ipcMain;
|
||||||
this.listen();
|
this.listen();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/light/index.ts"],"names":[],"mappings":"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"}
|
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/light/index.ts"],"names":[],"mappings":"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"}
|
|
@ -1,4 +1,7 @@
|
||||||
|
"use strict";
|
||||||
/** class representing the Projector features **/
|
/** class representing the Projector features **/
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
const Log = require("log");
|
||||||
class Projector {
|
class Projector {
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -16,7 +19,7 @@ class Projector {
|
||||||
*
|
*
|
||||||
**/
|
**/
|
||||||
async init() {
|
async init() {
|
||||||
this.log = await require('log')({ label: 'proj' });
|
this.log = await Log({ label: 'proj' });
|
||||||
this.ipc = require('electron').ipcMain;
|
this.ipc = require('electron').ipcMain;
|
||||||
this.listen();
|
this.listen();
|
||||||
}
|
}
|
||||||
|
@ -25,7 +28,6 @@ class Projector {
|
||||||
**/
|
**/
|
||||||
listen() {
|
listen() {
|
||||||
this.ipc.on('proj', this.listener.bind(this));
|
this.ipc.on('proj', this.listener.bind(this));
|
||||||
this.ipc.on('digital', this.connectDigital.bind(this));
|
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -40,8 +42,8 @@ class Projector {
|
||||||
cmd = this.cfg.arduino.cmd.proj_backward;
|
cmd = this.cfg.arduino.cmd.proj_backward;
|
||||||
}
|
}
|
||||||
this.state.dir = dir;
|
this.state.dir = dir;
|
||||||
if (this.state.digital) {
|
if (this.dig.state.enabled) {
|
||||||
//this.dig.set(dir)
|
this.dig.set(dir);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
try {
|
try {
|
||||||
|
@ -59,9 +61,9 @@ class Projector {
|
||||||
async move(frame, id) {
|
async move(frame, id) {
|
||||||
const cmd = this.cfg.arduino.cmd.projector;
|
const cmd = this.cfg.arduino.cmd.projector;
|
||||||
let ms;
|
let ms;
|
||||||
if (this.state.digital) {
|
if (this.dig.state.enabled) {
|
||||||
try {
|
try {
|
||||||
//ms = await this.dig.move()
|
ms = await this.dig.move();
|
||||||
}
|
}
|
||||||
catch (err) {
|
catch (err) {
|
||||||
this.log.error(err);
|
this.log.error(err);
|
||||||
|
@ -127,41 +129,6 @@ class Projector {
|
||||||
this.log.info(message, 'PROJECTOR');
|
this.log.info(message, 'PROJECTOR');
|
||||||
return await this.ui.send('proj', { cmd: cmd, id: id, ms: ms });
|
return await this.ui.send('proj', { cmd: cmd, id: id, ms: ms });
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* Use a file as the "digital" source on "projector"
|
|
||||||
*
|
|
||||||
**/
|
|
||||||
async connectDigital(evt, arg) {
|
|
||||||
let info;
|
|
||||||
let frames = 0;
|
|
||||||
try {
|
|
||||||
info = await this.dig.ffprobe.info(arg.path);
|
|
||||||
}
|
|
||||||
catch (err) {
|
|
||||||
this.log.error(err, 'DIGITAL', true, true);
|
|
||||||
this.state.digital = false;
|
|
||||||
await this.ui.send('digital', { valid: false });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
frames = await this.dig.ffprobe.frames(arg.path);
|
|
||||||
}
|
|
||||||
catch (err) {
|
|
||||||
this.log.error(err, 'DIGITAL', true, true);
|
|
||||||
this.state.digital = false;
|
|
||||||
await this.ui.send('digital', { valid: false });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
this.dig.state.frame = 0;
|
|
||||||
this.dig.state.path = arg.path;
|
|
||||||
this.dig.state.fileName = arg.fileName;
|
|
||||||
this.dig.state.frames = frames;
|
|
||||||
this.dig.state.info = info;
|
|
||||||
this.log.info(`Opened ${this.dig.state.fileName}`, 'DIGITAL', true, true);
|
|
||||||
this.log.info(`Frames : ${frames}`, 'DIGITAL', true, true);
|
|
||||||
this.state.digital = true;
|
|
||||||
return await this.ui.send('digital', { valid: true, state: JSON.stringify(this.dig.state) });
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
module.exports = function (arduino, cfg, ui, dig) {
|
module.exports = function (arduino, cfg, ui, dig) {
|
||||||
return new Projector(arduino, cfg, ui, dig);
|
return new Projector(arduino, cfg, ui, dig);
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1,83 +1,107 @@
|
||||||
'use strict'
|
'use strict';
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const os = require('os');
|
const os = require("os");
|
||||||
const path = require('path');
|
const path = require("path");
|
||||||
const fs = require('fs-extra');
|
const fs = require("fs-extra");
|
||||||
const settings = {};
|
class Settings {
|
||||||
|
/**
|
||||||
settings.file = path.join(os.homedir(), `/.mcopy/settings.json`);
|
*
|
||||||
settings.state = {
|
**/
|
||||||
server : {
|
constructor() {
|
||||||
port : 1111,
|
this.file = path.join(os.homedir(), `/.mcopy/settings.json`);
|
||||||
enabled : true
|
this.state = {
|
||||||
|
server: {
|
||||||
|
port: 1111,
|
||||||
|
enabled: true
|
||||||
},
|
},
|
||||||
devices : [],
|
devices: [],
|
||||||
profile : 'mcopy',
|
profile: 'mcopy',
|
||||||
camera : {},
|
camera: {},
|
||||||
projector : {},
|
projector: {},
|
||||||
light : {}
|
light: {}
|
||||||
}
|
};
|
||||||
|
}
|
||||||
settings.checkDir = async function () {
|
/**
|
||||||
|
*
|
||||||
|
**/
|
||||||
|
async checkDir() {
|
||||||
const dir = path.join(os.homedir(), '.mcopy/');
|
const dir = path.join(os.homedir(), '.mcopy/');
|
||||||
const exists = await fs.exists(dir)
|
const exists = await fs.exists(dir);
|
||||||
if (!exists) {
|
if (!exists) {
|
||||||
try {
|
try {
|
||||||
await fs.mkdir(dir);
|
await fs.mkdir(dir);
|
||||||
} catch (err) {
|
}
|
||||||
if (err.code === 'EEXIST') return true
|
catch (err) {
|
||||||
|
if (err.code === 'EEXIST')
|
||||||
|
return true;
|
||||||
console.error(err);
|
console.error(err);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true
|
return true;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
settings.save = async function () {
|
*
|
||||||
const str = JSON.stringify(settings.state, null, '\t');
|
**/
|
||||||
settings.checkDir();
|
async save() {
|
||||||
|
const str = JSON.stringify(this.state, null, '\t');
|
||||||
|
this.checkDir();
|
||||||
try {
|
try {
|
||||||
await fs.writeFile(settings.file, str, 'utf8');
|
await fs.writeFile(this.file, str, 'utf8');
|
||||||
} catch (err) {
|
}
|
||||||
|
catch (err) {
|
||||||
console.error(err);
|
console.error(err);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
settings.update = function (key, val) {
|
/**
|
||||||
settings.state[key] = val;
|
*
|
||||||
}
|
**/
|
||||||
|
update(key, val) {
|
||||||
settings.get = function (key) {
|
this.state[key] = val;
|
||||||
return settings.state[key];
|
}
|
||||||
}
|
/**
|
||||||
|
*
|
||||||
settings.all = function () {
|
**/
|
||||||
return settings.state;
|
get(key) {
|
||||||
}
|
return this.state[key];
|
||||||
|
}
|
||||||
settings.restore = async function () {
|
/**
|
||||||
|
*
|
||||||
|
**/
|
||||||
|
all() {
|
||||||
|
return this.state;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
**/
|
||||||
|
async restore() {
|
||||||
let exists;
|
let exists;
|
||||||
let str;
|
let str;
|
||||||
|
this.checkDir();
|
||||||
settings.checkDir();
|
exists = await fs.exists(this.file);
|
||||||
exists = await fs.exists(settings.file);
|
|
||||||
|
|
||||||
if (exists) {
|
if (exists) {
|
||||||
str = await fs.readFile(settings.file, 'utf8');
|
str = await fs.readFile(this.file, 'utf8');
|
||||||
settings.state = JSON.parse(str);
|
this.state = JSON.parse(str);
|
||||||
} else {
|
|
||||||
settings.save();
|
|
||||||
}
|
}
|
||||||
}
|
else {
|
||||||
|
this.save();
|
||||||
settings.reset = async function () {
|
}
|
||||||
const exists = await fs.exists(settings.file);
|
}
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
**/
|
||||||
|
async reset() {
|
||||||
|
const exists = await fs.exists(this.file);
|
||||||
if (exists) {
|
if (exists) {
|
||||||
try {
|
try {
|
||||||
await fs.unlink(settings.file);
|
await fs.unlink(this.file);
|
||||||
} catch (err) {
|
}
|
||||||
|
catch (err) {
|
||||||
console.error(err);
|
console.error(err);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
settings.restore();
|
this.restore();
|
||||||
};
|
}
|
||||||
|
;
|
||||||
module.exports = settings;
|
}
|
||||||
|
module.exports = new Settings();
|
||||||
|
//# sourceMappingURL=index.js.map
|
|
@ -1,9 +1,10 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
//import Log = require('log');
|
||||||
|
const delay = require("delay");
|
||||||
const SerialPort = require('serialport');
|
const SerialPort = require('serialport');
|
||||||
const Readline = SerialPort.parsers.Readline;
|
const Readline = SerialPort.parsers.Readline;
|
||||||
const exec = require('child_process').exec;
|
const exec = require('child_process').exec;
|
||||||
const delay = require("delay");
|
|
||||||
const parser = new Readline('');
|
const parser = new Readline('');
|
||||||
const newlineRe = new RegExp('\n', 'g');
|
const newlineRe = new RegExp('\n', 'g');
|
||||||
const returnRe = new RegExp('\r', 'g');
|
const returnRe = new RegExp('\r', 'g');
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1,25 +1,27 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const Intval = require("intval");
|
const Intval = require("intval");
|
||||||
|
const Log = require("log");
|
||||||
/** class representing camera functions **/
|
/** class representing camera functions **/
|
||||||
class Camera {
|
class Camera {
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
**/
|
**/
|
||||||
constructor(arduino, cfg, ui) {
|
constructor(arduino, cfg, ui, dig) {
|
||||||
this.state = { dir: true, digital: false };
|
this.state = { dir: true, digital: false };
|
||||||
this.arduino = null;
|
this.arduino = null;
|
||||||
this.intval = null;
|
this.intval = null;
|
||||||
this.arduino = arduino;
|
this.arduino = arduino;
|
||||||
this.cfg = cfg;
|
this.cfg = cfg;
|
||||||
this.ui = ui;
|
this.ui = ui;
|
||||||
|
this.dig = dig;
|
||||||
this.init();
|
this.init();
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
**/
|
**/
|
||||||
async init() {
|
async init() {
|
||||||
this.log = await require('log')({ label: 'cam' });
|
this.log = await Log({ label: 'cam' });
|
||||||
this.ipc = require('electron').ipcMain;
|
this.ipc = require('electron').ipcMain;
|
||||||
this.listen();
|
this.listen();
|
||||||
}
|
}
|
||||||
|
@ -67,9 +69,9 @@ class Camera {
|
||||||
async move(frame, id) {
|
async move(frame, id) {
|
||||||
const cmd = this.cfg.arduino.cmd.camera;
|
const cmd = this.cfg.arduino.cmd.camera;
|
||||||
let ms;
|
let ms;
|
||||||
//if (this.state.digital) {
|
if (this.dig.state.enabled) {
|
||||||
//await this.dig.start()
|
await this.dig.start();
|
||||||
//}
|
}
|
||||||
if (this.intval) {
|
if (this.intval) {
|
||||||
try {
|
try {
|
||||||
ms = await this.intval.move();
|
ms = await this.intval.move();
|
||||||
|
@ -86,9 +88,9 @@ class Camera {
|
||||||
this.log.error(err);
|
this.log.error(err);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//if (this.state.digital) {
|
if (this.dig.state.enabled) {
|
||||||
// await this.dig.end()
|
await this.dig.end();
|
||||||
//}
|
}
|
||||||
this.log.info('Camera move time', { ms });
|
this.log.info('Camera move time', { ms });
|
||||||
return this.end(cmd, id, ms);
|
return this.end(cmd, id, ms);
|
||||||
}
|
}
|
||||||
|
@ -175,9 +177,8 @@ class Camera {
|
||||||
this.log.info(message, 'CAMERA', true, true);
|
this.log.info(message, 'CAMERA', true, true);
|
||||||
this.ui.send('cam', { cmd: cmd, id: id, ms: ms });
|
this.ui.send('cam', { cmd: cmd, id: id, ms: ms });
|
||||||
}
|
}
|
||||||
;
|
|
||||||
}
|
}
|
||||||
module.exports = function (arduino, cfg, ui) {
|
module.exports = function (arduino, cfg, ui, dig) {
|
||||||
return new Camera(arduino, cfg, ui);
|
return new Camera(arduino, cfg, ui, dig);
|
||||||
};
|
};
|
||||||
//# sourceMappingURL=index.js.map
|
//# sourceMappingURL=index.js.map
|
File diff suppressed because one or more lines are too long
|
@ -1,56 +1,129 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const delay = require("delay");
|
const delay = require("delay");
|
||||||
const dig = {};
|
const Log = require("log");
|
||||||
dig.state = {
|
class Digital {
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
**/
|
||||||
|
constructor(display, ffmpeg, ffprobe, ui, light) {
|
||||||
|
this.state = {
|
||||||
frame: 0,
|
frame: 0,
|
||||||
frames: 0,
|
frames: 0,
|
||||||
path: null,
|
path: null,
|
||||||
fileName: null,
|
fileName: null,
|
||||||
info: {},
|
info: {},
|
||||||
dir: true
|
dir: true,
|
||||||
};
|
enabled: false
|
||||||
dig.set = function (dir) {
|
};
|
||||||
dig.state.dir = dir;
|
this.display = display;
|
||||||
};
|
this.ffmpeg = ffmpeg;
|
||||||
dig.move = async function () {
|
this.ffprobe = ffprobe;
|
||||||
|
this.ui = ui;
|
||||||
|
this.light = light;
|
||||||
|
this.init();
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
**/
|
||||||
|
async init() {
|
||||||
|
this.log = await Log({ label: 'digital' });
|
||||||
|
this.ipc = require('electron').ipcMain;
|
||||||
|
this.listen();
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
**/
|
||||||
|
listen() {
|
||||||
|
this.ipc.on('digital', this.connectDigital.bind(this));
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
**/
|
||||||
|
set(dir) {
|
||||||
|
this.state.dir = dir;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
**/
|
||||||
|
async move() {
|
||||||
let start = +new Date();
|
let start = +new Date();
|
||||||
let last = dig.state.dir + 0;
|
if (this.state.dir) {
|
||||||
if (dig.state.dir) {
|
this.state.frame++;
|
||||||
dig.state.frame++;
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
dig.state.frame--;
|
this.state.frame--;
|
||||||
}
|
}
|
||||||
if (dig.state.frame < 1) {
|
if (this.state.frame < 1) {
|
||||||
dig.state.frame = 1;
|
this.state.frame = 1;
|
||||||
}
|
}
|
||||||
return (+new Date()) - start;
|
return (+new Date()) - start;
|
||||||
};
|
}
|
||||||
dig.start = async function (lightState) {
|
/**
|
||||||
|
*
|
||||||
|
**/
|
||||||
|
async start() {
|
||||||
try {
|
try {
|
||||||
await dig.ffmpeg.clearAll();
|
await this.ffmpeg.clearAll();
|
||||||
}
|
}
|
||||||
catch (err) {
|
catch (err) {
|
||||||
console.error(err);
|
console.error(err);
|
||||||
|
throw err;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
await dig.ffmpeg.frame(dig.state, lightState);
|
await this.ffmpeg.frame(this.state, this.light.state);
|
||||||
}
|
}
|
||||||
catch (err) {
|
catch (err) {
|
||||||
console.error(err);
|
console.error(err);
|
||||||
|
throw err;
|
||||||
}
|
}
|
||||||
dig.display.start(dig.state.frame);
|
this.display.start(this.state.frame);
|
||||||
await delay(20);
|
await delay(20);
|
||||||
};
|
}
|
||||||
dig.end = async function () {
|
/**
|
||||||
|
*
|
||||||
|
**/
|
||||||
|
async end() {
|
||||||
await delay(20);
|
await delay(20);
|
||||||
dig.display.end();
|
this.display.end();
|
||||||
};
|
}
|
||||||
module.exports = (display, ffmpeg, ffprobe) => {
|
/**
|
||||||
dig.display = display;
|
* Use a file as the "digital" source on "projector"
|
||||||
dig.ffmpeg = ffmpeg;
|
*
|
||||||
dig.ffprobe = ffprobe;
|
**/
|
||||||
return dig;
|
async connectDigital(evt, arg) {
|
||||||
|
let info;
|
||||||
|
let frames = 0;
|
||||||
|
try {
|
||||||
|
info = await this.ffprobe.info(arg.path);
|
||||||
|
}
|
||||||
|
catch (err) {
|
||||||
|
//this.log.error(err, 'DIGITAL', true, true);
|
||||||
|
this.state.enabled = false;
|
||||||
|
await this.ui.send('digital', { valid: false });
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
frames = await this.ffprobe.frames(arg.path);
|
||||||
|
}
|
||||||
|
catch (err) {
|
||||||
|
this.log.error(err, 'DIGITAL', true, true);
|
||||||
|
this.state.enabled = false;
|
||||||
|
await this.ui.send('digital', { valid: false });
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
this.state.frame = 0;
|
||||||
|
this.state.path = arg.path;
|
||||||
|
this.state.fileName = arg.fileName;
|
||||||
|
this.state.frames = frames;
|
||||||
|
this.state.info = info;
|
||||||
|
this.log.info(`Opened ${this.state.fileName}`, 'DIGITAL', true, true);
|
||||||
|
this.log.info(`Frames : ${frames}`, 'DIGITAL', true, true);
|
||||||
|
this.state.enabled = true;
|
||||||
|
return await this.ui.send('digital', { valid: true, state: JSON.stringify(this.state) });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
module.exports = (display, ffmpeg, ffprobe, ui, light) => {
|
||||||
|
return new Digital(display, ffmpeg, ffprobe, ui, light);
|
||||||
};
|
};
|
||||||
//# sourceMappingURL=index.js.map
|
//# sourceMappingURL=index.js.map
|
|
@ -1 +1 @@
|
||||||
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/digital/index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,+BAAgC;AAEhC,MAAM,GAAG,GAAS,EAAE,CAAC;AACrB,GAAG,CAAC,KAAK,GAAG;IACX,KAAK,EAAG,CAAC;IACT,MAAM,EAAG,CAAC;IACV,IAAI,EAAG,IAAI;IACX,QAAQ,EAAG,IAAI;IACf,IAAI,EAAG,EAAE;IACT,GAAG,EAAG,IAAI;CACV,CAAC;AAEF,GAAG,CAAC,GAAG,GAAI,UAAU,GAAa;IACjC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;AACrB,CAAC,CAAA;AAED,GAAG,CAAC,IAAI,GAAG,KAAK;IACf,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,EAAE,CAAA;IACvB,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;IAC7B,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE;QAClB,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;KACjB;SAAM;QACN,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;KACjB;IACD,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE;QACxB,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAA;KACnB;IACD,OAAO,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,KAAK,CAAA;AAC7B,CAAC,CAAA;AAED,GAAG,CAAC,KAAK,GAAG,KAAK,WAAW,UAAoB;IAC/C,IAAI;QACH,MAAM,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAA;KAC3B;IAAC,OAAO,GAAG,EAAE;QACb,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;KAClB;IAED,IAAI;QACH,MAAM,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;KAC7C;IAAC,OAAO,GAAG,EAAE;QACb,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;KAClB;IAED,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAClC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAA;AAChB,CAAC,CAAA;AAED,GAAG,CAAC,GAAG,GAAG,KAAK;IACd,MAAM,KAAK,CAAC,EAAE,CAAC,CAAA;IACf,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,CAAA;AAClB,CAAC,CAAA;AAED,MAAM,CAAC,OAAO,GAAG,CAAC,OAAa,EAAE,MAAY,EAAE,OAAa,EAAE,EAAE;IAC/D,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;IACtB,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;IACpB,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;IACtB,OAAO,GAAG,CAAC;AACZ,CAAC,CAAA"}
|
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/digital/index.ts"],"names":[],"mappings":"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"}
|
|
@ -1,6 +1,7 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const delay = require("delay");
|
const delay = require("delay");
|
||||||
|
const Log = require("log");
|
||||||
class Light {
|
class Light {
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -16,7 +17,7 @@ class Light {
|
||||||
*
|
*
|
||||||
**/
|
**/
|
||||||
async init() {
|
async init() {
|
||||||
this.log = await require('log')({ label: 'light' });
|
this.log = await Log({ label: 'light' });
|
||||||
this.ipc = require('electron').ipcMain;
|
this.ipc = require('electron').ipcMain;
|
||||||
this.listen();
|
this.listen();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/light/index.ts"],"names":[],"mappings":"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"}
|
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/light/index.ts"],"names":[],"mappings":"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"}
|
|
@ -1 +1 @@
|
||||||
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/log/index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;AAC/D,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAAA;AAC9D,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAC5B,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;AAC9B,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AAExB,MAAM,OAAO,GAAG,mBAAmB,CAAA;AACnC,IAAI,SAAe,CAAA;AAEnB;;;;;IAKI;AACJ,KAAK,UAAU,OAAO;IAErB,MAAM,OAAO,GAAY,EAAE,CAAC,OAAO,EAAE,CAAC;IACtC,MAAM,QAAQ,GAAY,qBAAqB,CAAC;IAChD,MAAM,MAAM,GAAY,0BAA0B,CAAC;IACnD,MAAM,MAAM,GAAY,6BAA6B,CAAC;IACtD,IAAI,OAAO,GAAY,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACpD,IAAI,MAAgB,CAAC;IAErB,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE;QAClC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;KACrC;SAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE;QACxC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;KACrC;IACD,MAAM,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClC,IAAI,CAAC,MAAM,EAAE;QACZ,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;KACxB;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;AAC5C,CAAC;AACD;;;;;;;IAOI;AACJ,MAAM,CAAC,OAAO,GAAG,KAAK,WAAW,GAAS;IACzC,IAAI,MAAM,CAAC;IACX,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,EAAE;QACrB,SAAS,GAAG;YACX,IAAI,EAAG,cAAa,CAAC;YACrB,IAAI,EAAG,cAAa,CAAC;YACrB,KAAK,EAAG,cAAa,CAAC;SACtB,CAAA;KACD;SAAM;QACN,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,EAAE;YACrB,MAAM,GAAG,OAAO,CACf,KAAK,CAAC,EAAE,KAAK,EAAG,GAAG,CAAC,KAAK,EAAE,CAAC,EAC5B,SAAS,EAAE,EACX,QAAQ,EAAE,EACV,MAAM,EAAE,CACR,CAAC;SACF;aAAM;YACN,MAAM,GAAG,OAAO,CACf,SAAS,EAAE,EACX,QAAQ,EAAE,EACV,MAAM,EAAE,CACR,CAAC;SACF;QACD,SAAS,GAAG,YAAY,CAAC;YACxB,UAAU,EAAE;gBACX,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;oBACxB,MAAM;iBACN,CAAC;gBACF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;oBACrB,QAAQ,EAAE,MAAM,OAAO,EAAE;iBACzB,CAAC;aACF;SACD,CAAC,CAAA;KACF;IACD,OAAO,SAAS,CAAA;AACjB,CAAC,CAAA"}
|
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/log/index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;AAC/D,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAA;AACpE,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAC5B,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;AAC9B,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AAExB,MAAM,OAAO,GAAG,mBAAmB,CAAA;AACnC,IAAI,SAAe,CAAA;AAEnB;;;;;IAKI;AACJ,KAAK,UAAU,OAAO;IAErB,MAAM,OAAO,GAAY,EAAE,CAAC,OAAO,EAAE,CAAC;IACtC,MAAM,QAAQ,GAAY,iBAAiB,CAAC;IAC5C,MAAM,MAAM,GAAY,sBAAsB,CAAC;IAC/C,MAAM,MAAM,GAAY,yBAAyB,CAAC;IAClD,IAAI,OAAO,GAAY,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACpD,IAAI,MAAgB,CAAC;IAErB,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE;QAClC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;KACrC;SAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE;QACxC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;KACrC;IACD,MAAM,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClC,IAAI,CAAC,MAAM,EAAE;QACZ,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;KACxB;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;AACxC,CAAC;AACD;;;;;;;IAOI;AACJ,MAAM,CAAC,OAAO,GAAG,KAAK,WAAW,GAAS;IACzC,IAAI,MAAM,CAAC;IACX,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,EAAE;QACrB,SAAS,GAAG;YACX,IAAI,EAAG,cAAa,CAAC;YACrB,IAAI,EAAG,cAAa,CAAC;YACrB,KAAK,EAAG,cAAa,CAAC;SACtB,CAAA;KACD;SAAM;QACN,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,EAAE;YACrB,MAAM,GAAG,OAAO,CACf,KAAK,CAAC,EAAE,KAAK,EAAG,GAAG,CAAC,KAAK,EAAE,CAAC;YAC5B,cAAc;YACd,QAAQ,EAAE,EACV,MAAM,EAAE,CACR,CAAC;SACF;aAAM;YACN,MAAM,GAAG,OAAO;YACf,cAAc;YACd,QAAQ,EAAE,EACV,MAAM,EAAE,CACR,CAAC;SACF;QACD,SAAS,GAAG,YAAY,CAAC;YACxB,UAAU,EAAE;gBACX,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;oBACxB,MAAM;iBACN,CAAC;gBACF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;oBACrB,QAAQ,EAAE,MAAM,OAAO,EAAE;oBACzB,MAAM,EAAG,OAAO,CACf,KAAK,CAAC,EAAE,KAAK,EAAG,GAAG,CAAC,KAAK,EAAE,CAAC;oBAC5B,cAAc;oBACd,IAAI,EAAE,CACN;iBACD,CAAC;aACF;SACD,CAAC,CAAA;KACF;IACD,OAAO,SAAS,CAAA;AACjB,CAAC,CAAA"}
|
|
@ -1,4 +1,7 @@
|
||||||
|
"use strict";
|
||||||
/** class representing the Projector features **/
|
/** class representing the Projector features **/
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
const Log = require("log");
|
||||||
class Projector {
|
class Projector {
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -16,7 +19,7 @@ class Projector {
|
||||||
*
|
*
|
||||||
**/
|
**/
|
||||||
async init() {
|
async init() {
|
||||||
this.log = await require('log')({ label: 'proj' });
|
this.log = await Log({ label: 'proj' });
|
||||||
this.ipc = require('electron').ipcMain;
|
this.ipc = require('electron').ipcMain;
|
||||||
this.listen();
|
this.listen();
|
||||||
}
|
}
|
||||||
|
@ -25,7 +28,6 @@ class Projector {
|
||||||
**/
|
**/
|
||||||
listen() {
|
listen() {
|
||||||
this.ipc.on('proj', this.listener.bind(this));
|
this.ipc.on('proj', this.listener.bind(this));
|
||||||
this.ipc.on('digital', this.connectDigital.bind(this));
|
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -40,8 +42,8 @@ class Projector {
|
||||||
cmd = this.cfg.arduino.cmd.proj_backward;
|
cmd = this.cfg.arduino.cmd.proj_backward;
|
||||||
}
|
}
|
||||||
this.state.dir = dir;
|
this.state.dir = dir;
|
||||||
if (this.state.digital) {
|
if (this.dig.state.enabled) {
|
||||||
//this.dig.set(dir)
|
this.dig.set(dir);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
try {
|
try {
|
||||||
|
@ -59,9 +61,9 @@ class Projector {
|
||||||
async move(frame, id) {
|
async move(frame, id) {
|
||||||
const cmd = this.cfg.arduino.cmd.projector;
|
const cmd = this.cfg.arduino.cmd.projector;
|
||||||
let ms;
|
let ms;
|
||||||
if (this.state.digital) {
|
if (this.dig.state.enabled) {
|
||||||
try {
|
try {
|
||||||
//ms = await this.dig.move()
|
ms = await this.dig.move();
|
||||||
}
|
}
|
||||||
catch (err) {
|
catch (err) {
|
||||||
this.log.error(err);
|
this.log.error(err);
|
||||||
|
@ -127,41 +129,6 @@ class Projector {
|
||||||
this.log.info(message, 'PROJECTOR');
|
this.log.info(message, 'PROJECTOR');
|
||||||
return await this.ui.send('proj', { cmd: cmd, id: id, ms: ms });
|
return await this.ui.send('proj', { cmd: cmd, id: id, ms: ms });
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* Use a file as the "digital" source on "projector"
|
|
||||||
*
|
|
||||||
**/
|
|
||||||
async connectDigital(evt, arg) {
|
|
||||||
let info;
|
|
||||||
let frames = 0;
|
|
||||||
try {
|
|
||||||
info = await this.dig.ffprobe.info(arg.path);
|
|
||||||
}
|
|
||||||
catch (err) {
|
|
||||||
this.log.error(err, 'DIGITAL', true, true);
|
|
||||||
this.state.digital = false;
|
|
||||||
await this.ui.send('digital', { valid: false });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
frames = await this.dig.ffprobe.frames(arg.path);
|
|
||||||
}
|
|
||||||
catch (err) {
|
|
||||||
this.log.error(err, 'DIGITAL', true, true);
|
|
||||||
this.state.digital = false;
|
|
||||||
await this.ui.send('digital', { valid: false });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
this.dig.state.frame = 0;
|
|
||||||
this.dig.state.path = arg.path;
|
|
||||||
this.dig.state.fileName = arg.fileName;
|
|
||||||
this.dig.state.frames = frames;
|
|
||||||
this.dig.state.info = info;
|
|
||||||
this.log.info(`Opened ${this.dig.state.fileName}`, 'DIGITAL', true, true);
|
|
||||||
this.log.info(`Frames : ${frames}`, 'DIGITAL', true, true);
|
|
||||||
this.state.digital = true;
|
|
||||||
return await this.ui.send('digital', { valid: true, state: JSON.stringify(this.dig.state) });
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
module.exports = function (arduino, cfg, ui, dig) {
|
module.exports = function (arduino, cfg, ui, dig) {
|
||||||
return new Projector(arduino, cfg, ui, dig);
|
return new Projector(arduino, cfg, ui, dig);
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1,9 +1,10 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
//import Log = require('log');
|
||||||
|
const delay = require("delay");
|
||||||
const SerialPort = require('serialport');
|
const SerialPort = require('serialport');
|
||||||
const Readline = SerialPort.parsers.Readline;
|
const Readline = SerialPort.parsers.Readline;
|
||||||
const exec = require('child_process').exec;
|
const exec = require('child_process').exec;
|
||||||
const delay = require("delay");
|
|
||||||
const parser = new Readline('');
|
const parser = new Readline('');
|
||||||
const newlineRe = new RegExp('\n', 'g');
|
const newlineRe = new RegExp('\n', 'g');
|
||||||
const returnRe = new RegExp('\r', 'g');
|
const returnRe = new RegExp('\r', 'g');
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1,25 +1,27 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const Intval = require("intval");
|
const Intval = require("intval");
|
||||||
|
const Log = require("log");
|
||||||
/** class representing camera functions **/
|
/** class representing camera functions **/
|
||||||
class Camera {
|
class Camera {
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
**/
|
**/
|
||||||
constructor(arduino, cfg, ui) {
|
constructor(arduino, cfg, ui, dig) {
|
||||||
this.state = { dir: true, digital: false };
|
this.state = { dir: true, digital: false };
|
||||||
this.arduino = null;
|
this.arduino = null;
|
||||||
this.intval = null;
|
this.intval = null;
|
||||||
this.arduino = arduino;
|
this.arduino = arduino;
|
||||||
this.cfg = cfg;
|
this.cfg = cfg;
|
||||||
this.ui = ui;
|
this.ui = ui;
|
||||||
|
this.dig = dig;
|
||||||
this.init();
|
this.init();
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
**/
|
**/
|
||||||
async init() {
|
async init() {
|
||||||
this.log = await require('log')({ label: 'cam' });
|
this.log = await Log({ label: 'cam' });
|
||||||
this.ipc = require('electron').ipcMain;
|
this.ipc = require('electron').ipcMain;
|
||||||
this.listen();
|
this.listen();
|
||||||
}
|
}
|
||||||
|
@ -67,9 +69,9 @@ class Camera {
|
||||||
async move(frame, id) {
|
async move(frame, id) {
|
||||||
const cmd = this.cfg.arduino.cmd.camera;
|
const cmd = this.cfg.arduino.cmd.camera;
|
||||||
let ms;
|
let ms;
|
||||||
//if (this.state.digital) {
|
if (this.dig.state.enabled) {
|
||||||
//await this.dig.start()
|
await this.dig.start();
|
||||||
//}
|
}
|
||||||
if (this.intval) {
|
if (this.intval) {
|
||||||
try {
|
try {
|
||||||
ms = await this.intval.move();
|
ms = await this.intval.move();
|
||||||
|
@ -86,9 +88,9 @@ class Camera {
|
||||||
this.log.error(err);
|
this.log.error(err);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//if (this.state.digital) {
|
if (this.dig.state.enabled) {
|
||||||
// await this.dig.end()
|
await this.dig.end();
|
||||||
//}
|
}
|
||||||
this.log.info('Camera move time', { ms });
|
this.log.info('Camera move time', { ms });
|
||||||
return this.end(cmd, id, ms);
|
return this.end(cmd, id, ms);
|
||||||
}
|
}
|
||||||
|
@ -175,9 +177,8 @@ class Camera {
|
||||||
this.log.info(message, 'CAMERA', true, true);
|
this.log.info(message, 'CAMERA', true, true);
|
||||||
this.ui.send('cam', { cmd: cmd, id: id, ms: ms });
|
this.ui.send('cam', { cmd: cmd, id: id, ms: ms });
|
||||||
}
|
}
|
||||||
;
|
|
||||||
}
|
}
|
||||||
module.exports = function (arduino, cfg, ui) {
|
module.exports = function (arduino, cfg, ui, dig) {
|
||||||
return new Camera(arduino, cfg, ui);
|
return new Camera(arduino, cfg, ui, dig);
|
||||||
};
|
};
|
||||||
//# sourceMappingURL=index.js.map
|
//# sourceMappingURL=index.js.map
|
File diff suppressed because one or more lines are too long
|
@ -1,56 +1,129 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const delay = require("delay");
|
const delay = require("delay");
|
||||||
const dig = {};
|
const Log = require("log");
|
||||||
dig.state = {
|
class Digital {
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
**/
|
||||||
|
constructor(display, ffmpeg, ffprobe, ui, light) {
|
||||||
|
this.state = {
|
||||||
frame: 0,
|
frame: 0,
|
||||||
frames: 0,
|
frames: 0,
|
||||||
path: null,
|
path: null,
|
||||||
fileName: null,
|
fileName: null,
|
||||||
info: {},
|
info: {},
|
||||||
dir: true
|
dir: true,
|
||||||
};
|
enabled: false
|
||||||
dig.set = function (dir) {
|
};
|
||||||
dig.state.dir = dir;
|
this.display = display;
|
||||||
};
|
this.ffmpeg = ffmpeg;
|
||||||
dig.move = async function () {
|
this.ffprobe = ffprobe;
|
||||||
|
this.ui = ui;
|
||||||
|
this.light = light;
|
||||||
|
this.init();
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
**/
|
||||||
|
async init() {
|
||||||
|
this.log = await Log({ label: 'digital' });
|
||||||
|
this.ipc = require('electron').ipcMain;
|
||||||
|
this.listen();
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
**/
|
||||||
|
listen() {
|
||||||
|
this.ipc.on('digital', this.connectDigital.bind(this));
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
**/
|
||||||
|
set(dir) {
|
||||||
|
this.state.dir = dir;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
**/
|
||||||
|
async move() {
|
||||||
let start = +new Date();
|
let start = +new Date();
|
||||||
let last = dig.state.dir + 0;
|
if (this.state.dir) {
|
||||||
if (dig.state.dir) {
|
this.state.frame++;
|
||||||
dig.state.frame++;
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
dig.state.frame--;
|
this.state.frame--;
|
||||||
}
|
}
|
||||||
if (dig.state.frame < 1) {
|
if (this.state.frame < 1) {
|
||||||
dig.state.frame = 1;
|
this.state.frame = 1;
|
||||||
}
|
}
|
||||||
return (+new Date()) - start;
|
return (+new Date()) - start;
|
||||||
};
|
}
|
||||||
dig.start = async function (lightState) {
|
/**
|
||||||
|
*
|
||||||
|
**/
|
||||||
|
async start() {
|
||||||
try {
|
try {
|
||||||
await dig.ffmpeg.clearAll();
|
await this.ffmpeg.clearAll();
|
||||||
}
|
}
|
||||||
catch (err) {
|
catch (err) {
|
||||||
console.error(err);
|
console.error(err);
|
||||||
|
throw err;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
await dig.ffmpeg.frame(dig.state, lightState);
|
await this.ffmpeg.frame(this.state, this.light.state);
|
||||||
}
|
}
|
||||||
catch (err) {
|
catch (err) {
|
||||||
console.error(err);
|
console.error(err);
|
||||||
|
throw err;
|
||||||
}
|
}
|
||||||
dig.display.start(dig.state.frame);
|
this.display.start(this.state.frame);
|
||||||
await delay(20);
|
await delay(20);
|
||||||
};
|
}
|
||||||
dig.end = async function () {
|
/**
|
||||||
|
*
|
||||||
|
**/
|
||||||
|
async end() {
|
||||||
await delay(20);
|
await delay(20);
|
||||||
dig.display.end();
|
this.display.end();
|
||||||
};
|
}
|
||||||
module.exports = (display, ffmpeg, ffprobe) => {
|
/**
|
||||||
dig.display = display;
|
* Use a file as the "digital" source on "projector"
|
||||||
dig.ffmpeg = ffmpeg;
|
*
|
||||||
dig.ffprobe = ffprobe;
|
**/
|
||||||
return dig;
|
async connectDigital(evt, arg) {
|
||||||
|
let info;
|
||||||
|
let frames = 0;
|
||||||
|
try {
|
||||||
|
info = await this.ffprobe.info(arg.path);
|
||||||
|
}
|
||||||
|
catch (err) {
|
||||||
|
//this.log.error(err, 'DIGITAL', true, true);
|
||||||
|
this.state.enabled = false;
|
||||||
|
await this.ui.send('digital', { valid: false });
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
frames = await this.ffprobe.frames(arg.path);
|
||||||
|
}
|
||||||
|
catch (err) {
|
||||||
|
this.log.error(err, 'DIGITAL', true, true);
|
||||||
|
this.state.enabled = false;
|
||||||
|
await this.ui.send('digital', { valid: false });
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
this.state.frame = 0;
|
||||||
|
this.state.path = arg.path;
|
||||||
|
this.state.fileName = arg.fileName;
|
||||||
|
this.state.frames = frames;
|
||||||
|
this.state.info = info;
|
||||||
|
this.log.info(`Opened ${this.state.fileName}`, 'DIGITAL', true, true);
|
||||||
|
this.log.info(`Frames : ${frames}`, 'DIGITAL', true, true);
|
||||||
|
this.state.enabled = true;
|
||||||
|
return await this.ui.send('digital', { valid: true, state: JSON.stringify(this.state) });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
module.exports = (display, ffmpeg, ffprobe, ui, light) => {
|
||||||
|
return new Digital(display, ffmpeg, ffprobe, ui, light);
|
||||||
};
|
};
|
||||||
//# sourceMappingURL=index.js.map
|
//# sourceMappingURL=index.js.map
|
|
@ -1 +1 @@
|
||||||
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/digital/index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,+BAAgC;AAEhC,MAAM,GAAG,GAAS,EAAE,CAAC;AACrB,GAAG,CAAC,KAAK,GAAG;IACX,KAAK,EAAG,CAAC;IACT,MAAM,EAAG,CAAC;IACV,IAAI,EAAG,IAAI;IACX,QAAQ,EAAG,IAAI;IACf,IAAI,EAAG,EAAE;IACT,GAAG,EAAG,IAAI;CACV,CAAC;AAEF,GAAG,CAAC,GAAG,GAAI,UAAU,GAAa;IACjC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;AACrB,CAAC,CAAA;AAED,GAAG,CAAC,IAAI,GAAG,KAAK;IACf,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,EAAE,CAAA;IACvB,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;IAC7B,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE;QAClB,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;KACjB;SAAM;QACN,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;KACjB;IACD,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE;QACxB,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAA;KACnB;IACD,OAAO,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,GAAG,KAAK,CAAA;AAC7B,CAAC,CAAA;AAED,GAAG,CAAC,KAAK,GAAG,KAAK,WAAW,UAAoB;IAC/C,IAAI;QACH,MAAM,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAA;KAC3B;IAAC,OAAO,GAAG,EAAE;QACb,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;KAClB;IAED,IAAI;QACH,MAAM,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,CAAA;KAC7C;IAAC,OAAO,GAAG,EAAE;QACb,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;KAClB;IAED,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAClC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAA;AAChB,CAAC,CAAA;AAED,GAAG,CAAC,GAAG,GAAG,KAAK;IACd,MAAM,KAAK,CAAC,EAAE,CAAC,CAAA;IACf,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,CAAA;AAClB,CAAC,CAAA;AAED,MAAM,CAAC,OAAO,GAAG,CAAC,OAAa,EAAE,MAAY,EAAE,OAAa,EAAE,EAAE;IAC/D,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;IACtB,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;IACpB,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;IACtB,OAAO,GAAG,CAAC;AACZ,CAAC,CAAA"}
|
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/digital/index.ts"],"names":[],"mappings":"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"}
|
|
@ -1,6 +1,7 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
Object.defineProperty(exports, "__esModule", { value: true });
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
const delay = require("delay");
|
const delay = require("delay");
|
||||||
|
const Log = require("log");
|
||||||
class Light {
|
class Light {
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -16,7 +17,7 @@ class Light {
|
||||||
*
|
*
|
||||||
**/
|
**/
|
||||||
async init() {
|
async init() {
|
||||||
this.log = await require('log')({ label: 'light' });
|
this.log = await Log({ label: 'light' });
|
||||||
this.ipc = require('electron').ipcMain;
|
this.ipc = require('electron').ipcMain;
|
||||||
this.listen();
|
this.listen();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/light/index.ts"],"names":[],"mappings":"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"}
|
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/light/index.ts"],"names":[],"mappings":"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"}
|
|
@ -1 +1 @@
|
||||||
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/log/index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;AAC/D,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAAA;AAC9D,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAC5B,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;AAC9B,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AAExB,MAAM,OAAO,GAAG,mBAAmB,CAAA;AACnC,IAAI,SAAe,CAAA;AAEnB;;;;;IAKI;AACJ,KAAK,UAAU,OAAO;IAErB,MAAM,OAAO,GAAY,EAAE,CAAC,OAAO,EAAE,CAAC;IACtC,MAAM,QAAQ,GAAY,qBAAqB,CAAC;IAChD,MAAM,MAAM,GAAY,0BAA0B,CAAC;IACnD,MAAM,MAAM,GAAY,6BAA6B,CAAC;IACtD,IAAI,OAAO,GAAY,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACpD,IAAI,MAAgB,CAAC;IAErB,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE;QAClC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;KACrC;SAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE;QACxC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;KACrC;IACD,MAAM,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClC,IAAI,CAAC,MAAM,EAAE;QACZ,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;KACxB;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;AAC5C,CAAC;AACD;;;;;;;IAOI;AACJ,MAAM,CAAC,OAAO,GAAG,KAAK,WAAW,GAAS;IACzC,IAAI,MAAM,CAAC;IACX,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,EAAE;QACrB,SAAS,GAAG;YACX,IAAI,EAAG,cAAa,CAAC;YACrB,IAAI,EAAG,cAAa,CAAC;YACrB,KAAK,EAAG,cAAa,CAAC;SACtB,CAAA;KACD;SAAM;QACN,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,EAAE;YACrB,MAAM,GAAG,OAAO,CACf,KAAK,CAAC,EAAE,KAAK,EAAG,GAAG,CAAC,KAAK,EAAE,CAAC,EAC5B,SAAS,EAAE,EACX,QAAQ,EAAE,EACV,MAAM,EAAE,CACR,CAAC;SACF;aAAM;YACN,MAAM,GAAG,OAAO,CACf,SAAS,EAAE,EACX,QAAQ,EAAE,EACV,MAAM,EAAE,CACR,CAAC;SACF;QACD,SAAS,GAAG,YAAY,CAAC;YACxB,UAAU,EAAE;gBACX,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;oBACxB,MAAM;iBACN,CAAC;gBACF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;oBACrB,QAAQ,EAAE,MAAM,OAAO,EAAE;iBACzB,CAAC;aACF;SACD,CAAC,CAAA;KACF;IACD,OAAO,SAAS,CAAA;AACjB,CAAC,CAAA"}
|
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/log/index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;AAC/D,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAA;AACpE,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAC5B,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;AAC9B,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;AAExB,MAAM,OAAO,GAAG,mBAAmB,CAAA;AACnC,IAAI,SAAe,CAAA;AAEnB;;;;;IAKI;AACJ,KAAK,UAAU,OAAO;IAErB,MAAM,OAAO,GAAY,EAAE,CAAC,OAAO,EAAE,CAAC;IACtC,MAAM,QAAQ,GAAY,iBAAiB,CAAC;IAC5C,MAAM,MAAM,GAAY,sBAAsB,CAAC;IAC/C,MAAM,MAAM,GAAY,yBAAyB,CAAC;IAClD,IAAI,OAAO,GAAY,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACpD,IAAI,MAAgB,CAAC;IAErB,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE;QAClC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;KACrC;SAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE;QACxC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;KACrC;IACD,MAAM,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClC,IAAI,CAAC,MAAM,EAAE;QACZ,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;KACxB;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;AACxC,CAAC;AACD;;;;;;;IAOI;AACJ,MAAM,CAAC,OAAO,GAAG,KAAK,WAAW,GAAS;IACzC,IAAI,MAAM,CAAC;IACX,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,EAAE;QACrB,SAAS,GAAG;YACX,IAAI,EAAG,cAAa,CAAC;YACrB,IAAI,EAAG,cAAa,CAAC;YACrB,KAAK,EAAG,cAAa,CAAC;SACtB,CAAA;KACD;SAAM;QACN,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,EAAE;YACrB,MAAM,GAAG,OAAO,CACf,KAAK,CAAC,EAAE,KAAK,EAAG,GAAG,CAAC,KAAK,EAAE,CAAC;YAC5B,cAAc;YACd,QAAQ,EAAE,EACV,MAAM,EAAE,CACR,CAAC;SACF;aAAM;YACN,MAAM,GAAG,OAAO;YACf,cAAc;YACd,QAAQ,EAAE,EACV,MAAM,EAAE,CACR,CAAC;SACF;QACD,SAAS,GAAG,YAAY,CAAC;YACxB,UAAU,EAAE;gBACX,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;oBACxB,MAAM;iBACN,CAAC;gBACF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;oBACrB,QAAQ,EAAE,MAAM,OAAO,EAAE;oBACzB,MAAM,EAAG,OAAO,CACf,KAAK,CAAC,EAAE,KAAK,EAAG,GAAG,CAAC,KAAK,EAAE,CAAC;oBAC5B,cAAc;oBACd,IAAI,EAAE,CACN;iBACD,CAAC;aACF;SACD,CAAC,CAAA;KACF;IACD,OAAO,SAAS,CAAA;AACjB,CAAC,CAAA"}
|
|
@ -1,4 +1,7 @@
|
||||||
|
"use strict";
|
||||||
/** class representing the Projector features **/
|
/** class representing the Projector features **/
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
const Log = require("log");
|
||||||
class Projector {
|
class Projector {
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -16,7 +19,7 @@ class Projector {
|
||||||
*
|
*
|
||||||
**/
|
**/
|
||||||
async init() {
|
async init() {
|
||||||
this.log = await require('log')({ label: 'proj' });
|
this.log = await Log({ label: 'proj' });
|
||||||
this.ipc = require('electron').ipcMain;
|
this.ipc = require('electron').ipcMain;
|
||||||
this.listen();
|
this.listen();
|
||||||
}
|
}
|
||||||
|
@ -25,7 +28,6 @@ class Projector {
|
||||||
**/
|
**/
|
||||||
listen() {
|
listen() {
|
||||||
this.ipc.on('proj', this.listener.bind(this));
|
this.ipc.on('proj', this.listener.bind(this));
|
||||||
this.ipc.on('digital', this.connectDigital.bind(this));
|
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -40,8 +42,8 @@ class Projector {
|
||||||
cmd = this.cfg.arduino.cmd.proj_backward;
|
cmd = this.cfg.arduino.cmd.proj_backward;
|
||||||
}
|
}
|
||||||
this.state.dir = dir;
|
this.state.dir = dir;
|
||||||
if (this.state.digital) {
|
if (this.dig.state.enabled) {
|
||||||
//this.dig.set(dir)
|
this.dig.set(dir);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
try {
|
try {
|
||||||
|
@ -59,9 +61,9 @@ class Projector {
|
||||||
async move(frame, id) {
|
async move(frame, id) {
|
||||||
const cmd = this.cfg.arduino.cmd.projector;
|
const cmd = this.cfg.arduino.cmd.projector;
|
||||||
let ms;
|
let ms;
|
||||||
if (this.state.digital) {
|
if (this.dig.state.enabled) {
|
||||||
try {
|
try {
|
||||||
//ms = await this.dig.move()
|
ms = await this.dig.move();
|
||||||
}
|
}
|
||||||
catch (err) {
|
catch (err) {
|
||||||
this.log.error(err);
|
this.log.error(err);
|
||||||
|
@ -127,41 +129,6 @@ class Projector {
|
||||||
this.log.info(message, 'PROJECTOR');
|
this.log.info(message, 'PROJECTOR');
|
||||||
return await this.ui.send('proj', { cmd: cmd, id: id, ms: ms });
|
return await this.ui.send('proj', { cmd: cmd, id: id, ms: ms });
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* Use a file as the "digital" source on "projector"
|
|
||||||
*
|
|
||||||
**/
|
|
||||||
async connectDigital(evt, arg) {
|
|
||||||
let info;
|
|
||||||
let frames = 0;
|
|
||||||
try {
|
|
||||||
info = await this.dig.ffprobe.info(arg.path);
|
|
||||||
}
|
|
||||||
catch (err) {
|
|
||||||
this.log.error(err, 'DIGITAL', true, true);
|
|
||||||
this.state.digital = false;
|
|
||||||
await this.ui.send('digital', { valid: false });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
frames = await this.dig.ffprobe.frames(arg.path);
|
|
||||||
}
|
|
||||||
catch (err) {
|
|
||||||
this.log.error(err, 'DIGITAL', true, true);
|
|
||||||
this.state.digital = false;
|
|
||||||
await this.ui.send('digital', { valid: false });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
this.dig.state.frame = 0;
|
|
||||||
this.dig.state.path = arg.path;
|
|
||||||
this.dig.state.fileName = arg.fileName;
|
|
||||||
this.dig.state.frames = frames;
|
|
||||||
this.dig.state.info = info;
|
|
||||||
this.log.info(`Opened ${this.dig.state.fileName}`, 'DIGITAL', true, true);
|
|
||||||
this.log.info(`Frames : ${frames}`, 'DIGITAL', true, true);
|
|
||||||
this.state.digital = true;
|
|
||||||
return await this.ui.send('digital', { valid: true, state: JSON.stringify(this.dig.state) });
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
module.exports = function (arduino, cfg, ui, dig) {
|
module.exports = function (arduino, cfg, ui, dig) {
|
||||||
return new Projector(arduino, cfg, ui, dig);
|
return new Projector(arduino, cfg, ui, dig);
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1,11 +1,12 @@
|
||||||
'use strict'
|
'use strict'
|
||||||
|
|
||||||
|
//import Log = require('log');
|
||||||
|
import delay = require('delay');
|
||||||
|
|
||||||
const SerialPort = require('serialport')
|
const SerialPort = require('serialport')
|
||||||
const Readline = SerialPort.parsers.Readline
|
const Readline = SerialPort.parsers.Readline
|
||||||
const exec = require('child_process').exec
|
const exec = require('child_process').exec
|
||||||
|
|
||||||
import delay = require('delay');
|
|
||||||
|
|
||||||
const parser : any = new Readline('')
|
const parser : any = new Readline('')
|
||||||
const newlineRe : RegExp = new RegExp('\n', 'g')
|
const newlineRe : RegExp = new RegExp('\n', 'g')
|
||||||
const returnRe : RegExp = new RegExp('\r', 'g')
|
const returnRe : RegExp = new RegExp('\r', 'g')
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
import Intval = require('intval');
|
import Intval = require('intval');
|
||||||
|
import Log = require('log');
|
||||||
|
import delay = require('delay');
|
||||||
|
|
||||||
/** class representing camera functions **/
|
/** class representing camera functions **/
|
||||||
|
|
||||||
|
@ -10,15 +12,17 @@ class Camera {
|
||||||
private intval : any = null;
|
private intval : any = null;
|
||||||
private log : any;
|
private log : any;
|
||||||
private cfg : any;
|
private cfg : any;
|
||||||
|
private dig : any;
|
||||||
private ui : any;
|
private ui : any;
|
||||||
private ipc : any;
|
private ipc : any;
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
**/
|
**/
|
||||||
constructor (arduino : Arduino, cfg : any, ui : any) {
|
constructor (arduino : Arduino, cfg : any, ui : any, dig : any) {
|
||||||
this.arduino = arduino;
|
this.arduino = arduino;
|
||||||
this.cfg = cfg;
|
this.cfg = cfg;
|
||||||
this.ui = ui;
|
this.ui = ui;
|
||||||
|
this.dig = dig;
|
||||||
this.init();
|
this.init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -26,7 +30,7 @@ class Camera {
|
||||||
*
|
*
|
||||||
**/
|
**/
|
||||||
private async init () {
|
private async init () {
|
||||||
this.log = await require('log')({ label : 'cam' });
|
this.log = await Log({ label : 'cam' });
|
||||||
this.ipc = require('electron').ipcMain;
|
this.ipc = require('electron').ipcMain;
|
||||||
this.listen();
|
this.listen();
|
||||||
}
|
}
|
||||||
|
@ -75,9 +79,9 @@ class Camera {
|
||||||
public async move (frame : number, id : string) {
|
public async move (frame : number, id : string) {
|
||||||
const cmd : string = this.cfg.arduino.cmd.camera;
|
const cmd : string = this.cfg.arduino.cmd.camera;
|
||||||
let ms : number;
|
let ms : number;
|
||||||
//if (this.state.digital) {
|
if (this.dig.state.enabled) {
|
||||||
//await this.dig.start()
|
await this.dig.start()
|
||||||
//}
|
}
|
||||||
if (this.intval) {
|
if (this.intval) {
|
||||||
try {
|
try {
|
||||||
ms = await this.intval.move();
|
ms = await this.intval.move();
|
||||||
|
@ -91,9 +95,9 @@ class Camera {
|
||||||
this.log.error(err);
|
this.log.error(err);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//if (this.state.digital) {
|
if (this.dig.state.enabled) {
|
||||||
// await this.dig.end()
|
await this.dig.end()
|
||||||
//}
|
}
|
||||||
this.log.info('Camera move time', { ms });
|
this.log.info('Camera move time', { ms });
|
||||||
return this.end(cmd, id, ms);
|
return this.end(cmd, id, ms);
|
||||||
}
|
}
|
||||||
|
@ -175,9 +179,9 @@ class Camera {
|
||||||
}
|
}
|
||||||
this.log.info(message, 'CAMERA', true, true)
|
this.log.info(message, 'CAMERA', true, true)
|
||||||
this.ui.send('cam', {cmd: cmd, id : id, ms: ms})
|
this.ui.send('cam', {cmd: cmd, id : id, ms: ms})
|
||||||
};
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = function (arduino : Arduino, cfg : any, ui : any) {
|
module.exports = function (arduino : Arduino, cfg : any, ui : any, dig : any) {
|
||||||
return new Camera(arduino, cfg, ui);
|
return new Camera(arduino, cfg, ui, dig);
|
||||||
}
|
}
|
|
@ -1,60 +1,137 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
import delay = require('delay');
|
import delay = require('delay');
|
||||||
|
import Log = require('log');
|
||||||
|
|
||||||
const dig : any = {};
|
class Digital {
|
||||||
dig.state = {
|
public state : any = {
|
||||||
frame : 0,
|
frame : 0,
|
||||||
frames : 0,
|
frames : 0,
|
||||||
path : null,
|
path : null,
|
||||||
fileName : null,
|
fileName : null,
|
||||||
info : {},
|
info : {},
|
||||||
dir : true
|
dir : true,
|
||||||
};
|
enabled : false
|
||||||
|
};
|
||||||
dig.set = function (dir : boolean) {
|
private display : any;
|
||||||
dig.state.dir = dir;
|
private ffmpeg : any;
|
||||||
}
|
private ffprobe : any;
|
||||||
|
private light : any;
|
||||||
dig.move = async function () {
|
private ipc : any;
|
||||||
let start = +new Date()
|
private ui : any;
|
||||||
let last = dig.state.dir + 0;
|
private log : any;
|
||||||
if (dig.state.dir) {
|
/**
|
||||||
dig.state.frame++
|
*
|
||||||
|
**/
|
||||||
|
constructor (display : any, ffmpeg : any, ffprobe : any, ui : any, light : any) {
|
||||||
|
this.display = display;
|
||||||
|
this.ffmpeg = ffmpeg;
|
||||||
|
this.ffprobe = ffprobe;
|
||||||
|
this.ui = ui;
|
||||||
|
this.light = light;
|
||||||
|
this.init();
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
**/
|
||||||
|
private async init () {
|
||||||
|
this.log = await Log({ label : 'digital'});
|
||||||
|
this.ipc = require('electron').ipcMain;
|
||||||
|
this.listen();
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
**/
|
||||||
|
private listen () {
|
||||||
|
this.ipc.on('digital', this.connectDigital.bind(this));
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
**/
|
||||||
|
public set (dir : boolean) {
|
||||||
|
this.state.dir = dir;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
**/
|
||||||
|
public async move () {
|
||||||
|
let start : number = +new Date();
|
||||||
|
if (this.state.dir) {
|
||||||
|
this.state.frame++;
|
||||||
} else {
|
} else {
|
||||||
dig.state.frame--
|
this.state.frame--;
|
||||||
}
|
}
|
||||||
if (dig.state.frame < 1) {
|
if (this.state.frame < 1) {
|
||||||
dig.state.frame = 1
|
this.state.frame = 1;
|
||||||
}
|
}
|
||||||
return (+new Date()) - start
|
return (+new Date()) - start;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
dig.start = async function (lightState: number[]) {
|
*
|
||||||
|
**/
|
||||||
|
async start () {
|
||||||
try {
|
try {
|
||||||
await dig.ffmpeg.clearAll()
|
await this.ffmpeg.clearAll();
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error(err)
|
console.error(err);
|
||||||
|
throw err;
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await dig.ffmpeg.frame(dig.state, lightState)
|
await this.ffmpeg.frame(this.state, this.light.state);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error(err)
|
console.error(err);
|
||||||
|
throw err;
|
||||||
}
|
}
|
||||||
|
|
||||||
dig.display.start(dig.state.frame)
|
this.display.start(this.state.frame);
|
||||||
await delay(20)
|
await delay(20);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
**/
|
||||||
|
private async end () {
|
||||||
|
await delay(20);
|
||||||
|
this.display.end();
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Use a file as the "digital" source on "projector"
|
||||||
|
*
|
||||||
|
**/
|
||||||
|
async connectDigital (evt : any, arg : any) {
|
||||||
|
let info;
|
||||||
|
let frames = 0;
|
||||||
|
|
||||||
|
try {
|
||||||
|
info = await this.ffprobe.info(arg.path);
|
||||||
|
} catch (err) {
|
||||||
|
//this.log.error(err, 'DIGITAL', true, true);
|
||||||
|
this.state.enabled = false;
|
||||||
|
await this.ui.send('digital', { valid : false });
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
frames = await this.ffprobe.frames(arg.path);
|
||||||
|
} catch (err) {
|
||||||
|
this.log.error(err, 'DIGITAL', true, true);
|
||||||
|
this.state.enabled = false;
|
||||||
|
await this.ui.send('digital', { valid : false });
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.state.frame = 0;
|
||||||
|
this.state.path = arg.path;
|
||||||
|
this.state.fileName = arg.fileName;
|
||||||
|
this.state.frames = frames;
|
||||||
|
this.state.info = info;
|
||||||
|
|
||||||
|
this.log.info(`Opened ${this.state.fileName}`, 'DIGITAL', true, true);
|
||||||
|
this.log.info(`Frames : ${frames}`, 'DIGITAL', true, true);
|
||||||
|
this.state.enabled = true;
|
||||||
|
return await this.ui.send('digital', { valid : true, state : JSON.stringify(this.state) });
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dig.end = async function () {
|
module.exports = (display : any, ffmpeg : any, ffprobe : any, ui : any, light : any) => {
|
||||||
await delay(20)
|
return new Digital(display, ffmpeg, ffprobe, ui, light);
|
||||||
dig.display.end()
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = (display : any, ffmpeg : any, ffprobe : any) => {
|
|
||||||
dig.display = display;
|
|
||||||
dig.ffmpeg = ffmpeg;
|
|
||||||
dig.ffprobe = ffprobe;
|
|
||||||
return dig;
|
|
||||||
}
|
}
|
|
@ -1,6 +1,7 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
import delay = require('delay');
|
import delay = require('delay');
|
||||||
|
import Log = require('log');
|
||||||
|
|
||||||
class Light {
|
class Light {
|
||||||
public state : any = { color : [0, 0, 0] }
|
public state : any = { color : [0, 0, 0] }
|
||||||
|
@ -25,7 +26,7 @@ class Light {
|
||||||
*
|
*
|
||||||
**/
|
**/
|
||||||
private async init () {
|
private async init () {
|
||||||
this.log = await require('log')({ label : 'light' });
|
this.log = await Log({ label : 'light' });
|
||||||
this.ipc = require('electron').ipcMain;
|
this.ipc = require('electron').ipcMain;
|
||||||
this.listen();
|
this.listen();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
/** class representing the Projector features **/
|
/** class representing the Projector features **/
|
||||||
|
|
||||||
|
import Log = require('log');
|
||||||
|
|
||||||
class Projector {
|
class Projector {
|
||||||
private state : any = { dir : true, digital : false };
|
private state : any = { dir : true, digital : false };
|
||||||
private arduino : Arduino = null;
|
private arduino : Arduino = null;
|
||||||
|
@ -25,7 +27,7 @@ class Projector {
|
||||||
*
|
*
|
||||||
**/
|
**/
|
||||||
async init () {
|
async init () {
|
||||||
this.log = await require('log')({ label : 'proj' })
|
this.log = await Log({ label : 'proj' })
|
||||||
this.ipc = require('electron').ipcMain;
|
this.ipc = require('electron').ipcMain;
|
||||||
this.listen();
|
this.listen();
|
||||||
}
|
}
|
||||||
|
@ -35,7 +37,6 @@ class Projector {
|
||||||
**/
|
**/
|
||||||
private listen () {
|
private listen () {
|
||||||
this.ipc.on('proj', this.listener.bind(this));
|
this.ipc.on('proj', this.listener.bind(this));
|
||||||
this.ipc.on('digital', this.connectDigital.bind(this));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -50,8 +51,8 @@ class Projector {
|
||||||
cmd = this.cfg.arduino.cmd.proj_backward
|
cmd = this.cfg.arduino.cmd.proj_backward
|
||||||
}
|
}
|
||||||
this.state.dir = dir
|
this.state.dir = dir
|
||||||
if (this.state.digital) {
|
if (this.dig.state.enabled) {
|
||||||
//this.dig.set(dir)
|
this.dig.set(dir)
|
||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
ms = await this.arduino.send('projector', cmd)
|
ms = await this.arduino.send('projector', cmd)
|
||||||
|
@ -68,9 +69,9 @@ class Projector {
|
||||||
async move (frame : any, id : string) {
|
async move (frame : any, id : string) {
|
||||||
const cmd : string = this.cfg.arduino.cmd.projector;
|
const cmd : string = this.cfg.arduino.cmd.projector;
|
||||||
let ms : number;
|
let ms : number;
|
||||||
if (this.state.digital) {
|
if (this.dig.state.enabled) {
|
||||||
try {
|
try {
|
||||||
//ms = await this.dig.move()
|
ms = await this.dig.move()
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
this.log.error(err)
|
this.log.error(err)
|
||||||
}
|
}
|
||||||
|
@ -128,43 +129,6 @@ class Projector {
|
||||||
this.log.info(message, 'PROJECTOR')
|
this.log.info(message, 'PROJECTOR')
|
||||||
return await this.ui.send('proj', {cmd: cmd, id : id, ms: ms})
|
return await this.ui.send('proj', {cmd: cmd, id : id, ms: ms})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Use a file as the "digital" source on "projector"
|
|
||||||
*
|
|
||||||
**/
|
|
||||||
async connectDigital (evt : any, arg : any) {
|
|
||||||
let info;
|
|
||||||
let frames = 0;
|
|
||||||
|
|
||||||
try {
|
|
||||||
info = await this.dig.ffprobe.info(arg.path);
|
|
||||||
} catch (err) {
|
|
||||||
this.log.error(err, 'DIGITAL', true, true);
|
|
||||||
this.state.digital = false;
|
|
||||||
await this.ui.send('digital', { valid : false });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
frames = await this.dig.ffprobe.frames(arg.path);
|
|
||||||
} catch (err) {
|
|
||||||
this.log.error(err, 'DIGITAL', true, true);
|
|
||||||
this.state.digital = false;
|
|
||||||
await this.ui.send('digital', { valid : false });
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.dig.state.frame = 0;
|
|
||||||
this.dig.state.path = arg.path;
|
|
||||||
this.dig.state.fileName = arg.fileName;
|
|
||||||
this.dig.state.frames = frames;
|
|
||||||
this.dig.state.info = info;
|
|
||||||
|
|
||||||
this.log.info(`Opened ${this.dig.state.fileName}`, 'DIGITAL', true, true);
|
|
||||||
this.log.info(`Frames : ${frames}`, 'DIGITAL', true, true);
|
|
||||||
this.state.digital = true;
|
|
||||||
return await this.ui.send('digital', { valid : true, state : JSON.stringify(this.dig.state) });
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = function (arduino : Arduino, cfg : any, ui : any, dig : any) {
|
module.exports = function (arduino : Arduino, cfg : any, ui : any, dig : any) {
|
||||||
|
|
Loading…
Reference in New Issue