Plane.Sdk3/PlaneGcsSdk_Shared/Copters/FlightMode.cs

85 lines
2.2 KiB
C#
Raw Normal View History

2017-02-27 02:02:19 +08:00
using System;
namespace Plane.Copters
{
#if PRIVATE
public
#else
internal
#endif
enum FlightMode
{
2020-09-20 11:43:27 +08:00
// 王海20150608不可将以下枚举项重命名。
2017-02-27 02:02:19 +08:00
STABILIZE = 0, // hold level position
2020-09-20 11:43:27 +08:00
ACRO = 1, // rate control // 王海, 20160205, 特技模式http://copter.ardupilot.cn/wiki/acro-mode/
2017-02-27 02:02:19 +08:00
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,
2020-09-20 11:43:27 +08:00
POSITION = 8, // 王海, 20160205, 位置模式http://copter.ardupilot.cn/wiki/POSITION-mode/
2017-02-27 02:02:19 +08:00
LAND = 9, // AUTO control
2020-09-20 11:43:27 +08:00
OF_LOITER = 10, // 王海, 20160205, 光流悬停模式http://copter.ardupilot.cn/wiki/loiter-mode/ 底部。
2017-02-27 02:02:19 +08:00
TOY = 11
}
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;
}
}
}