docs(xmldoc): fill missing XML docs + strip tracking-ID comments across src
v2-ci / build (push) Failing after 41s
v2-ci / unit-tests (tests/Core/ZB.MOM.WW.OtOpcUa.Cluster.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.ControlPlane.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Runtime.Tests) (push) Has been skipped
v2-ci / unit-tests (tests/Server/ZB.MOM.WW.OtOpcUa.Security.Tests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.Host.IntegrationTests) (push) Has been skipped
v2-ci / integration (tests/Server/ZB.MOM.WW.OtOpcUa.OpcUaServer.IntegrationTests) (push) Has been skipped

Adds <summary>/<param>/<returns>/<inheritdoc> where missing and removes
project bookkeeping IDs (task/tracking refs) from shipped code comments,
so the docs read cleanly and CommentChecker is quiet except for known
false positives (PLC/protocol terms, event/IEqualityComparer inheritdoc).
Doc/comment-only; no logic changed; solution builds clean.
This commit is contained in:
Joseph Doherty
2026-07-07 12:38:39 -04:00
parent 384dbd7d36
commit 9cad9ed0fc
375 changed files with 1899 additions and 2493 deletions
@@ -17,6 +17,7 @@ public interface ITwinCATClient : IDisposable
/// <param name="address">The target AMS address.</param>
/// <param name="timeout">The connection timeout.</param>
/// <param name="cancellationToken">Cancellation token for the connection attempt.</param>
/// <returns>A task that represents the asynchronous operation.</returns>
Task ConnectAsync(TwinCATAmsAddress address, TimeSpan timeout, CancellationToken cancellationToken);
/// <summary>True when the AMS router + target both accept commands.</summary>
@@ -28,7 +29,7 @@ public interface ITwinCATClient : IDisposable
/// 1809 / 0x0711) on any read / write / notification — the signal that a PLC program
/// re-download has invalidated every symbol + notification handle. The driver forwards
/// this to <see cref="Core.Abstractions.IRediscoverable.OnRediscoveryNeeded"/> so Core
/// rebuilds the address space subtree (docs/v2/driver-specs.md §6, Driver.TwinCAT-013).
/// rebuilds the address space subtree (docs/v2/driver-specs.md §6).
/// </summary>
event EventHandler? OnSymbolVersionChanged;
@@ -44,6 +45,7 @@ public interface ITwinCATClient : IDisposable
/// elements; the boxed value is the element-typed CLR array (<c>int[]</c> / <c>float[]</c> /
/// <c>bool[]</c> / <c>string[]</c> / …). When null, read a scalar (Phase 4c).</param>
/// <param name="cancellationToken">Cancellation token for the read operation.</param>
/// <returns>The boxed value read (or <c>null</c>) together with the mapped OPC UA status.</returns>
Task<(object? value, uint status)> ReadValueAsync(
string symbolPath,
TwinCATDataType type,
@@ -60,6 +62,7 @@ public interface ITwinCATClient : IDisposable
/// <param name="bitIndex">Optional bit index for bit manipulation within a word.</param>
/// <param name="value">The value to write.</param>
/// <param name="cancellationToken">Cancellation token for the write operation.</param>
/// <returns>The mapped OPC UA status for the write (0 = Good).</returns>
Task<uint> WriteValueAsync(
string symbolPath,
TwinCATDataType type,
@@ -72,6 +75,7 @@ public interface ITwinCATClient : IDisposable
/// Used by <see cref="Core.Abstractions.IHostConnectivityProbe"/>'s probe loop.
/// </summary>
/// <param name="cancellationToken">Cancellation token for the probe operation.</param>
/// <returns><c>true</c> when the target is reachable; otherwise <c>false</c>.</returns>
Task<bool> ProbeAsync(CancellationToken cancellationToken);
/// <summary>
@@ -86,9 +90,10 @@ public interface ITwinCATClient : IDisposable
/// <param name="cycleTime">Minimum interval between change notifications (native-floor depends on target).</param>
/// <param name="maxDelayMs">Maximum batching delay in milliseconds — TwinCAT may coalesce
/// notifications up to this delay before pushing them. <c>0</c> = no batching, push
/// immediately (Driver.TwinCAT-014).</param>
/// immediately.</param>
/// <param name="onChange">Invoked with <c>(symbolPath, boxedValue)</c> per notification.</param>
/// <param name="cancellationToken">Cancels the initial registration; does not tear down an established notification.</param>
/// <returns>A handle whose disposal tears the registered notification down.</returns>
Task<ITwinCATNotificationHandle> AddNotificationAsync(
string symbolPath,
TwinCATDataType type,
@@ -109,6 +114,7 @@ public interface ITwinCATClient : IDisposable
/// and never see struct-typed entries — expansion is performed here, not in the caller.
/// </summary>
/// <param name="cancellationToken">Cancellation token for the enumeration operation.</param>
/// <returns>An asynchronous stream of the target's atomic-leaf symbols.</returns>
IAsyncEnumerable<TwinCATDiscoveredSymbol> BrowseSymbolsAsync(CancellationToken cancellationToken);
}
@@ -138,5 +144,6 @@ public sealed record TwinCATDiscoveredSymbol(
public interface ITwinCATClientFactory
{
/// <summary>Creates a new TwinCAT client instance.</summary>
/// <returns>A new, not-yet-connected <see cref="ITwinCATClient"/>.</returns>
ITwinCATClient Create();
}