using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using FLY.Thick.Base.Common;
using System.Collections.ObjectModel;

namespace FLY.Thick.Base.IService
{
    public interface IScanCorrService : INotifyPropertyChanged
    {
        /// <summary>
        /// 使能修正
        /// </summary>
        bool Enable{set;get;}

        /// <summary>
        /// 当前进度 0 - 100 
        /// </summary>
        int Progress { get; }
        /// <summary>
        /// 正在机架修正中
        /// </summary>
        bool Ing { get; }

        /// <summary>
        /// 来回次数
        /// </summary>
        int ScanTimer { get; set; }

        /// <summary>
        /// 平滑,移动窗口
        /// </summary>
        int SmoothFactor { get; set; }

        /// <summary>
        /// 有效范围.开始，单位脉冲
        /// </summary>
        int ValidBegin { get; set; }
        /// <summary>
        /// 有效范围.结束，单位脉冲
        /// </summary>
        int ValidEnd { get; set; }



        /// <summary>
        /// 储存的数据是grid为单位。 需要PosOfGrid，PosLen 作为对应！！
        /// </summary>
        int PosOfGrid { get; }
        /// <summary>
        /// 储存的数据是grid为单位。 需要PosOfGrid，PosLen 作为对应！！
        /// </summary>
        int PosLen { get; }


        /// <summary>
        ///组0   
        /// </summary>
        IScanCorrGroup Group0 { get; }
        /// <summary>
        /// 组1
        /// </summary>
        IScanCorrGroup Group1 { get; }

        /// <summary>
        /// 开始机架修正， 参数 ScanTimer，SmoothFactor
        /// </summary>
        /// <param name="groupindex">0,1</param>
        void Start(int groupindex);
        /// <summary>
        /// 平滑, 参数是SmoothFactor
        /// </summary>
        /// <param name="groupindex">0,1</param>
        void Smooth(int groupindex);
        /// <summary>
        /// 清空组数据
        /// </summary>
        /// <param name="groupindex">0,1</param>
        void Clear(int groupindex);

        /// <summary>
        /// 参数应用
        /// </summary>
        void Apply();

        //void SetGroupData();
    }
    public interface IScanCorrGroup : INotifyPropertyChanged 
    {
        /// <summary>
        /// 平均AD值
        /// </summary>
        int AvgAD { get; set; }
        /// <summary>
        /// 正反方向机架AD值数据, grid数据
        /// </summary>
        List<int> ForwDatas { get; }

        /// <summary>
        /// 反方向机架AD值数据, grid数据
        /// </summary>
        List<int> BackwDatas { get; }
    }
    
}
