125 lines
5.0 KiB
C#
125 lines
5.0 KiB
C#
using RobotNet10.RobotApp.Client.Shared.Devices;
|
|
|
|
namespace RobotNet10.RobotApp.Devices;
|
|
|
|
/// <summary>
|
|
/// Interface cung cấp các chức năng để quản lý và truy xuất devices
|
|
/// </summary>
|
|
public interface IDeviceProvider
|
|
{
|
|
/// <summary>
|
|
/// Lấy device theo deviceId
|
|
/// </summary>
|
|
/// <param name="deviceId">Định danh duy nhất của device</param>
|
|
/// <returns>Device nếu tìm thấy, null nếu không tìm thấy</returns>
|
|
DeviceBase? GetDevice(string deviceId);
|
|
|
|
/// <summary>
|
|
/// Lấy device theo deviceId (async)
|
|
/// </summary>
|
|
/// <param name="deviceId">Định danh duy nhất của device</param>
|
|
/// <param name="cancellationToken">Cancellation token</param>
|
|
/// <returns>Device nếu tìm thấy, null nếu không tìm thấy</returns>
|
|
Task<DeviceBase?> GetDeviceAsync(string deviceId, CancellationToken cancellationToken = default);
|
|
|
|
/// <summary>
|
|
/// Lấy device theo deviceType (lấy device đầu tiên tìm thấy)
|
|
/// </summary>
|
|
/// <param name="deviceType">Loại thiết bị</param>
|
|
/// <returns>Device nếu tìm thấy, null nếu không tìm thấy</returns>
|
|
DeviceBase? GetDeviceByType(DeviceType deviceType);
|
|
|
|
/// <summary>
|
|
/// Lấy device theo deviceType (async)
|
|
/// </summary>
|
|
/// <param name="deviceType">Loại thiết bị</param>
|
|
/// <param name="cancellationToken">Cancellation token</param>
|
|
/// <returns>Device nếu tìm thấy, null nếu không tìm thấy</returns>
|
|
Task<DeviceBase?> GetDeviceByTypeAsync(DeviceType deviceType, CancellationToken cancellationToken = default);
|
|
|
|
/// <summary>
|
|
/// Lấy tất cả devices theo deviceType
|
|
/// </summary>
|
|
/// <param name="deviceType">Loại thiết bị</param>
|
|
/// <returns>Danh sách devices của loại được chỉ định</returns>
|
|
IReadOnlyList<DeviceBase> GetDevicesByType(DeviceType deviceType);
|
|
|
|
/// <summary>
|
|
/// Lấy tất cả devices theo deviceType (async)
|
|
/// </summary>
|
|
/// <param name="deviceType">Loại thiết bị</param>
|
|
/// <param name="cancellationToken">Cancellation token</param>
|
|
/// <returns>Danh sách devices của loại được chỉ định</returns>
|
|
Task<IReadOnlyList<DeviceBase>> GetDevicesByTypeAsync(DeviceType deviceType, CancellationToken cancellationToken = default);
|
|
|
|
/// <summary>
|
|
/// Lấy tất cả devices
|
|
/// </summary>
|
|
/// <returns>Danh sách tất cả devices</returns>
|
|
IReadOnlyList<DeviceBase> GetAllDevices();
|
|
|
|
/// <summary>
|
|
/// Lấy tất cả devices (async)
|
|
/// </summary>
|
|
/// <param name="cancellationToken">Cancellation token</param>
|
|
/// <returns>Danh sách tất cả devices</returns>
|
|
Task<IReadOnlyList<DeviceBase>> GetAllDevicesAsync(CancellationToken cancellationToken = default);
|
|
|
|
/// <summary>
|
|
/// Kiểm tra device có tồn tại không
|
|
/// </summary>
|
|
/// <param name="deviceId">Định danh của device</param>
|
|
/// <returns>True nếu device tồn tại, false nếu không</returns>
|
|
bool ContainsDevice(string deviceId);
|
|
|
|
/// <summary>
|
|
/// Lấy số lượng devices
|
|
/// </summary>
|
|
/// <returns>Số lượng devices đã đăng ký</returns>
|
|
int GetDeviceCount();
|
|
|
|
/// <summary>
|
|
/// Lấy số lượng devices theo deviceType
|
|
/// </summary>
|
|
/// <param name="deviceType">Loại thiết bị</param>
|
|
/// <returns>Số lượng devices của loại được chỉ định</returns>
|
|
int GetDeviceCountByType(DeviceType deviceType);
|
|
|
|
/// <summary>
|
|
/// Kiểm tra xem tất cả devices đã được load chưa
|
|
/// </summary>
|
|
bool AreDevicesLoaded { get; }
|
|
|
|
/// <summary>
|
|
/// Kiểm tra xem tất cả devices đã kết nối chưa
|
|
/// </summary>
|
|
bool AreDevicesConnected { get; }
|
|
|
|
/// <summary>
|
|
/// Đợi cho đến khi tất cả devices đã được load
|
|
/// </summary>
|
|
/// <param name="timeout">Timeout để đợi</param>
|
|
/// <param name="cancellationToken">Cancellation token</param>
|
|
/// <returns>True nếu devices đã load, false nếu timeout</returns>
|
|
Task<bool> WaitForDevicesLoadedAsync(TimeSpan timeout, CancellationToken cancellationToken = default);
|
|
|
|
/// <summary>
|
|
/// Đợi cho đến khi tất cả devices đã kết nối
|
|
/// </summary>
|
|
/// <param name="timeout">Timeout để đợi</param>
|
|
/// <param name="cancellationToken">Cancellation token</param>
|
|
/// <returns>True nếu devices đã connect, false nếu timeout</returns>
|
|
Task<bool> WaitForDevicesConnectedAsync(TimeSpan timeout, CancellationToken cancellationToken = default);
|
|
|
|
/// <summary>
|
|
/// Event được kích hoạt khi tất cả devices đã được load
|
|
/// </summary>
|
|
event EventHandler? DevicesLoaded;
|
|
|
|
/// <summary>
|
|
/// Event được kích hoạt khi tất cả devices đã kết nối
|
|
/// </summary>
|
|
event EventHandler? DevicesConnected;
|
|
}
|
|
|