using Plane.Geography;
using System;
namespace Plane.Copters
{
///
/// 定义用于获取飞行器状态的属性。
///
public partial interface ICopterStatus : IVisibleStatus
{
///
/// 获取当前空速,单位为 m/s。
///
float AirSpeed { get; }
///
/// 获取剩余电量百分比,其范围为 [0, 100]。
///
byte BatteryPer { get; }
///
/// 获取通道 1 的值。该值在飞控中用于改变飞行器横滚姿态,从而控制其左右方向的移动。有效范围为 [1100, 1900]。小于 1500 时使飞行器向左倾斜,大于 1500 时使飞行器向右倾斜。
///
ushort Channel1 { get; }
///
/// 获取通道 2 的值。该值在飞控中用于改变飞行器俯仰姿态,从而控制其前后方向的移动。有效范围为 [1100, 1900]。小于 1500 时使飞行器向前倾斜,大于 1500 时使飞行器向后倾斜。
///
ushort Channel2 { get; }
///
/// 获取通道 3 的值。该值在飞控中用于改变飞行器油门,从而控制其上下方向的移动。有效范围为 [1100, 1900]。在能够定高的模式(如 ALT_HOLD、LOITER)下,小于 1500 时使飞行器下降,大于 1500 时使飞行器上升。
///
ushort Channel3 { get; }
///
/// 获取通道 4 的值。该值在飞控中用于使飞行器改变机头方向。有效范围为 [1100, 1900]。小于 1500 时使飞行器逆时针旋转,大于 1500 时使飞行器顺时针旋转。
///
ushort Channel4 { get; }
///
/// 获取通道 5 的值。其作用未定义。
///
ushort Channel5 { get; }
///
/// 获取通道 6 的值。该值在飞控中用于控制相机正对的方向。有效范围为 [1100, 1900]。小于 1500 时使相机逆时针旋转,大于 1500 时使相机顺时针旋转。
///
ushort Channel6 { get; }
///
/// 获取通道 7 的值。该值在飞控中用于控制相机俯仰姿态。有效范围为 [1100, 1900]。小于 1500 时使相机向后旋转,大于 1500 时使相机向前旋转。
///
ushort Channel7 { get; }
///
/// 获取通道 8 的值。其作用未定义。
///
ushort Channel8 { get; }
///
/// 获取海拔。
///
float Elevation { get; }
///
/// 获取固件版本。
///
int? FirmwareVersion { get; }
///
/// 获取固件版本的文本形式。
///
string FirmwareVersionText { get; }
///
/// 获取在三维空间中的飞行距离。
///
double FlightDistance { get; }
///
/// 获取在水平面上的飞行距离。
///
double FlightDistance2D { get; }
///
/// 获取飞行时间。
///
TimeSpan FlightTimeSpan { get; }
///
/// 获取 GPS 锁定状态。
///
GpsFixType GpsFixType { get; }
///
/// 获取 GPS HDOP(horizontal dilution of position),单位为米。
///
float GpsHdop { get; }
///
/// 获取当前地速,单位为 m/s。
///
float GroundSpeed { get; }
///
/// 获取一个值,指示是否切过 GPS 模式。
///
bool HasSwitchedToGpsMode { get; }
///
/// 获取收到心跳的总数。
///
ulong HeartbeatCount { get; }
///
/// 获取飞行器的标识。
///
string Id { get; }
///
/// 获取一个值,指示是否确定飞行器与地面站正常连接。在实现中,一般根据对心跳包的接收情况判断。
///
bool IsAbsolutelyConnected { get; }
///
/// 获取一个值,指示是否正在检查飞行器与地面站的连接以确定通信正常。在实现中,一般在建立连接后设为 true,在收到飞行器发回的数据后设为 false。
///
bool IsCheckingConnection { get; set; }
///
/// 获取一个值,指示飞行器与地面站之间的连接是否正常。
///
bool IsConnected { get; }
///
/// 获取一个值,指示当前的 GPS 定位是否足够精确。
///
bool IsGpsAccurate { get; }
///
/// 获取一个值,指示飞行器是否已解锁。
///
bool IsUnlocked { get; }
///
/// 获取任务总数。
///
ushort? MissionCount { get; }
///
/// 获取飞行器的 GPS 卫星数。
///
byte SatCount { get; }
///
/// 获取当前所处状态。
///
CopterState State { get; }
///
/// 获取飞控发回的消息,如起飞失败原因。
///
string StatusText { get; }
///
/// 获取起飞点。
///
ILocation TakeOffPoint { get; }
///
/// 获取当前电池电压,单位为伏特。
///
float Voltage { get; }
byte[] Retain { get; }
}
}