using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace FlyADBase
{
    /// <summary>
    /// 客户端AD盒
    /// </summary>
    public interface IFlyADClient : IFlyAD
    {
        /// <summary>
        /// 连接成功
        /// </summary>
        bool IsConnected { get; }

        /// <summary>
        /// 重连次数
        /// </summary>
        int ConnectCnt { get; }

        /// <summary>
        /// CRC 校正
        /// </summary>
        bool HasCRC { get; set; }

        /// <summary>
        /// 连接
        /// </summary>
        void Connect();

        /// <summary>
        /// 连接 addr
        /// </summary>
        /// <param name="addr"></param>
        void Connect(string addr);

        /// <summary>
        /// 重连
        /// </summary>
        void ReConnect();

        /// <summary>
        /// 已经从AD盒获取全部当前数据
        /// </summary>
        bool IsReady { get; }

        /// <summary>
        ///  通过判断systick，判断AD盒是否发生重启;
        ///  BeResetTime为上一次被复位时间， 此为 电脑的时间
        /// </summary>
        DateTime BeResetTime { get; }

        /// <summary>
        /// 用于同步， 最后一次 纵向信号 0->1 时，主轴脉冲
        /// </summary>
        [Obsolete("偏移都由电脑计算，不需要AD盒处理")]
        int LastPos2At01 { get; }


        /// <summary>
        /// 当前在同步状态
        /// </summary>
        bool IsSync { get; }

        /// <summary>
        /// 同步列表，完成后，会删除
        /// </summary>
        ObservableCollection<SyncOrder> SyncOrders { get; }


    }
}
