public override bool ProgramFirmware(string FilePath, Action <double> Progress) { try { uploader.IHex Hex = new uploader.IHex(); Hex.load(FilePath); if (SearchHex(Hex, GetFirmwareSearchTokens())) { uploader.Uploader UL = new uploader.Uploader(); UL.ProgressEvent += (d) => Progress(d); UL.upload(_Session.Port, Hex); return(true); } else { ShowWrongFirmwareMessageBox(); return(false); } } catch { return(false); } }
private void try_upload(string filename) { // load the intelhex file ihex.load(filename); // and try to upload it upl.upload(port, ihex); }
private void UploadFW(bool custom = false) { ICommsSerial comPort = new SerialPort(); var uploader = new Uploader(); if (MainV2.comPort.BaseStream.IsOpen) { try { getTelemPortWithRadio(ref comPort); uploader.PROG_MULTI_MAX = 64; } catch (Exception ex) { CustomMessageBox.Show("Error " + ex); } } try { comPort.PortName = MainV2.comPort.BaseStream.PortName; comPort.BaudRate = 115200; comPort.Open(); } catch { CustomMessageBox.Show("Invalid ComPort or in use"); return; } // prep what we are going to upload var iHex = new IHex(); iHex.LogEvent += iHex_LogEvent; iHex.ProgressEvent += iHex_ProgressEvent; var bootloadermode = false; // attempt bootloader mode try { if (upload_xmodem(comPort)) { comPort.Close(); return; } comPort.BaudRate = 115200; uploader_ProgressEvent(0); uploader_LogEvent("Trying Bootloader Mode"); uploader.port = comPort; uploader.connect_and_sync(); uploader.ProgressEvent += uploader_ProgressEvent; uploader.LogEvent += uploader_LogEvent; uploader_LogEvent("In Bootloader Mode"); bootloadermode = true; } catch (Exception ex1) { log.Error(ex1); // cleanup bootloader mode fail, and try firmware mode comPort.Close(); if (MainV2.comPort.BaseStream.IsOpen) { // default baud... guess comPort.BaudRate = 57600; } else { comPort.BaudRate = MainV2.comPort.BaseStream.BaudRate; } try { comPort.Open(); } catch { CustomMessageBox.Show("Error opening port", "Error"); return; } uploader.ProgressEvent += uploader_ProgressEvent; uploader.LogEvent += uploader_LogEvent; uploader_LogEvent("Trying Firmware Mode"); bootloadermode = false; } // check for either already bootloadermode, or if we can do a ATI to ID the firmware if (bootloadermode || doConnect(comPort)) { // put into bootloader mode/update mode if (!bootloadermode) { try { comPort.Write("AT&UPDATE\r\n"); var left = comPort.ReadExisting(); log.Info(left); Sleep(700); comPort.BaudRate = 115200; } catch { } if (upload_xmodem(comPort)) { comPort.Close(); return; } comPort.BaudRate = 115200; } try { // force sync after changing baudrate uploader.connect_and_sync(); } catch { CustomMessageBox.Show("Failed to sync with Radio"); goto exit; } var device = Uploader.Board.FAILED; var freq = Uploader.Frequency.FAILED; // get the device type and frequency in the bootloader uploader.getDevice(ref device, ref freq); // get firmware for this device if (getFirmware(device, custom)) { // load the hex try { iHex.load(firmwarefile); } catch { CustomMessageBox.Show("Bad Firmware File"); goto exit; } // upload the hex and verify try { uploader.upload(comPort, iHex); } catch (Exception ex) { CustomMessageBox.Show("Upload Failed " + ex.Message); } } else { CustomMessageBox.Show("Failed to download new firmware"); } } else { CustomMessageBox.Show("Failed to identify Radio"); } exit: if (comPort.IsOpen) comPort.Close(); }
private void UploadFW() { SerialPort comPort = new SerialPort(); var uploader = new Uploader(); try { comPort.PortName = PortName; comPort.BaudRate = 115200; comPort.Open(); } catch { log("Invalid ComPort or in use"); return; } uploader.ProgressEvent += progress; uploader.LogEvent += log; // prep what we are going to upload var iHex = new IHex(); var bootloadermode = false; // attempt bootloader mode try { comPort.BaudRate = 115200; log("Trying Bootloader Mode"); uploader.port = comPort; uploader.connect_and_sync(); log("In Bootloader Mode"); bootloadermode = true; } catch (Exception ex1) { log(ex1.Message); // cleanup bootloader mode fail, and try firmware mode comPort.Close(); if (comPort.IsOpen) { // default baud... guess comPort.BaudRate = 57600; } else { comPort.BaudRate = BaudRate; } try { comPort.Open(); } catch { log("Error opening port"); return; } log("Trying Firmware Mode"); bootloadermode = false; } // check for either already bootloadermode, or if we can do a ATI to ID the firmware if (bootloadermode || doConnect(comPort)) { // put into bootloader mode/update mode if (!bootloadermode) { try { comPort.Write("AT&UPDATE\r\n"); var left = comPort.ReadExisting(); log(left); Sleep(700); comPort.BaudRate = 115200; } catch { } comPort.BaudRate = 115200; } try { // force sync after changing baudrate uploader.connect_and_sync(); } catch { log("Failed to sync with Radio"); goto exit; } var device = Uploader.Board.FAILED; var freq = Uploader.Frequency.FAILED; // get the device type and frequency in the bootloader uploader.getDevice(ref device, ref freq); // load the hex try { iHex.load(FileName); } catch { log("Bad Firmware File"); goto exit; } // upload the hex and verify try { uploader.upload(comPort, iHex); } catch (Exception ex) { log("Upload Failed " + ex.Message); } } else { log("Failed to identify Radio"); } exit: if (comPort.IsOpen) { comPort.Close(); } }