wenxiangchao
4 天以前 2e889843b4c171f2d6ad8e0d53084040703d11f6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
using System.Threading;
using System.Threading.Tasks;
 
namespace Aging.Infrastructure.Contracts
{
    /// <summary>
    /// 设备管理接口。
    /// 提供设备驱动的注册、连接管理和状态查询功能。
    /// </summary>
    public interface IDeviceManager
    {
        /// <summary>
        /// 根据设备ID获取设备驱动实例
        /// </summary>
        /// <param name="deviceId">设备标识符</param>
        /// <returns>设备驱动实例,不存在时返回 null</returns>
        IDeviceDriver? GetDriver(string deviceId);
 
        /// <summary>
        /// 获取设备当前状态
        /// </summary>
        /// <param name="deviceId">设备标识符</param>
        /// <returns>设备驱动状态</returns>
        DeviceDriverStatus GetStatus(string deviceId);
 
        /// <summary>
        /// 注册设备驱动
        /// </summary>
        /// <param name="deviceId">设备标识符</param>
        /// <param name="driver">设备驱动实例</param>
        void RegisterDriver(string deviceId, IDeviceDriver driver);
 
        /// <summary>
        /// 注销设备驱动
        /// </summary>
        /// <param name="deviceId">设备标识符</param>
        void UnregisterDriver(string deviceId);
 
        /// <summary>
        /// 异步连接设备
        /// </summary>
        /// <param name="deviceId">设备标识符</param>
        /// <param name="ct">取消令牌</param>
        Task ConnectAsync(string deviceId, CancellationToken ct);
 
        /// <summary>
        /// 异步断开设备连接
        /// </summary>
        /// <param name="deviceId">设备标识符</param>
        Task DisconnectAsync(string deviceId);
 
        /// <summary>
        /// 获取所有已注册设备的ID列表
        /// </summary>
        /// <returns>设备ID只读列表</returns>
        IReadOnlyList<string> GetRegisteredDevices();
 
        /// <summary>
        /// 检查设备是否已注册
        /// </summary>
        /// <param name="deviceId">设备标识符</param>
        /// <returns>设备是否已注册</returns>
        bool IsDeviceRegistered(string deviceId);
    }
}