@joergmittaglawo/dmvconfig
Version:
DMV Configuration scripts for Lawo V__matrix Distributed Multiviewers.
293 lines (292 loc) • 12.4 kB
JavaScript
"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"]
};