mirror of
https://github.com/ArduPilot/ardupilot
synced 2025-01-10 01:48:29 -04:00
9c836ab037
move mavlink structure/currentstate around for future mods update old firmware git hashs mod some error descriptions AP_mount camera trigger mod modify raw param display with units/range/desc add radio support for 868mhz update ch7 options updated dataflashlog format small df log parser mod for bad gps loc renable menu to always dock. right click for autohide
288 lines
11 KiB
C#
288 lines
11 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Drawing;
|
|
using System.Data;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
using ArdupilotMega.Controls.BackstageView;
|
|
using System.Reflection;
|
|
|
|
namespace ArdupilotMega.GCSViews.ConfigurationView
|
|
{
|
|
public partial class ConfigSignalization : UserControl, IActivate
|
|
{
|
|
[Flags]
|
|
public enum BeeperMode : byte
|
|
{
|
|
Startup = 1,
|
|
Arm = 2,
|
|
Disarm = 4,
|
|
Armed = 8,
|
|
GPS = 16,
|
|
Voltage = 32,
|
|
CH7 = 64,
|
|
Landing = 128
|
|
}
|
|
|
|
public enum LedStyle : byte
|
|
{
|
|
None = 0,
|
|
Legacy = 1,
|
|
Features = 2,
|
|
Disco = 3
|
|
}
|
|
|
|
[Flags]
|
|
public enum LedMode : byte
|
|
{
|
|
[Description("Motor, TODO: add description")]
|
|
Motor = 1,
|
|
[Description("GPS, TODO: add description")]
|
|
GPS = 2,
|
|
[Description("Aux, TODO: add description")]
|
|
Aux = 4,
|
|
[Description("Assign AN5 to LED (0) or beeper (1)")]
|
|
Beeper = 8,
|
|
[Description("Low battery - fast flash (0) / oscillate (1)")]
|
|
Voltage = 16,
|
|
[Description("Nav blink - motors")]
|
|
Nav_blink_motor = 32,
|
|
[Description("Nav blink - GPS")]
|
|
Nav_blink_GPS = 64
|
|
}
|
|
|
|
public enum LedModeX : byte
|
|
{
|
|
Off = 0,
|
|
On = 1,
|
|
Armed = 2,
|
|
GPS = 3,
|
|
Aux = 4,
|
|
[Description("Low battery - fast flash")]
|
|
Low_batt_fast = 5,
|
|
[Description("Low battery - oscillate")]
|
|
Low_batt_oscillate = 6,
|
|
[Description("Nav blink - motors")]
|
|
Nav_blink_motor = 7,
|
|
[Description("Nav blink - GPS")]
|
|
Nav_blink_GPS = 8
|
|
}
|
|
|
|
public ConfigSignalization()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
public void Activate()
|
|
{
|
|
if (MainV2.comPort.MAV.cs.firmware == MainV2.Firmwares.ArduPlane)
|
|
{
|
|
}
|
|
else if (MainV2.comPort.MAV.cs.firmware == MainV2.Firmwares.ArduRover)
|
|
{
|
|
}
|
|
else if (MainV2.comPort.MAV.cs.firmware == MainV2.Firmwares.ArduCopter2)
|
|
{
|
|
Object value;
|
|
//read BEEPER_MODE
|
|
try
|
|
{
|
|
value = MainV2.comPort.param["BEEPER_MODE"];
|
|
if (value == null)
|
|
{
|
|
Setup.flashMessage.FadeInOut("Reading BEEPER_MODE failed", false);
|
|
}
|
|
else
|
|
{
|
|
BeeperMode beeper_mode = (BeeperMode)System.Convert.ToSByte(value);
|
|
CB_beeper_0.Checked = (beeper_mode & BeeperMode.Startup) == BeeperMode.Startup;
|
|
CB_beeper_1.Checked = (beeper_mode & BeeperMode.Arm) == BeeperMode.Arm;
|
|
CB_beeper_2.Checked = (beeper_mode & BeeperMode.Disarm) == BeeperMode.Disarm;
|
|
CB_beeper_3.Checked = (beeper_mode & BeeperMode.Armed) == BeeperMode.Armed;
|
|
CB_beeper_4.Checked = (beeper_mode & BeeperMode.GPS) == BeeperMode.GPS;
|
|
CB_beeper_5.Checked = (beeper_mode & BeeperMode.Voltage) == BeeperMode.Voltage;
|
|
CB_beeper_6.Checked = (beeper_mode & BeeperMode.CH7) == BeeperMode.CH7;
|
|
CB_beeper_7.Checked = (beeper_mode & BeeperMode.Landing) == BeeperMode.Landing;
|
|
Setup.flashMessage.FadeInOut("Reading BEEPER_MODE succeed", true);
|
|
}
|
|
}
|
|
catch {
|
|
Setup.flashMessage.FadeInOut("Reading BEEPER_MODE failed", false);
|
|
}
|
|
|
|
//read LED_STYLE
|
|
try
|
|
{
|
|
value = MainV2.comPort.param["LED_STYLE"];
|
|
if (value == null)
|
|
{
|
|
Setup.flashMessage.FadeInOut("Reading LED_STYLE failed", false);
|
|
}
|
|
else
|
|
{
|
|
LedStyle led_style = (LedStyle)System.Convert.ToSByte(value);
|
|
CMB_leds_style.DataSource = Enum.GetValues(typeof(LedStyle));
|
|
CMB_leds_style.SelectedItem = led_style;
|
|
Setup.flashMessage.FadeInOut("Reading LED_STYLE succeed", true);
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
Setup.flashMessage.FadeInOut("Reading LED_STYLE failed", false);
|
|
}
|
|
CMB_led_1.DataSource = Enum.GetValues(typeof(LedMode));
|
|
|
|
//read LED_MODE
|
|
try
|
|
{
|
|
value = MainV2.comPort.param["LED_MODE"];
|
|
if (value == null)
|
|
{
|
|
Setup.flashMessage.FadeInOut("Reading LED_MODE failed", false);
|
|
}
|
|
else
|
|
{
|
|
LedMode led_mode = (LedMode)System.Convert.ToSByte(value);
|
|
CB_leds_legacy_1.Checked = (led_mode & LedMode.Motor) == LedMode.Motor;
|
|
CB_leds_legacy_2.Checked = (led_mode & LedMode.GPS) == LedMode.GPS;
|
|
CB_leds_legacy_3.Checked = (led_mode & LedMode.Aux) == LedMode.Aux;
|
|
CB_leds_legacy_4.Checked = (led_mode & LedMode.Beeper) == LedMode.Beeper;
|
|
CB_leds_legacy_5.Checked = (led_mode & LedMode.Voltage) == LedMode.Voltage;
|
|
CB_leds_legacy_6.Checked = (led_mode & LedMode.Nav_blink_motor) == LedMode.Nav_blink_motor;
|
|
CB_leds_legacy_7.Checked = (led_mode & LedMode.Nav_blink_GPS) == LedMode.Nav_blink_GPS;
|
|
Setup.flashMessage.FadeInOut("Reading LED_MODE succeed", true);
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
Setup.flashMessage.FadeInOut("Reading LED_MODE failed", false);
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
private void B_beeper_write_Click(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
BeeperMode beeper_mode =
|
|
(CB_beeper_0.Checked ? BeeperMode.Startup : 0) |
|
|
(CB_beeper_1.Checked ? BeeperMode.Arm : 0) |
|
|
(CB_beeper_2.Checked ? BeeperMode.Disarm : 0) |
|
|
(CB_beeper_3.Checked ? BeeperMode.Armed : 0) |
|
|
(CB_beeper_4.Checked ? BeeperMode.GPS : 0) |
|
|
(CB_beeper_5.Checked ? BeeperMode.Voltage : 0) |
|
|
(CB_beeper_6.Checked ? BeeperMode.CH7 : 0) |
|
|
(CB_beeper_7.Checked ? BeeperMode.Landing : 0);
|
|
if (MainV2.comPort.setParam("BEEPER_MODE", (byte)beeper_mode))
|
|
{
|
|
Setup.flashMessage.FadeInOut("Writing BEEPER_MODE succeed", true);
|
|
}
|
|
else
|
|
{
|
|
Setup.flashMessage.FadeInOut("Writing BEEPER_MODE failed", false);
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
Setup.flashMessage.FadeInOut("Writing BEEPER_MODE failed", false);
|
|
}
|
|
}
|
|
|
|
private void B_leds_write_Click(object sender, EventArgs e)
|
|
{
|
|
//write LED_STYLE
|
|
try
|
|
{
|
|
LedStyle led_style = (LedStyle)Enum.Parse(typeof(LedStyle), CMB_leds_style.SelectedItem.ToString());
|
|
if (MainV2.comPort.setParam("LED_STYLE", (byte)led_style))
|
|
{
|
|
Setup.flashMessage.FadeInOut("Writing LED_STYLE succeed", true);
|
|
}
|
|
else
|
|
{
|
|
Setup.flashMessage.FadeInOut("Writing LED_STYLE failed", false);
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
Setup.flashMessage.FadeInOut("Writing LED_STYLE failed", false);
|
|
}
|
|
|
|
//write LED_MODE
|
|
try
|
|
{
|
|
LedMode led_mode =
|
|
(CB_leds_legacy_1.Checked ? LedMode.Motor : 0) |
|
|
(CB_leds_legacy_2.Checked ? LedMode.GPS : 0) |
|
|
(CB_leds_legacy_3.Checked ? LedMode.Aux : 0) |
|
|
(CB_leds_legacy_4.Checked ? LedMode.Beeper : 0) |
|
|
(CB_leds_legacy_5.Checked ? LedMode.Voltage : 0) |
|
|
(CB_leds_legacy_6.Checked ? LedMode.Nav_blink_motor : 0) |
|
|
(CB_leds_legacy_7.Checked ? LedMode.Nav_blink_GPS : 0);
|
|
if (MainV2.comPort.setParam("LED_MODE", (byte)led_mode))
|
|
{
|
|
Setup.flashMessage.FadeInOut("Writing LED_MODE succeed", true);
|
|
}
|
|
else
|
|
{
|
|
Setup.flashMessage.FadeInOut("Writing LED_MODE failed", false);
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
Setup.flashMessage.FadeInOut("Writing LED_MODE failed", false);
|
|
}
|
|
|
|
}
|
|
|
|
private void CMB_leds_style_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
LedStyle led_style = (LedStyle)Enum.Parse(typeof(LedStyle), ((ComboBox)sender).SelectedItem.ToString());
|
|
switch (led_style)
|
|
{
|
|
case LedStyle.None:
|
|
P_leds_mode_combo.Visible = false;
|
|
P_leds_mode_legacy.Visible = false;
|
|
break;
|
|
case LedStyle.Legacy:
|
|
P_leds_mode_combo.Visible = false;
|
|
P_leds_mode_legacy.Visible = true;
|
|
break;
|
|
case LedStyle.Features:
|
|
P_leds_mode_combo.Visible = true;
|
|
P_leds_mode_legacy.Visible = false;
|
|
break;
|
|
case LedStyle.Disco:
|
|
P_leds_mode_combo.Visible = false;
|
|
P_leds_mode_legacy.Visible = false;
|
|
break;
|
|
}
|
|
}
|
|
|
|
private void CMB_Format(object sender, ListControlConvertEventArgs e)
|
|
{
|
|
LedMode item = (LedMode)e.ListItem;
|
|
e.Value = GetEnumDescription((LedMode)item);
|
|
}
|
|
|
|
public static string GetEnumDescription(Enum value)
|
|
{
|
|
FieldInfo fi = value.GetType().GetField(value.ToString());
|
|
|
|
DescriptionAttribute[] attributes = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false);
|
|
|
|
if (attributes != null && attributes.Length > 0)
|
|
{
|
|
return attributes[0].Description;
|
|
}
|
|
else
|
|
{
|
|
return value.ToString();
|
|
}
|
|
}
|
|
}
|
|
}
|