using System.Threading.Tasks;
using XP.Hardware.Detector.Abstractions.Enums;

namespace XP.Hardware.Detector.Abstractions
{
    /// <summary>
    /// iRay 探测器专属接口 | iRay detector specific interface
    /// 扩展 iRay 特有的功能
    /// </summary>
    public interface IIRayDetector : IAreaDetector
    {
        /// <summary>
        /// 设置采集模式 | Set acquisition mode
        /// </summary>
        /// <param name="mode">采集模式 | Acquisition mode</param>
        /// <returns>操作结果 | Operation result</returns>
        Task<DetectorResult> SetAcquisitionModeAsync(AcquisitionMode mode);

        /// <summary>
        /// 获取采集模式 | Get acquisition mode
        /// </summary>
        /// <returns>当前采集模式 | Current acquisition mode</returns>
        AcquisitionMode GetAcquisitionMode();

        /// <summary>
        /// 设置增益值 | Set gain value
        /// </summary>
        /// <param name="gain">增益值 | Gain value</param>
        /// <returns>操作结果 | Operation result</returns>
        Task<DetectorResult> SetGainAsync(double gain);

        /// <summary>
        /// 获取增益值 | Get gain value
        /// </summary>
        /// <returns>当前增益值 | Current gain value</returns>
        double GetGain();
    }
}
