public Downloader(HexFile hf, SerialConnection sc, byte receiveID, bool isBiosUpdate) { this.hf = hf; this.sc = sc; this.receiveID = receiveID; this.isBiosUpdate = isBiosUpdate; }
public Downloader(HexFile hf, SerialConnection sc, byte myId, byte targetId, downloadMode downloadmode, byte tmp_new_id) { this.hf = hf; this.sc = sc; this.MY_ID = myId; this.TARGET_ID = targetId; this.downloadmode = downloadmode; this.tmp_new_id = tmp_new_id; }
private static bool parseInput(string instr) { if (instr.Equals("load")) { Console.WriteLine("loading..."); //string filepath = "/home/arune/eclipse/c/AVR-App/main.hex"; string filepath = argHexfile; hf = new HexFile(); if (hf.loadHex(filepath)) { Console.WriteLine("done!"); Console.WriteLine("File "+filepath+" loaded."); Console.WriteLine("Size: " + hf.getLength().ToString() + " bytes, end adress " + hf.getAddrUpper().ToString() + "(0x" + hf.getAddrUpper().ToString("X") + ")."); } else Console.WriteLine("Error loading " + filepath + "!"); } else if (instr.Equals("go")) { Console.WriteLine("Connecting.."); sc = new SerialConnection(); try { sc.setConfiguration(argBaud, System.IO.Ports.Parity.None, argPort, System.IO.Ports.StopBits.One, 8, false); } catch (Exception e) { Console.WriteLine("Error: " + e.Message); return true; } if (!sc.open()) { Console.WriteLine("Error opening port."); return true; } dl = new Downloader(hf, sc, argReceiverID, false); if (!dl.go()) { Console.WriteLine("Error gooing..."); return true; } sc.close(); } else if (instr.Equals("go bios")) { Console.WriteLine("Connecting.."); sc = new SerialConnection(); try { sc.setConfiguration(argBaud, System.IO.Ports.Parity.None, argPort, System.IO.Ports.StopBits.One, 8, false); } catch (Exception e) { Console.WriteLine("Error: " + e.Message); return true; } if (!sc.open()) { Console.WriteLine("Error opening port."); return true; } dl = new Downloader(hf, sc, argReceiverID, true); if (!dl.go()) { Console.WriteLine("Error gooing..."); return true; } sc.close(); } else if (instr.Equals("start")) { Console.WriteLine("Starting.."); sc = new SerialConnection(); try { sc.setConfiguration(argBaud, System.IO.Ports.Parity.None, argPort, System.IO.Ports.StopBits.One, 8, false); } catch (Exception e) { Console.WriteLine("Error: " + e.Message); return true; } if (!sc.open()) { Console.WriteLine("Error opening port."); return true; } byte[] data = new byte[8]; CanPacket cp = new CanPacket(CAN_NMT, CAN_NMT_START_APP, MY_ID, argReceiverID, 0, data); sc.writePacket(cp); sc.close(); } else if (instr.Equals("reset")) { Console.WriteLine("Resetting.."); sc = new SerialConnection(); try { sc.setConfiguration(argBaud, System.IO.Ports.Parity.None, argPort, System.IO.Ports.StopBits.One, 8, false); } catch (Exception e) { Console.WriteLine("Error: " + e.Message); return true; } if (!sc.open()) { Console.WriteLine("Error opening port."); return true; } byte[] data = new byte[8]; CanPacket cp = new CanPacket(CAN_NMT, CAN_NMT_RESET, MY_ID, argReceiverID, 0, data); sc.writePacket(cp); sc.close(); } else if (instr.Equals("abort")) { if (dl != null) dl.abort(); } else if (instr.Equals("exit")) { return false; } else { Console.WriteLine("Unknown command."); } return true; }
private void download(Downloader.downloadMode downloadmode) { if (dl != null) { log("Process in progress..."); return; } if (downloadmode == Downloader.downloadMode.PROGRAM) { loadFile(currentLoadedFile); if (hf == null) { log("No hexfile loaded."); return; } } if (currentTarget == null) { log("No target selected."); return; } sc = new SerialConnection(); try { sc.setConfiguration((int)serialSettings["baud"], (System.IO.Ports.Parity)Enum.Parse(typeof(System.IO.Ports.Parity), serialSettings["parity"].ToString()), (string)serialSettings["port"], (System.IO.Ports.StopBits)Enum.Parse(typeof(System.IO.Ports.StopBits), serialSettings["stopbits"].ToString()), (int)serialSettings["databits"], false); } catch (Exception e) { log("Error setting serial connection settings: " + e.Message); setTrayIcon(TrayIcon.FAIL); return; } if (!sc.open()) { log("Error opening port."); setTrayIcon(TrayIcon.FAIL); return; } dl = new Downloader(hf, sc, myid, currentTarget.getTargetId(), downloadmode, tmp_new_id); if (!dl.go()) { log("Error downloading/ID change..."); setTrayIcon(TrayIcon.FAIL); return; } setTrayIcon(TrayIcon.DOWNLOADING); downloadTimeout.Stop(); downloadTimeout.Start(); downloadTimeout.Enabled = true; if (downloadmode == Downloader.downloadMode.PROGRAM) { log("Downloading..."); } else if (downloadmode == Downloader.downloadMode.CHANGE_ID) { log("Changeing ID."); } dl.threadAbort += new EventHandler(dl_threadAbort); }
void dl_threadAbort(object sender, EventArgs e) { try { this.BeginInvoke((ThreadStart)delegate { threadAbortEvent e2 = (threadAbortEvent)e; switch(e2.getAbortMode()) { case Downloader.abortMode.CHANGE_ID: log("ID and NID changed."); setTrayIcon(TrayIcon.OK); break; case Downloader.abortMode.PROGRAM: log("Download done. Time spent: " + e2.getTimeS().ToString() + " seconds. " + Math.Round(e2.getBps(), 0) + " Bps"); setTrayIcon(TrayIcon.OK); break; case Downloader.abortMode.USER: log("Download aborted."); break; } sc.close(); sc = null; dl = null; downloadTimeout.Enabled = false; }); } catch (InvalidOperationException) { } }