Example #1
0
 public Downloader(HexFile hf, SerialConnection sc, byte receiveID, bool isBiosUpdate)
 {
     this.hf = hf;
     this.sc = sc;
     this.receiveID = receiveID;
     this.isBiosUpdate = isBiosUpdate;
 }
Example #2
0
 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;
 }
Example #3
0
        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;
        }
Example #4
0
        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);
        }
Example #5
0
        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) { }
        }