namespace ZB.MOM.WW.OtOpcUa.Driver.FOCAS;
///
/// FOCAS driver configuration. One instance supports N CNC devices. Per plan decision #144
/// each device gets its own (DriverInstanceId, HostAddress) bulkhead key at the
/// Phase 6.1 resilience layer.
///
public sealed class FocasDriverOptions
{
public IReadOnlyList Devices { get; init; } = [];
public IReadOnlyList Tags { get; init; } = [];
public FocasProbeOptions Probe { get; init; } = new();
public TimeSpan Timeout { get; init; } = TimeSpan.FromSeconds(2);
}
public sealed record FocasDeviceOptions(
string HostAddress,
string? DeviceName = null);
///
/// One FOCAS-backed OPC UA variable. is the canonical FOCAS
/// address string that parses via —
/// X0.0 / R100 / PARAM:1815/0 / MACRO:500.
///
public sealed record FocasTagDefinition(
string Name,
string DeviceHostAddress,
string Address,
FocasDataType DataType,
bool Writable = true,
bool WriteIdempotent = false);
public sealed class FocasProbeOptions
{
public bool Enabled { get; init; } = true;
public TimeSpan Interval { get; init; } = TimeSpan.FromSeconds(5);
public TimeSpan Timeout { get; init; } = TimeSpan.FromSeconds(2);
}