public PatchCreatorWindow
        (
            [NotNull] FirmwareLoader firmwareLoader,
            [NotNull] PatchManager patchManager,
            [NotNull] IEnumerable <FirmwareDefinition> firmwareDefinitions
        ) : this()
        {
            if (firmwareLoader == null)
            {
                throw new ArgumentNullException("firmwareLoader");
            }
            if (patchManager == null)
            {
                throw new ArgumentNullException("patchManager");
            }
            if (firmwareDefinitions == null)
            {
                throw new ArgumentNullException("firmwareDefinitions");
            }

            m_loader              = firmwareLoader;
            m_patchManager        = patchManager;
            m_firmwareDefinitions = firmwareDefinitions;
            AuthorTextBox.Text    = Environment.UserName;
            foreach (var firmwareDefinition in m_firmwareDefinitions)
            {
                DefinitionComboBox.Items.Add(firmwareDefinition.Name);
            }
        }
Example #2
0
 private void FileChannelHandler(byte[] segment)
 {
     if (segment.Length == 3 && Encoding.Default.GetString(segment) == "EOF")
     {
         string file_name = UserAssignedFile.Name;
         Console.WriteLine("Received file with size: {0}", UserAssignedFile.Length);
         UserAssignedFile.Close();
         try
         {
             Task <string> t = FirmwareLoader.RunQuartusCommandAsync($"quartus_pgm -m jtag –o \"p;{file_name}@1\"");
             t.ContinueWith((task) => {
                 File.Delete(file_name);
                 FileCreated = false;
             });
         }
         catch (Exception ex)
         {
             Console.WriteLine("Exception: {0}", ex.Message);
         }
     }
     else
     {
         WriteFileSegment(segment, UserAssignedFile);
     }
 }
Example #3
0
        private void OkButton_Click(object sender, EventArgs e)
        {
            string fileName;

            using (var op = new OpenFileDialog {
                Title = @"Select encrypted or decrypted firmware file ...", Filter = Consts.FirmwareFilter
            })
            {
                if (op.ShowDialog() != DialogResult.OK)
                {
                    return;
                }
                fileName = op.FileName;
            }

            try
            {
                var firmware = m_loader.LoadFile(fileName);
                if (FirmwareLoader.FindByteArray(firmware, Encoding.UTF8.GetBytes(m_connectedDeviceProductId)) == -1)
                {
                    InfoBox.Show("Selected firmware file is not suitable for the connected device.");
                    return;
                }
                m_worker.RunWorkerAsync(firmware);
            }
            catch (Exception ex)
            {
                InfoBox.Show("An exception occured during firmware update.\n" + ex.Message);
            }
        }
Example #4
0
        public FirmwareUpdaterWindow(Firmware firmware, FirmwareLoader loader)
        {
            InitializeComponent();
            Icon = NFEPaths.ApplicationIcon;
            InitializeControls();

            m_firmware                = firmware;
            m_loader                  = loader;
            m_worker.DoWork          += BackgroundWorker_DoWork;
            m_worker.ProgressChanged += BackgroundWorker_ProgressChanged;

            Load += (s, e) =>
            {
                // When form shown as dialog we dont need to handle click event to close it,
                // otherwise we need to close application mannualy.
                if (!Modal)
                {
                    CancelButton.Click += (s1, e1) => Application.Exit();
                }
            };

            Closing += (s, e) =>
            {
                if (!CancelButton.Enabled)
                {
                    e.Cancel = true;
                    return;
                }
                HidConnector.Instance.DeviceConnected -= DeviceConnected;
            };
        }
Example #5
0
        public override void RemoveRemoteControlling(PeerConnection Connection)
        {
            // Removing handler of data channel adding
            Connection.DataChannelAdded -= DataChannelAddedHandler;

            // Closing opened file, destroying Arduino input emulator and Quartus firmware loader
            InputEmulator?.Close();
            UserAssignedFile?.Close();
            FirmwareLoader?.Close();
        }
Example #6
0
        public FirmwareUpdaterWindow(FirmwareLoader loader)
        {
            InitializeComponent();
            Icon = Paths.ApplicationIcon;
            InitializeControls();

            m_loader                  = loader;
            m_worker.DoWork          += BackgroundWorker_DoWork;
            m_worker.ProgressChanged += BackgroundWorker_ProgressChanged;
        }
        public FirmwareUpdaterWindow(Firmware firmware, FirmwareLoader loader)
        {
            InitializeComponent();
            Icon = Paths.ApplicationIcon;
            InitializeControls();

            m_firmware = firmware;
            m_loader = loader;
            m_worker.DoWork += BackgroundWorker_DoWork;
            m_worker.ProgressChanged += BackgroundWorker_ProgressChanged;
        }
        private void UpdateFirmware(Func <byte[]> firmwareFunc)
        {
            var skipValidation = ModifierKeys.HasFlag(Keys.Control) && ModifierKeys.HasFlag(Keys.Alt);

            try
            {
                var firmware = firmwareFunc();
                if (!skipValidation && FirmwareLoader.FindByteArray(firmware, Encoding.UTF8.GetBytes(m_connectedDeviceProductId)) == -1)
                {
                    InfoBox.Show("Opened firmware file is not suitable for the connected device.");
                    return;
                }
                m_worker.RunWorkerAsync(new AsyncProcessWrapper(worker => UpdateFirmwareAsyncWorker(worker, firmware)));
            }
            catch (Exception ex)
            {
                InfoBox.Show("An error occured during firmware update.\n" + ex.Message);
            }
        }
Example #9
0
        public DecryptionWindow()
        {
            InitializeComponent();

            m_encoder = new JoyetechEncryption();
            m_loader  = new FirmwareLoader();

            SelectSourceButton.Click  += SelectSourceButton_Click;
            SourceTextBox.TextChanged += (s, e) =>
            {
                SelectDestinationButton.Enabled = !string.IsNullOrEmpty(SourceTextBox.Text);
            };
            SelectDestinationButton.Click  += SelectDestinationButton_Click;
            DestinationTextBox.TextChanged += (s, e) =>
            {
                EncryptDecryptButton.Enabled = !string.IsNullOrEmpty(DestinationTextBox.Text);
            };

            EncryptDecryptButton.Click += EncryptDecryptButton_Click;
        }
        public FirmwareUpdaterWindow(Firmware firmware, FirmwareLoader loader)
        {
            InitializeComponent();
            Icon = Paths.ApplicationIcon;
            InitializeControls();

            m_firmware                = firmware;
            m_loader                  = loader;
            m_worker.DoWork          += BackgroundWorker_DoWork;
            m_worker.ProgressChanged += BackgroundWorker_ProgressChanged;

            Load += (s, e) =>
            {
                // When form shown as dialog we dont need to handle click event to close it,
                // otherwise we need to close application mannualy.
                if (!Modal)
                {
                    CancelButton.Click += (s1, e1) => Application.Exit();
                }
            };
        }