private async void SavePartition(string filename) { await partition.CreatePartition(Nvs, Ota0, Ota1, Eeprom, Spiffs); File.Copy(partition.GetPartitionPath(filename.EndsWith(".bin")), filename, true); }
private async void editPartitionTableToolStripMenuItem_Click(object sender, EventArgs e) { Regex re = new Regex(@"(\d+)(\.\d+)?\s*"); var m = re.Matches(tool.Flash); if (m.Count > 0) { PartTool pt = new PartTool(int.Parse(m[0].Value), partition); foreach (ListViewItem lv in partitionListview.Items) { m = re.Matches(lv.SubItems[4].Text); double size = double.Parse(m[0].Value); if (m.Count > 1) { double.Parse(m[0].Value + "." + m[1].Value); } if (lv.SubItems[4].Text.IndexOf("k") > 0) { size *= 1024; } if (lv.SubItems[4].Text.IndexOf("M") > 0) { size *= 1024 * 1024; } size = Convert.ToInt32(size); switch (lv.Text.Replace("\0", "").Trim()) { case "nvs": pt.SetNvs(int.Parse(size.ToString())); break; case "eeprom": pt.SetEeprom(int.Parse(size.ToString())); break; case "app0": pt.SetOta0(int.Parse(size.ToString()), null); break; case "app1": pt.SetOta1(int.Parse(size.ToString())); break; case "spiffs": pt.SetSpiffs(int.Parse(size.ToString())); break; } } if (pt.ShowDialog() == DialogResult.Yes) { var res = partition.CreatePartition(PartTool.Nvs, PartTool.Ota0, PartTool.Ota1, PartTool.Eeprom, PartTool.Spiffs); await tool.Execute("--before default_reset --after hard_reset write_flash 0x8000 part.bin"); FillPartitionTab(); } } else { MessageBox.Show("Unable to get flash size. Connect device before execute this function.", "Error"); } }