using System;
|
using CommunityToolkit.Mvvm.ComponentModel;
|
|
namespace Plugin.DeviceConfig.Entity
|
{
|
/// <summary>
|
/// 设备种类枚举
|
/// </summary>
|
public enum DeviceKind
|
{
|
PowerSupply,
|
CanDevice,
|
PlcDevice,
|
Chamber,
|
DAQ
|
}
|
|
/// <summary>
|
/// V3.0 执行位置枚举:Local=进程独占直连;Broker=跨进程共享,由 DeviceBroker 宿主代理
|
/// </summary>
|
public enum ExecutionModeKind
|
{
|
Local,
|
Broker
|
}
|
|
/// <summary>
|
/// 传输方式枚举
|
/// </summary>
|
public enum TransportType
|
{
|
Tcp,
|
Serial,
|
Visa,
|
SDK,
|
Can
|
}
|
|
/// <summary>
|
/// 设备定义实体
|
/// </summary>
|
public partial class DeviceDefinition : ObservableObject
|
{
|
/// <summary>
|
/// 无参构造函数(用于数据绑定)
|
/// </summary>
|
public DeviceDefinition() { }
|
|
/// <summary>
|
/// 设备唯一标识(主键)
|
/// </summary>
|
[ObservableProperty]
|
private string deviceId = string.Empty;
|
|
/// <summary>
|
/// 设备种类: PowerSupply / CanDevice / PlcDevice / Chamber / DAQ
|
/// </summary>
|
[ObservableProperty]
|
private DeviceKind kind;
|
|
/// <summary>
|
/// 驱动类型名称
|
/// </summary>
|
[ObservableProperty]
|
private string driverType = string.Empty;
|
|
/// <summary>
|
/// 传输方式: Tcp / Serial / Visa / SDK
|
/// </summary>
|
[ObservableProperty]
|
private TransportType transport;
|
|
/// <summary>
|
/// 连接端点(IP:Port 或 COM口)
|
/// </summary>
|
[ObservableProperty]
|
private string endpoint = string.Empty;
|
|
/// <summary>
|
/// 执行位置: Local / Broker(V3.0 §05,默认 Local)
|
/// </summary>
|
[ObservableProperty]
|
private ExecutionModeKind executionMode = ExecutionModeKind.Local;
|
|
/// <summary>
|
/// 仲裁域标识(必填,候选值由配置枚举;同一 PhysicalSessionKey 只能归属一个仲裁域宿主)
|
/// </summary>
|
[ObservableProperty]
|
private string authorityId = string.Empty;
|
|
/// <summary>
|
/// Broker 宿主标识(仅 Broker 模式;须与仲裁域一致)
|
/// </summary>
|
[ObservableProperty]
|
private string brokerId = string.Empty;
|
|
/// <summary>
|
/// Broker 宿主进程号(仅 Broker 记录用,运行期以 Broker 实际 PID 为准;MVP 占位当前进程)
|
/// </summary>
|
[ObservableProperty]
|
private string ownerProcessId = string.Empty;
|
|
/// <summary>
|
/// 物理会话键(仅 Broker;地址规范化后的固定字符串,如 can/CAN_BUS_1/main)
|
/// </summary>
|
[ObservableProperty]
|
private string physicalSessionKey = string.Empty;
|
|
/// <summary>
|
/// 访问控制策略:只读派生,不可手工编辑(V3.0 §05)
|
/// </summary>
|
public string AccessPolicy => ExecutionMode switch
|
{
|
ExecutionModeKind.Broker => "共享仲裁 · Broker SessionGate 代理",
|
_ => "独占直连 · 本进程持有物理会话"
|
};
|
|
/// <summary>
|
/// 生效版本号
|
/// </summary>
|
[ObservableProperty]
|
private string effectiveVersion = string.Empty;
|
|
/// <summary>
|
/// 创建时间
|
/// </summary>
|
[ObservableProperty]
|
private DateTime createdAt = DateTime.Now;
|
|
/// <summary>
|
/// 更新时间
|
/// </summary>
|
[ObservableProperty]
|
private DateTime updatedAt = DateTime.Now;
|
}
|
}
|