using System;
using XP.Hardware.RaySource.Abstractions;
using XP.Hardware.RaySource.Abstractions.Enums;
namespace XP.Hardware.RaySource.Services
{
///
/// 射线源业务服务接口 | X-Ray Source Business Service Interface
/// 封装初始化、操作调度、状态管理和业务规则校验 | Encapsulates initialization, operation dispatch, status management, and business rule validation
///
public interface IRaySourceService : IDisposable
{
///
/// 当前射线源实例 | Current X-ray source instance
///
IXRaySource CurrentSource { get; }
///
/// 是否已初始化 | Is initialized
///
bool IsInitialized { get; }
///
/// PVI 变量是否已连接 | Whether PVI variables are connected
///
bool IsConnected { get; }
///
/// 是否射线开启 | Is X-ray on
///
bool IsXRayOn { get; }
///
/// 当前射线源状态 | Current X-ray source status
///
RaySourceStatus CurrentStatus { get; }
///
/// 初始化射线源(射线源类型从配置文件读取)| Initialize X-ray source (source type read from configuration)
///
XRayResult Initialize();
///
/// 连接变量并启动实时状态通讯 | Connect variables and start real-time status communication
///
XRayResult ConnectVariables();
///
/// 断开射线源连接 | Disconnect X-ray source
///
XRayResult Disconnect();
///
/// 开启射线 | Turn on X-ray
///
XRayResult TurnOn();
///
/// 关闭射线 | Turn off X-ray
///
XRayResult TurnOff();
///
/// 紧急关闭(最高优先级)| Emergency shutdown (highest priority)
///
XRayResult EmergencyShutdown();
///
/// 设置电压 | Set voltage
///
/// 电压值(kV)| Voltage value (kV)
XRayResult SetVoltage(float voltage);
///
/// 设置电流 | Set current
///
/// 电流值(μA)| Current value (μA)
XRayResult SetCurrent(float current);
///
/// 读取实际电压 | Read actual voltage
///
XRayResult ReadVoltage();
///
/// 读取实际电流 | Read actual current
///
XRayResult ReadCurrent();
///
/// 读取系统状态 | Read system status
///
XRayResult ReadSystemStatus();
///
/// 检查错误 | Check errors
///
XRayResult CheckErrors();
///
/// 清除错误 | Clear errors
///
XRayResult ClearErrors();
///
/// TXI 开启 | TXI On
///
XRayResult TxiOn();
///
/// TXI 关闭 | TXI Off
///
XRayResult TxiOff();
///
/// 暖机设置 | Warm-up setting
///
XRayResult WarmUp();
///
/// 训机设置 | Training setting
///
XRayResult Training();
///
/// 灯丝校准 | Filament calibration
///
XRayResult FilamentCalibration();
///
/// 全部电压自动定心 | Auto-center all voltages
///
XRayResult AutoCenter();
///
/// 设置功率模式 | Set power mode
///
/// 功率模式值:1=Micro Focus,2=High Power
XRayResult SetPowerMode(int mode);
///
/// 异步执行初始化 + 连接变量的完整流程 | Async full sequence: Initialize + ConnectVariables
/// 供 ViewModel 在界面加载时调用,避免阻塞 UI 线程 | For ViewModel to call on view loaded without blocking UI
///
/// 最终操作结果 | Final operation result
System.Threading.Tasks.Task InitializeAndConnectAsync();
}
}