namespace ZB.MOM.WW.OtOpcUa.Driver.TwinCAT;
///
/// TwinCAT ADS driver configuration. One instance supports N targets (each identified by
/// an AMS Net ID + port). Compiles + runs without a local AMS router but every wire call
/// fails with BadCommunicationError until a router is reachable.
///
public sealed class TwinCATDriverOptions
{
public IReadOnlyList Devices { get; init; } = [];
public IReadOnlyList Tags { get; init; } = [];
public TwinCATProbeOptions Probe { get; init; } = new();
public TimeSpan Timeout { get; init; } = TimeSpan.FromSeconds(2);
}
///
/// One TwinCAT target. must parse via
/// ; misconfigured devices fail driver initialisation.
///
public sealed record TwinCATDeviceOptions(
string HostAddress,
string? DeviceName = null);
///
/// One TwinCAT-backed OPC UA variable. is the full TwinCAT
/// symbolic name (e.g. MAIN.bStart, GVL.Counter, Motor1.Status.Running).
///
public sealed record TwinCATTagDefinition(
string Name,
string DeviceHostAddress,
string SymbolPath,
TwinCATDataType DataType,
bool Writable = true,
bool WriteIdempotent = false);
public sealed class TwinCATProbeOptions
{
public bool Enabled { get; init; } = true;
public TimeSpan Interval { get; init; } = TimeSpan.FromSeconds(5);
public TimeSpan Timeout { get; init; } = TimeSpan.FromSeconds(2);
}