using System;
using System.Collections.Generic;
namespace TeamAAS.Global.Devices
{
/// 具备名称的设备(按名查找的最小契约)。
public interface INamedDevice
{
/// 设备名称(唯一)。
string Name { get; }
}
/// 具备连接状态的设备。
public interface IConnectableDevice : INamedDevice
{
/// 是否已连接。
bool IsConnected { get; }
/// 打开/连接设备。返回是否成功。
bool Open();
/// 关闭/断开设备。
void Close();
}
/// 设备提供者:某类设备管理器的最小契约(相机/机器人/通讯/供料/运动卡管理器各自适配)。
public interface IDeviceProvider where TDevice : INamedDevice
{
/// 全部设备(只读快照)。
IEnumerable Devices { get; }
/// 按名称取设备。找不到返回 default。
TDevice GetByName(string name);
}
///
/// 设备调试页面契约:每种设备内核可附带一个自定义调试界面(用户分层设计·第二层要求)。
/// 宿主用工厂创建页面并绑定设备实例;页面自身用 WPF 控件实现(契约层只定义工厂,不引入 UI 类型)。
///
public interface IDeviceDebugPageFactory
{
/// 本调试页适用的设备类别名(如 "相机"/"机器人"/"通讯"/"供料器"/"运动卡")。
string DeviceCategory { get; }
/// 为指定设备创建调试页面对象(返回 object,由宿主转换为 FrameworkElement,避免本层依赖 WPF)。
object CreatePage(object device);
}
}