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; }


    }
}