UNPKG

@joergmittaglawo/dmvconfig

Version:

DMV Configuration scripts for Lawo V__matrix Distributed Multiviewers.

223 lines 7.66 kB
"use strict"; /** * Runs the Heads Configuration * @packageDocumentation * * @version 0.0.0-alpha.0 * @date 2020-10-13 * @author Mittag, Jörg (Lawo) <joerg.mittag@lawo.com> * @license SPDX-License-Identifier: MIT * * @changelog 2020-10-13 JMi Add support for tally rules * @changelog 2020-10-10 JMi Add support for background images * @changelog 2020-10-10 JMi Implement support for PPMs * @changelog 2020-10-10 JMi Make unnecessary members optional */ Object.defineProperty(exports, "__esModule", { value: true }); exports.runHeadConfig = void 0; /** * Runs the Heads Configuration * * @param config The DMV Configuration * @param master An open VMatrix connection to the cluster master */ async function runHeadConfig({ heads }, master) { const tallyRulesDefault = [ { level: 0, priority: 2, color: { hue: 0, saturation: 100, lightness: 50, opacity: 100, }, }, { level: 1, priority: 0, color: { hue: 120, saturation: 100, lightness: 50, opacity: 100, }, }, { level: 2, priority: 1, color: { hue: 60, saturation: 100, lightness: 50, opacity: 100, }, }, ]; console.log('Creating Heads'); /* await Promise.all( heads.map( (_, idx) => master.multiviewer.global.configuration.head.create_row( { "name": `Head ${idx}`, "index": idx, } ) ) ); */ for (let idx = 0; idx < heads.length; idx++) { await master.multiviewer.global.configuration.head.create_row({ name: `Head ${idx}`, index: idx, }); } console.log('Configuring Heads and creating PIPs, clocks, and textboxes'); await Promise.all(heads.flatMap(({ standard: std, /* pips = 64, clocks: { analog = 4, digital = 4 } = { analog: 4, digital: 4 }, textboxes: text = 16, ppms = 8, images = 2,*/ streaming, tallyRules = tallyRulesDefault, }, head) => [ master.multiviewer.global.configuration.head.row(head).parameters.video_standard.write(std), master.multiviewer.global.configuration.head.row(head).parameters.streaming.enable.write(!!streaming), master.multiviewer.global.configuration.head.row(head).parameters.streaming.transport_format.write(streaming ?? 'ST2110_GPM'), tallyRules.flatMap(({ level, priority, color }, rule) => { const rules = master.multiviewer.global.configuration.head.row(head).parameters.tally_rules; let tallyRule; switch (rule) { case 0: tallyRule = rules.rule_0; break; case 1: tallyRule = rules.rule_1; break; case 2: tallyRule = rules.rule_2; break; case 3: tallyRule = rules.rule_3; break; case 4: tallyRule = rules.rule_4; break; case 5: tallyRule = rules.rule_5; break; case 6: tallyRule = rules.rule_6; break; case 7: tallyRule = rules.rule_7; break; default: throw new Error('Only 8 tally rules per head are allowed!'); } return [ tallyRule.bit_id.write(level), tallyRule.priority_id.write(priority), tallyRule.colour.write(color), ]; }), /* Array.from( { "length": pips }, (_, pip) => master.multiviewer.global.configuration.head.row(head).pip.create_row( { "name": `PIP ${pip}`, "index": pip, } ) ), Array.from( { "length": analog }, (_, analog) => master.multiviewer.global.configuration.head.row(head).analog_clock.create_row( { "name": `Analog Clock ${analog}`, "index": analog, } ) ), Array.from( { "length": digital }, (_, digital) => master.multiviewer.global.configuration.head.row(head).digital_clock.create_row( { "name": `Digital Clock ${digital}`, "index": digital, } ) ), Array.from( { "length": text }, (_, text) => master.multiviewer.global.configuration.head.row(head).text_box.create_row( { "name": `Textbox ${text}`, "index": text, } ) ), Array.from( { "length": ppms }, (_, ppm) => master.multiviewer.global.configuration.head.row(head).ppm.create_row( { "name": `PPM ${ppm}`, "index": ppm, } ) ), Array.from( { "length": images }, (_, image) => master.multiviewer.global.configuration.head.row(head).image.create_row( { "name": `Image ${image}`, "index": image, } ) ), */ ].flat((999 /* Infinity */)))); let head = -1; for (const { pips = 64, clocks: { analog = 4, digital = 4 } = { analog: 4, digital: 4 }, textboxes: text = 16, ppms = 8, images = 2, } of heads) { head++; for (let i = 0; i < pips; i++) { await master.multiviewer.global.configuration.head.row(head).pip.create_row({ name: `PIP ${i}`, index: i, }); } for (let i = 0; i < analog; i++) { await master.multiviewer.global.configuration.head.row(head).analog_clock.create_row({ name: `Analog Clock ${i}`, index: i, }); } for (let i = 0; i < digital; i++) { await master.multiviewer.global.configuration.head.row(head).digital_clock.create_row({ name: `Digital Clock ${i}`, index: i, }); } for (let i = 0; i < text; i++) { await master.multiviewer.global.configuration.head.row(head).text_box.create_row({ name: `Textbox ${i}`, index: i, }); } for (let i = 0; i < ppms; i++) { await master.multiviewer.global.configuration.head.row(head).ppm.create_row({ name: `PPM ${i}`, index: i, }); } for (let i = 0; i < images; i++) { await master.multiviewer.global.configuration.head.row(head).image.create_row({ name: `Image ${i}`, index: i, }); } } } exports.runHeadConfig = runHeadConfig; exports.default = runHeadConfig; //# sourceMappingURL=heads.js.map