refactor(driver-ablegacy): extract AbLegacyDriverOptions to .Contracts
Move AbLegacyDriverOptions, AbLegacyDataType enum, and AbLegacyPlcFamilyProfile (including AbLegacyPlcFamily enum) to a new Driver.AbLegacy.Contracts sibling project. All three files are zero-dep after splitting AbLegacyDataTypeExtensions (which uses DriverDataType from Core.Abstractions) into a new file that stays in the runtime driver. Drop the doc-comment <see cref="AbLegacyAddress.TryParse"/> reference and replace with <c>AbLegacyAddress.TryParse</c> per the approved decision. The PlcFamilies using directive is retained in the contracts project since both namespaces live there. The runtime Driver.AbLegacy project gains a ProjectReference to .Contracts; the .slnx is updated accordingly.
This commit is contained in:
@@ -30,6 +30,7 @@
|
|||||||
<Project Path="src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.AbCip/ZB.MOM.WW.OtOpcUa.Driver.AbCip.csproj" />
|
<Project Path="src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.AbCip/ZB.MOM.WW.OtOpcUa.Driver.AbCip.csproj" />
|
||||||
<Project Path="src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.AbCip.Contracts/ZB.MOM.WW.OtOpcUa.Driver.AbCip.Contracts.csproj" />
|
<Project Path="src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.AbCip.Contracts/ZB.MOM.WW.OtOpcUa.Driver.AbCip.Contracts.csproj" />
|
||||||
<Project Path="src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.AbLegacy/ZB.MOM.WW.OtOpcUa.Driver.AbLegacy.csproj" />
|
<Project Path="src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.AbLegacy/ZB.MOM.WW.OtOpcUa.Driver.AbLegacy.csproj" />
|
||||||
|
<Project Path="src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.AbLegacy.Contracts/ZB.MOM.WW.OtOpcUa.Driver.AbLegacy.Contracts.csproj" />
|
||||||
<Project Path="src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.TwinCAT/ZB.MOM.WW.OtOpcUa.Driver.TwinCAT.csproj" />
|
<Project Path="src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.TwinCAT/ZB.MOM.WW.OtOpcUa.Driver.TwinCAT.csproj" />
|
||||||
<Project Path="src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.FOCAS/ZB.MOM.WW.OtOpcUa.Driver.FOCAS.csproj" />
|
<Project Path="src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.FOCAS/ZB.MOM.WW.OtOpcUa.Driver.FOCAS.csproj" />
|
||||||
<Project Path="src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.OpcUaClient/ZB.MOM.WW.OtOpcUa.Driver.OpcUaClient.csproj" />
|
<Project Path="src/Drivers/ZB.MOM.WW.OtOpcUa.Driver.OpcUaClient/ZB.MOM.WW.OtOpcUa.Driver.OpcUaClient.csproj" />
|
||||||
|
|||||||
-21
@@ -1,5 +1,3 @@
|
|||||||
using ZB.MOM.WW.OtOpcUa.Core.Abstractions;
|
|
||||||
|
|
||||||
namespace ZB.MOM.WW.OtOpcUa.Driver.AbLegacy;
|
namespace ZB.MOM.WW.OtOpcUa.Driver.AbLegacy;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -27,22 +25,3 @@ public enum AbLegacyDataType
|
|||||||
/// <summary>Control sub-element — caller addresses <c>.LEN</c>, <c>.POS</c>, <c>.EN</c>, <c>.DN</c>, <c>.ER</c>.</summary>
|
/// <summary>Control sub-element — caller addresses <c>.LEN</c>, <c>.POS</c>, <c>.EN</c>, <c>.DN</c>, <c>.ER</c>.</summary>
|
||||||
ControlElement,
|
ControlElement,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>Map a PCCC data type to the driver-surface <see cref="DriverDataType"/>.</summary>
|
|
||||||
public static class AbLegacyDataTypeExtensions
|
|
||||||
{
|
|
||||||
/// <summary>Converts an AbLegacyDataType to the corresponding DriverDataType.</summary>
|
|
||||||
/// <param name="t">The PCCC data type to convert.</param>
|
|
||||||
/// <returns>The mapped driver data type.</returns>
|
|
||||||
public static DriverDataType ToDriverDataType(this AbLegacyDataType t) => t switch
|
|
||||||
{
|
|
||||||
AbLegacyDataType.Bit => DriverDataType.Boolean,
|
|
||||||
AbLegacyDataType.Int or AbLegacyDataType.AnalogInt => DriverDataType.Int32,
|
|
||||||
AbLegacyDataType.Long => DriverDataType.Int32, // matches Modbus/AbCip 64→32 gap
|
|
||||||
AbLegacyDataType.Float => DriverDataType.Float32,
|
|
||||||
AbLegacyDataType.String => DriverDataType.String,
|
|
||||||
AbLegacyDataType.TimerElement or AbLegacyDataType.CounterElement
|
|
||||||
or AbLegacyDataType.ControlElement => DriverDataType.Int32,
|
|
||||||
_ => DriverDataType.Int32,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
+1
-1
@@ -30,7 +30,7 @@ public sealed record AbLegacyDeviceOptions(
|
|||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// One PCCC-backed OPC UA variable. <paramref name="Address"/> is the canonical PCCC
|
/// One PCCC-backed OPC UA variable. <paramref name="Address"/> is the canonical PCCC
|
||||||
/// file-address string that parses via <see cref="AbLegacyAddress.TryParse"/>.
|
/// file-address string that parses via <c>AbLegacyAddress.TryParse</c>.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public sealed record AbLegacyTagDefinition(
|
public sealed record AbLegacyTagDefinition(
|
||||||
string Name,
|
string Name,
|
||||||
+9
@@ -0,0 +1,9 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net10.0</TargetFramework>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
||||||
|
</PropertyGroup>
|
||||||
|
<!-- NO PackageReference. -->
|
||||||
|
</Project>
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
using ZB.MOM.WW.OtOpcUa.Core.Abstractions;
|
||||||
|
|
||||||
|
namespace ZB.MOM.WW.OtOpcUa.Driver.AbLegacy;
|
||||||
|
|
||||||
|
/// <summary>Map a PCCC data type to the driver-surface <see cref="DriverDataType"/>.</summary>
|
||||||
|
public static class AbLegacyDataTypeExtensions
|
||||||
|
{
|
||||||
|
/// <summary>Converts an AbLegacyDataType to the corresponding DriverDataType.</summary>
|
||||||
|
/// <param name="t">The PCCC data type to convert.</param>
|
||||||
|
/// <returns>The mapped driver data type.</returns>
|
||||||
|
public static DriverDataType ToDriverDataType(this AbLegacyDataType t) => t switch
|
||||||
|
{
|
||||||
|
AbLegacyDataType.Bit => DriverDataType.Boolean,
|
||||||
|
AbLegacyDataType.Int or AbLegacyDataType.AnalogInt => DriverDataType.Int32,
|
||||||
|
AbLegacyDataType.Long => DriverDataType.Int32, // matches Modbus/AbCip 64→32 gap
|
||||||
|
AbLegacyDataType.Float => DriverDataType.Float32,
|
||||||
|
AbLegacyDataType.String => DriverDataType.String,
|
||||||
|
AbLegacyDataType.TimerElement or AbLegacyDataType.CounterElement
|
||||||
|
or AbLegacyDataType.ControlElement => DriverDataType.Int32,
|
||||||
|
_ => DriverDataType.Int32,
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -13,6 +13,7 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\ZB.MOM.WW.OtOpcUa.Driver.AbLegacy.Contracts\ZB.MOM.WW.OtOpcUa.Driver.AbLegacy.Contracts.csproj"/>
|
||||||
<ProjectReference Include="..\..\Core\ZB.MOM.WW.OtOpcUa.Core.Abstractions\ZB.MOM.WW.OtOpcUa.Core.Abstractions.csproj"/>
|
<ProjectReference Include="..\..\Core\ZB.MOM.WW.OtOpcUa.Core.Abstractions\ZB.MOM.WW.OtOpcUa.Core.Abstractions.csproj"/>
|
||||||
<ProjectReference Include="..\..\Core\ZB.MOM.WW.OtOpcUa.Core\ZB.MOM.WW.OtOpcUa.Core.csproj"/>
|
<ProjectReference Include="..\..\Core\ZB.MOM.WW.OtOpcUa.Core\ZB.MOM.WW.OtOpcUa.Core.csproj"/>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|||||||
Reference in New Issue
Block a user