From 9d1660270272180cd71147d6ddd53d1382643d2e Mon Sep 17 00:00:00 2001
From: wenxiangchao <wenxiangchao@ihengxin.com.cn>
Date: 星期一, 02 十一月 2026 18:00:14 +0800
Subject: [PATCH] merge: 并入远程 Initial commit 作为历史根节点

---
 Aging.Infrastructure/Contracts/IDeviceDriver.cs |  114 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 114 insertions(+), 0 deletions(-)

diff --git a/Aging.Infrastructure/Contracts/IDeviceDriver.cs b/Aging.Infrastructure/Contracts/IDeviceDriver.cs
new file mode 100644
index 0000000..c23e64c
--- /dev/null
+++ b/Aging.Infrastructure/Contracts/IDeviceDriver.cs
@@ -0,0 +1,114 @@
+namespace Aging.Infrastructure.Contracts
+{
+    /// <summary>
+    /// 璁惧椹卞姩鐘舵�佷俊鎭�
+    /// </summary>
+    public sealed class DeviceDriverStatus
+    {
+        /// <summary>
+        /// 璁惧鏄惁宸茶繛鎺�
+        /// </summary>
+        public bool IsConnected { get; set; }
+
+        /// <summary>
+        /// 璁惧鏄惁鍋ュ悍锛堟棤鏁呴殰锛�
+        /// </summary>
+        public bool IsHealthy { get; set; }
+
+        /// <summary>
+        /// 鏈�鍚庝竴娆¢敊璇俊鎭�
+        /// </summary>
+        public string LastError { get; set; } = "";
+
+        /// <summary>
+        /// 鏈�鍚庝竴娆¢敊璇彂鐢熺殑鏃堕棿
+        /// </summary>
+        public DateTime? LastErrorTime { get; set; }
+
+        /// <summary>
+        /// 閫氫俊寤惰繜锛堟绉掞級
+        /// </summary>
+        public double LatencyMs { get; set; }
+
+        /// <summary>
+        /// 閲嶈繛娆℃暟
+        /// </summary>
+        public int ReconnectCount { get; set; }
+    }
+
+    /// <summary>
+    /// 璁惧杩炴帴鐘舵�佸彉鍖栦簨浠跺弬鏁�
+    /// </summary>
+    public sealed class DeviceConnectionEventArgs : EventArgs
+    {
+        /// <summary>
+        /// 璁惧鏍囪瘑绗�
+        /// </summary>
+        public string DeviceId { get; set; } = "";
+
+        /// <summary>
+        /// 鏄惁宸茶繛鎺�
+        /// </summary>
+        public bool IsConnected { get; set; }
+
+        /// <summary>
+        /// 鐘舵�佸彉鍖栧師鍥狅紙鍙�夛級
+        /// </summary>
+        public string? Reason { get; set; }
+    }
+
+    /// <summary>
+    /// 璁惧椹卞姩缁熶竴鎺ュ彛銆�
+    /// 鎵�鏈夌‖浠惰澶囬┍鍔ㄥ繀椤诲疄鐜版鎺ュ彛锛屾彁渚涜繛鎺ャ�佹柇寮�銆佸懡浠ゅ彂閫佸拰鏌ヨ鍔熻兘銆�
+    /// </summary>
+    public interface IDeviceDriver : IDisposable
+    {
+        /// <summary>
+        /// 璁惧鍞竴鏍囪瘑绗�
+        /// </summary>
+        string DeviceId { get; }
+
+        /// <summary>
+        /// 璁惧褰撳墠鏄惁宸茶繛鎺�
+        /// </summary>
+        bool IsConnected { get; }
+
+        /// <summary>
+        /// 寮傛杩炴帴璁惧
+        /// </summary>
+        /// <param name="ct">鍙栨秷浠ょ墝</param>
+        Task ConnectAsync(CancellationToken ct);
+
+        /// <summary>
+        /// 寮傛鏂紑璁惧杩炴帴
+        /// </summary>
+        Task DisconnectAsync();
+
+        /// <summary>
+        /// 鍙戦�佸懡浠ゅ埌璁惧
+        /// </summary>
+        /// <param name="command">鍛戒护瀛楃涓�</param>
+        /// <param name="ct">鍙栨秷浠ょ墝</param>
+        /// <returns>璁惧鍝嶅簲瀛楃涓�</returns>
+        Task<string> SendCommandAsync(string command, CancellationToken ct);
+
+        /// <summary>
+        /// 鍚戣澶囧彂閫佹煡璇㈠苟鑾峰彇鍝嶅簲
+        /// </summary>
+        /// <param name="query">鏌ヨ瀛楃涓�</param>
+        /// <param name="ct">鍙栨秷浠ょ墝</param>
+        /// <returns>璁惧鏌ヨ鍝嶅簲瀛楃涓�</returns>
+        Task<string> QueryAsync(string query, CancellationToken ct);
+
+        /// <summary>
+        /// 鑾峰彇璁惧褰撳墠鐘舵�佷俊鎭�
+        /// </summary>
+        /// <returns>璁惧椹卞姩鐘舵��</returns>
+        DeviceDriverStatus GetStatus();
+
+        /// <summary>
+        /// 璁惧杩炴帴鐘舵�佸彉鍖栦簨浠�
+        /// </summary>
+        event EventHandler<DeviceConnectionEventArgs>? ConnectionChanged;
+    }
+}

--
Gitblit v1.9.1