using Plane.Communication; using Plane.Copters; using System.Collections.ObjectModel; using System.Threading.Tasks; namespace Plane.CopterManagement { public interface ICopterManager : ICopterActionsSharedByCopterManager { /// /// 获取 实例的动态集合。 /// ObservableCollection AllCopters { get; } /// /// 获取单个 实例。用 代替 null,使用时不必判断是否为 null。 /// ICopter Copter { get; } /// /// 获取一个值,指示是否正在搜寻飞行器。 /// bool IsSearching { get; } /// /// 获取被选中的 实例的动态集合。 /// ObservableCollection SelectedCopters { get; } /// /// 添加或更新 实例。 /// /// 飞行器的唯一 ID。 /// 飞行器的名字。 /// 用于通信的 实例。 /// Task AddOrUpdateCopterAsync(string id, string name, IConnection connection); /// /// 检查飞行器的状态,判断是否允许 FlyTo,若允许,飞往指定位置。 /// /// 目的地纬度。 /// 目的地经度。 /// 若允许并执行了 FlyTo,返回 true;否则返回 false。 Task CheckStatusAndFlyToAsync(double lat, double lng); /// /// 连接一个新的 实例。 /// /// 要连接的 实例。 /// 表示此异步操作的 实例。 Task ConnectAsync(ICopter copter); /// /// 开始搜索并连接飞行器。 /// void StartSearching(); /// /// 停止搜索飞行器。 /// void StopSearching(); } }