コード例 #1
0
        private static void InitEnumMetadata()
        {
            UasEnumMetadata en = null;
            UasEnumEntryMetadata ent = null;
            mEnums = new Dictionary<string, UasEnumMetadata>();

            en = new UasEnumMetadata() {
                Name = "MavAutopilot",
                Description = "Micro air vehicle / autopilot classes. This identifies the individual model.",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 0,
                Name = "Generic",
                Description = "Generic autopilot, full support for everything",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 1,
                Name = "Pixhawk",
                Description = "PIXHAWK autopilot, http://pixhawk.ethz.ch",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2,
                Name = "Slugs",
                Description = "SLUGS autopilot, http://slugsuav.soe.ucsc.edu",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 3,
                Name = "Ardupilotmega",
                Description = "ArduPilotMega / ArduCopter, http://diydrones.com",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 4,
                Name = "Openpilot",
                Description = "OpenPilot, http://openpilot.org",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 5,
                Name = "GenericWaypointsOnly",
                Description = "Generic autopilot only supporting simple waypoints",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 6,
                Name = "GenericWaypointsAndSimpleNavigationOnly",
                Description = "Generic autopilot supporting waypoints and other simple navigation commands",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 7,
                Name = "GenericMissionFull",
                Description = "Generic autopilot supporting the full mission command set",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 8,
                Name = "Invalid",
                Description = "No valid autopilot, e.g. a GCS or other MAVLink component",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 9,
                Name = "Ppz",
                Description = "PPZ UAV - http://nongnu.org/paparazzi",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 10,
                Name = "Udb",
                Description = "UAV Dev Board",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 11,
                Name = "Fp",
                Description = "FlexiPilot",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 12,
                Name = "Px4",
                Description = "PX4 Autopilot - http://pixhawk.ethz.ch/px4/",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 13,
                Name = "Smaccmpilot",
                Description = "SMACCMPilot - http://smaccmpilot.org",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 14,
                Name = "Autoquad",
                Description = "AutoQuad -- http://autoquad.org",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 15,
                Name = "Armazila",
                Description = "Armazila -- http://armazila.com",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 16,
                Name = "Aerob",
                Description = "Aerob -- http://aerob.ru",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "MavType",
                Description = "",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 0,
                Name = "Generic",
                Description = "Generic micro air vehicle.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 1,
                Name = "FixedWing",
                Description = "Fixed wing aircraft.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2,
                Name = "Quadrotor",
                Description = "Quadrotor",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 3,
                Name = "Coaxial",
                Description = "Coaxial helicopter",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 4,
                Name = "Helicopter",
                Description = "Normal helicopter with tail rotor.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 5,
                Name = "AntennaTracker",
                Description = "Ground installation",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 6,
                Name = "Gcs",
                Description = "Operator control unit / ground control station",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 7,
                Name = "Airship",
                Description = "Airship, controlled",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 8,
                Name = "FreeBalloon",
                Description = "Free balloon, uncontrolled",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 9,
                Name = "Rocket",
                Description = "Rocket",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 10,
                Name = "GroundRover",
                Description = "Ground rover",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 11,
                Name = "SurfaceBoat",
                Description = "Surface vessel, boat, ship",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 12,
                Name = "Submarine",
                Description = "Submarine",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 13,
                Name = "Hexarotor",
                Description = "Hexarotor",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 14,
                Name = "Octorotor",
                Description = "Octorotor",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 15,
                Name = "Tricopter",
                Description = "Octorotor",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 16,
                Name = "FlappingWing",
                Description = "Flapping wing",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 17,
                Name = "Kite",
                Description = "Flapping wing",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "MavModeFlag",
                Description = "These flags encode the MAV mode.",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 128,
                Name = "SafetyArmed",
                Description = "0b10000000 MAV safety set to armed. Motors are enabled / running / can start. Ready to fly.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 64,
                Name = "ManualInputEnabled",
                Description = "0b01000000 remote control input is enabled.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 32,
                Name = "HilEnabled",
                Description = "0b00100000 hardware in the loop simulation. All motors / actuators are blocked, but internal software is full operational.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 16,
                Name = "StabilizeEnabled",
                Description = "0b00010000 system stabilizes electronically its attitude (and optionally position). It needs however further control inputs to move around.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 8,
                Name = "GuidedEnabled",
                Description = "0b00001000 guided mode enabled, system flies MISSIONs / mission items.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 4,
                Name = "AutoEnabled",
                Description = "0b00000100 autonomous mode enabled, system finds its own goal positions. Guided flag can be set or not, depends on the actual implementation.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2,
                Name = "TestEnabled",
                Description = "0b00000010 system has a test mode enabled. This flag is intended for temporary system tests and should not be used for stable implementations.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 1,
                Name = "CustomModeEnabled",
                Description = "0b00000001 Reserved for future use.",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "MavModeFlagDecodePosition",
                Description = "These values encode the bit positions of the decode position. These values can be used to read the value of a flag bit by combining the base_mode variable with AND with the flag position value. The result will be either 0 or 1, depending on if the flag is set or not.",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 128,
                Name = "Safety",
                Description = "First bit:  10000000",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 64,
                Name = "Manual",
                Description = "Second bit: 01000000",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 32,
                Name = "Hil",
                Description = "Third bit:  00100000",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 16,
                Name = "Stabilize",
                Description = "Fourth bit: 00010000",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 8,
                Name = "Guided",
                Description = "Fifth bit:  00001000",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 4,
                Name = "Auto",
                Description = "Sixt bit:   00000100",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2,
                Name = "Test",
                Description = "Seventh bit: 00000010",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 1,
                Name = "CustomMode",
                Description = "Eighth bit: 00000001",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "MavGoto",
                Description = "Override command, pauses current mission execution and moves immediately to a position",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 0,
                Name = "DoHold",
                Description = "Hold at the current position.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 1,
                Name = "DoContinue",
                Description = "Continue with the next item in mission execution.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2,
                Name = "HoldAtCurrentPosition",
                Description = "Hold at the current position of the system",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 3,
                Name = "HoldAtSpecifiedPosition",
                Description = "Hold at the position specified in the parameters of the DO_HOLD action",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "MavMode",
                Description = "These defines are predefined OR-combined mode flags. There is no need to use values from this enum, but it                 simplifies the use of the mode flags. Note that manual input is enabled in all modes as a safety override.",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 0,
                Name = "Preflight",
                Description = "System is not ready to fly, booting, calibrating, etc. No flag is set.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 80,
                Name = "StabilizeDisarmed",
                Description = "System is allowed to be active, under assisted RC control.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 208,
                Name = "StabilizeArmed",
                Description = "System is allowed to be active, under assisted RC control.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 64,
                Name = "ManualDisarmed",
                Description = "System is allowed to be active, under manual (RC) control, no stabilization",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 192,
                Name = "ManualArmed",
                Description = "System is allowed to be active, under manual (RC) control, no stabilization",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 88,
                Name = "GuidedDisarmed",
                Description = "System is allowed to be active, under autonomous control, manual setpoint",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 216,
                Name = "GuidedArmed",
                Description = "System is allowed to be active, under autonomous control, manual setpoint",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 92,
                Name = "AutoDisarmed",
                Description = "System is allowed to be active, under autonomous control and navigation (the trajectory is decided onboard and not pre-programmed by MISSIONs)",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 220,
                Name = "AutoArmed",
                Description = "System is allowed to be active, under autonomous control and navigation (the trajectory is decided onboard and not pre-programmed by MISSIONs)",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 66,
                Name = "TestDisarmed",
                Description = "UNDEFINED mode. This solely depends on the autopilot - use with caution, intended for developers only.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 194,
                Name = "TestArmed",
                Description = "UNDEFINED mode. This solely depends on the autopilot - use with caution, intended for developers only.",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "MavState",
                Description = "",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 0,
                Name = "Uninit",
                Description = "Uninitialized system, state is unknown.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 1,
                Name = "Boot",
                Description = "System is booting up.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2,
                Name = "Calibrating",
                Description = "System is calibrating and not flight-ready.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 3,
                Name = "Standby",
                Description = "System is grounded and on standby. It can be launched any time.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 4,
                Name = "Active",
                Description = "System is active and might be already airborne. Motors are engaged.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 5,
                Name = "Critical",
                Description = "System is in a non-normal flight mode. It can however still navigate.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 6,
                Name = "Emergency",
                Description = "System is in a non-normal flight mode. It lost control over parts or over the whole airframe. It is in mayday and going down.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 7,
                Name = "Poweroff",
                Description = "System just initialized its power-down sequence, will shut down now.",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "MavComponent",
                Description = "",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 0,
                Name = "MavCompIdAll",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 220,
                Name = "MavCompIdGps",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 190,
                Name = "MavCompIdMissionplanner",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 195,
                Name = "MavCompIdPathplanner",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 180,
                Name = "MavCompIdMapper",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 100,
                Name = "MavCompIdCamera",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 200,
                Name = "MavCompIdImu",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 201,
                Name = "MavCompIdImu2",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 202,
                Name = "MavCompIdImu3",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 240,
                Name = "MavCompIdUdpBridge",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 241,
                Name = "MavCompIdUartBridge",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 250,
                Name = "MavCompIdSystemControl",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 140,
                Name = "MavCompIdServo1",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 141,
                Name = "MavCompIdServo2",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 142,
                Name = "MavCompIdServo3",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 143,
                Name = "MavCompIdServo4",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 144,
                Name = "MavCompIdServo5",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 145,
                Name = "MavCompIdServo6",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 146,
                Name = "MavCompIdServo7",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 147,
                Name = "MavCompIdServo8",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 148,
                Name = "MavCompIdServo9",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 149,
                Name = "MavCompIdServo10",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 150,
                Name = "MavCompIdServo11",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 151,
                Name = "MavCompIdServo12",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 152,
                Name = "MavCompIdServo13",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 153,
                Name = "MavCompIdServo14",
                Description = "",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "MavSysStatusSensor",
                Description = "These encode the sensors whose status is sent as part of the SYS_STATUS message.",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 1,
                Name = "_3dGyro",
                Description = "0x01 3D gyro",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2,
                Name = "_3dAccel",
                Description = "0x02 3D accelerometer",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 4,
                Name = "_3dMag",
                Description = "0x04 3D magnetometer",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 8,
                Name = "AbsolutePressure",
                Description = "0x08 absolute pressure",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 16,
                Name = "DifferentialPressure",
                Description = "0x10 differential pressure",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 32,
                Name = "Gps",
                Description = "0x20 GPS",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 64,
                Name = "OpticalFlow",
                Description = "0x40 optical flow",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 128,
                Name = "VisionPosition",
                Description = "0x80 computer vision position",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 256,
                Name = "LaserPosition",
                Description = "0x100 laser based position",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 512,
                Name = "ExternalGroundTruth",
                Description = "0x200 external ground truth (Vicon or Leica)",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 1024,
                Name = "AngularRateControl",
                Description = "0x400 3D angular rate control",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2048,
                Name = "AttitudeStabilization",
                Description = "0x800 attitude stabilization",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 4096,
                Name = "YawPosition",
                Description = "0x1000 yaw position",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 8192,
                Name = "ZAltitudeControl",
                Description = "0x2000 z/altitude control",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 16384,
                Name = "XyPositionControl",
                Description = "0x4000 x/y position control",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 32768,
                Name = "MotorOutputs",
                Description = "0x8000 motor outputs / control",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 65536,
                Name = "RcReceiver",
                Description = "0x10000 rc receiver",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "MavFrame",
                Description = "",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 0,
                Name = "Global",
                Description = "Global coordinate frame, WGS84 coordinate system. First value / x: latitude, second value / y: longitude, third value / z: positive altitude over mean sea level (MSL)",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 1,
                Name = "LocalNed",
                Description = "Local coordinate frame, Z-up (x: north, y: east, z: down).",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2,
                Name = "Mission",
                Description = "NOT a coordinate frame, indicates a mission command.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 3,
                Name = "GlobalRelativeAlt",
                Description = "Global coordinate frame, WGS84 coordinate system, relative altitude over ground with respect to the home position. First value / x: latitude, second value / y: longitude, third value / z: positive altitude with 0 being at the altitude of the home location.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 4,
                Name = "LocalEnu",
                Description = "Local coordinate frame, Z-down (x: east, y: north, z: up)",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "MavlinkDataStreamType",
                Description = "",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 1,
                Name = "MavlinkDataStreamImgJpeg",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2,
                Name = "MavlinkDataStreamImgBmp",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 3,
                Name = "MavlinkDataStreamImgRaw8u",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 4,
                Name = "MavlinkDataStreamImgRaw32u",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 5,
                Name = "MavlinkDataStreamImgPgm",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 6,
                Name = "MavlinkDataStreamImgPng",
                Description = "",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "MavCmd",
                Description = "Commands to be executed by the MAV. They can be executed on user request, or as part of a mission script. If the action is used in a mission, the parameter mapping to the waypoint/mission message is as follows: Param 1, Param 2, Param 3, Param 4, X: Param 5, Y:Param 6, Z:Param 7. This command list is similar what ARINC 424 is for commercial aircraft: A data format how to interpret waypoint/mission data.",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 16,
                Name = "NavWaypoint",
                Description = "Navigate to MISSION.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Hold time in decimal seconds. (ignored by fixed wing, time to stay at MISSION for rotary wing)");
            ent.Params.Add("Acceptance radius in meters (if the sphere with this radius is hit, the MISSION counts as reached)");
            ent.Params.Add("0 to pass through the WP, if > 0 radius in meters to pass by WP. Positive value for clockwise orbit, negative value for counter-clockwise orbit. Allows trajectory control.");
            ent.Params.Add("Desired yaw angle at MISSION (rotary wing)");
            ent.Params.Add("Latitude");
            ent.Params.Add("Longitude");
            ent.Params.Add("Altitude");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 17,
                Name = "NavLoiterUnlim",
                Description = "Loiter around this MISSION an unlimited amount of time",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise");
            ent.Params.Add("Desired yaw angle.");
            ent.Params.Add("Latitude");
            ent.Params.Add("Longitude");
            ent.Params.Add("Altitude");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 18,
                Name = "NavLoiterTurns",
                Description = "Loiter around this MISSION for X turns",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Turns");
            ent.Params.Add("Empty");
            ent.Params.Add("Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise");
            ent.Params.Add("Desired yaw angle.");
            ent.Params.Add("Latitude");
            ent.Params.Add("Longitude");
            ent.Params.Add("Altitude");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 19,
                Name = "NavLoiterTime",
                Description = "Loiter around this MISSION for X seconds",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Seconds (decimal)");
            ent.Params.Add("Empty");
            ent.Params.Add("Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise");
            ent.Params.Add("Desired yaw angle.");
            ent.Params.Add("Latitude");
            ent.Params.Add("Longitude");
            ent.Params.Add("Altitude");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 20,
                Name = "NavReturnToLaunch",
                Description = "Return to launch location",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 21,
                Name = "NavLand",
                Description = "Land at location",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Desired yaw angle.");
            ent.Params.Add("Latitude");
            ent.Params.Add("Longitude");
            ent.Params.Add("Altitude");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 22,
                Name = "NavTakeoff",
                Description = "Takeoff from ground / hand",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Minimum pitch (if airspeed sensor present), desired pitch without sensor");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Yaw angle (if magnetometer present), ignored without magnetometer");
            ent.Params.Add("Latitude");
            ent.Params.Add("Longitude");
            ent.Params.Add("Altitude");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 80,
                Name = "NavRoi",
                Description = "Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Region of intereset mode. (see MAV_ROI enum)");
            ent.Params.Add("MISSION index/ target ID. (see MAV_ROI enum)");
            ent.Params.Add("ROI index (allows a vehicle to manage multiple ROI's)");
            ent.Params.Add("Empty");
            ent.Params.Add("x the location of the fixed ROI (see MAV_FRAME)");
            ent.Params.Add("y");
            ent.Params.Add("z");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 81,
                Name = "NavPathplanning",
                Description = "Control autonomous path planning on the MAV.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("0: Disable local obstacle avoidance / local path planning (without resetting map), 1: Enable local path planning, 2: Enable and reset local path planning");
            ent.Params.Add("0: Disable full path planning (without resetting map), 1: Enable, 2: Enable and reset map/occupancy grid, 3: Enable and reset planned route, but not occupancy grid");
            ent.Params.Add("Empty");
            ent.Params.Add("Yaw angle at goal, in compass degrees, [0..360]");
            ent.Params.Add("Latitude/X of goal");
            ent.Params.Add("Longitude/Y of goal");
            ent.Params.Add("Altitude/Z of goal");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 95,
                Name = "NavLast",
                Description = "NOP - This command is only used to mark the upper limit of the NAV/ACTION commands in the enumeration",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 112,
                Name = "ConditionDelay",
                Description = "Delay mission state machine.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Delay in seconds (decimal)");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 113,
                Name = "ConditionChangeAlt",
                Description = "Ascend/descend at rate.  Delay mission state machine until desired altitude reached.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Descent / Ascend rate (m/s)");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Finish Altitude");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 114,
                Name = "ConditionDistance",
                Description = "Delay mission state machine until within desired distance of next NAV point.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Distance (meters)");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 115,
                Name = "ConditionYaw",
                Description = "Reach a certain target angle.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("target angle: [0-360], 0 is north");
            ent.Params.Add("speed during yaw change:[deg per second]");
            ent.Params.Add("direction: negative: counter clockwise, positive: clockwise [-1,1]");
            ent.Params.Add("relative offset or absolute angle: [ 1,0]");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 159,
                Name = "ConditionLast",
                Description = "NOP - This command is only used to mark the upper limit of the CONDITION commands in the enumeration",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 176,
                Name = "DoSetMode",
                Description = "Set system mode.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Mode, as defined by ENUM MAV_MODE");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 177,
                Name = "DoJump",
                Description = "Jump to the desired command in the mission list.  Repeat this action only the specified number of times",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Sequence number");
            ent.Params.Add("Repeat count");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 178,
                Name = "DoChangeSpeed",
                Description = "Change speed and/or throttle set points.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Speed type (0=Airspeed, 1=Ground Speed)");
            ent.Params.Add("Speed  (m/s, -1 indicates no change)");
            ent.Params.Add("Throttle  ( Percent, -1 indicates no change)");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 179,
                Name = "DoSetHome",
                Description = "Changes the home location either to the current location or a specified location.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Use current (1=use current location, 0=use specified location)");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Latitude");
            ent.Params.Add("Longitude");
            ent.Params.Add("Altitude");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 180,
                Name = "DoSetParameter",
                Description = "Set a system parameter.  Caution!  Use of this command requires knowledge of the numeric enumeration value of the parameter.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Parameter number");
            ent.Params.Add("Parameter value");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 181,
                Name = "DoSetRelay",
                Description = "Set a relay to a condition.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Relay number");
            ent.Params.Add("Setting (1=on, 0=off, others possible depending on system hardware)");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 182,
                Name = "DoRepeatRelay",
                Description = "Cycle a relay on and off for a desired number of cyles with a desired period.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Relay number");
            ent.Params.Add("Cycle count");
            ent.Params.Add("Cycle time (seconds, decimal)");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 183,
                Name = "DoSetServo",
                Description = "Set a servo to a desired PWM value.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Servo number");
            ent.Params.Add("PWM (microseconds, 1000 to 2000 typical)");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 184,
                Name = "DoRepeatServo",
                Description = "Cycle a between its nominal setting and a desired PWM for a desired number of cycles with a desired period.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Servo number");
            ent.Params.Add("PWM (microseconds, 1000 to 2000 typical)");
            ent.Params.Add("Cycle count");
            ent.Params.Add("Cycle time (seconds)");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 200,
                Name = "DoControlVideo",
                Description = "Control onboard camera system.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Camera ID (-1 for all)");
            ent.Params.Add("Transmission: 0: disabled, 1: enabled compressed, 2: enabled raw");
            ent.Params.Add("Transmission mode: 0: video stream, >0: single images every n seconds (decimal)");
            ent.Params.Add("Recording: 0: disabled, 1: enabled compressed, 2: enabled raw");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 201,
                Name = "DoSetRoi",
                Description = "Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Region of intereset mode. (see MAV_ROI enum)");
            ent.Params.Add("MISSION index/ target ID. (see MAV_ROI enum)");
            ent.Params.Add("ROI index (allows a vehicle to manage multiple ROI's)");
            ent.Params.Add("Empty");
            ent.Params.Add("x the location of the fixed ROI (see MAV_FRAME)");
            ent.Params.Add("y");
            ent.Params.Add("z");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 240,
                Name = "DoLast",
                Description = "NOP - This command is only used to mark the upper limit of the DO commands in the enumeration",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 241,
                Name = "PreflightCalibration",
                Description = "Trigger calibration. This command will be only accepted if in pre-flight mode.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Gyro calibration: 0: no, 1: yes");
            ent.Params.Add("Magnetometer calibration: 0: no, 1: yes");
            ent.Params.Add("Ground pressure: 0: no, 1: yes");
            ent.Params.Add("Radio calibration: 0: no, 1: yes");
            ent.Params.Add("Accelerometer calibration: 0: no, 1: yes");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 242,
                Name = "PreflightSetSensorOffsets",
                Description = "Set sensor offsets. This command will be only accepted if in pre-flight mode.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Sensor to adjust the offsets for: 0: gyros, 1: accelerometer, 2: magnetometer, 3: barometer, 4: optical flow");
            ent.Params.Add("X axis offset (or generic dimension 1), in the sensor's raw units");
            ent.Params.Add("Y axis offset (or generic dimension 2), in the sensor's raw units");
            ent.Params.Add("Z axis offset (or generic dimension 3), in the sensor's raw units");
            ent.Params.Add("Generic dimension 4, in the sensor's raw units");
            ent.Params.Add("Generic dimension 5, in the sensor's raw units");
            ent.Params.Add("Generic dimension 6, in the sensor's raw units");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 245,
                Name = "PreflightStorage",
                Description = "Request storage of different parameter values and logs. This command will be only accepted if in pre-flight mode.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Parameter storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM");
            ent.Params.Add("Mission storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM");
            ent.Params.Add("Reserved");
            ent.Params.Add("Reserved");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 246,
                Name = "PreflightRebootShutdown",
                Description = "Request the reboot or shutdown of system components.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("0: Do nothing for autopilot, 1: Reboot autopilot, 2: Shutdown autopilot.");
            ent.Params.Add("0: Do nothing for onboard computer, 1: Reboot onboard computer, 2: Shutdown onboard computer.");
            ent.Params.Add("Reserved");
            ent.Params.Add("Reserved");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 252,
                Name = "OverrideGoto",
                Description = "Hold / continue the current action",
            };
            ent.Params = new List<String>();
            ent.Params.Add("MAV_GOTO_DO_HOLD: hold MAV_GOTO_DO_CONTINUE: continue with next item in mission plan");
            ent.Params.Add("MAV_GOTO_HOLD_AT_CURRENT_POSITION: Hold at current position MAV_GOTO_HOLD_AT_SPECIFIED_POSITION: hold at specified position");
            ent.Params.Add("MAV_FRAME coordinate frame of hold point");
            ent.Params.Add("Desired yaw angle in degrees");
            ent.Params.Add("Latitude / X position");
            ent.Params.Add("Longitude / Y position");
            ent.Params.Add("Altitude / Z position");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 300,
                Name = "MissionStart",
                Description = "start running a mission",
            };
            ent.Params = new List<String>();
            ent.Params.Add("first_item: the first mission item to run");
            ent.Params.Add("last_item:  the last mission item to run (after this item is run, the mission ends)");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 400,
                Name = "ComponentArmDisarm",
                Description = "Arms / Disarms a component",
            };
            ent.Params = new List<String>();
            ent.Params.Add("1 to arm, 0 to disarm");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 500,
                Name = "StartRxPair",
                Description = "Starts receiver pairing",
            };
            ent.Params = new List<String>();
            ent.Params.Add("0:Spektrum");
            ent.Params.Add("0:Spektrum DSM2, 1:Spektrum DSMX");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 202,
                Name = "DoDigicamConfigure",
                Description = "Mission command to configure an on-board camera controller system.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Modes: P, TV, AV, M, Etc");
            ent.Params.Add("Shutter speed: Divisor number for one second");
            ent.Params.Add("Aperture: F stop number");
            ent.Params.Add("ISO number e.g. 80, 100, 200, Etc");
            ent.Params.Add("Exposure type enumerator");
            ent.Params.Add("Command Identity");
            ent.Params.Add("Main engine cut-off time before camera trigger in seconds/10 (0 means no cut-off)");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 203,
                Name = "DoDigicamControl",
                Description = "Mission command to control an on-board camera controller system.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Session control e.g. show/hide lens");
            ent.Params.Add("Zoom's absolute position");
            ent.Params.Add("Zooming step value to offset zoom from the current position");
            ent.Params.Add("Focus Locking, Unlocking or Re-locking");
            ent.Params.Add("Shooting Command");
            ent.Params.Add("Command Identity");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 204,
                Name = "DoMountConfigure",
                Description = "Mission command to configure a camera or antenna mount",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Mount operation mode (see MAV_MOUNT_MODE enum)");
            ent.Params.Add("stabilize roll? (1 = yes, 0 = no)");
            ent.Params.Add("stabilize pitch? (1 = yes, 0 = no)");
            ent.Params.Add("stabilize yaw? (1 = yes, 0 = no)");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 205,
                Name = "DoMountControl",
                Description = "Mission command to control a camera or antenna mount",
            };
            ent.Params = new List<String>();
            ent.Params.Add("pitch(deg*100) or lat, depending on mount mode.");
            ent.Params.Add("roll(deg*100) or lon depending on mount mode");
            ent.Params.Add("yaw(deg*100) or alt (in cm) depending on mount mode");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 206,
                Name = "DoSetCamTriggDist",
                Description = "Mission command to set CAM_TRIGG_DIST for this flight",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Camera trigger distance (meters)");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "MavDataStream",
                Description = "Data stream IDs. A data stream is not a fixed set of messages, but rather a       recommendation to the autopilot software. Individual autopilots may or may not obey       the recommended messages.",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 0,
                Name = "All",
                Description = "Enable all data streams",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 1,
                Name = "RawSensors",
                Description = "Enable IMU_RAW, GPS_RAW, GPS_STATUS packets.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2,
                Name = "ExtendedStatus",
                Description = "Enable GPS_STATUS, CONTROL_STATUS, AUX_STATUS",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 3,
                Name = "RcChannels",
                Description = "Enable RC_CHANNELS_SCALED, RC_CHANNELS_RAW, SERVO_OUTPUT_RAW",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 4,
                Name = "RawController",
                Description = "Enable ATTITUDE_CONTROLLER_OUTPUT, POSITION_CONTROLLER_OUTPUT, NAV_CONTROLLER_OUTPUT.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 6,
                Name = "Position",
                Description = "Enable LOCAL_POSITION, GLOBAL_POSITION/GLOBAL_POSITION_INT messages.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 10,
                Name = "Extra1",
                Description = "Dependent on the autopilot",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 11,
                Name = "Extra2",
                Description = "Dependent on the autopilot",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 12,
                Name = "Extra3",
                Description = "Dependent on the autopilot",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "MavRoi",
                Description = " The ROI (region of interest) for the vehicle. This can be                  be used by the vehicle for camera/vehicle attitude alignment (see                  MAV_CMD_NAV_ROI).",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 0,
                Name = "None",
                Description = "No region of interest.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 1,
                Name = "Wpnext",
                Description = "Point toward next MISSION.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2,
                Name = "Wpindex",
                Description = "Point toward given MISSION.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 3,
                Name = "Location",
                Description = "Point toward fixed location.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 4,
                Name = "Target",
                Description = "Point toward of given id.",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "MavCmdAck",
                Description = "ACK / NACK / ERROR values as a result of MAV_CMDs and for mission item transmission.",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 1,
                Name = "Ok",
                Description = "Command / mission item is ok.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2,
                Name = "ErrFail",
                Description = "Generic error message if none of the other reasons fails or if no detailed error reporting is implemented.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 3,
                Name = "ErrAccessDenied",
                Description = "The system is refusing to accept this command from this source / communication partner.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 4,
                Name = "ErrNotSupported",
                Description = "Command or mission item is not supported, other commands would be accepted.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 5,
                Name = "ErrCoordinateFrameNotSupported",
                Description = "The coordinate frame of this command / mission item is not supported.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 6,
                Name = "ErrCoordinatesOutOfRange",
                Description = "The coordinate frame of this command is ok, but he coordinate values exceed the safety limits of this system. This is a generic error, please use the more specific error messages below if possible.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 7,
                Name = "ErrXLatOutOfRange",
                Description = "The X or latitude value is out of range.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 8,
                Name = "ErrYLonOutOfRange",
                Description = "The Y or longitude value is out of range.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 9,
                Name = "ErrZAltOutOfRange",
                Description = "The Z or altitude value is out of range.",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "MavParamType",
                Description = "Specifies the datatype of a MAVLink parameter.",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 1,
                Name = "Uint8",
                Description = "8-bit unsigned integer",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2,
                Name = "Int8",
                Description = "8-bit signed integer",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 3,
                Name = "Uint16",
                Description = "16-bit unsigned integer",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 4,
                Name = "Int16",
                Description = "16-bit signed integer",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 5,
                Name = "Uint32",
                Description = "32-bit unsigned integer",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 6,
                Name = "Int32",
                Description = "32-bit signed integer",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 7,
                Name = "Uint64",
                Description = "64-bit unsigned integer",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 8,
                Name = "Int64",
                Description = "64-bit signed integer",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 9,
                Name = "Real32",
                Description = "32-bit floating-point",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 10,
                Name = "Real64",
                Description = "64-bit floating-point",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "MavResult",
                Description = "result from a mavlink command",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 0,
                Name = "Accepted",
                Description = "Command ACCEPTED and EXECUTED",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 1,
                Name = "TemporarilyRejected",
                Description = "Command TEMPORARY REJECTED/DENIED",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2,
                Name = "Denied",
                Description = "Command PERMANENTLY DENIED",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 3,
                Name = "Unsupported",
                Description = "Command UNKNOWN/UNSUPPORTED",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 4,
                Name = "Failed",
                Description = "Command executed, but failed",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "MavMissionResult",
                Description = "result in a mavlink mission ack",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 0,
                Name = "MavMissionAccepted",
                Description = "mission accepted OK",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 1,
                Name = "MavMissionError",
                Description = "generic error / not accepting mission commands at all right now",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2,
                Name = "MavMissionUnsupportedFrame",
                Description = "coordinate frame is not supported",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 3,
                Name = "MavMissionUnsupported",
                Description = "command is not supported",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 4,
                Name = "MavMissionNoSpace",
                Description = "mission item exceeds storage space",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 5,
                Name = "MavMissionInvalid",
                Description = "one of the parameters has an invalid value",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 6,
                Name = "MavMissionInvalidParam1",
                Description = "param1 has an invalid value",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 7,
                Name = "MavMissionInvalidParam2",
                Description = "param2 has an invalid value",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 8,
                Name = "MavMissionInvalidParam3",
                Description = "param3 has an invalid value",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 9,
                Name = "MavMissionInvalidParam4",
                Description = "param4 has an invalid value",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 10,
                Name = "MavMissionInvalidParam5X",
                Description = "x/param5 has an invalid value",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 11,
                Name = "MavMissionInvalidParam6Y",
                Description = "y/param6 has an invalid value",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 12,
                Name = "MavMissionInvalidParam7",
                Description = "param7 has an invalid value",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 13,
                Name = "MavMissionInvalidSequence",
                Description = "received waypoint out of sequence",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 14,
                Name = "MavMissionDenied",
                Description = "not accepting any mission commands from this communication partner",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "MavSeverity",
                Description = "Indicates the severity level, generally used for status messages to indicate their relative urgency. Based on RFC-5424 using expanded definitions at: http://www.kiwisyslog.com/kb/info:-syslog-message-levels/.",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 0,
                Name = "Emergency",
                Description = "System is unusable. This is a 'panic' condition.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 1,
                Name = "Alert",
                Description = "Action should be taken immediately. Indicates error in non-critical systems.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2,
                Name = "Critical",
                Description = "Action must be taken immediately. Indicates failure in a primary system.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 3,
                Name = "Error",
                Description = "Indicates an error in secondary/redundant systems.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 4,
                Name = "Warning",
                Description = "Indicates about a possible future error if this is not resolved within a given timeframe. Example would be a low battery warning.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 5,
                Name = "Notice",
                Description = "An unusual event has occured, though not an error condition. This should be investigated for the root cause.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 6,
                Name = "Info",
                Description = "Normal operational messages. Useful for logging. No action is required for these messages.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 7,
                Name = "Debug",
                Description = "Useful non-operational messages that can assist in debugging. These should not occur during normal operation.",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "MavMountMode",
                Description = "Enumeration of possible mount operation modes",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 0,
                Name = "Retract",
                Description = "Load and keep safe position (Roll,Pitch,Yaw) from EEPROM and stop stabilization",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 1,
                Name = "Neutral",
                Description = "Load and keep neutral position (Roll,Pitch,Yaw) from EEPROM.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2,
                Name = "MavlinkTargeting",
                Description = "Load neutral position and start MAVLink Roll,Pitch,Yaw control with stabilization",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 3,
                Name = "RcTargeting",
                Description = "Load neutral position and start RC Roll,Pitch,Yaw control with stabilization",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 4,
                Name = "GpsPoint",
                Description = "Load neutral position and start to point to Lat,Lon,Alt",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "FenceAction",
                Description = "",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 0,
                Name = "None",
                Description = "Disable fenced mode",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 1,
                Name = "Guided",
                Description = "Switched to guided mode to return point (fence point 0)",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2,
                Name = "Report",
                Description = "Report fence breach, but don't take action",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 3,
                Name = "GuidedThrPass",
                Description = "Switched to guided mode to return point (fence point 0) with manual throttle control",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "FenceBreach",
                Description = "",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 0,
                Name = "None",
                Description = "No last fence breach",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 1,
                Name = "Minalt",
                Description = "Breached minimum altitude",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2,
                Name = "Maxalt",
                Description = "Breached maximum altitude",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 3,
                Name = "Boundary",
                Description = "Breached fence boundary",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "LimitsState",
                Description = "",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 0,
                Name = "LimitsInit",
                Description = " pre-initialization",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 1,
                Name = "LimitsDisabled",
                Description = " disabled",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2,
                Name = "LimitsEnabled",
                Description = " checking limits",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 3,
                Name = "LimitsTriggered",
                Description = " a limit has been breached",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 4,
                Name = "LimitsRecovering",
                Description = " taking action eg. RTL",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 5,
                Name = "LimitsRecovered",
                Description = " we're no longer in breach of a limit",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "LimitModule",
                Description = "",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 1,
                Name = "LimitGpslock",
                Description = " pre-initialization",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2,
                Name = "LimitGeofence",
                Description = " disabled",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 4,
                Name = "LimitAltitude",
                Description = " checking limits",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "RallyFlags",
                Description = "Flags in RALLY_POINT message",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 1,
                Name = "FavorableWind",
                Description = "Flag set when requiring favorable winds for landing. ",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2,
                Name = "LandImmediately",
                Description = "Flag set when plane is to immediately descend to break altitude and land without GCS intervention.  Flag not set when plane is to loiter at Rally point until commanded to land.",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
        }
コード例 #2
0
        private static void InitEnumMetadata()
        {
            UasEnumMetadata en = null;
            UasEnumEntryMetadata ent = null;
            mEnums = new Dictionary<string, UasEnumMetadata>();

            en = new UasEnumMetadata() {
                Name = "MavAutopilot",
                Description = "Micro air vehicle / autopilot classes. This identifies the individual model.",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 0,
                Name = "Generic",
                Description = "Generic autopilot, full support for everything",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 1,
                Name = "Pixhawk",
                Description = "PIXHAWK autopilot, http://pixhawk.ethz.ch",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2,
                Name = "Slugs",
                Description = "SLUGS autopilot, http://slugsuav.soe.ucsc.edu",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 3,
                Name = "Ardupilotmega",
                Description = "ArduPilotMega / ArduCopter, http://diydrones.com",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 4,
                Name = "Openpilot",
                Description = "OpenPilot, http://openpilot.org",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 5,
                Name = "GenericWaypointsOnly",
                Description = "Generic autopilot only supporting simple waypoints",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 6,
                Name = "GenericWaypointsAndSimpleNavigationOnly",
                Description = "Generic autopilot supporting waypoints and other simple navigation commands",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 7,
                Name = "GenericMissionFull",
                Description = "Generic autopilot supporting the full mission command set",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 8,
                Name = "Invalid",
                Description = "No valid autopilot, e.g. a GCS or other MAVLink component",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 9,
                Name = "Ppz",
                Description = "PPZ UAV - http://nongnu.org/paparazzi",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 10,
                Name = "Udb",
                Description = "UAV Dev Board",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 11,
                Name = "Fp",
                Description = "FlexiPilot",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 12,
                Name = "Px4",
                Description = "PX4 Autopilot - http://pixhawk.ethz.ch/px4/",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 13,
                Name = "Smaccmpilot",
                Description = "SMACCMPilot - http://smaccmpilot.org",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 14,
                Name = "Autoquad",
                Description = "AutoQuad -- http://autoquad.org",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 15,
                Name = "Armazila",
                Description = "Armazila -- http://armazila.com",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 16,
                Name = "Aerob",
                Description = "Aerob -- http://aerob.ru",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 17,
                Name = "Asluav",
                Description = "ASLUAV autopilot -- http://www.asl.ethz.ch",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "MavType",
                Description = "",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 0,
                Name = "Generic",
                Description = "Generic micro air vehicle.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 1,
                Name = "FixedWing",
                Description = "Fixed wing aircraft.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2,
                Name = "Quadrotor",
                Description = "Quadrotor",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 3,
                Name = "Coaxial",
                Description = "Coaxial helicopter",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 4,
                Name = "Helicopter",
                Description = "Normal helicopter with tail rotor.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 5,
                Name = "AntennaTracker",
                Description = "Ground installation",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 6,
                Name = "Gcs",
                Description = "Operator control unit / ground control station",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 7,
                Name = "Airship",
                Description = "Airship, controlled",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 8,
                Name = "FreeBalloon",
                Description = "Free balloon, uncontrolled",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 9,
                Name = "Rocket",
                Description = "Rocket",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 10,
                Name = "GroundRover",
                Description = "Ground rover",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 11,
                Name = "SurfaceBoat",
                Description = "Surface vessel, boat, ship",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 12,
                Name = "Submarine",
                Description = "Submarine",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 13,
                Name = "Hexarotor",
                Description = "Hexarotor",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 14,
                Name = "Octorotor",
                Description = "Octorotor",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 15,
                Name = "Tricopter",
                Description = "Octorotor",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 16,
                Name = "FlappingWing",
                Description = "Flapping wing",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 17,
                Name = "Kite",
                Description = "Flapping wing",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 18,
                Name = "OnboardController",
                Description = "Onboard companion controller",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 19,
                Name = "VtolDuorotor",
                Description = "Two-rotor VTOL using control surfaces in vertical operation in addition. Tailsitter.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 20,
                Name = "VtolQuadrotor",
                Description = "Quad-rotor VTOL using a V-shaped quad config in vertical operation. Tailsitter.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 21,
                Name = "VtolReserved1",
                Description = "VTOL reserved 1",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 22,
                Name = "VtolReserved2",
                Description = "VTOL reserved 2",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 23,
                Name = "VtolReserved3",
                Description = "VTOL reserved 3",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 24,
                Name = "VtolReserved4",
                Description = "VTOL reserved 4",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 25,
                Name = "VtolReserved5",
                Description = "VTOL reserved 5",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 26,
                Name = "Gimbal",
                Description = "Onboard gimbal",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "MavModeFlag",
                Description = "These flags encode the MAV mode.",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 128,
                Name = "SafetyArmed",
                Description = "0b10000000 MAV safety set to armed. Motors are enabled / running / can start. Ready to fly.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 64,
                Name = "ManualInputEnabled",
                Description = "0b01000000 remote control input is enabled.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 32,
                Name = "HilEnabled",
                Description = "0b00100000 hardware in the loop simulation. All motors / actuators are blocked, but internal software is full operational.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 16,
                Name = "StabilizeEnabled",
                Description = "0b00010000 system stabilizes electronically its attitude (and optionally position). It needs however further control inputs to move around.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 8,
                Name = "GuidedEnabled",
                Description = "0b00001000 guided mode enabled, system flies MISSIONs / mission items.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 4,
                Name = "AutoEnabled",
                Description = "0b00000100 autonomous mode enabled, system finds its own goal positions. Guided flag can be set or not, depends on the actual implementation.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2,
                Name = "TestEnabled",
                Description = "0b00000010 system has a test mode enabled. This flag is intended for temporary system tests and should not be used for stable implementations.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 1,
                Name = "CustomModeEnabled",
                Description = "0b00000001 Reserved for future use.",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "MavModeFlagDecodePosition",
                Description = "These values encode the bit positions of the decode position. These values can be used to read the value of a flag bit by combining the base_mode variable with AND with the flag position value. The result will be either 0 or 1, depending on if the flag is set or not.",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 128,
                Name = "Safety",
                Description = "First bit:  10000000",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 64,
                Name = "Manual",
                Description = "Second bit: 01000000",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 32,
                Name = "Hil",
                Description = "Third bit:  00100000",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 16,
                Name = "Stabilize",
                Description = "Fourth bit: 00010000",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 8,
                Name = "Guided",
                Description = "Fifth bit:  00001000",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 4,
                Name = "Auto",
                Description = "Sixt bit:   00000100",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2,
                Name = "Test",
                Description = "Seventh bit: 00000010",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 1,
                Name = "CustomMode",
                Description = "Eighth bit: 00000001",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "MavGoto",
                Description = "Override command, pauses current mission execution and moves immediately to a position",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 0,
                Name = "DoHold",
                Description = "Hold at the current position.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 1,
                Name = "DoContinue",
                Description = "Continue with the next item in mission execution.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2,
                Name = "HoldAtCurrentPosition",
                Description = "Hold at the current position of the system",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 3,
                Name = "HoldAtSpecifiedPosition",
                Description = "Hold at the position specified in the parameters of the DO_HOLD action",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "MavMode",
                Description = "These defines are predefined OR-combined mode flags. There is no need to use values from this enum, but it                 simplifies the use of the mode flags. Note that manual input is enabled in all modes as a safety override.",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 0,
                Name = "Preflight",
                Description = "System is not ready to fly, booting, calibrating, etc. No flag is set.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 80,
                Name = "StabilizeDisarmed",
                Description = "System is allowed to be active, under assisted RC control.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 208,
                Name = "StabilizeArmed",
                Description = "System is allowed to be active, under assisted RC control.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 64,
                Name = "ManualDisarmed",
                Description = "System is allowed to be active, under manual (RC) control, no stabilization",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 192,
                Name = "ManualArmed",
                Description = "System is allowed to be active, under manual (RC) control, no stabilization",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 88,
                Name = "GuidedDisarmed",
                Description = "System is allowed to be active, under autonomous control, manual setpoint",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 216,
                Name = "GuidedArmed",
                Description = "System is allowed to be active, under autonomous control, manual setpoint",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 92,
                Name = "AutoDisarmed",
                Description = "System is allowed to be active, under autonomous control and navigation (the trajectory is decided onboard and not pre-programmed by MISSIONs)",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 220,
                Name = "AutoArmed",
                Description = "System is allowed to be active, under autonomous control and navigation (the trajectory is decided onboard and not pre-programmed by MISSIONs)",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 66,
                Name = "TestDisarmed",
                Description = "UNDEFINED mode. This solely depends on the autopilot - use with caution, intended for developers only.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 194,
                Name = "TestArmed",
                Description = "UNDEFINED mode. This solely depends on the autopilot - use with caution, intended for developers only.",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "MavState",
                Description = "",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 0,
                Name = "Uninit",
                Description = "Uninitialized system, state is unknown.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 1,
                Name = "Boot",
                Description = "System is booting up.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2,
                Name = "Calibrating",
                Description = "System is calibrating and not flight-ready.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 3,
                Name = "Standby",
                Description = "System is grounded and on standby. It can be launched any time.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 4,
                Name = "Active",
                Description = "System is active and might be already airborne. Motors are engaged.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 5,
                Name = "Critical",
                Description = "System is in a non-normal flight mode. It can however still navigate.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 6,
                Name = "Emergency",
                Description = "System is in a non-normal flight mode. It lost control over parts or over the whole airframe. It is in mayday and going down.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 7,
                Name = "Poweroff",
                Description = "System just initialized its power-down sequence, will shut down now.",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "MavComponent",
                Description = "",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 0,
                Name = "MavCompIdAll",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 220,
                Name = "MavCompIdGps",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 190,
                Name = "MavCompIdMissionplanner",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 195,
                Name = "MavCompIdPathplanner",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 180,
                Name = "MavCompIdMapper",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 100,
                Name = "MavCompIdCamera",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 200,
                Name = "MavCompIdImu",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 201,
                Name = "MavCompIdImu2",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 202,
                Name = "MavCompIdImu3",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 240,
                Name = "MavCompIdUdpBridge",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 241,
                Name = "MavCompIdUartBridge",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 250,
                Name = "MavCompIdSystemControl",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 140,
                Name = "MavCompIdServo1",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 141,
                Name = "MavCompIdServo2",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 142,
                Name = "MavCompIdServo3",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 143,
                Name = "MavCompIdServo4",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 144,
                Name = "MavCompIdServo5",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 145,
                Name = "MavCompIdServo6",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 146,
                Name = "MavCompIdServo7",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 147,
                Name = "MavCompIdServo8",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 148,
                Name = "MavCompIdServo9",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 149,
                Name = "MavCompIdServo10",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 150,
                Name = "MavCompIdServo11",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 151,
                Name = "MavCompIdServo12",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 152,
                Name = "MavCompIdServo13",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 153,
                Name = "MavCompIdServo14",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 154,
                Name = "MavCompIdGimbal",
                Description = "",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "MavSysStatusSensor",
                Description = "These encode the sensors whose status is sent as part of the SYS_STATUS message.",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 1,
                Name = "_3dGyro",
                Description = "0x01 3D gyro",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2,
                Name = "_3dAccel",
                Description = "0x02 3D accelerometer",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 4,
                Name = "_3dMag",
                Description = "0x04 3D magnetometer",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 8,
                Name = "AbsolutePressure",
                Description = "0x08 absolute pressure",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 16,
                Name = "DifferentialPressure",
                Description = "0x10 differential pressure",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 32,
                Name = "Gps",
                Description = "0x20 GPS",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 64,
                Name = "OpticalFlow",
                Description = "0x40 optical flow",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 128,
                Name = "VisionPosition",
                Description = "0x80 computer vision position",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 256,
                Name = "LaserPosition",
                Description = "0x100 laser based position",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 512,
                Name = "ExternalGroundTruth",
                Description = "0x200 external ground truth (Vicon or Leica)",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 1024,
                Name = "AngularRateControl",
                Description = "0x400 3D angular rate control",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2048,
                Name = "AttitudeStabilization",
                Description = "0x800 attitude stabilization",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 4096,
                Name = "YawPosition",
                Description = "0x1000 yaw position",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 8192,
                Name = "ZAltitudeControl",
                Description = "0x2000 z/altitude control",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 16384,
                Name = "XyPositionControl",
                Description = "0x4000 x/y position control",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 32768,
                Name = "MotorOutputs",
                Description = "0x8000 motor outputs / control",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 65536,
                Name = "RcReceiver",
                Description = "0x10000 rc receiver",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 131072,
                Name = "_3dGyro2",
                Description = "0x20000 2nd 3D gyro",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 262144,
                Name = "_3dAccel2",
                Description = "0x40000 2nd 3D accelerometer",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 524288,
                Name = "_3dMag2",
                Description = "0x80000 2nd 3D magnetometer",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 1048576,
                Name = "MavSysStatusGeofence",
                Description = "0x100000 geofence",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2097152,
                Name = "MavSysStatusAhrs",
                Description = "0x200000 AHRS subsystem health",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 4194304,
                Name = "MavSysStatusTerrain",
                Description = "0x400000 Terrain subsystem health",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "MavFrame",
                Description = "",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 0,
                Name = "Global",
                Description = "Global coordinate frame, WGS84 coordinate system. First value / x: latitude, second value / y: longitude, third value / z: positive altitude over mean sea level (MSL)",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 1,
                Name = "LocalNed",
                Description = "Local coordinate frame, Z-up (x: north, y: east, z: down).",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2,
                Name = "Mission",
                Description = "NOT a coordinate frame, indicates a mission command.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 3,
                Name = "GlobalRelativeAlt",
                Description = "Global coordinate frame, WGS84 coordinate system, relative altitude over ground with respect to the home position. First value / x: latitude, second value / y: longitude, third value / z: positive altitude with 0 being at the altitude of the home location.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 4,
                Name = "LocalEnu",
                Description = "Local coordinate frame, Z-down (x: east, y: north, z: up)",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 5,
                Name = "GlobalInt",
                Description = "Global coordinate frame, WGS84 coordinate system. First value / x: latitude in degrees*1.0e-7, second value / y: longitude in degrees*1.0e-7, third value / z: positive altitude over mean sea level (MSL)",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 6,
                Name = "GlobalRelativeAltInt",
                Description = "Global coordinate frame, WGS84 coordinate system, relative altitude over ground with respect to the home position. First value / x: latitude in degrees*10e-7, second value / y: longitude in degrees*10e-7, third value / z: positive altitude with 0 being at the altitude of the home location.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 7,
                Name = "LocalOffsetNed",
                Description = "Offset to the current local frame. Anything expressed in this frame should be added to the current local frame position.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 8,
                Name = "BodyNed",
                Description = "Setpoint in body NED frame. This makes sense if all position control is externalized - e.g. useful to command 2 m/s^2 acceleration to the right.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 9,
                Name = "BodyOffsetNed",
                Description = "Offset in body NED frame. This makes sense if adding setpoints to the current flight path, to avoid an obstacle - e.g. useful to command 2 m/s^2 acceleration to the east.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 10,
                Name = "GlobalTerrainAlt",
                Description = "Global coordinate frame with above terrain level altitude. WGS84 coordinate system, relative altitude over terrain with respect to the waypoint coordinate. First value / x: latitude in degrees, second value / y: longitude in degrees, third value / z: positive altitude in meters with 0 being at ground level in terrain model.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 11,
                Name = "GlobalTerrainAltInt",
                Description = "Global coordinate frame with above terrain level altitude. WGS84 coordinate system, relative altitude over terrain with respect to the waypoint coordinate. First value / x: latitude in degrees*10e-7, second value / y: longitude in degrees*10e-7, third value / z: positive altitude in meters with 0 being at ground level in terrain model.",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "MavlinkDataStreamType",
                Description = "",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 1,
                Name = "MavlinkDataStreamImgJpeg",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2,
                Name = "MavlinkDataStreamImgBmp",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 3,
                Name = "MavlinkDataStreamImgRaw8u",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 4,
                Name = "MavlinkDataStreamImgRaw32u",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 5,
                Name = "MavlinkDataStreamImgPgm",
                Description = "",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 6,
                Name = "MavlinkDataStreamImgPng",
                Description = "",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "FenceAction",
                Description = "",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 0,
                Name = "None",
                Description = "Disable fenced mode",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 1,
                Name = "Guided",
                Description = "Switched to guided mode to return point (fence point 0)",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2,
                Name = "Report",
                Description = "Report fence breach, but don't take action",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 3,
                Name = "GuidedThrPass",
                Description = "Switched to guided mode to return point (fence point 0) with manual throttle control",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "FenceBreach",
                Description = "",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 0,
                Name = "None",
                Description = "No last fence breach",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 1,
                Name = "Minalt",
                Description = "Breached minimum altitude",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2,
                Name = "Maxalt",
                Description = "Breached maximum altitude",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 3,
                Name = "Boundary",
                Description = "Breached fence boundary",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "MavMountMode",
                Description = "Enumeration of possible mount operation modes",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 0,
                Name = "Retract",
                Description = "Load and keep safe position (Roll,Pitch,Yaw) from permant memory and stop stabilization",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 1,
                Name = "Neutral",
                Description = "Load and keep neutral position (Roll,Pitch,Yaw) from permanent memory.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2,
                Name = "MavlinkTargeting",
                Description = "Load neutral position and start MAVLink Roll,Pitch,Yaw control with stabilization",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 3,
                Name = "RcTargeting",
                Description = "Load neutral position and start RC Roll,Pitch,Yaw control with stabilization",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 4,
                Name = "GpsPoint",
                Description = "Load neutral position and start to point to Lat,Lon,Alt",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "MavCmd",
                Description = "Commands to be executed by the MAV. They can be executed on user request, or as part of a mission script. If the action is used in a mission, the parameter mapping to the waypoint/mission message is as follows: Param 1, Param 2, Param 3, Param 4, X: Param 5, Y:Param 6, Z:Param 7. This command list is similar what ARINC 424 is for commercial aircraft: A data format how to interpret waypoint/mission data.",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 16,
                Name = "NavWaypoint",
                Description = "Navigate to MISSION.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Hold time in decimal seconds. (ignored by fixed wing, time to stay at MISSION for rotary wing)");
            ent.Params.Add("Acceptance radius in meters (if the sphere with this radius is hit, the MISSION counts as reached)");
            ent.Params.Add("0 to pass through the WP, if > 0 radius in meters to pass by WP. Positive value for clockwise orbit, negative value for counter-clockwise orbit. Allows trajectory control.");
            ent.Params.Add("Desired yaw angle at MISSION (rotary wing)");
            ent.Params.Add("Latitude");
            ent.Params.Add("Longitude");
            ent.Params.Add("Altitude");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 17,
                Name = "NavLoiterUnlim",
                Description = "Loiter around this MISSION an unlimited amount of time",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise");
            ent.Params.Add("Desired yaw angle.");
            ent.Params.Add("Latitude");
            ent.Params.Add("Longitude");
            ent.Params.Add("Altitude");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 18,
                Name = "NavLoiterTurns",
                Description = "Loiter around this MISSION for X turns",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Turns");
            ent.Params.Add("Empty");
            ent.Params.Add("Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise");
            ent.Params.Add("Desired yaw angle.");
            ent.Params.Add("Latitude");
            ent.Params.Add("Longitude");
            ent.Params.Add("Altitude");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 19,
                Name = "NavLoiterTime",
                Description = "Loiter around this MISSION for X seconds",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Seconds (decimal)");
            ent.Params.Add("Empty");
            ent.Params.Add("Radius around MISSION, in meters. If positive loiter clockwise, else counter-clockwise");
            ent.Params.Add("Desired yaw angle.");
            ent.Params.Add("Latitude");
            ent.Params.Add("Longitude");
            ent.Params.Add("Altitude");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 20,
                Name = "NavReturnToLaunch",
                Description = "Return to launch location",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 21,
                Name = "NavLand",
                Description = "Land at location",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Desired yaw angle.");
            ent.Params.Add("Latitude");
            ent.Params.Add("Longitude");
            ent.Params.Add("Altitude");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 22,
                Name = "NavTakeoff",
                Description = "Takeoff from ground / hand",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Minimum pitch (if airspeed sensor present), desired pitch without sensor");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Yaw angle (if magnetometer present), ignored without magnetometer");
            ent.Params.Add("Latitude");
            ent.Params.Add("Longitude");
            ent.Params.Add("Altitude");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 30,
                Name = "NavContinueAndChangeAlt",
                Description = "Continue on the current course and climb/descend to specified altitude.  When the altitude is reached continue to the next command (i.e., don't proceed to the next command until the desired altitude is reached.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Desired altitude in meters");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 80,
                Name = "NavRoi",
                Description = "Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Region of intereset mode. (see MAV_ROI enum)");
            ent.Params.Add("MISSION index/ target ID. (see MAV_ROI enum)");
            ent.Params.Add("ROI index (allows a vehicle to manage multiple ROI's)");
            ent.Params.Add("Empty");
            ent.Params.Add("x the location of the fixed ROI (see MAV_FRAME)");
            ent.Params.Add("y");
            ent.Params.Add("z");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 81,
                Name = "NavPathplanning",
                Description = "Control autonomous path planning on the MAV.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("0: Disable local obstacle avoidance / local path planning (without resetting map), 1: Enable local path planning, 2: Enable and reset local path planning");
            ent.Params.Add("0: Disable full path planning (without resetting map), 1: Enable, 2: Enable and reset map/occupancy grid, 3: Enable and reset planned route, but not occupancy grid");
            ent.Params.Add("Empty");
            ent.Params.Add("Yaw angle at goal, in compass degrees, [0..360]");
            ent.Params.Add("Latitude/X of goal");
            ent.Params.Add("Longitude/Y of goal");
            ent.Params.Add("Altitude/Z of goal");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 82,
                Name = "NavSplineWaypoint",
                Description = "Navigate to MISSION using a spline path.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Hold time in decimal seconds. (ignored by fixed wing, time to stay at MISSION for rotary wing)");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Latitude/X of goal");
            ent.Params.Add("Longitude/Y of goal");
            ent.Params.Add("Altitude/Z of goal");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 92,
                Name = "NavGuidedEnable",
                Description = "hand control over to an external controller",
            };
            ent.Params = new List<String>();
            ent.Params.Add("On / Off (> 0.5f on)");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 95,
                Name = "NavLast",
                Description = "NOP - This command is only used to mark the upper limit of the NAV/ACTION commands in the enumeration",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 112,
                Name = "ConditionDelay",
                Description = "Delay mission state machine.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Delay in seconds (decimal)");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 113,
                Name = "ConditionChangeAlt",
                Description = "Ascend/descend at rate.  Delay mission state machine until desired altitude reached.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Descent / Ascend rate (m/s)");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Finish Altitude");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 114,
                Name = "ConditionDistance",
                Description = "Delay mission state machine until within desired distance of next NAV point.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Distance (meters)");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 115,
                Name = "ConditionYaw",
                Description = "Reach a certain target angle.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("target angle: [0-360], 0 is north");
            ent.Params.Add("speed during yaw change:[deg per second]");
            ent.Params.Add("direction: negative: counter clockwise, positive: clockwise [-1,1]");
            ent.Params.Add("relative offset or absolute angle: [ 1,0]");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 159,
                Name = "ConditionLast",
                Description = "NOP - This command is only used to mark the upper limit of the CONDITION commands in the enumeration",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 176,
                Name = "DoSetMode",
                Description = "Set system mode.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Mode, as defined by ENUM MAV_MODE");
            ent.Params.Add("Custom mode - this is system specific, please refer to the individual autopilot specifications for details.");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 177,
                Name = "DoJump",
                Description = "Jump to the desired command in the mission list.  Repeat this action only the specified number of times",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Sequence number");
            ent.Params.Add("Repeat count");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 178,
                Name = "DoChangeSpeed",
                Description = "Change speed and/or throttle set points.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Speed type (0=Airspeed, 1=Ground Speed)");
            ent.Params.Add("Speed  (m/s, -1 indicates no change)");
            ent.Params.Add("Throttle  ( Percent, -1 indicates no change)");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 179,
                Name = "DoSetHome",
                Description = "Changes the home location either to the current location or a specified location.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Use current (1=use current location, 0=use specified location)");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Latitude");
            ent.Params.Add("Longitude");
            ent.Params.Add("Altitude");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 180,
                Name = "DoSetParameter",
                Description = "Set a system parameter.  Caution!  Use of this command requires knowledge of the numeric enumeration value of the parameter.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Parameter number");
            ent.Params.Add("Parameter value");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 181,
                Name = "DoSetRelay",
                Description = "Set a relay to a condition.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Relay number");
            ent.Params.Add("Setting (1=on, 0=off, others possible depending on system hardware)");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 182,
                Name = "DoRepeatRelay",
                Description = "Cycle a relay on and off for a desired number of cyles with a desired period.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Relay number");
            ent.Params.Add("Cycle count");
            ent.Params.Add("Cycle time (seconds, decimal)");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 183,
                Name = "DoSetServo",
                Description = "Set a servo to a desired PWM value.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Servo number");
            ent.Params.Add("PWM (microseconds, 1000 to 2000 typical)");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 184,
                Name = "DoRepeatServo",
                Description = "Cycle a between its nominal setting and a desired PWM for a desired number of cycles with a desired period.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Servo number");
            ent.Params.Add("PWM (microseconds, 1000 to 2000 typical)");
            ent.Params.Add("Cycle count");
            ent.Params.Add("Cycle time (seconds)");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 185,
                Name = "DoFlighttermination",
                Description = "Terminate flight immediately",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Flight termination activated if > 0.5");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 189,
                Name = "DoLandStart",
                Description = "Mission command to perform a landing. This is used as a marker in a mission to tell the autopilot where a sequence of mission items that represents a landing starts. It may also be sent via a COMMAND_LONG to trigger a landing, in which case the nearest (geographically) landing sequence in the mission will be used. The Latitude/Longitude is optional, and may be set to 0/0 if not needed. If specified then it will be used to help find the closest landing sequence.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Latitude");
            ent.Params.Add("Longitude");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 190,
                Name = "DoRallyLand",
                Description = "Mission command to perform a landing from a rally point.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Break altitude (meters)");
            ent.Params.Add("Landing speed (m/s)");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 191,
                Name = "DoGoAround",
                Description = "Mission command to safely abort an autonmous landing.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Altitude (meters)");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 200,
                Name = "DoControlVideo",
                Description = "Control onboard camera system.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Camera ID (-1 for all)");
            ent.Params.Add("Transmission: 0: disabled, 1: enabled compressed, 2: enabled raw");
            ent.Params.Add("Transmission mode: 0: video stream, >0: single images every n seconds (decimal)");
            ent.Params.Add("Recording: 0: disabled, 1: enabled compressed, 2: enabled raw");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 201,
                Name = "DoSetRoi",
                Description = "Sets the region of interest (ROI) for a sensor set or the vehicle itself. This can then be used by the vehicles control system to control the vehicle attitude and the attitude of various sensors such as cameras.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Region of intereset mode. (see MAV_ROI enum)");
            ent.Params.Add("MISSION index/ target ID. (see MAV_ROI enum)");
            ent.Params.Add("ROI index (allows a vehicle to manage multiple ROI's)");
            ent.Params.Add("Empty");
            ent.Params.Add("x the location of the fixed ROI (see MAV_FRAME)");
            ent.Params.Add("y");
            ent.Params.Add("z");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 202,
                Name = "DoDigicamConfigure",
                Description = "Mission command to configure an on-board camera controller system.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Modes: P, TV, AV, M, Etc");
            ent.Params.Add("Shutter speed: Divisor number for one second");
            ent.Params.Add("Aperture: F stop number");
            ent.Params.Add("ISO number e.g. 80, 100, 200, Etc");
            ent.Params.Add("Exposure type enumerator");
            ent.Params.Add("Command Identity");
            ent.Params.Add("Main engine cut-off time before camera trigger in seconds/10 (0 means no cut-off)");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 203,
                Name = "DoDigicamControl",
                Description = "Mission command to control an on-board camera controller system.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Session control e.g. show/hide lens");
            ent.Params.Add("Zoom's absolute position");
            ent.Params.Add("Zooming step value to offset zoom from the current position");
            ent.Params.Add("Focus Locking, Unlocking or Re-locking");
            ent.Params.Add("Shooting Command");
            ent.Params.Add("Command Identity");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 204,
                Name = "DoMountConfigure",
                Description = "Mission command to configure a camera or antenna mount",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Mount operation mode (see MAV_MOUNT_MODE enum)");
            ent.Params.Add("stabilize roll? (1 = yes, 0 = no)");
            ent.Params.Add("stabilize pitch? (1 = yes, 0 = no)");
            ent.Params.Add("stabilize yaw? (1 = yes, 0 = no)");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 205,
                Name = "DoMountControl",
                Description = "Mission command to control a camera or antenna mount",
            };
            ent.Params = new List<String>();
            ent.Params.Add("pitch or lat in degrees, depending on mount mode.");
            ent.Params.Add("roll or lon in degrees depending on mount mode");
            ent.Params.Add("yaw or alt (in meters) depending on mount mode");
            ent.Params.Add("reserved");
            ent.Params.Add("reserved");
            ent.Params.Add("reserved");
            ent.Params.Add("MAV_MOUNT_MODE enum value");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 206,
                Name = "DoSetCamTriggDist",
                Description = "Mission command to set CAM_TRIGG_DIST for this flight",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Camera trigger distance (meters)");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 207,
                Name = "DoFenceEnable",
                Description = "Mission command to enable the geofence",
            };
            ent.Params = new List<String>();
            ent.Params.Add("enable? (0=disable, 1=enable)");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 208,
                Name = "DoParachute",
                Description = "Mission command to trigger a parachute",
            };
            ent.Params = new List<String>();
            ent.Params.Add("action (0=disable, 1=enable, 2=release, for some systems see PARACHUTE_ACTION enum, not in general message set.)");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 210,
                Name = "DoInvertedFlight",
                Description = "Change to/from inverted flight",
            };
            ent.Params = new List<String>();
            ent.Params.Add("inverted (0=normal, 1=inverted)");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 220,
                Name = "DoMountControlQuat",
                Description = "Mission command to control a camera or antenna mount, using a quaternion as reference.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("q1 - quaternion param #1, w (1 in null-rotation)");
            ent.Params.Add("q2 - quaternion param #2, x (0 in null-rotation)");
            ent.Params.Add("q3 - quaternion param #3, y (0 in null-rotation)");
            ent.Params.Add("q4 - quaternion param #4, z (0 in null-rotation)");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 221,
                Name = "DoGuidedMaster",
                Description = "set id of master controller",
            };
            ent.Params = new List<String>();
            ent.Params.Add("System ID");
            ent.Params.Add("Component ID");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 222,
                Name = "DoGuidedLimits",
                Description = "set limits for external control",
            };
            ent.Params = new List<String>();
            ent.Params.Add("timeout - maximum time (in seconds) that external controller will be allowed to control vehicle. 0 means no timeout");
            ent.Params.Add("absolute altitude min (in meters, AMSL) - if vehicle moves below this alt, the command will be aborted and the mission will continue.  0 means no lower altitude limit");
            ent.Params.Add("absolute altitude max (in meters)- if vehicle moves above this alt, the command will be aborted and the mission will continue.  0 means no upper altitude limit");
            ent.Params.Add("horizontal move limit (in meters, AMSL) - if vehicle moves more than this distance from it's location at the moment the command was executed, the command will be aborted and the mission will continue. 0 means no horizontal altitude limit");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 240,
                Name = "DoLast",
                Description = "NOP - This command is only used to mark the upper limit of the DO commands in the enumeration",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 241,
                Name = "PreflightCalibration",
                Description = "Trigger calibration. This command will be only accepted if in pre-flight mode.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Gyro calibration: 0: no, 1: yes");
            ent.Params.Add("Magnetometer calibration: 0: no, 1: yes");
            ent.Params.Add("Ground pressure: 0: no, 1: yes");
            ent.Params.Add("Radio calibration: 0: no, 1: yes");
            ent.Params.Add("Accelerometer calibration: 0: no, 1: yes");
            ent.Params.Add("Compass/Motor interference calibration: 0: no, 1: yes");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 242,
                Name = "PreflightSetSensorOffsets",
                Description = "Set sensor offsets. This command will be only accepted if in pre-flight mode.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Sensor to adjust the offsets for: 0: gyros, 1: accelerometer, 2: magnetometer, 3: barometer, 4: optical flow, 5: second magnetometer");
            ent.Params.Add("X axis offset (or generic dimension 1), in the sensor's raw units");
            ent.Params.Add("Y axis offset (or generic dimension 2), in the sensor's raw units");
            ent.Params.Add("Z axis offset (or generic dimension 3), in the sensor's raw units");
            ent.Params.Add("Generic dimension 4, in the sensor's raw units");
            ent.Params.Add("Generic dimension 5, in the sensor's raw units");
            ent.Params.Add("Generic dimension 6, in the sensor's raw units");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 245,
                Name = "PreflightStorage",
                Description = "Request storage of different parameter values and logs. This command will be only accepted if in pre-flight mode.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Parameter storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM");
            ent.Params.Add("Mission storage: 0: READ FROM FLASH/EEPROM, 1: WRITE CURRENT TO FLASH/EEPROM");
            ent.Params.Add("Reserved");
            ent.Params.Add("Reserved");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 246,
                Name = "PreflightRebootShutdown",
                Description = "Request the reboot or shutdown of system components.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("0: Do nothing for autopilot, 1: Reboot autopilot, 2: Shutdown autopilot.");
            ent.Params.Add("0: Do nothing for onboard computer, 1: Reboot onboard computer, 2: Shutdown onboard computer.");
            ent.Params.Add("Reserved");
            ent.Params.Add("Reserved");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            ent.Params.Add("Empty");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 252,
                Name = "OverrideGoto",
                Description = "Hold / continue the current action",
            };
            ent.Params = new List<String>();
            ent.Params.Add("MAV_GOTO_DO_HOLD: hold MAV_GOTO_DO_CONTINUE: continue with next item in mission plan");
            ent.Params.Add("MAV_GOTO_HOLD_AT_CURRENT_POSITION: Hold at current position MAV_GOTO_HOLD_AT_SPECIFIED_POSITION: hold at specified position");
            ent.Params.Add("MAV_FRAME coordinate frame of hold point");
            ent.Params.Add("Desired yaw angle in degrees");
            ent.Params.Add("Latitude / X position");
            ent.Params.Add("Longitude / Y position");
            ent.Params.Add("Altitude / Z position");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 300,
                Name = "MissionStart",
                Description = "start running a mission",
            };
            ent.Params = new List<String>();
            ent.Params.Add("first_item: the first mission item to run");
            ent.Params.Add("last_item:  the last mission item to run (after this item is run, the mission ends)");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 400,
                Name = "ComponentArmDisarm",
                Description = "Arms / Disarms a component",
            };
            ent.Params = new List<String>();
            ent.Params.Add("1 to arm, 0 to disarm");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 500,
                Name = "StartRxPair",
                Description = "Starts receiver pairing",
            };
            ent.Params = new List<String>();
            ent.Params.Add("0:Spektrum");
            ent.Params.Add("0:Spektrum DSM2, 1:Spektrum DSMX");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 520,
                Name = "RequestAutopilotCapabilities",
                Description = "Request autopilot capabilities",
            };
            ent.Params = new List<String>();
            ent.Params.Add("1: Request autopilot version");
            ent.Params.Add("Reserved (all remaining params)");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2000,
                Name = "ImageStartCapture",
                Description = "Start image capture sequence",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Duration between two consecutive pictures (in seconds)");
            ent.Params.Add("Number of images to capture total - 0 for unlimited capture");
            ent.Params.Add("Resolution in megapixels (0.3 for 640x480, 1.3 for 1280x720, etc)");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2001,
                Name = "ImageStopCapture",
                Description = "Stop image capture sequence",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Reserved");
            ent.Params.Add("Reserved");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2500,
                Name = "VideoStartCapture",
                Description = "Starts video capture",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Camera ID (0 for all cameras), 1 for first, 2 for second, etc.");
            ent.Params.Add("Frames per second");
            ent.Params.Add("Resolution in megapixels (0.3 for 640x480, 1.3 for 1280x720, etc)");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2501,
                Name = "VideoStopCapture",
                Description = "Stop the current video capture",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Reserved");
            ent.Params.Add("Reserved");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2800,
                Name = "PanoramaCreate",
                Description = "Create a panorama at the current position",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Viewing angle horizontal of the panorama (in degrees, +- 0.5 the total angle)");
            ent.Params.Add("Viewing angle vertical of panorama (in degrees)");
            ent.Params.Add("Speed of the horizontal rotation (in degrees per second)");
            ent.Params.Add("Speed of the vertical rotation (in degrees per second)");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 30001,
                Name = "PayloadPrepareDeploy",
                Description = "Deploy payload on a Lat / Lon / Alt position. This includes the navigation to reach the required release position and velocity.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Operation mode. 0: prepare single payload deploy (overwriting previous requests), but do not execute it. 1: execute payload deploy immediately (rejecting further deploy commands during execution, but allowing abort). 2: add payload deploy to existing deployment list.");
            ent.Params.Add("Desired approach vector in degrees compass heading (0..360). A negative value indicates the system can define the approach vector at will.");
            ent.Params.Add("Desired ground speed at release time. This can be overriden by the airframe in case it needs to meet minimum airspeed. A negative value indicates the system can define the ground speed at will.");
            ent.Params.Add("Minimum altitude clearance to the release position in meters. A negative value indicates the system can define the clearance at will.");
            ent.Params.Add("Latitude unscaled for MISSION_ITEM or in 1e7 degrees for MISSION_ITEM_INT");
            ent.Params.Add("Longitude unscaled for MISSION_ITEM or in 1e7 degrees for MISSION_ITEM_INT");
            ent.Params.Add("Altitude, in meters AMSL");
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 30002,
                Name = "PayloadControlDeploy",
                Description = "Control the payload deployment.",
            };
            ent.Params = new List<String>();
            ent.Params.Add("Operation mode. 0: Abort deployment, continue normal mission. 1: switch to payload deploment mode. 100: delete first payload deployment request. 101: delete all payload deployment requests.");
            ent.Params.Add("Reserved");
            ent.Params.Add("Reserved");
            ent.Params.Add("Reserved");
            ent.Params.Add("Reserved");
            ent.Params.Add("Reserved");
            ent.Params.Add("Reserved");
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "MavDataStream",
                Description = "Data stream IDs. A data stream is not a fixed set of messages, but rather a       recommendation to the autopilot software. Individual autopilots may or may not obey       the recommended messages.",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 0,
                Name = "All",
                Description = "Enable all data streams",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 1,
                Name = "RawSensors",
                Description = "Enable IMU_RAW, GPS_RAW, GPS_STATUS packets.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2,
                Name = "ExtendedStatus",
                Description = "Enable GPS_STATUS, CONTROL_STATUS, AUX_STATUS",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 3,
                Name = "RcChannels",
                Description = "Enable RC_CHANNELS_SCALED, RC_CHANNELS_RAW, SERVO_OUTPUT_RAW",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 4,
                Name = "RawController",
                Description = "Enable ATTITUDE_CONTROLLER_OUTPUT, POSITION_CONTROLLER_OUTPUT, NAV_CONTROLLER_OUTPUT.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 6,
                Name = "Position",
                Description = "Enable LOCAL_POSITION, GLOBAL_POSITION/GLOBAL_POSITION_INT messages.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 10,
                Name = "Extra1",
                Description = "Dependent on the autopilot",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 11,
                Name = "Extra2",
                Description = "Dependent on the autopilot",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 12,
                Name = "Extra3",
                Description = "Dependent on the autopilot",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "MavRoi",
                Description = " The ROI (region of interest) for the vehicle. This can be                  be used by the vehicle for camera/vehicle attitude alignment (see                  MAV_CMD_NAV_ROI).",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 0,
                Name = "None",
                Description = "No region of interest.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 1,
                Name = "Wpnext",
                Description = "Point toward next MISSION.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2,
                Name = "Wpindex",
                Description = "Point toward given MISSION.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 3,
                Name = "Location",
                Description = "Point toward fixed location.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 4,
                Name = "Target",
                Description = "Point toward of given id.",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "MavCmdAck",
                Description = "ACK / NACK / ERROR values as a result of MAV_CMDs and for mission item transmission.",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 1,
                Name = "Ok",
                Description = "Command / mission item is ok.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2,
                Name = "ErrFail",
                Description = "Generic error message if none of the other reasons fails or if no detailed error reporting is implemented.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 3,
                Name = "ErrAccessDenied",
                Description = "The system is refusing to accept this command from this source / communication partner.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 4,
                Name = "ErrNotSupported",
                Description = "Command or mission item is not supported, other commands would be accepted.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 5,
                Name = "ErrCoordinateFrameNotSupported",
                Description = "The coordinate frame of this command / mission item is not supported.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 6,
                Name = "ErrCoordinatesOutOfRange",
                Description = "The coordinate frame of this command is ok, but he coordinate values exceed the safety limits of this system. This is a generic error, please use the more specific error messages below if possible.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 7,
                Name = "ErrXLatOutOfRange",
                Description = "The X or latitude value is out of range.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 8,
                Name = "ErrYLonOutOfRange",
                Description = "The Y or longitude value is out of range.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 9,
                Name = "ErrZAltOutOfRange",
                Description = "The Z or altitude value is out of range.",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "MavParamType",
                Description = "Specifies the datatype of a MAVLink parameter.",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 1,
                Name = "Uint8",
                Description = "8-bit unsigned integer",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2,
                Name = "Int8",
                Description = "8-bit signed integer",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 3,
                Name = "Uint16",
                Description = "16-bit unsigned integer",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 4,
                Name = "Int16",
                Description = "16-bit signed integer",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 5,
                Name = "Uint32",
                Description = "32-bit unsigned integer",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 6,
                Name = "Int32",
                Description = "32-bit signed integer",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 7,
                Name = "Uint64",
                Description = "64-bit unsigned integer",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 8,
                Name = "Int64",
                Description = "64-bit signed integer",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 9,
                Name = "Real32",
                Description = "32-bit floating-point",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 10,
                Name = "Real64",
                Description = "64-bit floating-point",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "MavResult",
                Description = "result from a mavlink command",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 0,
                Name = "Accepted",
                Description = "Command ACCEPTED and EXECUTED",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 1,
                Name = "TemporarilyRejected",
                Description = "Command TEMPORARY REJECTED/DENIED",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2,
                Name = "Denied",
                Description = "Command PERMANENTLY DENIED",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 3,
                Name = "Unsupported",
                Description = "Command UNKNOWN/UNSUPPORTED",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 4,
                Name = "Failed",
                Description = "Command executed, but failed",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "MavMissionResult",
                Description = "result in a mavlink mission ack",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 0,
                Name = "MavMissionAccepted",
                Description = "mission accepted OK",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 1,
                Name = "MavMissionError",
                Description = "generic error / not accepting mission commands at all right now",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2,
                Name = "MavMissionUnsupportedFrame",
                Description = "coordinate frame is not supported",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 3,
                Name = "MavMissionUnsupported",
                Description = "command is not supported",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 4,
                Name = "MavMissionNoSpace",
                Description = "mission item exceeds storage space",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 5,
                Name = "MavMissionInvalid",
                Description = "one of the parameters has an invalid value",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 6,
                Name = "MavMissionInvalidParam1",
                Description = "param1 has an invalid value",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 7,
                Name = "MavMissionInvalidParam2",
                Description = "param2 has an invalid value",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 8,
                Name = "MavMissionInvalidParam3",
                Description = "param3 has an invalid value",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 9,
                Name = "MavMissionInvalidParam4",
                Description = "param4 has an invalid value",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 10,
                Name = "MavMissionInvalidParam5X",
                Description = "x/param5 has an invalid value",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 11,
                Name = "MavMissionInvalidParam6Y",
                Description = "y/param6 has an invalid value",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 12,
                Name = "MavMissionInvalidParam7",
                Description = "param7 has an invalid value",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 13,
                Name = "MavMissionInvalidSequence",
                Description = "received waypoint out of sequence",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 14,
                Name = "MavMissionDenied",
                Description = "not accepting any mission commands from this communication partner",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "MavSeverity",
                Description = "Indicates the severity level, generally used for status messages to indicate their relative urgency. Based on RFC-5424 using expanded definitions at: http://www.kiwisyslog.com/kb/info:-syslog-message-levels/.",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 0,
                Name = "Emergency",
                Description = "System is unusable. This is a 'panic' condition.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 1,
                Name = "Alert",
                Description = "Action should be taken immediately. Indicates error in non-critical systems.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2,
                Name = "Critical",
                Description = "Action must be taken immediately. Indicates failure in a primary system.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 3,
                Name = "Error",
                Description = "Indicates an error in secondary/redundant systems.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 4,
                Name = "Warning",
                Description = "Indicates about a possible future error if this is not resolved within a given timeframe. Example would be a low battery warning.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 5,
                Name = "Notice",
                Description = "An unusual event has occured, though not an error condition. This should be investigated for the root cause.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 6,
                Name = "Info",
                Description = "Normal operational messages. Useful for logging. No action is required for these messages.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 7,
                Name = "Debug",
                Description = "Useful non-operational messages that can assist in debugging. These should not occur during normal operation.",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "MavPowerStatus",
                Description = "Power supply status flags (bitmask)",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 1,
                Name = "BrickValid",
                Description = "main brick power supply valid",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2,
                Name = "ServoValid",
                Description = "main servo power supply valid for FMU",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 4,
                Name = "UsbConnected",
                Description = "USB power is connected",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 8,
                Name = "PeriphOvercurrent",
                Description = "peripheral supply is in over-current state",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 16,
                Name = "PeriphHipowerOvercurrent",
                Description = "hi-power peripheral supply is in over-current state",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 32,
                Name = "Changed",
                Description = "Power status has changed since boot",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "SerialControlDev",
                Description = "SERIAL_CONTROL device types",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 0,
                Name = "Telem1",
                Description = "First telemetry port",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 1,
                Name = "Telem2",
                Description = "Second telemetry port",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2,
                Name = "Gps1",
                Description = "First GPS port",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 3,
                Name = "Gps2",
                Description = "Second GPS port",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "SerialControlFlag",
                Description = "SERIAL_CONTROL flags (bitmask)",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 1,
                Name = "Reply",
                Description = "Set if this is a reply",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2,
                Name = "Respond",
                Description = "Set if the sender wants the receiver to send a response as another SERIAL_CONTROL message",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 4,
                Name = "Exclusive",
                Description = "Set if access to the serial port should be removed from whatever driver is currently using it, giving exclusive access to the SERIAL_CONTROL protocol. The port can be handed back by sending a request without this flag set",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 8,
                Name = "Blocking",
                Description = "Block on writes to the serial port",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 16,
                Name = "Multi",
                Description = "Send multiple replies until port is drained",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "MavDistanceSensor",
                Description = "Enumeration of distance sensor types",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 0,
                Name = "Laser",
                Description = "Laser altimeter, e.g. LightWare SF02/F or PulsedLight units",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 1,
                Name = "Ultrasound",
                Description = "Ultrasound altimeter, e.g. MaxBotix units",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "MavProtocolCapability",
                Description = "Bitmask of (optional) autopilot capabilities (64 bit). If a bit is set, the autopilot supports this capability.",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 1,
                Name = "MissionFloat",
                Description = "Autopilot supports MISSION float message type.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2,
                Name = "ParamFloat",
                Description = "Autopilot supports the new param float message type.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 4,
                Name = "MissionInt",
                Description = "Autopilot supports MISSION_INT scaled integer message type.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 8,
                Name = "CommandInt",
                Description = "Autopilot supports COMMAND_INT scaled integer message type.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 16,
                Name = "ParamUnion",
                Description = "Autopilot supports the new param union message type.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 32,
                Name = "Ftp",
                Description = "Autopilot supports the new param union message type.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 64,
                Name = "SetAttitudeTarget",
                Description = "Autopilot supports commanding attitude offboard.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 128,
                Name = "SetPositionTargetLocalNed",
                Description = "Autopilot supports commanding position and velocity targets in local NED frame.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 256,
                Name = "SetPositionTargetGlobalInt",
                Description = "Autopilot supports commanding position and velocity targets in global scaled integers.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 512,
                Name = "Terrain",
                Description = "Autopilot supports terrain protocol / data handling.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 1024,
                Name = "SetActuatorTarget",
                Description = "Autopilot supports direct actuator control.",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "MavEstimatorType",
                Description = "Enumeration of estimator types",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 1,
                Name = "Naive",
                Description = "This is a naive estimator without any real covariance feedback.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2,
                Name = "Vision",
                Description = "Computer vision based estimate. Might be up to scale.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 3,
                Name = "Vio",
                Description = "Visual-inertial estimate.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 4,
                Name = "Gps",
                Description = "Plain GPS estimate.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 5,
                Name = "GpsIns",
                Description = "Estimator integrating GPS and inertial sensing.",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "MavBatteryType",
                Description = "Enumeration of battery types",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 0,
                Name = "Unknown",
                Description = "Not specified.",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 1,
                Name = "Lipo",
                Description = "Lithium polymere battery",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2,
                Name = "Life",
                Description = "Lithium ferrite battery",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 3,
                Name = "Lion",
                Description = "Lithium-ION battery",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 4,
                Name = "Nimh",
                Description = "Nickel metal hydride battery",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
            en = new UasEnumMetadata() {
                Name = "MavBatteryFunction",
                Description = "Enumeration of battery functions",
            };

            ent = new UasEnumEntryMetadata() {
                Value = 0,
                Name = "Unknown",
                Description = "Lithium polymere battery",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 1,
                Name = "All",
                Description = "Battery supports all flight systems",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 2,
                Name = "Propulsion",
                Description = "Battery for the propulsion system",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 3,
                Name = "Avionics",
                Description = "Avionics battery",
            };
            en.Entries.Add(ent);

            ent = new UasEnumEntryMetadata() {
                Value = 4,
                Name = "MavBatteryTypePayload",
                Description = "Payload battery",
            };
            en.Entries.Add(ent);

            mEnums.Add(en.Name, en);
        }