From e2952cdc77b8d2a9b42bc77965779ae896927c90 Mon Sep 17 00:00:00 2001 From: "David A. Mellis" Date: Mon, 1 Jun 2009 19:27:21 +0000 Subject: [PATCH] Enabling / integrating bootloader burning. (Should be tested with a serial AVRISP and a parallel programmer) --- app/src/processing/app/Editor.java | 32 ++++++++++++++++--- .../processing/app/debug/AvrdudeUploader.java | 4 +-- 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/app/src/processing/app/Editor.java b/app/src/processing/app/Editor.java index f0b4b9fd6..44ce92264 100644 --- a/app/src/processing/app/Editor.java +++ b/app/src/processing/app/Editor.java @@ -883,8 +883,7 @@ public class Editor extends JFrame implements RunnerListener { this.programmer = programmer; } public void actionPerformed(ActionEvent actionevent) { - // XXX: DAM: need to actually burn the bootloader here. - // handleBurnBootloader(programmer); + handleBurnBootloader(programmer); } } @@ -1084,7 +1083,7 @@ public class Editor extends JFrame implements RunnerListener { }); menu.add(item); - item = newJMenuItemShift("Copy for Discourse", 'C'); + item = newJMenuItemShift("Copy for Forum", 'C'); item.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // SwingUtilities.invokeLater(new Runnable() { @@ -2207,6 +2206,31 @@ public class Editor extends JFrame implements RunnerListener { } + protected void handleBurnBootloader(final String programmer) { + console.clear(); + statusNotice("Burning bootloader to I/O Board (this may take a minute)..."); + SwingUtilities.invokeLater(new Runnable() { + public void run() { + try { + Uploader uploader = new AvrdudeUploader(); + if (uploader.burnBootloader(programmer)) { + statusNotice("Done burning bootloader."); + } else { + statusError("Error while burning bootloader."); + // error message will already be visible + } + } catch (RunnerException e) { + statusError("Error while burning bootloader."); + e.printStackTrace(); + //statusError(e); + } catch (Exception e) { + statusError("Error while burning bootloader."); + e.printStackTrace(); + } + }}); + } + + /** * Handler for File → Page Setup. */ @@ -2376,7 +2400,7 @@ public class Editor extends JFrame implements RunnerListener { }); this.add(copyItem); - discourseItem = new JMenuItem("Copy for Discourse"); + discourseItem = new JMenuItem("Copy for Forum"); discourseItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { handleDiscourseCopy(); diff --git a/app/src/processing/app/debug/AvrdudeUploader.java b/app/src/processing/app/debug/AvrdudeUploader.java index c74f97f19..65726facc 100755 --- a/app/src/processing/app/debug/AvrdudeUploader.java +++ b/app/src/processing/app/debug/AvrdudeUploader.java @@ -126,7 +126,7 @@ public class AvrdudeUploader extends Uploader { } catch (InterruptedException e) {} List bootloader = new ArrayList(); - bootloader.add("-Uflash:w:" + "hardware" + File.separator + "bootloaders" + File.separator + + bootloader.add("-Uflash:w:" + Base.getHardwarePath() + File.separator + "bootloaders" + File.separator + Preferences.get("boards." + Preferences.get("board") + ".bootloader.path") + File.separator + Preferences.get("boards." + Preferences.get("board") + ".bootloader.file") + ":i"); bootloader.add("-Ulock:w:" + Preferences.get("boards." + Preferences.get("board") + ".bootloader.lock_bits") + ":m"); @@ -148,7 +148,7 @@ public class AvrdudeUploader extends Uploader { if (Base.isLinux()) { // ???: is it better to have Linux users install avrdude themselves, in // a way that it can find its own configuration file? - commandDownloader.add("-C" + "hardware/tools/avrdude.conf"); + commandDownloader.add("-C" + Base.getHardwarePath() + "/tools/avrdude.conf"); } else { commandDownloader.add("-C" + Base.getHardwarePath() + "/tools/avr/etc/avrdude.conf"); }