Skip to content

Commit 5b3fb21

Browse files
committed
MainV2: dont miss detect scan on a cubeblack+
1 parent d4410c0 commit 5b3fb21

5 files changed

+316
-8
lines changed

Controls/GMAPCache.Designer.cs

+64
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Controls/GMAPCache.cs

+116
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.ComponentModel;
4+
using System.Drawing;
5+
using System.Data;
6+
using System.IO;
7+
using System.Linq;
8+
using System.Text;
9+
using System.Threading.Tasks;
10+
using System.Windows.Forms;
11+
using GMap.NET;
12+
using GMap.NET.Internals;
13+
using GMap.NET.WindowsForms;
14+
using MissionPlanner.Maps;
15+
using GMap.NET.MapProviders;
16+
17+
namespace MissionPlanner.Controls
18+
{
19+
public partial class GMAPCache : UserControl, IActivate
20+
{
21+
private DataGridViewButtonColumn buttonColumn;
22+
bool _init = false;
23+
24+
public GMAPCache()
25+
{
26+
InitializeComponent();
27+
}
28+
29+
public void Activate()
30+
{
31+
var dir = Path.Combine(CacheLocator.Location, "TileDBv3", "en");
32+
33+
var dirs = Directory.GetDirectories(dir, "*.*");
34+
35+
var sizecountoverall = DirSize(new DirectoryInfo(dir));
36+
var overall = new
37+
{
38+
Name = "Total", Size = Math.Round(sizecountoverall.Item1 / 1024.0 / 1024.0, MidpointRounding.AwayFromZero) + "MB", Count = sizecountoverall.Item2
39+
};
40+
41+
List<object> list = new List<object>();
42+
43+
foreach (var s in dirs)
44+
{
45+
var sizecount = DirSize(new DirectoryInfo(s));
46+
47+
list.Add(new
48+
{Name = Path.GetFileName(s), Size = Math.Round(sizecount.Item1 / 1024.0 / 1024.0, MidpointRounding.AwayFromZero) + "MB", Count = sizecount.Item2});
49+
}
50+
51+
list.Add(overall);
52+
53+
var bs = new BindingSource();
54+
bs.DataSource = list;
55+
myDataGridView1.DataSource = bs;
56+
57+
if(!_init)
58+
{
59+
// Add a button column.
60+
buttonColumn = new DataGridViewButtonColumn();
61+
buttonColumn.HeaderText = "";
62+
//buttonColumn.Name = "Status Request";
63+
buttonColumn.Text = "Remove old";
64+
buttonColumn.UseColumnTextForButtonValue = true;
65+
66+
myDataGridView1.Columns.Add(buttonColumn);
67+
68+
myDataGridView1.CellClick +=
69+
new DataGridViewCellEventHandler(myDataGridView1_CellClick);
70+
_init = true;
71+
}
72+
}
73+
74+
private void myDataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
75+
{
76+
// Ignore clicks that are not on button cells.
77+
if (e.RowIndex < 0 || e.ColumnIndex != buttonColumn.Index) return;
78+
79+
string dir = myDataGridView1[0, e.RowIndex].Value as string;
80+
81+
{
82+
var removed = ((PureImageCache) MyImageCache.Instance).DeleteOlderThan(DateTime.Now.AddDays(-30),
83+
GMapProviders.List.First(a => a.Name == dir).DbId);
84+
85+
CustomMessageBox.Show("Removed " + removed + " images");
86+
87+
Activate();
88+
}
89+
}
90+
91+
public static Tuple<long,long> DirSize(DirectoryInfo d)
92+
{
93+
long size = 0;
94+
long count = 0;
95+
// Add file sizes.
96+
FileInfo[] fis = d.GetFiles();
97+
foreach (FileInfo fi in fis)
98+
{
99+
size += fi.Length;
100+
count++;
101+
}
102+
// Add subdirectory sizes.
103+
DirectoryInfo[] dis = d.GetDirectories();
104+
foreach (DirectoryInfo di in dis)
105+
{
106+
var temp = DirSize(di);
107+
size += temp.Item1;
108+
count += temp.Item2;
109+
}
110+
111+
return new Tuple<long, long>(size, count);
112+
}
113+
}
114+
115+
116+
}

Controls/GMAPCache.resx

+120
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<root>
3+
<!--
4+
Microsoft ResX Schema
5+
6+
Version 2.0
7+
8+
The primary goals of this format is to allow a simple XML format
9+
that is mostly human readable. The generation and parsing of the
10+
various data types are done through the TypeConverter classes
11+
associated with the data types.
12+
13+
Example:
14+
15+
... ado.net/XML headers & schema ...
16+
<resheader name="resmimetype">text/microsoft-resx</resheader>
17+
<resheader name="version">2.0</resheader>
18+
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
19+
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
20+
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
21+
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
22+
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
23+
<value>[base64 mime encoded serialized .NET Framework object]</value>
24+
</data>
25+
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
26+
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
27+
<comment>This is a comment</comment>
28+
</data>
29+
30+
There are any number of "resheader" rows that contain simple
31+
name/value pairs.
32+
33+
Each data row contains a name, and value. The row also contains a
34+
type or mimetype. Type corresponds to a .NET class that support
35+
text/value conversion through the TypeConverter architecture.
36+
Classes that don't support this are serialized and stored with the
37+
mimetype set.
38+
39+
The mimetype is used for serialized objects, and tells the
40+
ResXResourceReader how to depersist the object. This is currently not
41+
extensible. For a given mimetype the value must be set accordingly:
42+
43+
Note - application/x-microsoft.net.object.binary.base64 is the format
44+
that the ResXResourceWriter will generate, however the reader can
45+
read any of the formats listed below.
46+
47+
mimetype: application/x-microsoft.net.object.binary.base64
48+
value : The object must be serialized with
49+
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
50+
: and then encoded with base64 encoding.
51+
52+
mimetype: application/x-microsoft.net.object.soap.base64
53+
value : The object must be serialized with
54+
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
55+
: and then encoded with base64 encoding.
56+
57+
mimetype: application/x-microsoft.net.object.bytearray.base64
58+
value : The object must be serialized into a byte array
59+
: using a System.ComponentModel.TypeConverter
60+
: and then encoded with base64 encoding.
61+
-->
62+
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
63+
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
64+
<xsd:element name="root" msdata:IsDataSet="true">
65+
<xsd:complexType>
66+
<xsd:choice maxOccurs="unbounded">
67+
<xsd:element name="metadata">
68+
<xsd:complexType>
69+
<xsd:sequence>
70+
<xsd:element name="value" type="xsd:string" minOccurs="0" />
71+
</xsd:sequence>
72+
<xsd:attribute name="name" use="required" type="xsd:string" />
73+
<xsd:attribute name="type" type="xsd:string" />
74+
<xsd:attribute name="mimetype" type="xsd:string" />
75+
<xsd:attribute ref="xml:space" />
76+
</xsd:complexType>
77+
</xsd:element>
78+
<xsd:element name="assembly">
79+
<xsd:complexType>
80+
<xsd:attribute name="alias" type="xsd:string" />
81+
<xsd:attribute name="name" type="xsd:string" />
82+
</xsd:complexType>
83+
</xsd:element>
84+
<xsd:element name="data">
85+
<xsd:complexType>
86+
<xsd:sequence>
87+
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
88+
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
89+
</xsd:sequence>
90+
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
91+
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
92+
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
93+
<xsd:attribute ref="xml:space" />
94+
</xsd:complexType>
95+
</xsd:element>
96+
<xsd:element name="resheader">
97+
<xsd:complexType>
98+
<xsd:sequence>
99+
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
100+
</xsd:sequence>
101+
<xsd:attribute name="name" type="xsd:string" use="required" />
102+
</xsd:complexType>
103+
</xsd:element>
104+
</xsd:choice>
105+
</xsd:complexType>
106+
</xsd:element>
107+
</xsd:schema>
108+
<resheader name="resmimetype">
109+
<value>text/microsoft-resx</value>
110+
</resheader>
111+
<resheader name="version">
112+
<value>2.0</value>
113+
</resheader>
114+
<resheader name="reader">
115+
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
116+
</resheader>
117+
<resheader name="writer">
118+
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
119+
</resheader>
120+
</root>

MainV2.cs

+4-8
Original file line numberDiff line numberDiff line change
@@ -1868,7 +1868,7 @@ void loadph_serial()
18681868
if (comPort.MAV.SerialString == "")
18691869
return;
18701870

1871-
if (comPort.MAV.SerialString.Contains("CubeBlack") &&
1871+
if (comPort.MAV.SerialString.Contains("CubeBlack") && !comPort.MAV.SerialString.Contains("CubeBlack+") &&
18721872
comPort.MAV.param.ContainsKey("INS_ACC3_ID") && comPort.MAV.param["INS_ACC3_ID"].Value == 0 &&
18731873
comPort.MAV.param.ContainsKey("INS_GYR3_ID") && comPort.MAV.param["INS_GYR3_ID"].Value == 0 &&
18741874
comPort.MAV.param.ContainsKey("INS_ENABLE_MASK") && comPort.MAV.param["INS_ENABLE_MASK"].Value >= 7)
@@ -1888,7 +1888,7 @@ void loadph_serial()
18881888
// baro does not list a devid
18891889

18901890
//devop read spi lsm9ds0_ext_am 0 0 0x8f 1
1891-
if (comPort.MAV.SerialString.Contains("CubeBlack"))
1891+
if (comPort.MAV.SerialString.Contains("CubeBlack") && !comPort.MAV.SerialString.Contains("CubeBlack+"))
18921892
{
18931893
Task.Run(() =>
18941894
{
@@ -3788,12 +3788,8 @@ protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
37883788
}
37893789
if (keyData == (Keys.Control | Keys.X))
37903790
{
3791-
//var ftp = new MissionPlanner.ArduPilot.Mavlink.MAVFtp(MainV2.comPort, (byte) comPort.sysidcurrent, (byte) comPort.compidcurrent);
3792-
3793-
new MavFTPUI(comPort).ShowUserControl();
3794-
3795-
//ftp.test();
3796-
3791+
new GMAPCache().ShowUserControl();
3792+
return true;
37973793
}
37983794
if (keyData == (Keys.Control | Keys.L)) // limits
37993795
{

MissionPlanner.csproj

+12
Original file line numberDiff line numberDiff line change
@@ -377,6 +377,12 @@
377377
<Compile Include="Controls\DigitalSkyUI.Designer.cs">
378378
<DependentUpon>DigitalSkyUI.cs</DependentUpon>
379379
</Compile>
380+
<Compile Include="Controls\GMAPCache.cs">
381+
<SubType>UserControl</SubType>
382+
</Compile>
383+
<Compile Include="Controls\GMAPCache.Designer.cs">
384+
<DependentUpon>GMAPCache.cs</DependentUpon>
385+
</Compile>
380386
<Compile Include="Controls\Icon\File.cs" />
381387
<Compile Include="Controls\Icon\Zoom.cs" />
382388
<Compile Include="Controls\Status.cs">
@@ -632,6 +638,9 @@
632638
<EmbeddedResource Include="Controls\DigitalSkyUI.resx">
633639
<DependentUpon>DigitalSkyUI.cs</DependentUpon>
634640
</EmbeddedResource>
641+
<EmbeddedResource Include="Controls\GMAPCache.resx">
642+
<DependentUpon>GMAPCache.cs</DependentUpon>
643+
</EmbeddedResource>
635644
<EmbeddedResource Include="Controls\Status.resx">
636645
<DependentUpon>Status.cs</DependentUpon>
637646
</EmbeddedResource>
@@ -4692,6 +4701,9 @@
46924701
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
46934702
</EmbeddedResource>
46944703
</ItemGroup>
4704+
<ItemGroup>
4705+
<WCFMetadata Include="Connected Services\" />
4706+
</ItemGroup>
46954707
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
46964708
<Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
46974709
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">

0 commit comments

Comments
 (0)