private void UpgradeFirmware() { Application.DoEvents(); try { WDS_MainProg.frameWin().DisablePlugAndPlay(); progressDlg.Show(this); _ioph.terminate(); Thread.Sleep(100); ADTRecord adtRecord = _ioph.getAdtRecord(); FirmwareDownloadResult stoppedWithError = new IO_FD_Main(adtRecord).DownloadFirmware(_latestFirmware, new UpdateFirmwareCallback(firmwareUpdateCallback), null); if (stoppedWithError == FirmwareDownloadResult.OK) { IOPortAddress.HIDAddress hidAddr = adtRecord.PortAddress.hidAddr; FormWait wait = new FormWait(hidAddr.VID, hidAddr.PID, hidAddr.Serial, false, 0x1388, 100) { Text = "Enumerating Application..." }; if (wait.ShowDialog() != DialogResult.OK) { firmwareUpdateCallback(0, true, "There was an error trying to reenumerate in application mode.", MessageBoxButtons.OK); stoppedWithError = FirmwareDownloadResult.StoppedWithError; } adtRecord.PortAddress.handle = DDI_HID.instance().open(adtRecord, ' '); ADTManager.instance().addADTRecord(adtRecord); } _ioph = new IOPH_DCP(adtRecord, this); _ioph.initialize(); createCloseWindowController(); progressDlg.Close(); WDS_MainProg.frameWin().RestorePlugAndPlay(); if (stoppedWithError != FirmwareDownloadResult.OK) { _log.Warn("RF_To_USB_Network_Demo: Mainboard firmware download failed"); _ioph.terminate(); base.Close(); } } catch { _log.Warn("RF_To_USB_Network_Demo: Mainboard firmware download failed"); _ioph.terminate(); base.Close(); } }