diff --git a/dist/fd/index.js b/dist/fd/index.js index f95b90c..1140be4 100644 --- a/dist/fd/index.js +++ b/dist/fd/index.js @@ -3,11 +3,29 @@ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); -exports.FD = void 0; +exports.FD = exports.Mode = exports.Action = void 0; const net_1 = __importDefault(require("net")); const log_1 = require("../log"); const shell_1 = require("../shell"); const delay_1 = require("../delay"); +var Action; +(function (Action) { + Action[Action["NONE"] = 0] = "NONE"; + Action[Action["LOAD"] = 1] = "LOAD"; + Action[Action["DISPLAY"] = 2] = "DISPLAY"; + Action[Action["STOP"] = 3] = "STOP"; +})(Action || (exports.Action = Action = {})); +; +var Mode; +(function (Mode) { + Mode[Mode["RGB"] = 0] = "RGB"; + Mode[Mode["BW"] = 1] = "BW"; + Mode[Mode["INVERT"] = 2] = "INVERT"; + Mode[Mode["BW_INVERT"] = 3] = "BW_INVERT"; + Mode[Mode["RGB_CHANNELS"] = 4] = "RGB_CHANNELS"; + Mode[Mode["INVERT_CHANNELS"] = 5] = "INVERT_CHANNELS"; +})(Mode || (exports.Mode = Mode = {})); +; class FD { constructor(bin, width, height, host, port) { this.socketAvailable = false; @@ -18,7 +36,7 @@ class FD { this.host = host; this.port = port; this.log = (0, log_1.createLog)('fd'); - this.shell = new shell_1.Shell([this.bin, `${this.width}`, `${this.height}`], this.logstd.bind(this), this.logsterr.bind(this), null, true); + this.shell = new shell_1.Shell([this.bin, `${this.width}`, `${this.height}`, `${this.port}`], this.logstd.bind(this), this.logsterr.bind(this), null, true); this.startDisplay(); this.startClient(); this.test(); @@ -37,23 +55,16 @@ class FD { this.client.connect(this.port, this.host, async function () { this.socketConnected = true; this.log.info(`TCP socket client connected to ${this.host}:${this.port}`); - /*const data = { - action : 1, - image: 'filename.tif', + await (0, delay_1.delay)(1000); + const msg = { + action: Action.LOAD, + image: './test.jpg' }; - this.log.info('SENDING'); - this.log.info(data); - this.client.write(JSON.stringify(data)); - await delay(2000); - data.action = 2; - this.log.info('SENDING'); - this.log.info(data); - this.client.write(JSON.stringify(data));*/ + this.send(msg); + }.bind(this)); + this.client.on('data', function (data) { + this.receive(data); }.bind(this)); - this.client.on('data', (data) => { - this.log.info('RECEIVED'); - this.log.info(data.toString()); - }); this.client.on('close', () => { this.log.info('Closing connection'); }); @@ -62,18 +73,49 @@ class FD { }); } logstd(data) { - this.log.info(data); + this.log.info(`[shell] ${data}`); if (data.indexOf('TCP server listening on port') !== -1 && data.indexOf(`${this.port}`) !== -1) { this.socketAvailable = true; } } logsterr(data) { - this.log.error(data); + this.log.error(`[shell] ${data}`); } async test() { await (0, delay_1.delay)(10000); this.shell.kill(); } + send(msg) { + const json = JSON.stringify(msg); + this.log.info(json); + this.client.write(json); + } + receive(json) { + const msg = JSON.parse(json); + this.log.info(msg); + return msg; + } + load(image, x, y, w, h) { + const msg = { + action: Action.LOAD, + image, + x, + y, + w, + h + }; + this.send(msg); + return true; + } + display(image, exposure) { + const msg = { + action: Action.DISPLAY, + image, + exposure + }; + this.send(msg); + return true; + } } exports.FD = FD; //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/fd/index.js.map b/dist/fd/index.js.map index 5e49c44..ee533ee 100644 --- a/dist/fd/index.js.map +++ b/dist/fd/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fd/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fd/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/fd/index.ts b/src/fd/index.ts index 4f30fb4..f14f42c 100644 --- a/src/fd/index.ts +++ b/src/fd/index.ts @@ -5,6 +5,38 @@ import { createLog } from '../log' import { Shell } from '../shell'; import { delay } from '../delay'; +export enum Action { + NONE, + LOAD, + DISPLAY, + STOP +}; + +export enum Mode { + RGB, + BW, + INVERT, + BW_INVERT, + RGB_CHANNELS, + INVERT_CHANNELS +}; + +export interface fdOutgoingMessage { + action : Action, + image : string, + mode? : Mode, + x? : number, + y? : number, + w? : number, + h? : number, + exposure? : number[] +} + +export interface fdIncomingMessage { + action : Action, + success : boolean +} + export class FD { private bin : string; private width : number; @@ -24,7 +56,7 @@ export class FD { this.host = host; this.port = port; this.log = createLog('fd'); - this.shell = new Shell([ this.bin, `${this.width}`, `${this.height}` ], this.logstd.bind(this), this.logsterr.bind(this), null, true); + this.shell = new Shell([ this.bin, `${this.width}`, `${this.height}`, `${this.port}` ], this.logstd.bind(this), this.logsterr.bind(this), null, true); this.startDisplay(); this.startClient(); this.test(); @@ -45,24 +77,17 @@ export class FD { this.client.connect(this.port, this.host, async function () { this.socketConnected = true; this.log.info(`TCP socket client connected to ${this.host}:${this.port}`); - /*const data = { - action : 1, - image: 'filename.tif', + await delay(1000); + const msg : fdOutgoingMessage = { + action : Action.LOAD, + image : './test.jpg' }; - this.log.info('SENDING'); - this.log.info(data); - this.client.write(JSON.stringify(data)); - await delay(2000); - data.action = 2; - this.log.info('SENDING'); - this.log.info(data); - this.client.write(JSON.stringify(data));*/ + this.send(msg); }.bind(this)); - this.client.on('data', (data : string) => { - this.log.info('RECEIVED'); - this.log.info(data.toString()); - }); + this.client.on('data', function (data : string) { + this.receive(data); + }.bind(this)); this.client.on('close', () => { this.log.info('Closing connection'); @@ -73,20 +98,64 @@ export class FD { }); } - private logstd ( data : string ) { - this.log.info(data); + private logstd (data : string ) { + this.log.info(`[shell] ${data}`); if (data.indexOf('TCP server listening on port') !== -1 && data.indexOf(`${this.port}`) !== -1) { this.socketAvailable = true; } } - private logsterr ( data : string) { - this.log.error(data); + private logsterr (data : string) { + this.log.error(`[shell] ${data}`); } private async test () { await delay(10000); this.shell.kill(); } + + private send (msg : fdOutgoingMessage) { + const json : string = JSON.stringify(msg); + this.log.info(json); + this.client.write(json); + } + + private receive (json : string) : fdIncomingMessage { + const msg : fdIncomingMessage = JSON.parse(json); + this.log.info(msg); + return msg; + } + + public async load (image : string, x : number, y : number, w : number, h : number) : Promise { + const msg : fdOutgoingMessage = { + action : Action.LOAD, + image, + x, + y, + w, + h + }; + this.send(msg); + return true; + } + + public async display (image : string, exposure : number[]) : Promise { + const msg : fdOutgoingMessage = { + action : Action.DISPLAY, + image, + exposure + }; + this.send(msg); + return true; + } + + public async stop (image : string) : Promise { + const msg : fdOutgoingMessage = { + action : Action.STOP, + image + }; + this.send(msg); + return true; + } }