namespace SDKLibrary
{

   /// 消息报告委托
    public delegate void MsgReportEventHandler(Device devcie, string msg);

   /// 解析设备反馈数据委托
    public delegate void ResolveInfoReportEventHandler(Device devcie, ResolveInfo msg);

    /// <summary>
    /// 通讯管理类
    /// </summary>
    public class HDCommunicationManager : IDisposable
    {

        /// <summary>
        /// 普通消息通知事件
        /// </summary>
        public event MsgReportEventHandler MsgReport;

       /// 已经解析信息事件
        public event ResolveInfoReportEventHandler ResolvedInfoReport;

         /// <summary>
        /// 创建一个对象
        /// </summary>
        public HDCommunicationManager();

        /// <summary>
        /// 使用指定的本地端点进行侦听。等待设备主动连接。
        /// </summary>
        /// <param name="localEP"></param>
        public void Listen(IPEndPoint localEP);

        /// <summary>
        /// 获取当前在线设备列表
        /// </summary>
        /// <returns></returns>
        public List<Device> GetDevices();

        /// <summary>
        /// 开始扫描局域网设备
        /// </summary>
       public void StartScanLANDevice();

        /// <summary>
        /// 结束扫描局域网设备
        /// </summary>
        public void EndScanDevice();

        /// <summary>
        /// 添加设备
        /// </summary>
        /// <param name="ip">设备IP</param>
        /// <param name="exception">异常信息</param>
        /// <returns>成功返回设备对象,失败返回null</returns>
        public Device AddDevice(string ip, out string exception);

        /// <summary>
        /// 关闭一个与客户端之间的会话
        /// </summary>
        /// <param name="device">需要关闭的设备</param>
        public void Close(Device device);

        /// <summary>
        /// 关闭所有的客户端会话,与所有的客户端连接会断开
        /// </summary>
        public void CloseAllClient();

       /// <summary>
        /// 停止通信
        /// </summary>
        public void Stop();

     ///...................................

     }

}