This commit is contained in:
Matt McWilliams 2025-10-30 06:10:55 -07:00
parent b3eaf3fba2
commit 0a96867e4d
6 changed files with 125 additions and 37 deletions

26
dist/cli/index.js vendored
View File

@ -4,12 +4,14 @@ exports.CLI = void 0;
require("dotenv/config");
const promises_1 = require("fs/promises");
const os_1 = require("os");
const path_1 = require("path");
const log_1 = require("../log");
const env_1 = require("../env");
const fd_1 = require("../fd");
const display_1 = require("../display");
const files_1 = require("../files");
const delay_1 = require("../delay");
const camera_1 = require("./camera");
const camera_1 = require("../camera");
var Actions;
(function (Actions) {
Actions[Actions["LOAD"] = 0] = "LOAD";
@ -28,22 +30,22 @@ class CLI {
}
async main() {
if (typeof this.args.input !== 'undefined') {
this.log.info(`Loading ${basename(this.args.input)}`);
this.log.info(`Loading ${(0, path_1.basename)(this.args.input)}`);
await (0, delay_1.delay)(2000);
await this.parse(this.args.input);
await (0, delay_1.delay)(2000);
}
this.fd.stop();
this.fd.exit();
}
settings() {
//parse args
this.bin = envString('FD', 'fd');
this.width = envInt('WIDTH', 0);
this.height = envInt('HEIGHT', 0);
this.host = envString('FD_HOST', 'localhost');
this.port = envInt('FD_PORT', 8082);
this.bin = (0, env_1.envString)('FD', 'fd');
this.width = (0, env_1.envInt)('WIDTH', 0);
this.height = (0, env_1.envInt)('HEIGHT', 0);
this.host = (0, env_1.envString)('FD_HOST', 'localhost');
this.port = (0, env_1.envInt)('FD_PORT', 8082);
}
async parseLine(line) {
parseLine(line) {
let parts;
if (line.trim() === '') {
return null;
@ -53,7 +55,7 @@ class CLI {
async parse(filePath) {
let lines = [];
let file;
let command = null;
let cmd = null;
try {
file = await (0, promises_1.readFile)(file, 'utf8');
}
@ -99,8 +101,8 @@ class CLI {
let close;
let total;
let result;
const stats = (0, promises_1.lstat)(cmd.file);
const img = files_1.Files.getImageObject(cmd.file, stats);
const stats = await (0, promises_1.lstat)(cmd.file);
const img = await files_1.Files.getImageObject(cmd.file, stats);
const dimensions = this.display.getOutgoingPosition();
this.log.info(`Frame: ${img.name}`);
await this.fd.load(img.path, dimensions.x, dimensions.y, dimensions.w, dimensions.h);

View File

@ -1 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}

View File

@ -1 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/image/index.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/image/index.ts"],"names":[],"mappings":"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"}

View File

@ -1,17 +1,24 @@
import 'dotenv/config';
import fs from 'fs/promises';
import { readFile, lstat} from 'fs/promises';
import type { Stats } from 'fs';
import { tmpdir, EOL } from 'os';
import { join } from 'path';
import { join, basename } from 'path';
import type { Logger } from 'winston';
import { createLog } from '../log';
import { envInt, envString} from '../env';
import { FD } from '../fd';
import type { fdOutgoingPosition } from '../fd';
import type { fdOutgoingPosition, fdResult } from '../fd';
import { Display, Dimensions } from '../display';
import { Files } from '../files';
import type { ImageObject } from '../files';
import { delay } from '../delay';
import { Camera } from '../camera';
enum Actions {
LOAD,
DISPLAY
DISPLAY,
DELAY
}
interface Args {
@ -24,13 +31,14 @@ interface Args {
interface CMD {
action : Actions;
file : string;
exposure?: number;
time?: number;
}
export class CLI {
private log : Logger;
private args : Args;
private fd : FD;
private camera : Camera;
private display: Display;
private bin : string;
@ -38,19 +46,28 @@ export class CLI {
private height : number;
private host : string;
private port : number;
private mock : boolean = true;
private displayStr : string | null;
private lastImage : string | null;
constructor () {
this.log = createLog('fm');
this.settings();
this.display = new Display(this.width, this.height);
this.fd = new FD(this.bin, this.width, this.height, this.host, this.port, envString('FD_DISPLAY', null), mock);
this.fd = new FD(this.bin, this.width, this.height, this.host, this.port, this.displayStr, this.mock);
this.camera = new Camera(this.mock);
this.main();
}
private async main () {
if (typeof this.args.input !== 'undefined') {
this.parse(this.args.input);
this.log.info(`Loading ${basename(this.args.input)}`);
await delay(2000);
await this.parse(this.args.input);
await delay(2000)
}
this.fd.exit();
}
private settings () {
@ -63,13 +80,21 @@ export class CLI {
this.port = envInt('FD_PORT', 8082);
}
private parseLine (line : string) : CMD {
let parts : string[];
if (line.trim() === '') {
return null;
}
return null;
}
private async parse (filePath : string) {
let lines : string[] = [];
let file : string;
let command : CMD = null;
let cmd : CMD = null;
try {
file = await fs.readFile(file, 'utf8');
file = await readFile(file, 'utf8');
} catch (err) {
this.log.error(`Error reading input file`, err);
process.exit(1);
@ -78,9 +103,62 @@ export class CLI {
lines = file.split(EOL);
for (let line of lines) {
cmd = this.parseLine(line);
try {
await this.execute(cmd);
} catch (err) {
this.log.error(`Error executing cmd`, err);
}
}
}
private async execute (cmd : CMD) {
if (cmd === null) return;
switch (cmd.action) {
case Actions.DELAY:
await delay(cmd.time);
break;
case Actions.DISPLAY :
await this.frame(cmd);
break;
default :
break;
}
// await this.load(img, 100, 200, 640, 640);
//await delay(2000);
//await this.display(img, [ 4000 ] );
//await delay(8000);
}
private async frame (cmd : CMD) {
const start : number = Date.now();
let load : number;
let open : number;
let exposureElapsed : number;
let exposureReported : number;
let close : number;
let total : number;
let result : fdResult;
const stats : Stats = await lstat(cmd.file);
const img : ImageObject = await Files.getImageObject(cmd.file, stats);
const dimensions : fdOutgoingPosition = this.display.getOutgoingPosition();
this.log.info(`Frame: ${img.name}`);
await this.fd.load(img.path, dimensions.x, dimensions.y, dimensions.w, dimensions.h);
load = Date.now() - start;
await this.camera.open();
open = Date.now() - start - load;
result = await this.fd.display(img.path, [ cmd.time ] );
exposureReported = result.reported;
exposureElapsed = Date.now() - start - load - open;
await this.camera.close();
close = Date.now() - start - load - open - exposureElapsed;
total = Date.now() - start;
//this.stats.add(load, open, exposureElapsed, exposureReported, close, total);
}
}
if (typeof module.exports !== 'undefined')
if (require.main === module) {
new CLI();
}

View File

@ -6,20 +6,21 @@ import { envString } from '../env';
import { platform } from 'os';
interface SequenceObject {
created : number,
created? : number,
path : string,
hash : string,
name : string
}
interface VideoObject {
created : number,
created? : number,
path : string,
hash : string,
name : string
}
interface ImageObject {
created ?: number;
path : string,
hash : string,
name : string
@ -105,7 +106,7 @@ export class Files {
const dirs : SequenceObject[] = [];
let all : string[];
let stats : Stats;
let dirPath : string;
let framePath : string;
const paths : string[] = await this.enumerateSequenceDirs();
@ -120,24 +121,21 @@ export class Files {
if (elem.substring(0, 1) === '.') {
continue;
}
dirPath = join(path, elem);
framePath = join(path, elem);
try {
stats = await lstat(dirPath);
stats = await lstat(framePath);
} catch (err) {
continue;
}
if (!stats.isDirectory()) {
continue;
}
if (!await this.isSequence(dirPath)) {
//dont need to run this every time?
//what is the purpose of this?
if (!await this.isSequence(framePath)) {
continue;
}
dirs.push({
created : + stats.birthtime,
path : dirPath,
hash : Hashes.stringHash(dirPath),
name : basename(dirPath)
});
dirs.push(await Files.getImageObject(framePath, stats));
}
}
@ -148,6 +146,15 @@ export class Files {
return dirs;
}
public static async getImageObject (imagePath : string, stats : Stats) : Promise<ImageObject> {
return {
created : +stats.birthtime,
path : imagePath,
hash : Hashes.stringHash(imagePath),
name : basename(imagePath)
};
}
public static async isSequence (dirPath : string) : Promise<boolean> {
let sequence : boolean = false;
let all : string[];

View File

@ -96,6 +96,7 @@ export class Image {
}
return this.blankCache;
}
}
module.exports = { Image };