UNPKG

@joergmittaglawo/dmvconfig

Version:

DMV Configuration scripts for Lawo V__matrix Distributed Multiviewers.

293 lines (292 loc) 12.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Enums = exports.All = exports.StretcherAsNamedTableRow = exports.Stretcher = exports.ShifterAsNamedTableRow = exports.Shifter = exports.DriftConverterAsNamedTableRow = exports.DriftConverter = exports.DetonatorAsNamedTableRow = exports.Detonator = exports.CombinatorAsNamedTableRow = exports.Combinator = exports.AlignerAsNamedTableRow = exports.Aligner = exports.lower = exports.lift = void 0; const VScript = require("vscript"); const _PTP = require("./PTP"); const _Time = require("./Time"); exports.lift = { Stretcher: (kwl, socket) => kwl ? (new Stretcher(new VScript.Subtree(socket, kwl))) : null, Shifter: (kwl, socket) => kwl ? (new Shifter(new VScript.Subtree(socket, kwl))) : null, DriftConverter: (kwl, socket) => kwl ? (new DriftConverter(new VScript.Subtree(socket, kwl))) : null, Detonator: (kwl, socket) => kwl ? (new Detonator(new VScript.Subtree(socket, kwl))) : null, Combinator: (kwl, socket) => kwl ? (new Combinator(new VScript.Subtree(socket, kwl))) : null, CombinatorInputs: (kwl, socket) => kwl ? (new CombinatorInputs(new VScript.Subtree(socket, kwl))) : null, Aligner: (kwl, socket) => kwl ? (new Aligner(new VScript.Subtree(socket, kwl))) : null }; exports.lower = { Stretcher: (ref) => ref ? ref.raw.kwl : null, Shifter: (ref) => ref ? ref.raw.kwl : null, DriftConverter: (ref) => ref ? ref.raw.kwl : null, Detonator: (ref) => ref ? ref.raw.kwl : null, Combinator: (ref) => ref ? ref.raw.kwl : null, CombinatorInputs: (ref) => ref ? ref.raw.kwl : null, Aligner: (ref) => ref ? ref.raw.kwl : null }; class Aligner { constructor(raw) { this.raw = raw; } get alert_level() { return new VScript.rKeyword(this, "alert_level"); } get absolute_input() { return new VScript.duplexKeyword(this, "absolute_input", { lift: _Time.lift.Source, lower: _Time.lower.Source }); } get grain_accurate_input() { return new VScript.duplexKeyword(this, "grain_accurate_input", { lift: _Time.lift.Source, lower: _Time.lower.Source }); } get warning_threshold() { return new VScript.rwKeyword(this, "warning_threshold"); } get holdover_grains() { return new VScript.rwKeyword(this, "holdover_grains"); } get output() { return new _Time.Source(this.raw.find("output")); } get ptp_traits() { return new _PTP.Traits(this.raw.find("ptp_traits")); } } exports.Aligner = Aligner; class AlignerAsNamedTableRow extends Aligner { constructor(raw_row, enclosing_table) { super(new VScript.Subtree(raw_row.socket, raw_row.kwl)); this.raw_row = raw_row; this.enclosing_table = enclosing_table; this.index = raw_row.index; } async rename(name, opts) { await this.raw_row.rename(name, opts); } async delete(opts) { await this.raw_row.delete(opts); } } exports.AlignerAsNamedTableRow = AlignerAsNamedTableRow; class CombinatorInputs { constructor(raw) { this.raw = raw; } get selected() { return new VScript.rKeyword(this, "selected"); } get source() { return new VScript.duplexKeyword(this, "source", { lift: _Time.lift.Source, lower: _Time.lower.Source }); } } class CombinatorInputsAsArrayRow extends CombinatorInputs { constructor(st, index, parent) { super(st); this.index = index; this.parent = parent; } } class Combinator { constructor(raw) { this.raw = raw; } get required_offset_type() { return new VScript.rwKeyword(this, "required_offset_type"); } get required_ptp_source_type() { return new VScript.rwKeyword(this, "required_ptp_source_type"); } get drift_reference() { return new VScript.rwKeyword(this, "drift_reference"); } get min_drift_tolerance() { return new VScript.rwKeyword(this, "min_drift_tolerance"); } get min_offset_tolerance() { return new VScript.rwKeyword(this, "min_offset_tolerance"); } get quorum() { return new VScript.duplexKeyword(this, "quorum"); } get session_length() { return new VScript.duplexKeyword(this, "session_length"); } get inputs() { return new VScript.StronglyTypedArray(this, "inputs", (st, index, parent) => new CombinatorInputsAsArrayRow(st, index, parent)); } get output() { return new _Time.Source(this.raw.find("output")); } get ptp_traits() { return new _PTP.Traits(this.raw.find("ptp_traits")); } } exports.Combinator = Combinator; class CombinatorAsNamedTableRow extends Combinator { constructor(raw_row, enclosing_table) { super(new VScript.Subtree(raw_row.socket, raw_row.kwl)); this.raw_row = raw_row; this.enclosing_table = enclosing_table; this.index = raw_row.index; } async rename(name, opts) { await this.raw_row.rename(name, opts); } async delete(opts) { await this.raw_row.delete(opts); } } exports.CombinatorAsNamedTableRow = CombinatorAsNamedTableRow; class Detonator { constructor(raw) { this.raw = raw; } get max_drift_blast() { return new VScript.rwKeyword(this, "max_drift_blast"); } get max_offset_blast() { return new VScript.rwKeyword(this, "max_offset_blast"); } /** Discharge */ get discharge() { return new VScript.wKeyword(this, "discharge"); } /** Realign */ get realign() { return new VScript.wKeyword(this, "realign"); } get friction() { return new VScript.rwKeyword(this, "friction"); } get stiffness() { return new VScript.rwKeyword(this, "stiffness"); } get input() { return new VScript.duplexKeyword(this, "input", { lift: _Time.lift.Source, lower: _Time.lower.Source }); } get output() { return new _Time.Source(this.raw.find("output")); } get ptp_traits() { return new _PTP.Traits(this.raw.find("ptp_traits")); } } exports.Detonator = Detonator; class DetonatorAsNamedTableRow extends Detonator { constructor(raw_row, enclosing_table) { super(new VScript.Subtree(raw_row.socket, raw_row.kwl)); this.raw_row = raw_row; this.enclosing_table = enclosing_table; this.index = raw_row.index; } async rename(name, opts) { await this.raw_row.rename(name, opts); } async delete(opts) { await this.raw_row.delete(opts); } } exports.DetonatorAsNamedTableRow = DetonatorAsNamedTableRow; class DriftConverter { constructor(raw) { this.raw = raw; } get drift_reference() { return new VScript.rwKeyword(this, "drift_reference"); } /** ideally, all inputs to a clock combinator should use the same reference frame as the clock combinator itself. If this is not the case, mismatching inputs will be discarded by default. By setting `on_reference_frame_mismatch` to `Convert`, inputs can also be converted to the combinator's own reference frame. Note, however, that this generally incurs a loss in precision */ get on_drift_reference_mismatch() { return new VScript.rwKeyword(this, "on_drift_reference_mismatch"); } get input() { return new VScript.duplexKeyword(this, "input", { lift: _Time.lift.Source, lower: _Time.lower.Source }); } get output() { return new _Time.Source(this.raw.find("output")); } get ptp_traits() { return new _PTP.Traits(this.raw.find("ptp_traits")); } } exports.DriftConverter = DriftConverter; class DriftConverterAsNamedTableRow extends DriftConverter { constructor(raw_row, enclosing_table) { super(new VScript.Subtree(raw_row.socket, raw_row.kwl)); this.raw_row = raw_row; this.enclosing_table = enclosing_table; this.index = raw_row.index; } async rename(name, opts) { await this.raw_row.rename(name, opts); } async delete(opts) { await this.raw_row.delete(opts); } } exports.DriftConverterAsNamedTableRow = DriftConverterAsNamedTableRow; class Shifter { constructor(raw) { this.raw = raw; } get shift() { return new VScript.rwKeyword(this, "shift"); } get input() { return new VScript.duplexKeyword(this, "input", { lift: _Time.lift.Source, lower: _Time.lower.Source }); } get output() { return new _Time.Source(this.raw.find("output")); } get ptp_traits() { return new _PTP.Traits(this.raw.find("ptp_traits")); } } exports.Shifter = Shifter; class ShifterAsNamedTableRow extends Shifter { constructor(raw_row, enclosing_table) { super(new VScript.Subtree(raw_row.socket, raw_row.kwl)); this.raw_row = raw_row; this.enclosing_table = enclosing_table; this.index = raw_row.index; } async rename(name, opts) { await this.raw_row.rename(name, opts); } async delete(opts) { await this.raw_row.delete(opts); } } exports.ShifterAsNamedTableRow = ShifterAsNamedTableRow; /** stretchers shift their input source's measured drift by a user-defined amount (note that this demotes `Absolute` and `GrainAccurate` time sources to class `FrequencyOnly`). Stretchers are probably useless in a production setting, but can be helpful in simulating failure scenarios. */ class Stretcher { constructor(raw) { this.raw = raw; } get frequency_shift() { return new VScript.rwKeyword(this, "frequency_shift"); } get input() { return new VScript.duplexKeyword(this, "input", { lift: _Time.lift.Source, lower: _Time.lower.Source }); } get output() { return new _Time.Source(this.raw.find("output")); } get ptp_traits() { return new _PTP.Traits(this.raw.find("ptp_traits")); } } exports.Stretcher = Stretcher; class StretcherAsNamedTableRow extends Stretcher { constructor(raw_row, enclosing_table) { super(new VScript.Subtree(raw_row.socket, raw_row.kwl)); this.raw_row = raw_row; this.enclosing_table = enclosing_table; this.index = raw_row.index; } async rename(name, opts) { await this.raw_row.rename(name, opts); } async delete(opts) { await this.raw_row.delete(opts); } } exports.StretcherAsNamedTableRow = StretcherAsNamedTableRow; class All { constructor(raw) { this.raw = raw; } get aligners() { return new VScript.StronglyTypedNamedTable(new VScript.NamedTable(this.raw.socket, this.raw.full_kwl("aligners")), (row, enclosing_table) => new AlignerAsNamedTableRow(row, enclosing_table)); } get combinators() { return new VScript.StronglyTypedNamedTable(new VScript.NamedTable(this.raw.socket, this.raw.full_kwl("combinators")), (row, enclosing_table) => new CombinatorAsNamedTableRow(row, enclosing_table)); } get detonators() { return new VScript.StronglyTypedNamedTable(new VScript.NamedTable(this.raw.socket, this.raw.full_kwl("detonators")), (row, enclosing_table) => new DetonatorAsNamedTableRow(row, enclosing_table)); } get drift_converters() { return new VScript.StronglyTypedNamedTable(new VScript.NamedTable(this.raw.socket, this.raw.full_kwl("drift_converters")), (row, enclosing_table) => new DriftConverterAsNamedTableRow(row, enclosing_table)); } get shifters() { return new VScript.StronglyTypedNamedTable(new VScript.NamedTable(this.raw.socket, this.raw.full_kwl("shifters")), (row, enclosing_table) => new ShifterAsNamedTableRow(row, enclosing_table)); } /** stretchers shift their input source's measured drift by a user-defined amount (note that this demotes `Absolute` and `GrainAccurate` time sources to class `FrequencyOnly`). Stretchers are probably useless in a production setting, but can be helpful in simulating failure scenarios. */ get stretchers() { return new VScript.StronglyTypedNamedTable(new VScript.NamedTable(this.raw.socket, this.raw.full_kwl("stretchers")), (row, enclosing_table) => new StretcherAsNamedTableRow(row, enclosing_table)); } } exports.All = All; exports.Enums = { CombinatorType: ["AbsoluteTime"], PTPSourceTypeFilter: ["UseHighest", "UseAtomicClock", "UseGPSOrBetter", "UseTerrestrialRadioOrBetter", "UsePTPOrBetter", "UseNTPOrBetter", "UseHandSetOrBetter", "UseInternalOscillatorOrBetter"], ReferenceFrameMismatchPolicy: ["Discard", "Convert"] };