2024-01-17 22:37:53 +08:00
|
|
|
|
using System;
|
|
|
|
|
|
|
|
|
|
namespace Plane.Copters
|
|
|
|
|
{
|
|
|
|
|
#if PRIVATE
|
|
|
|
|
public
|
|
|
|
|
#else
|
|
|
|
|
internal
|
|
|
|
|
#endif
|
|
|
|
|
enum FlightMode
|
|
|
|
|
{
|
|
|
|
|
// 王海,20150608:不可将以下枚举项重命名。
|
|
|
|
|
|
|
|
|
|
STABILIZE = 0, // hold level position
|
|
|
|
|
|
|
|
|
|
ACRO = 1, // rate control // 王海, 20160205, 特技模式:http://copter.ardupilot.cn/wiki/acro-mode/
|
|
|
|
|
|
|
|
|
|
ALT_HOLD = 2, // AUTO control
|
|
|
|
|
|
|
|
|
|
AUTO = 3, // AUTO control
|
|
|
|
|
|
|
|
|
|
GUIDED = 4, // AUTO control
|
|
|
|
|
|
|
|
|
|
LOITER = 5, // Hold a single location
|
|
|
|
|
|
|
|
|
|
RTL = 6, // AUTO control
|
|
|
|
|
|
|
|
|
|
CIRCLE = 7,
|
|
|
|
|
|
|
|
|
|
POSITION = 8, // 王海, 20160205, 位置模式:http://copter.ardupilot.cn/wiki/POSITION-mode/
|
|
|
|
|
|
|
|
|
|
LAND = 9, // AUTO control
|
|
|
|
|
|
|
|
|
|
OF_LOITER = 10, // 王海, 20160205, 光流悬停模式:http://copter.ardupilot.cn/wiki/loiter-mode/ 底部。
|
|
|
|
|
|
|
|
|
|
TOY = 11,
|
|
|
|
|
|
|
|
|
|
EMERG_RTL=12, //紧急返航模式
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
internal static class FightModeExtensions
|
|
|
|
|
{
|
|
|
|
|
public static string GetModeString(this FlightMode flightMode)
|
|
|
|
|
{
|
|
|
|
|
switch (flightMode)
|
|
|
|
|
{
|
|
|
|
|
case FlightMode.ALT_HOLD:
|
|
|
|
|
return "ALT HOLD";
|
|
|
|
|
|
|
|
|
|
case FlightMode.POSITION:
|
|
|
|
|
return "POS HOLD";
|
|
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
return Enum.GetName(typeof(FlightMode), flightMode);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static bool NeedGps(this FlightMode flightMode)
|
|
|
|
|
{
|
|
|
|
|
switch (flightMode)
|
|
|
|
|
{
|
|
|
|
|
case FlightMode.AUTO:
|
|
|
|
|
case FlightMode.GUIDED:
|
|
|
|
|
case FlightMode.LOITER:
|
|
|
|
|
case FlightMode.RTL:
|
|
|
|
|
case FlightMode.CIRCLE:
|
|
|
|
|
case FlightMode.LAND:
|
|
|
|
|
case FlightMode.POSITION:
|
|
|
|
|
default:
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
|
|
case FlightMode.STABILIZE:
|
|
|
|
|
case FlightMode.ACRO:
|
|
|
|
|
case FlightMode.ALT_HOLD:
|
|
|
|
|
case FlightMode.OF_LOITER:
|
|
|
|
|
case FlightMode.TOY:
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
internal static PlaneCopter.ac2modes ToAC2Mode(this FlightMode flightMode)
|
|
|
|
|
{
|
|
|
|
|
return (PlaneCopter.ac2modes)flightMode;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|