using System.Threading.Tasks;
namespace Plane.Copters
{
public interface ICopterActionsSharedByCopterManager
{
///
/// 断开与飞行器之间的连接。
///
/// 表示此异步操作的 实例。
Task DisconnectAsync();
///
/// 切换到 并向各个控制通道发中间值。飞行器可能受风等外力影响而在水平方向上飘动。
///
/// 表示此命令异步发送操作的 实例。
Task FloatAsync();
///
/// 使飞行器飞往水平面上指定的点。
///
/// 纬度。
/// 经度。
/// 表示此命令异步发送操作的 实例。
Task FlyToAsync(double lat, double lng);
///
/// 使飞行器飞往指定的点。
///
/// 纬度。
/// 经度。
/// 相对于解锁点的高度。
/// 表示此命令异步发送操作的 实例。
/// flytime =飞行时间 秒
/// flytype 0;匀速 1;加减速 2;单加速 3;单减速
Task FlyToAsync(double lat, double lng, float alt,float flytime=0,int flytype = 0);
///
/// 切换到 并悬停。此操作需要使用 GPS 定位,卫星数不足导致定位不准时非常危险。
///
/// 表示此命令异步发送操作的 实例。
Task HoverAsync();
Task GuidAsync();
///
/// 降落。此操作需要使用 GPS 定位,卫星数不足导致定位不准时非常危险。
///
/// 表示此命令异步发送操作的 实例。
Task LandAsync();
///
/// 锁定飞行器(停止电机转动)。在调用之前务必判断高度及让软件使用者确认!
///
Task LockAsync();
///
/// 返航。此操作需要使用 GPS 定位,卫星数不足导致定位不准时非常危险。
///
/// 表示此命令异步发送操作的 实例。
Task ReturnToLaunchAsync();
///
/// 用指定的值设置通道。
///
/// 通道 1 的目标值。
/// 通道 2 的目标值。
/// 通道 3 的目标值。
/// 通道 4 的目标值。
/// 通道 5 的目标值。
/// 通道 6 的目标值。
/// 通道 7 的目标值。
/// 通道 8 的目标值。
/// 表示此命令异步发送操作的 实例。
Task SetChannelsAsync(ushort? ch1 = null, ushort? ch2 = null, ushort? ch3 = null, ushort? ch4 = null, ushort? ch5 = null, ushort? ch6 = null, ushort? ch7 = null, ushort? ch8 = null);
///
/// 用指定的值设置通道和偏航。
///
/// 通道 1 的目标值。
/// 通道 2 的目标值。
/// 通道 3 的目标值。
/// 通道 4 的目标值。目前此参数无效(20160119)。
/// 通道 5 的目标值。
/// 通道 6 的目标值。
/// 通道 7 的目标值。
/// 通道 8 的目标值。
/// 偏航的目标值
/// 表示此命令异步发送操作的 实例。
Task SetMobileControlAsync(ushort? ch1 = null, ushort? ch2 = null, ushort? ch3 = null, ushort? ch4 = null, ushort? ch5 = null, ushort? ch6 = null, ushort? ch7 = null, ushort? ch8 = null, float? yaw = null);
///
/// 进入紧急悬停状态。此状态需要使用 GPS 定位,卫星数不足导致定位不准时非常危险。
///
/// 表示此命令异步发送操作的 实例。
Task StartEmergencyHoverAsync();
///
/// 开始根据各个目标属性(如 )控制飞行器。
///
/// 发送控制命令的时间间距,若为 null,将由 SDK 决定。
void StartMobileControl(int? millisecondsInterval = null);
///
/// 停止紧急悬停。
///
void StopEmergencyHover();
///
/// 停止根据各个目标属性(如 )控制飞行器。
///
void StopMobileControl();
///
/// 自动起飞到预定高度。此操作需要使用 GPS 定位,卫星数不足导致定位不准时非常危险。
///
/// 表示此命令异步发送操作的 实例。
Task TakeOffAsync();
///
/// 自动解锁并起飞到指定高度。此操作需要使用 GPS 定位,卫星数不足导致定位不准时非常危险。
///
/// 目标高度。
/// 表示此命令异步发送操作的 实例。
Task TakeOffAsync(float alt);
///
/// 解锁飞行器。螺旋桨将开始转动,但飞行器不会起飞。
///
/// 表示此命令异步发送操作的 实例。
Task UnlockAsync();
Task InjectGpsDataAsync(byte[] data, ushort length);
Task MissionStartAsync(int hour_utc, int minute_utc, int second_utc, double Missionlng, double Missionlat);
Task LEDAsync();
//电机转动
Task MotorTestAsync(int motor);
}
}