using System.Threading;
using System.Threading.Tasks;
namespace Plane.Copters
{
///
/// 定义用于操纵飞行器的属性和方法。
///
public partial interface ICopterActions : ICopterActionsSharedByCopterManager, ICopterMissionActions
{
///
/// 获取或设置目标通道 1。
///
ushort? DesiredChannel1 { get; set; }
///
/// 获取或设置目标通道 2。
///
ushort? DesiredChannel2 { get; set; }
///
/// 获取或设置目标通道 3。
///
ushort? DesiredChannel3 { get; set; }
///
/// 获取或设置目标通道 4。
///
ushort? DesiredChannel4 { get; set; }
///
/// 获取或设置目标通道 5。
///
ushort? DesiredChannel5 { get; set; }
///
/// 获取或设置目标通道 6。
///
ushort? DesiredChannel6 { get; set; }
///
/// 获取或设置目标通道 7。
///
ushort? DesiredChannel7 { get; set; }
///
/// 获取或设置目标通道 8。
///
ushort? DesiredChannel8 { get; set; }
///
/// 获取或设置目标偏航。
///
float? DesiredYaw { get; set; }
///
/// 获取一个值,指示飞行器是否正处于紧急悬停状态。
///
bool IsEmergencyHoverActive { get; }
///
/// 开启与飞行器之间的连接。
///
/// 表示此异步操作的 实例。
Task ConnectAsync();
///
/// 跟随。
///
/// 目标。
/// 设为 true 进保持偏航角度差,设为 false 时将保持两者在空间中的相对位置。
/// 是否保持机头面对目标。
void Follow(IVisibleStatus target, bool keepYawDifference = false, bool keepFacingTarget = true, bool keep3DRelativeLocations = false);
///
/// 向飞行器请求数据。
///
/// 表示此命令异步发送操作的 实例。
Task GetCopterDataAsync();
///
/// 获取参数的值。
///
/// 参数名。
/// 超时时间,单位为毫秒。
/// 表示参数获取异步操作的 ,其结果即为参数的值。
/// 操作超时。
Task GetParamAsync(string paramName, int millisecondsTimeout = Timeout.Infinite);
///
/// 把所有通道设置为目标值。
///
/// 表示此命令异步发送操作的 实例。
Task SetChannelsAsync();
///
/// 用各个目标值属性设置通道和偏航。
///
/// 表示此命令异步发送操作的 实例。
Task SetMobileControlAsync();
///
/// 设置参数,返回的 实例在确认设置成功后完成。
///
/// 参数名。
/// 值。
/// 超时时间,单位为毫秒。
/// 表示异步设置参数操作的 实例。
/// 操作超时。
Task SetParamAsync(string paramName, float value, int millisecondsTimeout = Timeout.Infinite);
bool GetShowLEDAsync();
void GetCommunicationNumber(out int recnumber, out int sendnumber);
//重设数据量
void ResetCommunicationNumber();
Task SetShowLEDAsync(bool Ledon);
Task SetShowLEDFlashAsync(int Flashtype, int millisecondsTime);
Task SetShowRGBLEDAsync(int RedValue, int GreenValue, int BlueValue);
///
/// 开始对频。
///
/// 表示此命令异步发送操作的 实例。
Task StartPairingAsync();
///
/// 停止对频。
///
/// 表示此命令异步发送操作的 实例。
Task StopPairingAsync();
///
/// 发送命令
///
///
///
///
///
///
///
///
///
///
Task DoCommandAsync(int actionid, float p1, float p2, float p3, float p4, float p5, float p6, float p7);
///
/// 发送命令数据包已生成
///
///
///
///
Task DoCommandAckAsync(ushort command, byte result);
//强制刷新位置
void RefreashLoc();
}
}