1
0
mirror of https://github.com/arduino/Arduino.git synced 2025-02-21 15:54:39 +01:00

Merge remote-tracking branch 'upstream/ide-1.5.x' into ide-1.5.x-library-to-new-format

This commit is contained in:
Fede85 2013-07-19 13:23:59 +02:00
commit 0bb3313427
12 changed files with 102 additions and 38 deletions

View File

@ -1169,10 +1169,15 @@ public class Base {
continue; continue;
} }
Library lib = Library.create(subfolder); try {
// (also replace previously found libs with the same name) Library lib = Library.create(subfolder);
if (lib != null) // (also replace previously found libs with the same name)
res.addOrReplace(lib); if (lib != null)
res.addOrReplace(lib);
} catch (IOException e) {
System.out.println(I18n.format(_("Invalid library found in {0}: {1}"),
subfolder, e.getMessage()));
}
} }
return res; return res;
} }

View File

@ -23,6 +23,7 @@
package processing.app; package processing.app;
import processing.app.debug.*; import processing.app.debug.*;
import processing.app.helpers.PreferencesMapException;
import processing.app.syntax.*; import processing.app.syntax.*;
import processing.app.tools.*; import processing.app.tools.*;
import processing.core.*; import processing.core.*;
@ -2432,6 +2433,10 @@ public class Editor extends JFrame implements RunnerListener {
if (serialMenu.getItemCount() == 0) statusError(e); if (serialMenu.getItemCount() == 0) statusError(e);
else if (serialPrompt()) run(); else if (serialPrompt()) run();
else statusNotice(_("Upload canceled.")); else statusNotice(_("Upload canceled."));
} catch (PreferencesMapException e) {
statusError(I18n.format(
_("Error while uploading: missing '{0}' configuration parameter"),
e.getMessage()));
} catch (RunnerException e) { } catch (RunnerException e) {
//statusError("Error during upload."); //statusError("Error during upload.");
//e.printStackTrace(); //e.printStackTrace();
@ -2468,6 +2473,10 @@ public class Editor extends JFrame implements RunnerListener {
if (serialMenu.getItemCount() == 0) statusError(e); if (serialMenu.getItemCount() == 0) statusError(e);
else if (serialPrompt()) run(); else if (serialPrompt()) run();
else statusNotice(_("Upload canceled.")); else statusNotice(_("Upload canceled."));
} catch (PreferencesMapException e) {
statusError(I18n.format(
_("Error while uploading: missing '{0}' configuration parameter"),
e.getMessage()));
} catch (RunnerException e) { } catch (RunnerException e) {
//statusError("Error during upload."); //statusError("Error during upload.");
//e.printStackTrace(); //e.printStackTrace();
@ -2543,9 +2552,10 @@ public class Editor extends JFrame implements RunnerListener {
statusError(_("Error while burning bootloader.")); statusError(_("Error while burning bootloader."));
// error message will already be visible // error message will already be visible
} }
} catch (RunnerException e) { } catch (PreferencesMapException e) {
statusError(_("Error while burning bootloader.")); statusError(I18n.format(
e.printStackTrace(); _("Error while burning bootloader: missing '{0}' configuration parameter"),
e.getMessage()));
//statusError(e); //statusError(e);
} catch (Exception e) { } catch (Exception e) {
statusError(_("Error while burning bootloader.")); statusError(_("Error while burning bootloader."));

View File

@ -1581,7 +1581,7 @@ public class Sketch {
* Handle export to applet. * Handle export to applet.
*/ */
public boolean exportApplet(String appletPath, boolean usingProgrammer) public boolean exportApplet(String appletPath, boolean usingProgrammer)
throws RunnerException, IOException, SerialException { throws Exception {
prepare(); prepare();
@ -1660,7 +1660,7 @@ public class Sketch {
} }
protected String upload(String buildPath, String suggestedClassName, boolean usingProgrammer) protected String upload(String buildPath, String suggestedClassName, boolean usingProgrammer)
throws RunnerException, SerialException { throws Exception {
Uploader uploader; Uploader uploader;

View File

@ -37,6 +37,7 @@ import processing.app.Preferences;
import processing.app.Serial; import processing.app.Serial;
import processing.app.SerialException; import processing.app.SerialException;
import processing.app.helpers.PreferencesMap; import processing.app.helpers.PreferencesMap;
import processing.app.helpers.PreferencesMapException;
import processing.app.helpers.StringReplacer; import processing.app.helpers.StringReplacer;
import static processing.app.I18n._; import static processing.app.I18n._;
@ -45,12 +46,18 @@ public class BasicUploader extends Uploader {
public boolean uploadUsingPreferences(String buildPath, String className, public boolean uploadUsingPreferences(String buildPath, String className,
boolean usingProgrammer) boolean usingProgrammer)
throws RunnerException, SerialException { throws Exception {
// FIXME: Preferences should be reorganized // FIXME: Preferences should be reorganized
TargetPlatform targetPlatform = Base.getTargetPlatform(); TargetPlatform targetPlatform = Base.getTargetPlatform();
PreferencesMap prefs = Preferences.getMap(); PreferencesMap prefs = Preferences.getMap();
prefs.putAll(Base.getBoardPreferences()); prefs.putAll(Base.getBoardPreferences());
prefs.putAll(targetPlatform.getTool(prefs.get("upload.tool"))); String tool = prefs.getOrExcept("upload.tool");
if (tool.contains(":")) {
String[] split = tool.split(":", 2);
targetPlatform = Base.getCurrentTargetPlatformFromPackage(split[0]);
tool = split[1];
}
prefs.putAll(targetPlatform.getTool(tool));
// if no protocol is specified for this board, assume it lacks a // if no protocol is specified for this board, assume it lacks a
// bootloader and upload using the selected programmer. // bootloader and upload using the selected programmer.
@ -71,7 +78,7 @@ public class BasicUploader extends Uploader {
boolean waitForUploadPort = (t != null) && t.equals("true"); boolean waitForUploadPort = (t != null) && t.equals("true");
if (doTouch) { if (doTouch) {
String uploadPort = prefs.get("serial.port"); String uploadPort = prefs.getOrExcept("serial.port");
try { try {
// Toggle 1200 bps on selected serial port to force board reset. // Toggle 1200 bps on selected serial port to force board reset.
List<String> before = Serial.list(); List<String> before = Serial.list();
@ -109,9 +116,9 @@ public class BasicUploader extends Uploader {
prefs.put("build.path", buildPath); prefs.put("build.path", buildPath);
prefs.put("build.project_name", className); prefs.put("build.project_name", className);
if (verbose) if (verbose)
prefs.put("upload.verbose", prefs.get("upload.params.verbose")); prefs.put("upload.verbose", prefs.getOrExcept("upload.params.verbose"));
else else
prefs.put("upload.verbose", prefs.get("upload.params.quiet")); prefs.put("upload.verbose", prefs.getOrExcept("upload.params.quiet"));
boolean uploadResult; boolean uploadResult;
try { try {
@ -120,7 +127,7 @@ public class BasicUploader extends Uploader {
// flushSerialBuffer(); // flushSerialBuffer();
// } // }
String pattern = prefs.get("upload.pattern"); String pattern = prefs.getOrExcept("upload.pattern");
String[] cmd = StringReplacer.formatAndSplit(pattern, prefs, true); String[] cmd = StringReplacer.formatAndSplit(pattern, prefs, true);
uploadResult = executeUploadCommand(cmd); uploadResult = executeUploadCommand(cmd);
} catch (Exception e) { } catch (Exception e) {
@ -211,7 +218,7 @@ public class BasicUploader extends Uploader {
} }
public boolean uploadUsingProgrammer(String buildPath, String className) public boolean uploadUsingProgrammer(String buildPath, String className)
throws RunnerException { throws Exception {
TargetPlatform targetPlatform = Base.getTargetPlatform(); TargetPlatform targetPlatform = Base.getTargetPlatform();
String programmer = Preferences.get("programmer"); String programmer = Preferences.get("programmer");
@ -224,15 +231,15 @@ public class BasicUploader extends Uploader {
PreferencesMap prefs = Preferences.getMap(); PreferencesMap prefs = Preferences.getMap();
prefs.putAll(Base.getBoardPreferences()); prefs.putAll(Base.getBoardPreferences());
prefs.putAll(targetPlatform.getProgrammer(programmer)); prefs.putAll(targetPlatform.getProgrammer(programmer));
prefs.putAll(targetPlatform.getTool(prefs.get("program.tool"))); prefs.putAll(targetPlatform.getTool(prefs.getOrExcept("program.tool")));
prefs.put("build.path", buildPath); prefs.put("build.path", buildPath);
prefs.put("build.project_name", className); prefs.put("build.project_name", className);
if (verbose) if (verbose)
prefs.put("program.verbose", prefs.get("program.params.verbose")); prefs.put("program.verbose", prefs.getOrExcept("program.params.verbose"));
else else
prefs.put("program.verbose", prefs.get("program.params.quiet")); prefs.put("program.verbose", prefs.getOrExcept("program.params.quiet"));
try { try {
// if (prefs.get("program.disable_flushing") == null // if (prefs.get("program.disable_flushing") == null
@ -241,7 +248,7 @@ public class BasicUploader extends Uploader {
// flushSerialBuffer(); // flushSerialBuffer();
// } // }
String pattern = prefs.get("program.pattern"); String pattern = prefs.getOrExcept("program.pattern");
String[] cmd = StringReplacer.formatAndSplit(pattern, prefs, true); String[] cmd = StringReplacer.formatAndSplit(pattern, prefs, true);
return executeUploadCommand(cmd); return executeUploadCommand(cmd);
} catch (Exception e) { } catch (Exception e) {
@ -249,7 +256,7 @@ public class BasicUploader extends Uploader {
} }
} }
public boolean burnBootloader() throws RunnerException { public boolean burnBootloader() throws RunnerException, PreferencesMapException {
TargetPlatform targetPlatform = Base.getTargetPlatform(); TargetPlatform targetPlatform = Base.getTargetPlatform();
// Find preferences for the selected programmer // Find preferences for the selected programmer
@ -272,7 +279,7 @@ public class BasicUploader extends Uploader {
// Create configuration for bootloader tool // Create configuration for bootloader tool
PreferencesMap toolPrefs = new PreferencesMap(); PreferencesMap toolPrefs = new PreferencesMap();
String tool = prefs.get("bootloader.tool"); String tool = prefs.getOrExcept("bootloader.tool");
if (tool.contains(":")) { if (tool.contains(":")) {
String[] split = tool.split(":", 2); String[] split = tool.split(":", 2);
TargetPlatform platform = Base.getCurrentTargetPlatformFromPackage(split[0]); TargetPlatform platform = Base.getCurrentTargetPlatformFromPackage(split[0]);
@ -291,20 +298,20 @@ public class BasicUploader extends Uploader {
// Merge tool with global configuration // Merge tool with global configuration
prefs.putAll(toolPrefs); prefs.putAll(toolPrefs);
if (verbose) { if (verbose) {
prefs.put("erase.verbose", prefs.get("erase.params.verbose")); prefs.put("erase.verbose", prefs.getOrExcept("erase.params.verbose"));
prefs.put("bootloader.verbose", prefs.get("bootloader.params.verbose")); prefs.put("bootloader.verbose", prefs.getOrExcept("bootloader.params.verbose"));
} else { } else {
prefs.put("erase.verbose", prefs.get("erase.params.quiet")); prefs.put("erase.verbose", prefs.getOrExcept("erase.params.quiet"));
prefs.put("bootloader.verbose", prefs.get("bootloader.params.quiet")); prefs.put("bootloader.verbose", prefs.getOrExcept("bootloader.params.quiet"));
} }
try { try {
String pattern = prefs.get("erase.pattern"); String pattern = prefs.getOrExcept("erase.pattern");
String[] cmd = StringReplacer.formatAndSplit(pattern, prefs, true); String[] cmd = StringReplacer.formatAndSplit(pattern, prefs, true);
if (!executeUploadCommand(cmd)) if (!executeUploadCommand(cmd))
return false; return false;
pattern = prefs.get("bootloader.pattern"); pattern = prefs.getOrExcept("bootloader.pattern");
cmd = StringReplacer.formatAndSplit(pattern, prefs, true); cmd = StringReplacer.formatAndSplit(pattern, prefs, true);
return executeUploadCommand(cmd); return executeUploadCommand(cmd);
} catch (Exception e) { } catch (Exception e) {

View File

@ -23,11 +23,14 @@
*/ */
package processing.app.debug; package processing.app.debug;
import static processing.app.I18n._;
import java.io.File; import java.io.File;
import java.util.Collection; import java.util.Collection;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.Map; import java.util.Map;
import processing.app.I18n;
import processing.app.helpers.filefilters.OnlyDirs; import processing.app.helpers.filefilters.OnlyDirs;
public class TargetPackage { public class TargetPackage {
@ -47,8 +50,18 @@ public class TargetPackage {
if (!subFolder.exists() || !subFolder.canRead()) if (!subFolder.exists() || !subFolder.canRead())
continue; continue;
String arch = subFolder.getName(); String arch = subFolder.getName();
TargetPlatform platform = new TargetPlatform(arch, subFolder, this); try {
platforms.put(arch, platform); TargetPlatform platform = new TargetPlatform(arch, subFolder, this);
platforms.put(arch, platform);
} catch (TargetPlatformException e) {
System.out.println(e.getMessage());
}
}
if (platforms.size() == 0) {
throw new TargetPlatformException(I18n
.format(_("No valid hardware definitions found in folder {0}."),
_folder.getName()));
} }
} }

View File

@ -35,7 +35,6 @@ import java.util.Collection;
import processing.app.I18n; import processing.app.I18n;
import processing.app.Preferences; import processing.app.Preferences;
import processing.app.Serial; import processing.app.Serial;
import processing.app.SerialException;
import processing.app.SerialNotFoundException; import processing.app.SerialNotFoundException;
public abstract class Uploader implements MessageConsumer { public abstract class Uploader implements MessageConsumer {
@ -52,11 +51,11 @@ public abstract class Uploader implements MessageConsumer {
boolean verbose; boolean verbose;
public abstract boolean uploadUsingPreferences(String buildPath, String className, boolean usingProgrammer) public abstract boolean uploadUsingPreferences(String buildPath, String className, boolean usingProgrammer)
throws RunnerException, SerialException; throws Exception;
public abstract boolean burnBootloader() throws RunnerException; public abstract boolean burnBootloader() throws Exception;
protected void flushSerialBuffer() throws RunnerException, SerialException { protected void flushSerialBuffer() throws Exception {
// Cleanup the serial buffer // Cleanup the serial buffer
try { try {
Serial serialPort = new Serial(); Serial serialPort = new Serial();
@ -87,14 +86,14 @@ public abstract class Uploader implements MessageConsumer {
} }
protected boolean executeUploadCommand(Collection<String> commandDownloader) protected boolean executeUploadCommand(Collection<String> commandDownloader)
throws RunnerException { throws Exception {
String[] commandArray = new String[commandDownloader.size()]; String[] commandArray = new String[commandDownloader.size()];
commandDownloader.toArray(commandArray); commandDownloader.toArray(commandArray);
return executeUploadCommand(commandArray); return executeUploadCommand(commandArray);
} }
protected boolean executeUploadCommand(String commandArray[]) protected boolean executeUploadCommand(String commandArray[])
throws RunnerException throws Exception
{ {
firstErrorFound = false; // haven't found any errors yet firstErrorFound = false; // haven't found any errors yet
secondErrorFound = false; secondErrorFound = false;

View File

@ -245,6 +245,22 @@ public class PreferencesMap extends LinkedHashMap<String, String> {
return res; return res;
} }
/**
* Returns the value to which the specified key is mapped, or throws a
* PreferencesMapException if not found
*
* @param k
* the key whose associated value is to be returned
* @return the value to which the specified key is mapped
* @throws PreferencesMapException
*/
public String getOrExcept(String k) throws PreferencesMapException {
String r = get(k);
if (r == null)
throw new PreferencesMapException(k);
return r;
}
@Override @Override
public String toString() { public String toString() {
return toString(""); return toString("");

View File

@ -0,0 +1,10 @@
package processing.app.helpers;
@SuppressWarnings("serial")
public class PreferencesMapException extends Exception {
public PreferencesMapException(String message) {
super(message);
}
}

View File

@ -4,7 +4,7 @@
Plays a pitch that changes based on a changing analog input Plays a pitch that changes based on a changing analog input
circuit: circuit:
* 8-ohm speaker on digital pin 8 * 8-ohm speaker on digital pin 9
* photoresistor on analog 0 to 5V * photoresistor on analog 0 to 5V
* 4.7K resistor on analog 0 to ground * 4.7K resistor on analog 0 to ground

View File

@ -17,6 +17,7 @@ ARDUINO 1.5.3 BETA
* avr: Added support for Flash strings on String class (Jantje) * avr: Added support for Flash strings on String class (Jantje)
* Added support for floating point numbers in String class (Tevin Zhang, SebiTimeWaster) * Added support for floating point numbers in String class (Tevin Zhang, SebiTimeWaster)
* sam: Fixed String buffer overflows (Paul Stoffregen) * sam: Fixed String buffer overflows (Paul Stoffregen)
* avr: Added recipe for assembly files (C. A. Church)
[libraries] [libraries]
* sam: Added CAN library (still in early stage of development) (Palliser) * sam: Added CAN library (still in early stage of development) (Palliser)

View File

@ -40,6 +40,9 @@ recipe.c.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.c.flags} -mmcu={b
## Compile c++ files ## Compile c++ files
recipe.cpp.o.pattern="{compiler.path}{compiler.cpp.cmd}" {compiler.cpp.flags} -mmcu={build.mcu} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {build.extra_flags} {includes} "{source_file}" -o "{object_file}" recipe.cpp.o.pattern="{compiler.path}{compiler.cpp.cmd}" {compiler.cpp.flags} -mmcu={build.mcu} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {build.extra_flags} {includes} "{source_file}" -o "{object_file}"
## Compile S files
recipe.S.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.S.flags} -mmcu={build.mcu} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {build.extra_flags} {includes} "{source_file}" -o "{object_file}"
## Create archives ## Create archives
recipe.ar.pattern="{compiler.path}{compiler.ar.cmd}" {compiler.ar.flags} "{build.path}/{archive_file}" "{object_file}" recipe.ar.pattern="{compiler.path}{compiler.ar.cmd}" {compiler.ar.flags} "{build.path}/{archive_file}" "{object_file}"

View File

@ -1,6 +1,6 @@
####################################### #######################################
# Syntax Coloring Map for SoftwareSerial # Syntax Coloring Map for SoftwareSerial
# (formely NewSoftSerial) # (formerly NewSoftSerial)
####################################### #######################################
####################################### #######################################