@joergmittaglawo/dmvconfig
Version:
DMV Configuration scripts for Lawo V__matrix Distributed Multiviewers.
235 lines (231 loc) • 10.1 kB
TypeScript
import * as VScript from "vscript";
import * as _Primitives from "./Primitives";
import * as _PTP from "./PTP";
import * as _Time from "./Time";
export declare const lift: {
readonly AllMicroEpochs: (kwl: string | null, socket: VScript.VSocket) => AllMicroEpochs | null;
readonly AllParametersPllParsCalibrated: (kwl: string | null, socket: VScript.VSocket) => AllParametersPllParsCalibrated | null;
readonly AllParameters: (kwl: string | null, socket: VScript.VSocket) => AllParameters | null;
readonly AllStatisticsCounters: (x: any | null, _: VScript.VSocket) => AllStatisticsCounters | null;
readonly AllStatistics: (kwl: string | null, socket: VScript.VSocket) => AllStatistics | null;
readonly PLLParameters: (x: any | null, _: VScript.VSocket) => PLLParameters | null;
readonly MicroEpoch: (x: any | null, _: VScript.VSocket) => MicroEpoch | null;
};
export declare const lower: {
readonly AllMicroEpochs: (ref: AllMicroEpochs | null) => string | null;
readonly AllParametersPllParsCalibrated: (ref: AllParametersPllParsCalibrated | null) => string | null;
readonly AllParameters: (ref: AllParameters | null) => string | null;
readonly AllStatisticsCounters: (x: AllStatisticsCounters | null) => number[] | null;
readonly AllStatistics: (ref: AllStatistics | null) => string | null;
readonly PLLParameters: (x: PLLParameters | null) => number[] | null;
readonly MicroEpoch: (x: MicroEpoch | null) => (string | number)[] | null;
};
export declare type State = "FreeRun" | "Uncalibrated" | "Calibrated" | "CalibratedAndLocked";
/**
when `mode` is set to `LockToInput`, the PTP clock will attempt to
synchronize with the external time source designated by `input`. This is
the default setting and typically the only option suitable for production
use.
When `mode` is set to `UseInternalOscillator`, the PTP clock will first
reset its speed to the nominal clock rate generated by its internal
oscillator, and in the following suspend all clock control operations.
Likewise, `Disconnect` suspends all clock control operations but in
contrast to `UseInternalOscillator` continues to run at the current value
of `relative_clock_speed`
*/
export declare type Mode = "LockToInput" | "UseInternalOscillator" | "Disconnect";
export interface MicroEpoch {
epoch_index: number;
/**
Most clock control units continuously adjust their target's operating
frequency until the time and/or frequency offset between source and
target matches a user-defined value. These units require no data beyond
frame rate, source type, frequency offset and offset.
However, other clock operations implicitly guarantee synchronicity by
rigidly linking their target's operating frequency to the source
frequency. This implicit link may be broken when the timing source
changes discontinuously. For example, an uncalibrated PTP clock may
perform arbitrarily large offset and/or frequency jumps, yet after
reachieving calibration will again report its offset to the internal PTP
reference frame as 0.0 ± 0.0. To signal such 'timing shocks' to
consumers, every timing source performing discontinuous changes in a way
that breaks implicit synchronicity has to increase its continuity_index
(with wraparound behaviour in the unlikely case of overflow).
*/
continuity_index: number;
reference_time: number | string;
reference_counter: number;
fpga_drift_to_clock: number;
/**
free-running counter value until which this micro epoch is considered
reliable
*/
best_before: number;
/**
grain-accurate (24Hz/1.001) offset to micro epoch
*/
g23_98: number;
/**
grain-accurate (24Hz) offset to micro epoch
*/
g24: number;
/**
grain-accurate (25Hz) offset to micro epoch
*/
g25: number;
/**
grain-accurate (30Hz/1.001) offset to micro epoch
*/
g29_97: number;
/**
grain-accurate (30Hz) offset to micro epoch
*/
g30: number;
/**
grain-accurate (50Hz) offset to micro epoch
*/
g50: number;
/**
grain-accurate (60Hz/1.001) offset to micro epoch
*/
g59_94: number;
/**
grain-accurate (60Hz) offset to micro epoch
*/
g60: number;
/**
grain-accurate (48kHz, 32bit RTP counter) media clock offset to micro
epoch
*/
grtp_48k: number;
/**
grain-accurate (90kHz, 32bit RTP counter) media clock offset to micro
epoch
*/
grtp_90k: number;
/**
grain-accurate (27MHz, 32bit RTP counter) media clock offset to micro
epoch
*/
grtp_27m: number;
}
export interface PLLParameters {
/**
Max. relative clock period change per tick when calibrated
*/
max_drift_adjustment_step: number;
stiffness: number;
damping: number;
}
/**
counter values may be negative to indicate deviations beyond the holdover
threshold
*/
interface AllStatisticsCounters {
missing_samples: number;
bp_overall: number;
bp_offset: number;
bp_offset_errors: number;
bp_drift: number;
bp_drift_errors: number;
}
declare class AllStatistics {
readonly raw: VScript.Subtree;
constructor(raw: VScript.Subtree);
/**
counter values may be negative to indicate deviations beyond the holdover
threshold
*/
get counters(): VScript.rKeyword<any, AllStatisticsCounters | null, this>;
get attempting_calibration_for(): VScript.rKeyword<number, number, AllStatistics>;
}
declare class AllParametersPllParsCalibrated {
readonly raw: VScript.Subtree;
constructor(raw: VScript.Subtree);
get inner_corridor(): VScript.rwKeyword<any, PLLParameters | null, this>;
get outer(): VScript.rwKeyword<any, PLLParameters | null, this>;
}
declare class AllParameters {
readonly raw: VScript.Subtree;
constructor(raw: VScript.Subtree);
/**
use this as the default UTC/TAI offset for time sources that don't supply
this information on their own (i.e., PTP agents enslaved to a
sufficiently well-informed Master). Following the PTP standard, this
denotes the TAI-to-UTC offset and hence should always be positive.
*/
get default_utc_offset_seconds(): VScript.rwKeyword<number, number, AllParameters>;
get locking_policy(): VScript.rwKeyword<"Locking" | "Dynamic", "Locking" | "Dynamic", AllParameters>;
get pll_pars_uncalibrated(): VScript.rwKeyword<any, PLLParameters | null, this>;
get max_rel_acceleration(): VScript.rKeyword<number, number, AllParameters>;
get max_allowed_offset(): VScript.rwKeyword<number, number, AllParameters>;
/**
ignore incoming messages for this long after irregular clock adjustments
and hard resets
*/
get timeout_after_reset(): VScript.rwKeyword<number, number, AllParameters>;
get capture_threshold(): VScript.rwKeyword<number, number, AllParameters>;
get convergence_threshold(): VScript.rwKeyword<number, number, AllParameters>;
get capture_drift_threshold(): VScript.rwKeyword<number, number, AllParameters>;
get convergence_drift_threshold(): VScript.rwKeyword<number, number, AllParameters>;
get promotion_threshold(): VScript.rwKeyword<number, number, AllParameters>;
get demotion_threshold(): VScript.rwKeyword<number, number, AllParameters>;
/**
Determines how long the PTP clock may remain uncalibrated before it
resets itself
*/
get calibration_timeout(): VScript.rwKeyword<number, number, AllParameters>;
/**
If set to `Reset`, a calibration timeout will reset the clock
controller's internal state and all estimates currently held by PTP
agents. If set to `ResetAggressively`, agents will be reinitialized
completely, clearing also their currently selected best masters and any
other transient data they may hold
*/
get on_calibration_timeout(): VScript.rwKeyword<"Reset" | "ResetAggressively", "Reset" | "ResetAggressively", AllParameters>;
get pll_pars_calibrated(): AllParametersPllParsCalibrated;
}
declare class AllMicroEpochs {
readonly raw: VScript.Subtree;
constructor(raw: VScript.Subtree);
get current(): VScript.rKeyword<any, MicroEpoch | null, this>;
get previous(): VScript.rKeyword<any, MicroEpoch | null, this>;
get delta_offset(): VScript.rKeyword<number, number, AllMicroEpochs>;
get delta_drift(): VScript.rKeyword<number, number, AllMicroEpochs>;
}
export declare class All {
readonly raw: VScript.Subtree;
constructor(raw: VScript.Subtree);
get input(): VScript.duplexKeyword<string | null, _Time.Source | null, All>;
get state(): VScript.rKeyword<State, State, All>;
get alert_level(): VScript.rKeyword<_Primitives.AlertLevel, _Primitives.AlertLevel, All>;
/**
when `mode` is set to `LockToInput`, the PTP clock will attempt to
synchronize with the external time source designated by `input`. This is
the default setting and typically the only option suitable for production
use.
When `mode` is set to `UseInternalOscillator`, the PTP clock will first
reset its speed to the nominal clock rate generated by its internal
oscillator, and in the following suspend all clock control operations.
Likewise, `Disconnect` suspends all clock control operations but in
contrast to `UseInternalOscillator` continues to run at the current value
of `relative_clock_speed`
*/
get mode(): VScript.rwKeyword<Mode, Mode, All>;
get relative_clock_speed(): VScript.rKeyword<number, number, All>;
/**
@brief Randomize clock
@desc Do not push this button
*/
get randomize_clock(): VScript.rwKeyword<"Click", "Click", All>;
get statistics(): AllStatistics;
get parameters(): AllParameters;
get micro_epochs(): AllMicroEpochs;
get output(): _Time.Source;
get ptp_traits(): _PTP.Traits;
}
export declare const Enums: {
readonly Mode: Mode[];
readonly State: State[];
};
export {};