915 lines
35 KiB
C#
915 lines
35 KiB
C#
using Data;
|
|
using System;
|
|
using System.ComponentModel;
|
|
using System.Diagnostics;
|
|
using System.Drawing;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Runtime.CompilerServices;
|
|
using System.Text;
|
|
using System.Threading;
|
|
using System.Windows.Forms;
|
|
|
|
public class frmOnboard : Form
|
|
{
|
|
public Button button1;
|
|
public ComboBox comboBox1;
|
|
public Button button3;
|
|
public Button button5;
|
|
public Button button4;
|
|
public Button button2;
|
|
public static bool bool_0;
|
|
private Class17 class17_0;
|
|
private static Class17 class17_2;
|
|
private Class10_settings class10_0;
|
|
public int int_0;
|
|
private Label label8;
|
|
private Label label5;
|
|
private Label label4;
|
|
private Label label3;
|
|
private Label label2;
|
|
private Label label1;
|
|
public Button button8;
|
|
private ProgressBar ProgressBar1;
|
|
private ListView listView1;
|
|
private ColumnHeader columnHeader_0;
|
|
private ColumnHeader columnHeader_1;
|
|
private ColumnHeader columnHeader_2;
|
|
private ColumnHeader columnHeader_3;
|
|
private ColumnHeader columnHeader_4;
|
|
public bool bool_1;
|
|
public string[] string_0 = new string[0xff];
|
|
private IContainer icontainer_0;
|
|
private System.Timers.Timer timer_0;
|
|
|
|
internal frmOnboard(ref Class17 class11_1, ref Class10_settings class10_1 )
|
|
{
|
|
this.class17_0 = class11_1;
|
|
this.class10_0 = class10_1;
|
|
this.InitializeComponent();
|
|
|
|
class17_2 = class17_0;
|
|
|
|
this.timer_0 = new System.Timers.Timer();
|
|
this.timer_0.Interval = 10;
|
|
|
|
//this.ProgressBar1.String_0 = "";
|
|
//this.ProgressBar1.Color_1 = Color.LightGreen;
|
|
//this.ProgressBar1.Color_0 = Color.Black;
|
|
//this.ProgressBar1.Font_0 = new Font("Times New Roman", 11f, FontStyle.Italic | FontStyle.Bold);
|
|
//this.ProgressBar1.GEnum19_0 = GEnum19.CurrProgress;
|
|
|
|
foreach (Control control in base.Controls)
|
|
{
|
|
float emSize = control.Font.Size * (class10_0.scaleRate / 100f);
|
|
control.Font = new Font(control.Font.Name, emSize, control.Font.Style, control.Font.Unit);
|
|
}
|
|
}
|
|
|
|
private void button1_Click(object sender, EventArgs e)
|
|
{
|
|
this.button1.Enabled = false;
|
|
this.method_7();
|
|
this.button1.Enabled = true;
|
|
}
|
|
|
|
private void button2_Click(object sender, EventArgs e)
|
|
{
|
|
if (class17_0.serialPort_0.IsOpen)
|
|
{
|
|
this.method_6(true);
|
|
}
|
|
}
|
|
|
|
private void button3_Click(object sender, EventArgs e)
|
|
{
|
|
this.method_8();
|
|
}
|
|
|
|
private void button4_Click(object sender, EventArgs e)
|
|
{
|
|
this.method_3();
|
|
}
|
|
|
|
private void button5_Click(object sender, EventArgs e)
|
|
{
|
|
this.method_4();
|
|
}
|
|
|
|
private void frmOnboard_Load(object sender, EventArgs e)
|
|
{
|
|
bool flag = false;
|
|
if (class10_0.emulatorMode_0 != EmulatorMode.Demon)
|
|
{
|
|
MessageBox.Show("This only works when connected to Moates Demon", "BMTune");
|
|
base.Close();
|
|
}
|
|
else
|
|
{
|
|
try
|
|
{
|
|
/*if (class17_0.serialPort_0.IsOpen)
|
|
{
|
|
this.ProgressBar1.GEnum19_0 = GEnum19.CustomText;
|
|
}*/
|
|
flag = true;
|
|
}
|
|
catch
|
|
{
|
|
MessageBox.Show("This only works when connected to Moates Demon", "BMTune");
|
|
base.Close();
|
|
}
|
|
}
|
|
if (flag)
|
|
{
|
|
this.method_1();
|
|
}
|
|
}
|
|
|
|
private void InitializeComponent()
|
|
{
|
|
this.icontainer_0 = new Container();
|
|
ComponentResourceManager manager = new ComponentResourceManager(typeof(frmOnboard));
|
|
this.button1 = new Button();
|
|
this.comboBox1 = new ComboBox();
|
|
this.button3 = new Button();
|
|
this.button5 = new Button();
|
|
this.button4 = new Button();
|
|
this.button2 = new Button();
|
|
this.label8 = new Label();
|
|
this.label5 = new Label();
|
|
this.label4 = new Label();
|
|
this.label3 = new Label();
|
|
this.label2 = new Label();
|
|
this.label1 = new Label();
|
|
this.button8 = new Button();
|
|
this.listView1 = new ListView();
|
|
this.columnHeader_0 = new ColumnHeader();
|
|
this.columnHeader_1 = new ColumnHeader();
|
|
this.columnHeader_2 = new ColumnHeader();
|
|
this.columnHeader_3 = new ColumnHeader();
|
|
this.columnHeader_4 = new ColumnHeader();
|
|
this.ProgressBar1 = new ProgressBar();
|
|
base.SuspendLayout();
|
|
this.button1.Location = new Point(0x39b, 0x18e);
|
|
this.button1.Margin = new Padding(2);
|
|
this.button1.Name = "button1";
|
|
this.button1.Size = new Size(0x9a, 0x3e);
|
|
this.button1.TabIndex = 70;
|
|
this.button1.Text = "Dump";
|
|
this.button1.UseVisualStyleBackColor = true;
|
|
this.button1.Click += new EventHandler(this.button1_Click);
|
|
this.comboBox1.FormattingEnabled = true;
|
|
object[] items = new object[] { "20ms (8min)", "40ms (16min)", "80ms (32min)", "100ms (40min)", "125ms (50min)" };
|
|
this.comboBox1.Items.AddRange(items);
|
|
this.comboBox1.Location = new Point(0x39f, 0xc5);
|
|
this.comboBox1.Margin = new Padding(2);
|
|
this.comboBox1.Name = "comboBox1";
|
|
this.comboBox1.Size = new Size(150, 0x20);
|
|
this.comboBox1.TabIndex = 0x44;
|
|
this.comboBox1.Text = "20ms (8min)";
|
|
this.button3.Location = new Point(0x39f, 11);
|
|
this.button3.Margin = new Padding(6);
|
|
this.button3.Name = "button3";
|
|
this.button3.Size = new Size(150, 0x2e);
|
|
this.button3.TabIndex = 0x42;
|
|
this.button3.Text = "Scan";
|
|
this.button3.UseVisualStyleBackColor = true;
|
|
this.button3.Click += new EventHandler(this.button3_Click);
|
|
this.button5.Location = new Point(0x39b, 0xf4);
|
|
this.button5.Margin = new Padding(2);
|
|
this.button5.Name = "button5";
|
|
this.button5.Size = new Size(0x9a, 0x30);
|
|
this.button5.TabIndex = 0x3a;
|
|
this.button5.Text = "Erase";
|
|
this.button5.UseVisualStyleBackColor = true;
|
|
this.button5.Click += new EventHandler(this.button5_Click);
|
|
this.button4.Location = new Point(0x39f, 0x41);
|
|
this.button4.Margin = new Padding(2);
|
|
this.button4.Name = "button4";
|
|
this.button4.Size = new Size(150, 0x34);
|
|
this.button4.TabIndex = 0x39;
|
|
this.button4.Text = "Compression";
|
|
this.button4.UseVisualStyleBackColor = true;
|
|
this.button4.Click += new EventHandler(this.button4_Click);
|
|
this.button2.Location = new Point(0x39f, 0x80);
|
|
this.button2.Margin = new Padding(2);
|
|
this.button2.Name = "button2";
|
|
this.button2.Size = new Size(150, 0x37);
|
|
this.button2.TabIndex = 0x38;
|
|
this.button2.Text = "Enable OB";
|
|
this.button2.UseVisualStyleBackColor = true;
|
|
this.button2.Click += new EventHandler(this.button2_Click);
|
|
this.label8.AutoSize = true;
|
|
this.label8.Location = new Point(0x28c, 0x1b0);
|
|
this.label8.Margin = new Padding(2, 0, 2, 0);
|
|
this.label8.Name = "label8";
|
|
this.label8.Size = new Size(0x86, 0x19);
|
|
this.label8.TabIndex = 0x4c;
|
|
this.label8.Text = "Compression:";
|
|
this.label5.AutoSize = true;
|
|
this.label5.Location = new Point(0x296, 0x18b);
|
|
this.label5.Margin = new Padding(2, 0, 2, 0);
|
|
this.label5.Name = "label5";
|
|
this.label5.Size = new Size(0x7c, 0x19);
|
|
this.label5.TabIndex = 0x4b;
|
|
this.label5.Text = "Total Space:";
|
|
this.label4.AutoSize = true;
|
|
this.label4.Location = new Point(0x151, 0x1b0);
|
|
this.label4.Margin = new Padding(2, 0, 2, 0);
|
|
this.label4.Name = "label4";
|
|
this.label4.Size = new Size(160, 0x19);
|
|
this.label4.TabIndex = 0x4a;
|
|
this.label4.Text = "Space Available:";
|
|
this.label3.AutoSize = true;
|
|
this.label3.Location = new Point(0x173, 0x18b);
|
|
this.label3.Margin = new Padding(2, 0, 2, 0);
|
|
this.label3.Name = "label3";
|
|
this.label3.Size = new Size(0x7e, 0x19);
|
|
this.label3.TabIndex = 0x49;
|
|
this.label3.Text = "Space Used:";
|
|
this.label2.AutoSize = true;
|
|
this.label2.Location = new Point(0x20, 0x1b0);
|
|
this.label2.Margin = new Padding(2, 0, 2, 0);
|
|
this.label2.Name = "label2";
|
|
this.label2.Size = new Size(0x92, 0x19);
|
|
this.label2.TabIndex = 0x48;
|
|
this.label2.Text = "Logs Available:";
|
|
this.label1.AutoSize = true;
|
|
this.label1.Location = new Point(0x1c, 0x18b);
|
|
this.label1.Margin = new Padding(2, 0, 2, 0);
|
|
this.label1.Name = "label1";
|
|
this.label1.Size = new Size(150, 0x19);
|
|
this.label1.TabIndex = 0x47;
|
|
this.label1.Text = "Recorded Logs:";
|
|
this.button8.Location = new Point(0x39b, 0x131);
|
|
this.button8.Margin = new Padding(2);
|
|
this.button8.Name = "button8";
|
|
this.button8.Size = new Size(0x9a, 0x30);
|
|
this.button8.TabIndex = 0x4d;
|
|
this.button8.Text = "Write";
|
|
this.button8.UseVisualStyleBackColor = true;
|
|
ColumnHeader[] values = new ColumnHeader[] { this.columnHeader_0, this.columnHeader_1, this.columnHeader_2, this.columnHeader_3, this.columnHeader_4 };
|
|
this.listView1.Columns.AddRange(values);
|
|
this.listView1.HideSelection = false;
|
|
this.listView1.Location = new Point(0x12, 11);
|
|
this.listView1.Margin = new Padding(2);
|
|
this.listView1.Name = "listView1";
|
|
this.listView1.Size = new Size(0x37c, 0x176);
|
|
this.listView1.TabIndex = 0x4f;
|
|
this.listView1.UseCompatibleStateImageBehavior = false;
|
|
this.listView1.View = View.Details;
|
|
this.listView1.DoubleClick += new EventHandler(this.listView1_DoubleClick);
|
|
this.columnHeader_0.Text = "LOG#";
|
|
this.columnHeader_0.Width = 0x84;
|
|
this.columnHeader_1.Text = "Size";
|
|
this.columnHeader_1.Width = 80;
|
|
this.columnHeader_2.Text = "Samples";
|
|
this.columnHeader_2.Width = 80;
|
|
this.columnHeader_3.Text = "Duration";
|
|
this.columnHeader_3.Width = 90;
|
|
this.columnHeader_4.Text = "Compressed";
|
|
this.columnHeader_4.Width = 0x66;
|
|
this.ProgressBar1.Location = new Point(0x12, 0x1dc);
|
|
this.ProgressBar1.Name = "ProgressBar1";
|
|
this.ProgressBar1.Size = new Size(0x423, 0x29);
|
|
this.ProgressBar1.TabIndex = 0x4e;
|
|
base.AutoScaleDimensions = new SizeF(11f, 24f);
|
|
base.AutoScaleMode = AutoScaleMode.Font;
|
|
base.ClientSize = new Size(0x445, 0x214);
|
|
base.Controls.Add(this.listView1);
|
|
base.Controls.Add(this.ProgressBar1);
|
|
base.Controls.Add(this.button8);
|
|
base.Controls.Add(this.label8);
|
|
base.Controls.Add(this.label5);
|
|
base.Controls.Add(this.label4);
|
|
base.Controls.Add(this.label3);
|
|
base.Controls.Add(this.label2);
|
|
base.Controls.Add(this.label1);
|
|
base.Controls.Add(this.button1);
|
|
base.Controls.Add(this.comboBox1);
|
|
base.Controls.Add(this.button3);
|
|
base.Controls.Add(this.button5);
|
|
base.Controls.Add(this.button4);
|
|
base.Controls.Add(this.button2);
|
|
base.FormBorderStyle = FormBorderStyle.FixedDialog;
|
|
base.Margin = new Padding(4);
|
|
base.MaximizeBox = false;
|
|
base.MinimizeBox = false;
|
|
base.Name = "frmOnboard";
|
|
this.Text = "Onboard Datalogging";
|
|
base.Load += new EventHandler(this.frmOnboard_Load);
|
|
base.ResumeLayout(false);
|
|
base.PerformLayout();
|
|
}
|
|
|
|
private void listView1_DoubleClick(object sender, EventArgs e)
|
|
{
|
|
this.method_9();
|
|
}
|
|
|
|
public byte[] method_0(byte[] byte_0)
|
|
{
|
|
byte num = 0;
|
|
foreach (byte num3 in byte_0)
|
|
{
|
|
num = (byte) (num + num3);
|
|
}
|
|
byte[] buffer = new byte[byte_0.Length + 1];
|
|
byte_0.CopyTo(buffer, 0);
|
|
buffer[buffer.Length - 1] = num;
|
|
return buffer;
|
|
}
|
|
|
|
public void method_1()
|
|
{
|
|
class17_0.serialPort_0.DiscardInBuffer();
|
|
class17_0.serialPort_0.DiscardOutBuffer();
|
|
byte[] buffer = new byte[0x20];
|
|
byte[] buffer2 = this.method_0(new byte[] { 0x44, 0x4f, 0x4c, 0x4e });
|
|
class17_0.serialPort_0.Write(buffer2, 0, buffer2.Length);
|
|
Thread.Sleep(20);
|
|
class17_0.serialPort_0.Read(buffer, 0, class17_0.serialPort_0.BytesToRead);
|
|
if (buffer[0] == 0x4f)
|
|
{
|
|
byte[] buffer3 = this.method_0(new byte[] { 0x44, 0x4f, 0x4c, 110 });
|
|
class17_0.serialPort_0.Write(buffer3, 0, buffer3.Length);
|
|
Thread.Sleep(20);
|
|
class17_0.serialPort_0.Read(buffer, 0, class17_0.serialPort_0.BytesToRead);
|
|
if (buffer[0] == 0x4f)
|
|
{
|
|
byte[] buffer4 = this.method_0(new byte[] { 0x44, 0x4f, 0x4c, 0x49 });
|
|
class17_0.serialPort_0.Write(buffer4, 0, buffer4.Length);
|
|
Thread.Sleep(20);
|
|
class17_0.serialPort_0.Read(buffer, 0, class17_0.serialPort_0.BytesToRead);
|
|
byte num = buffer[1];
|
|
byte num2 = buffer[2];
|
|
byte num3 = buffer[3];
|
|
byte num14 = buffer[14];
|
|
byte num15 = buffer[15];
|
|
this.bool_1 = buffer[12] == 0x59;
|
|
int num17 = 0;
|
|
if (num15 == 0)
|
|
{
|
|
num17 = 0x100;
|
|
}
|
|
else if (num15 == 1)
|
|
{
|
|
num17 = 0x200;
|
|
}
|
|
else if (num15 == 3)
|
|
{
|
|
num17 = 0x200;
|
|
}
|
|
if (num14 == 7)
|
|
{
|
|
this.int_0 = 0xfa000;
|
|
}
|
|
else if (num14 == 15)
|
|
{
|
|
this.int_0 = 0x3e8000;
|
|
}
|
|
else if (num14 == 0x1f)
|
|
{
|
|
this.int_0 = 0x3e8000;
|
|
}
|
|
float num18 = ((float) (((num2 << 8) | num3) * num17)) / 1000f;
|
|
this.label1.Text = "Recorded Logs: " + num.ToString();
|
|
this.label2.Text = "Logs Available: " + (0xff - num).ToString();
|
|
this.label3.Text = "Space Used: " + num18.ToString() + "KB";
|
|
this.label4.Text = "Space Available: " + ((this.int_0 / 0x3e8) - num18).ToString() + "KB";
|
|
this.label5.Text = "Total Space: " + (this.int_0 / 0x3e8).ToString() + "KB";
|
|
this.label8.Text = "Compression: " + this.bool_1.ToString();
|
|
if ((num != 0) && (MessageBox.Show("New Onboard Datalogs," + Environment.NewLine + "Do you want to scan them?", "Onboard", MessageBoxButtons.YesNo) == DialogResult.Yes))
|
|
{
|
|
this.method_8();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private void method_10(object sender, ProgressChangedEventArgs e)
|
|
{
|
|
float num2 = (((float) int.Parse(e.ProgressPercentage.ToString())) / ((float) this.int_0)) * 100f;
|
|
//this.ProgressBar1.String_0 = "Dumping Rom: " + num2.ToString() + " %";
|
|
this.Text = "Onboard Datalogging - Dumping Rom: " + num2.ToString() + " % ";
|
|
this.ProgressBar1.Value = (int) num2;
|
|
}
|
|
|
|
private byte[] method_2(params byte[][] byte_0)
|
|
{
|
|
byte[] buffer = new byte[byte_0.Sum<byte[]>(TestOnBoardClass.TestInt ?? (TestOnBoardClass.TestInt = new Func<byte[], int>(frmOnboard.TestOnBoardClass.TestValue.method_0)))];
|
|
int num = 0;
|
|
foreach (byte[] buffer2 in byte_0)
|
|
{
|
|
Buffer.BlockCopy(buffer2, 0, buffer, num, buffer2.Length);
|
|
num += buffer2.Length;
|
|
}
|
|
return buffer;
|
|
}
|
|
|
|
public void method_3()
|
|
{
|
|
if (class17_0.serialPort_0.IsOpen)
|
|
{
|
|
class17_0.serialPort_0.DiscardInBuffer();
|
|
class17_0.serialPort_0.DiscardOutBuffer();
|
|
byte[] buffer = new byte[0x40];
|
|
DialogResult dialogResult = MessageBox.Show(string.Concat(new string[]
|
|
{
|
|
"Compression is set to ",
|
|
this.bool_1.ToString(),
|
|
Environment.NewLine,
|
|
"Do you want to set it to ",
|
|
(!this.bool_1).ToString()
|
|
}), "Onboard Compression", MessageBoxButtons.YesNo);
|
|
if (dialogResult == DialogResult.Yes)
|
|
{
|
|
if (this.bool_1)
|
|
{
|
|
byte[] buffer2 = this.method_0(new byte[] { 0x44, 0x4f, 0x43, 0x4e });
|
|
class17_0.serialPort_0.Write(buffer2, 0, buffer2.Length);
|
|
Thread.Sleep(20);
|
|
class17_0.serialPort_0.Read(buffer, 0, class17_0.serialPort_0.BytesToRead);
|
|
}
|
|
else
|
|
{
|
|
byte[] buffer3 = this.method_0(new byte[] { 0x44, 0x4f, 0x43, 0x59 });
|
|
class17_0.serialPort_0.Write(buffer3, 0, buffer3.Length);
|
|
Thread.Sleep(20);
|
|
class17_0.serialPort_0.Read(buffer, 0, class17_0.serialPort_0.BytesToRead);
|
|
}
|
|
if (buffer[0] == 0x4f)
|
|
{
|
|
MessageBox.Show("Change Set.");
|
|
this.method_1();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public void method_4()
|
|
{
|
|
if (class17_0.serialPort_0.IsOpen)
|
|
{
|
|
byte[] buffer = new byte[0x40];
|
|
string[] textArray1 = new string[] { "Do you want to erase all onboard logs?", Environment.NewLine, "**** Warning ****", Environment.NewLine, "It takes 10 sec for memory to be erase" };
|
|
if (MessageBox.Show(string.Concat(textArray1), "Onboard Erase", MessageBoxButtons.YesNo) == DialogResult.Yes)
|
|
{
|
|
byte[] buffer2 = this.method_0(new byte[] { 0x44, 0x4f, 0x45 });
|
|
class17_0.serialPort_0.DiscardInBuffer();
|
|
class17_0.serialPort_0.DiscardOutBuffer();
|
|
class17_0.serialPort_0.Write(buffer2, 0, buffer2.Length);
|
|
for (byte i = 0; (buffer[0] == 0) && (i <= 12); i = (byte) (i + 1))
|
|
{
|
|
class17_0.serialPort_0.Read(buffer, 0, class17_0.serialPort_0.BytesToRead);
|
|
if (buffer[0] == 0x4f)
|
|
{
|
|
MessageBox.Show("Onboard erased.");
|
|
this.method_1();
|
|
return;
|
|
}
|
|
Thread.Sleep(0x3e8);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public int method_5(int int_1, int int_2)
|
|
{
|
|
while (int_2 != 0)
|
|
{
|
|
int num = ~int_1 & int_2;
|
|
int_1 ^= int_2;
|
|
int_2 = num << 1;
|
|
}
|
|
return int_1;
|
|
}
|
|
|
|
private void method_6(bool bool_2)
|
|
{
|
|
byte[] buffer = new byte[0x20];
|
|
byte[] buffer2 = new byte[8];
|
|
if (bool_2)
|
|
{
|
|
buffer2 = this.method_0(new byte[] { 0x44, 0x4f, 0x4c, 0x59 });
|
|
class17_0.serialPort_0.Write(buffer2, 0, buffer2.Length);
|
|
Thread.Sleep(50);
|
|
class17_0.serialPort_0.Read(buffer, 0, class17_0.serialPort_0.BytesToRead);
|
|
if (buffer[0] == 0x4f)
|
|
{
|
|
buffer2 = this.method_0(new byte[] { 0x44, 0x4f, 0x4c, 0x79 });
|
|
class17_0.serialPort_0.Write(buffer2, 0, buffer2.Length);
|
|
Thread.Sleep(50);
|
|
class17_0.serialPort_0.Read(buffer, 0, class17_0.serialPort_0.BytesToRead);
|
|
if (buffer[0] == 0x4f)
|
|
{
|
|
this.button2.Text = "Disable OB";
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
buffer2 = this.method_0(new byte[] { 0x44, 0x4f, 0x4c, 0x4e });
|
|
class17_0.serialPort_0.Write(buffer2, 0, buffer2.Length);
|
|
Thread.Sleep(50);
|
|
class17_0.serialPort_0.Read(buffer, 0, class17_0.serialPort_0.BytesToRead);
|
|
if (buffer[0] == 0x4f)
|
|
{
|
|
buffer2 = this.method_0(new byte[] { 0x44, 0x4f, 0x4c, 110 });
|
|
class17_0.serialPort_0.Write(buffer2, 0, buffer2.Length);
|
|
Thread.Sleep(50);
|
|
class17_0.serialPort_0.Read(buffer, 0, class17_0.serialPort_0.BytesToRead);
|
|
if (buffer[0] == 0x4f)
|
|
{
|
|
this.button2.Text = "Enable OB";
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private void method_7()
|
|
{
|
|
if (class17_0.serialPort_0.IsOpen)
|
|
{
|
|
Class45 class2 = new Class45 {
|
|
frmOnboard_0 = this,
|
|
byte_0 = new byte[1]
|
|
};
|
|
if (MessageBox.Show("Do you want to dump the complete onboard memory of your demon?", "Dump Demon", MessageBoxButtons.YesNo) == DialogResult.Yes)
|
|
{
|
|
class2.dialogResult_0 = MessageBox.Show("Only dump written zones?", "Dump Demon", MessageBoxButtons.YesNo);
|
|
class2.int_0 = 0;
|
|
BackgroundWorker worker = new BackgroundWorker {
|
|
WorkerReportsProgress = true
|
|
};
|
|
worker.DoWork += new DoWorkEventHandler(class2.method_0);
|
|
worker.ProgressChanged += new ProgressChangedEventHandler(this.method_10);
|
|
worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(class2.method_1);
|
|
worker.RunWorkerAsync();
|
|
}
|
|
}
|
|
}
|
|
|
|
private void method_8()
|
|
{
|
|
Class46 class2 = new Class46 {
|
|
frmOnboard_0 = this
|
|
};
|
|
this.listView1.Items.Clear();
|
|
class2.byte_0 = new byte[1];
|
|
if (class17_0.serialPort_0.IsOpen)
|
|
{
|
|
Class47 class3 = new Class47 {
|
|
class46_0 = class2,
|
|
int_0 = 0
|
|
};
|
|
BackgroundWorker worker = new BackgroundWorker {
|
|
WorkerReportsProgress = true
|
|
};
|
|
worker.DoWork += new DoWorkEventHandler(class3.method_0);
|
|
worker.ProgressChanged += new ProgressChangedEventHandler(class3.class46_0.method_0);
|
|
worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(class3.class46_0.method_1);
|
|
worker.RunWorkerAsync();
|
|
}
|
|
}
|
|
|
|
private void method_9()
|
|
{
|
|
int index = this.listView1.SelectedIndices[0] + 1;
|
|
SaveFileDialog dialog = new SaveFileDialog {
|
|
Filter = "Demon Datalog|*.log",
|
|
Title = "Save Demon Onboard Datalog"
|
|
};
|
|
dialog.ShowDialog();
|
|
if (dialog.FileName != "")
|
|
{
|
|
if (File.Exists(dialog.FileName))
|
|
{
|
|
File.Delete(dialog.FileName);
|
|
}
|
|
using (Stream stream = (Stream) File.OpenWrite(dialog.FileName))
|
|
{
|
|
byte[] buffer = smethod_0(this.string_0[index]);
|
|
stream.Write(buffer, 0, buffer.Length);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static byte[] smethod_0(string string_1)
|
|
{
|
|
int length = string_1.Length;
|
|
byte[] buffer = new byte[length / 2];
|
|
for (int i = 0; i < length; i += 2)
|
|
{
|
|
buffer[i / 2] = Convert.ToByte(string_1.Substring(i, 2), 0x10);
|
|
}
|
|
return buffer;
|
|
}
|
|
|
|
public static string smethod_1(byte[] byte_0)
|
|
{
|
|
return BitConverter.ToString(byte_0).Replace("-", "");
|
|
}
|
|
|
|
private sealed class TestOnBoardClass
|
|
{
|
|
public static readonly frmOnboard.TestOnBoardClass TestValue = new frmOnboard.TestOnBoardClass();
|
|
public static Func<byte[], int> TestInt;
|
|
|
|
internal int method_0(byte[] byte_0)
|
|
{
|
|
return byte_0.Length;
|
|
}
|
|
}
|
|
|
|
private sealed class Class45
|
|
{
|
|
public byte[] byte_0;
|
|
public DialogResult dialogResult_0;
|
|
public int int_0;
|
|
public frmOnboard frmOnboard_0;
|
|
|
|
internal void method_0(object sender, DoWorkEventArgs e)
|
|
{
|
|
BackgroundWorker backgroundWorker = sender as BackgroundWorker;
|
|
Stopwatch stopwatch = Stopwatch.StartNew();
|
|
bool flag = false;
|
|
byte[] array = new byte[2];
|
|
bool flag2 = false;
|
|
while (this.byte_0.Length <= this.frmOnboard_0.int_0 && !flag2)
|
|
{
|
|
frmOnboard frmOnboard = this.frmOnboard_0;
|
|
byte[] array2 = new byte[]
|
|
{
|
|
68,
|
|
79,
|
|
82,
|
|
0,
|
|
0,
|
|
5
|
|
};
|
|
array2[3] = array[0];
|
|
array2[4] = array[1];
|
|
byte[] array3 = frmOnboard.method_0(array2);
|
|
switch (array[1])
|
|
{
|
|
case 251:
|
|
flag = true;
|
|
break;
|
|
case 252:
|
|
flag = true;
|
|
break;
|
|
case 253:
|
|
flag = true;
|
|
break;
|
|
case 254:
|
|
flag = true;
|
|
break;
|
|
case 255:
|
|
flag = true;
|
|
break;
|
|
}
|
|
byte[] array4 = array;
|
|
int num = 1;
|
|
array4[num] += 5;
|
|
if (flag)
|
|
{
|
|
byte[] array5 = array;
|
|
int num2 = 0;
|
|
array5[num2] += 1;
|
|
flag = false;
|
|
}
|
|
class17_2.serialPort_0.Write(array3, 0, array3.Length);
|
|
Thread.Sleep(45);
|
|
byte[] array6 = new byte[this.frmOnboard_0.method_5(class17_2.serialPort_0.BytesToRead, 1)];
|
|
byte[] array7 = new byte[array6.Length + 1];
|
|
class17_2.serialPort_0.Read(array7, 0, array7.Length);
|
|
byte b = 0;
|
|
int num3 = 0;
|
|
foreach (byte b2 in array7)
|
|
{
|
|
num3++;
|
|
if (num3 != array7.Length)
|
|
{
|
|
b += b2;
|
|
}
|
|
}
|
|
if (b == array7[array6.Length])
|
|
{
|
|
Array.Copy(array7, array6, array6.Length);
|
|
this.byte_0 = this.frmOnboard_0.method_2(new byte[][]
|
|
{
|
|
this.byte_0,
|
|
array6
|
|
});
|
|
backgroundWorker.ReportProgress(this.byte_0.Length);
|
|
}
|
|
else
|
|
{
|
|
MessageBox.Show("Checksum fault!", "error");
|
|
flag2 = true;
|
|
}
|
|
if (this.dialogResult_0 == DialogResult.Yes && array6[2] == 255 && array6[3] == 255 && array6[4] == 255 && array6[5] == 255 && array6[6] == 255 && array6[array6.Length - 8] == 255 && array6[array6.Length - 4] == 255 && array6[array6.Length - 2] == 255)
|
|
{
|
|
byte[] array9 = new byte[this.frmOnboard_0.int_0 - this.byte_0.Length];
|
|
for (int j = 0; j < array9.Length; j++)
|
|
{
|
|
array9[j] = byte.MaxValue;
|
|
}
|
|
this.byte_0 = this.frmOnboard_0.method_2(new byte[][]
|
|
{
|
|
this.byte_0,
|
|
array9
|
|
});
|
|
flag2 = true;
|
|
}
|
|
}
|
|
this.int_0 = (int)stopwatch.ElapsedMilliseconds / 1000;
|
|
stopwatch.Stop();
|
|
}
|
|
|
|
internal void method_1(object sender, RunWorkerCompletedEventArgs e)
|
|
{
|
|
string str = (this.int_0 / 60).ToString() + ":" + (this.int_0 % 60).ToString();
|
|
//this.frmOnboard_0.ProgressBar1.String_0 = "Completed in: " + str;
|
|
this.frmOnboard_0.Text = "Onboard Datalogging - Completed in: " + str;
|
|
|
|
SaveFileDialog dialog = new SaveFileDialog {
|
|
Filter = "Demon Dump|*.DD",
|
|
Title = "Save Demon Onboard Memory"
|
|
};
|
|
dialog.ShowDialog();
|
|
if (dialog.FileName != "")
|
|
{
|
|
if (File.Exists(dialog.FileName))
|
|
{
|
|
File.Delete(dialog.FileName);
|
|
}
|
|
using (Stream stream = (Stream) File.OpenWrite(dialog.FileName))
|
|
{
|
|
stream.Write(this.byte_0, 0, this.byte_0.Length);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private sealed class Class46
|
|
{
|
|
public frmOnboard frmOnboard_0;
|
|
public byte[] byte_0;
|
|
|
|
internal void method_0(object sender, ProgressChangedEventArgs e)
|
|
{
|
|
float num2 = (((float) int.Parse(e.ProgressPercentage.ToString())) / ((float) this.frmOnboard_0.int_0)) * 100f;
|
|
//this.frmOnboard_0.ProgressBar1.String_0 = "Scanning Dataloggs Total Rom Read: " + num2.ToString() + " %";
|
|
this.frmOnboard_0.Text = "Onboard Datalogging - Scanning Dataloggs Total Rom Read: " + num2.ToString() + " %";
|
|
this.frmOnboard_0.ProgressBar1.Value = (int) num2;
|
|
}
|
|
|
|
internal void method_1(object sender, RunWorkerCompletedEventArgs e)
|
|
{
|
|
//this.frmOnboard_0.ProgressBar1.String_0 = "Finished Scanning.";
|
|
this.frmOnboard_0.Text = "Onboard Datalogging - Finished Scanning.";
|
|
string @string = Encoding.UTF8.GetString(this.byte_0);
|
|
string[] array = @string.Split(new string[]
|
|
{
|
|
"<S>"
|
|
}, StringSplitOptions.None);
|
|
this.frmOnboard_0.string_0 = frmOnboard.smethod_1(this.byte_0).Replace("3C2F533E", "").Split(new string[]
|
|
{
|
|
"3C533E"
|
|
}, StringSplitOptions.None);
|
|
int num = 1;
|
|
int num2 = 50;
|
|
foreach (string text in array)
|
|
{
|
|
try
|
|
{
|
|
if (!text.Substring(0, 2).Contains("\0"))
|
|
{
|
|
string[] array3 = text.Split(new string[]
|
|
{
|
|
"<D>"
|
|
}, StringSplitOptions.None);
|
|
TimeSpan timeSpan = TimeSpan.FromSeconds((double)(num2 * array3.Length / 1000));
|
|
string[] array4 = new string[5];
|
|
array4[0] = "Onboard Log " + num++.ToString();
|
|
array4[1] = (array3.Length * 71 / 1000).ToString() + " KB";
|
|
array4[2] = array3.Length.ToString();
|
|
array4[3] = timeSpan.ToString();
|
|
if (array4[1] == "0 KB")
|
|
{
|
|
array4[4] = "True";
|
|
}
|
|
else
|
|
{
|
|
array4[4] = "False";
|
|
}
|
|
ListViewItem value = new ListViewItem(array4);
|
|
this.frmOnboard_0.listView1.Items.Add(value);
|
|
}
|
|
}
|
|
catch
|
|
{
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private sealed class Class47
|
|
{
|
|
public int int_0;
|
|
public frmOnboard.Class46 class46_0;
|
|
|
|
internal void method_0(object sender, DoWorkEventArgs e)
|
|
{
|
|
BackgroundWorker backgroundWorker = sender as BackgroundWorker;
|
|
Stopwatch stopwatch = Stopwatch.StartNew();
|
|
bool flag = false;
|
|
byte[] array = new byte[2];
|
|
bool flag2 = true;
|
|
while (flag2)
|
|
{
|
|
frmOnboard frmOnboard_ = this.class46_0.frmOnboard_0;
|
|
byte[] array2 = new byte[]
|
|
{
|
|
68,
|
|
79,
|
|
82,
|
|
0,
|
|
0,
|
|
5
|
|
};
|
|
array2[3] = array[0];
|
|
array2[4] = array[1];
|
|
byte[] array3 = frmOnboard_.method_0(array2);
|
|
switch (array[1])
|
|
{
|
|
case 251:
|
|
flag = true;
|
|
break;
|
|
case 252:
|
|
flag = true;
|
|
break;
|
|
case 253:
|
|
flag = true;
|
|
break;
|
|
case 254:
|
|
flag = true;
|
|
break;
|
|
case 255:
|
|
flag = true;
|
|
break;
|
|
}
|
|
byte[] array4 = array;
|
|
int num = 1;
|
|
array4[num] += 5;
|
|
if (flag)
|
|
{
|
|
byte[] array5 = array;
|
|
int num2 = 0;
|
|
array5[num2] += 1;
|
|
flag = false;
|
|
}
|
|
class17_2.serialPort_0.Write(array3, 0, array3.Length);
|
|
Thread.Sleep(45);
|
|
byte[] array6 = new byte[this.class46_0.frmOnboard_0.method_5(class17_2.serialPort_0.BytesToRead, 1)];
|
|
byte[] array7 = new byte[array6.Length + 1];
|
|
class17_2.serialPort_0.Read(array7, 0, array7.Length);
|
|
byte b = 0;
|
|
int num3 = 0;
|
|
foreach (byte b2 in array7)
|
|
{
|
|
num3++;
|
|
if (num3 != array7.Length)
|
|
{
|
|
b += b2;
|
|
}
|
|
}
|
|
if (b == array7[array6.Length])
|
|
{
|
|
Array.Copy(array7, array6, array6.Length);
|
|
this.class46_0.byte_0 = this.class46_0.frmOnboard_0.method_2(new byte[][]
|
|
{
|
|
this.class46_0.byte_0,
|
|
array6
|
|
});
|
|
backgroundWorker.ReportProgress(this.class46_0.byte_0.Length);
|
|
}
|
|
else
|
|
{
|
|
flag2 = false;
|
|
}
|
|
if (array6[2] == 255 && array6[3] == 255 && array6[4] == 255 && array6[5] == 255 && array6[6] == 255 && array6[array6.Length - 8] == 255 && array6[array6.Length - 4] == 255 && array6[array6.Length - 2] == 255)
|
|
{
|
|
flag2 = false;
|
|
}
|
|
}
|
|
this.int_0 = ((int) stopwatch.ElapsedMilliseconds) / 0x3e8;
|
|
stopwatch.Stop();
|
|
}
|
|
}
|
|
}
|
|
|