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