@@ -48,8 +48,37 @@ public interface IFocasClient : IDisposable
|
||||
/// responds with any valid status.
|
||||
/// </summary>
|
||||
Task<bool> ProbeAsync(CancellationToken cancellationToken);
|
||||
|
||||
/// <summary>
|
||||
/// Read the full <c>cnc_rdcncstat</c> ODBST struct (9 small-int status flags). The
|
||||
/// boolean <see cref="ProbeAsync"/> is preserved for cheap reachability checks; this
|
||||
/// method exposes the per-field detail used by the FOCAS driver's <c>Status/</c>
|
||||
/// fixed-tree nodes (see issue #257). Returns <c>null</c> if the wire client cannot
|
||||
/// supply the struct (e.g. transport/IPC variant where the contract has not been
|
||||
/// extended yet) — callers fall back to surfacing Bad on the per-field nodes.
|
||||
/// </summary>
|
||||
Task<FocasStatusInfo?> GetStatusAsync(CancellationToken cancellationToken)
|
||||
=> Task.FromResult<FocasStatusInfo?>(null);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Snapshot of the 9 fields returned by Fanuc's <c>cnc_rdcncstat</c> (ODBST). All fields
|
||||
/// are <c>short</c> per the FWLIB header — small enums whose meaning is documented in the
|
||||
/// Fanuc FOCAS reference (e.g. <c>emergency</c>: 0=released, 1=stop, 2=reset). Surfaced as
|
||||
/// <c>Int16</c> in the OPC UA address space rather than mapped enums so operators see
|
||||
/// exactly what the CNC reported.
|
||||
/// </summary>
|
||||
public sealed record FocasStatusInfo(
|
||||
short Dummy,
|
||||
short Tmmode,
|
||||
short Aut,
|
||||
short Run,
|
||||
short Motion,
|
||||
short Mstb,
|
||||
short EmergencyStop,
|
||||
short Alarm,
|
||||
short Edit);
|
||||
|
||||
/// <summary>Factory for <see cref="IFocasClient"/>s. One client per configured device.</summary>
|
||||
public interface IFocasClientFactory
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user