UNPKG

@showcomposer/core-io

Version:

io libary for ShowComposer

79 lines (78 loc) 2.99 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); // Import Utils const nodelogging_1 = require("@hibas123/nodelogging"); // Import ShowComposer-Modules const datalib_1 = require("@showcomposer/datalib"); // Import i/o modules const dmxlib = require("dmxnet"); const dmxnet = new dmxlib.dmxnet({ sName: "ShowComposer", lName: "ShowComposer IO module" }); const data = new datalib_1.Datalib(); class IOArtnet { // Constructor constructor(instance, anData) { this.instance = instance; const artnetEvent = data.subscribe("io.artnet." + this.instance); data.dump("io.artnet." + this.instance, () => { // Subscribe to ArtNet changes artnetEvent.on("data", (k, d) => { nodelogging_1.Logging.debug("Artnet " + this.instance + " updated!"); this.anData = data.getLocal("io.artnet." + this.instance); this.dmxnetInit(); }); this.anData = anData; this.dmxnetInit(); }); } dmxnetInit() { // Set DMXNET-Sender parameters this.dmxnetIP = this.anData.ip || "255.255.255.255"; this.dmxnetSubnet = this.anData.subnet || 0; this.dmxnetUniverse = this.anData.universe || 0; this.dmxnetNet = this.anData.net || 0; this.dmxnetPort = this.anData.port || 6454; // Stop old sender if (this.dmxnetSender) { this.dmxnetSender.stop(); } // Create new sender this.dmxnetSender = dmxnet.newSender({ ip: this.dmxnetIP, net: this.dmxnetNet, port: this.dmxnetPort, subnet: this.dmxnetSubnet, universe: this.dmxnetUniverse, }); nodelogging_1.Logging.log("New DMXNET sender to " + this.dmxnetIP + ":" + this.dmxnetPort + " N:" + this.dmxnetNet + " S:" + this.dmxnetSubnet + " U:" + this.dmxnetUniverse); if (!this.anData.source) { nodelogging_1.Logging.warn("ArtNet " + this.instance + ": Source not given, no output."); } else { this.subChannel(this.anData.source); } } subChannel(src) { nodelogging_1.Logging.debug("Use " + src + " as source."); this.channelEvent = data.subscribe(src); this.channelEvent.on("data", () => { const srcobj = data.getLocal(src); if (srcobj.channel) { this.channel = srcobj.channel; this.send(); } }); } send() { // Send channels if (this.channel) { Object.keys(this.channel).forEach((c) => { const ch = parseInt(c, 10); if (ch >= 0 && ch < 512) { this.dmxnetSender.prepChannel(c, parseInt(this.channel[c], 10)); } }); this.dmxnetSender.transmit(); nodelogging_1.Logging.debug("Transmit ArtNet"); } } } exports.IOArtnet = IOArtnet;