Files
lmxopcua/src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.Modbus/ModbusAutoProhibition.cs
Joseph Doherty a25593a9c6 chore: organize solution into module folders (Core/Server/Drivers/Client/Tooling)
Group all 69 projects into category subfolders under src/ and tests/ so the
Rider Solution Explorer mirrors the module structure. Folders: Core, Server,
Drivers (with a nested Driver CLIs subfolder), Client, Tooling.

- Move every project folder on disk with git mv (history preserved as renames).
- Recompute relative paths in 57 .csproj files: cross-category ProjectReferences,
  the lib/ HintPath+None refs in Driver.Historian.Wonderware, and the external
  mxaccessgw refs in Driver.Galaxy and its test project.
- Rebuild ZB.MOM.WW.OtOpcUa.slnx with nested solution folders.
- Re-prefix project paths in functional scripts (e2e, compliance, smoke SQL,
  integration, install).

Build green (0 errors); unit tests pass. Docs left for a separate pass.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 01:55:28 -04:00

24 lines
1.3 KiB
C#

namespace ZB.MOM.WW.OtOpcUa.Driver.Modbus;
/// <summary>
/// #152 — operator-visible snapshot of one auto-prohibited coalesced range. Returned in
/// bulk by <see cref="ModbusDriver.GetAutoProhibitedRanges"/>; consumers (Admin UI,
/// dashboards, log-aggregation pipelines) project the list into whatever shape they need.
/// </summary>
/// <param name="UnitId">Modbus unit ID (slave) the prohibition applies to.</param>
/// <param name="Region">Register region (HoldingRegisters / InputRegisters / Coils / DiscreteInputs).</param>
/// <param name="StartAddress">Inclusive start of the prohibited range (zero-based PDU offset).</param>
/// <param name="EndAddress">Inclusive end of the prohibited range. Equals <paramref name="StartAddress"/> when bisection has narrowed to a single register.</param>
/// <param name="LastProbedUtc">Wall-clock time of the most recent failure (record) or re-probe (refresh).</param>
/// <param name="BisectionPending">
/// True when the range still spans &gt; 1 register and the next re-probe will bisect it
/// (per #150). False when the range is single-register or has been pinned permanent.
/// </param>
public sealed record ModbusAutoProhibition(
byte UnitId,
ModbusRegion Region,
ushort StartAddress,
ushort EndAddress,
DateTime LastProbedUtc,
bool BisectionPending);