using System; using System.Collections.Generic; using System.Threading.Tasks; using TeamAAS.Camera.Models; namespace TeamAAS.Camera.Interfaces { /// /// 提供相机生命周期管理接口,包括创建、获取、注销相机实例以及品牌发现。 /// 实现类应保证线程安全,并在 Dispose 中释放所有已注册相机的资源。 /// public interface ICameraManager : IDisposable { Task CreateCameraAsync(Guid id, CameraInfo cameraInfo); bool CreateCamera(Guid id, CameraInfo cameraInfo); ICamera GetCamera(Guid id); Task GetCameraAsync(Guid id); IReadOnlyCollection GetAllCameras(); Task> GetAllCamerasAsync(); bool TryGetCamera(Guid id, out ICamera camera); bool ContainsCamera(Guid id); bool ContainsSN(string serialNumber); bool RemoveCamera(Guid id); Task RemoveCameraAsync(Guid id); void UnRegisterCamera(Guid id); Task UnRegisterCameraAsync(Guid id); ICamera GetCameraByNumber(int number); void RemoveAllCameras(); (bool IsSucceed, string Message) InitializeAllCameras(CameraInfo[] cameras); Task<(bool IsSucceed, string Message)> InitializeAllCamerasAsync(CameraInfo[] cameras); void UpdateCameraNumber(Guid id, int newNumber); bool SaveConfig(string path = null); IReadOnlyList GetAllCameraInfos(); // === 品牌/设备发现(原 CameraFactory 职责)=== List DiscoverAllDevices(); List DiscoverByBrand(string brand); List<(string Brand, string DisplayName, bool Installed)> GetAvailableBrands(); string GetBrandDisplayName(string brand); List<(string Name, bool Installed, string Version)> GetSdkStatus(); IReadOnlyList GetAvailableTypes(); } }