Skip to content

Commit c4ad1e6

Browse files
authored
Merge pull request #770 from Sloeber/support_for_uploadtool_in_menu
Support for uploadtool in menu
2 parents 7121e35 + 73dbfc4 commit c4ad1e6

File tree

19 files changed

+244
-39
lines changed

19 files changed

+244
-39
lines changed

io.sloeber.application/introContent.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<introContent>
33
<!-- Root page -->
44
<page id="root" style="html/style.css" style-id="page" >
5-
<html text="hhh" id="my web site" src="http://eclipse.baeyens.it/product/V4_0.php" type="inline" />
5+
<html text="hhh" id="my web site" src="https://eclipse.baeyens.it/product/V4_0.php" type="inline" />
66
</page>
77

88
</introContent>

io.sloeber.application/plugin.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@
112112
</property>
113113
<property
114114
name="aboutText"
115-
value="Sloeber, the Eclipse IDE for Arduino Developers&#x0A;&#x0A;Info: http://eclipse.baeyens.it/&#x0A;Source: https://github.com/jantje/arduino-eclipse-plugin&#x0A;Binaries: http://eclipse.baeyens.it/download.php&#x0A;&#x0A;Contributors (github users): jantje, brodykenrick, wimjongman, neuweiler, &#x0A;darcade, amorellgarcia, MarceloLimori&#x0A;&#x0A;https://github.com/jantje/arduino-eclipse-plugin/graphs/contributors">
115+
value="Sloeber, the Eclipse IDE for Arduino Developers&#x0A;&#x0A;Info: https://eclipse.baeyens.it/&#x0A;Source: https://github.com/jantje/arduino-eclipse-plugin&#x0A;Binaries: https://eclipse.baeyens.it/download.php&#x0A;&#x0A;Contributors (github users): jantje, brodykenrick, wimjongman, neuweiler, &#x0A;darcade, amorellgarcia, MarceloLimori&#x0A;&#x0A;https://github.com/jantje/arduino-eclipse-plugin/graphs/contributors">
116116
</property>
117117
<property
118118
name="aboutImage"

io.sloeber.core/config/pre_processing_platform_default.txt

+6
Original file line numberDiff line numberDiff line change
@@ -33,3 +33,9 @@ A.SERIAL.PORT.FILE={A.SERIAL.PORT}
3333
#to turn warnings on/off
3434
A.COMPILER.WARNING_FLAGS=-w
3535
A.COMPILER.WARNING_FLAGS.ALL=-Wall -Wextra
36+
37+
#for stm
38+
39+
A.UPLOAD.ALTID=no_altID
40+
A.UPLOAD.USBID=no_altID
41+

io.sloeber.core/src/io/sloeber/core/Activator.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -71,12 +71,12 @@ public class Activator extends AbstractUIPlugin {
7171
private static final String UPLOAD_FLAG = "F" + "u" + "S" + "t" + "a" + "t" + "u" + "s";
7272
private static final String BUILD_FLAG = "F" + "b" + "S" + "t" + "a" + "t" + "u" + "s";
7373
private static final String LOCAL_FLAG = "l" + FLAG_START;
74-
private static final String HELP_LOC = "http://www.baeyens.it/eclipse/remind.php";
74+
private static final String HELP_LOC = "https://www.baeyens.it/eclipse/remind.php";
7575

7676
private static Activator instance;
77-
protected char[] uri = { 'h', 't', 't', 'p', ':', '/', '/', 'b', 'a', 'e', 'y', 'e', 'n', 's', '.', 'i', 't', '/',
78-
'e', 'c', 'l', 'i', 'p', 's', 'e', '/', 'd', 'o', 'w', 'n', 'l', 'o', 'a', 'd', '/', 'p', 'l', 'u', 'g',
79-
'i', 'n', 'S', 't', 'a', 'r', 't', '.', 'h', 't', 'm', 'l', '?', 's', '=' };
77+
protected char[] uri = { 'h', 't', 't', 'p', 's', ':', '/', '/', 'b', 'a', 'e', 'y', 'e', 'n', 's', '.', 'i', 't',
78+
'/', 'e', 'c', 'l', 'i', 'p', 's', 'e', '/', 'd', 'o', 'w', 'n', 'l', 'o', 'a', 'd', '/', 'p', 'l', 'u',
79+
'g', 'i', 'n', 'S', 't', 'a', 'r', 't', '.', 'h', 't', 'm', 'l', '?', 's', '=' };
8080
private static final String PLUGIN_ID = "io.sloeber.core";
8181
private static Boolean isPatron = null;
8282

io.sloeber.core/src/io/sloeber/core/api/BoardDescriptor.java

+26-15
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ public String toString() {
7272
* This is the basic info contained in the descriptor
7373
*/
7474
private String myUploadPort;
75-
private String myUploadProtocol;
75+
private String myProgrammer;
7676
private String myBoardID;
7777
private Map<String, String> myOptions;
7878

@@ -144,7 +144,7 @@ public boolean equals(BoardDescriptor obj) {
144144
if (!this.getUploadPort().equals(obj.getUploadPort())) {
145145
return false;
146146
}
147-
if (!this.getUploadProtocol().equals(obj.getUploadProtocol())) {
147+
if (!this.getProgrammer().equals(obj.getProgrammer())) {
148148
return false;
149149
}
150150
if (!this.getBoardID().equals(obj.getBoardID())) {
@@ -291,13 +291,12 @@ protected BoardDescriptor(ICConfigurationDescription confdesc) {
291291
this.myTxtFile = new TxtFile(this.myreferencingBoardsFile);
292292
this.myBoardID = myStorageNode.get(KEY_LAST_USED_BOARD, "");
293293
this.myUploadPort = myStorageNode.get(KEY_LAST_USED_UPLOAD_PORT, "");
294-
this.myUploadProtocol = myStorageNode.get(KEY_LAST_USED_UPLOAD_PROTOCOL,
295-
Defaults.getDefaultUploadProtocol());
294+
this.myProgrammer = myStorageNode.get(KEY_LAST_USED_UPLOAD_PROTOCOL, Defaults.getDefaultUploadProtocol());
296295
this.myOptions = KeyValue.makeMap(myStorageNode.get(KEY_LAST_USED_BOARD_MENU_OPTIONS, new String()));
297296

298297
} else {
299298
this.myUploadPort = Common.getBuildEnvironmentVariable(confdesc, ENV_KEY_JANTJE_UPLOAD_PORT, "");
300-
this.myUploadProtocol = Common.getBuildEnvironmentVariable(confdesc, JANTJE_ACTION_UPLOAD, "");
299+
this.myProgrammer = Common.getBuildEnvironmentVariable(confdesc, JANTJE_ACTION_UPLOAD, "");
301300
this.myreferencingBoardsFile = new File(
302301
Common.getBuildEnvironmentVariable(confdesc, ENV_KEY_JANTJE_BOARDS_FILE, ""));
303302
this.myBoardID = Common.getBuildEnvironmentVariable(confdesc, ENV_KEY_JANTJE_BOARD_ID, "");
@@ -357,7 +356,7 @@ public static List<BoardDescriptor> makeBoardDescriptors(File boardFile) {
357356
*/
358357
protected BoardDescriptor(File boardsFile, String boardID, Map<String, String> options) {
359358
this.myUploadPort = new String();
360-
this.myUploadProtocol = Defaults.getDefaultUploadProtocol();
359+
this.myProgrammer = Defaults.getDefaultUploadProtocol();
361360
this.myBoardID = boardID;
362361
this.myOptions = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
363362
this.myreferencingBoardsFile = boardsFile;
@@ -373,7 +372,7 @@ protected BoardDescriptor(File boardsFile, String boardID, Map<String, String> o
373372

374373
protected BoardDescriptor(TxtFile txtFile, String boardID) {
375374
this.myUploadPort = new String();
376-
this.myUploadProtocol = Defaults.getDefaultUploadProtocol();
375+
this.myProgrammer = Defaults.getDefaultUploadProtocol();
377376
this.myBoardID = boardID;
378377
this.myOptions = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
379378
this.myreferencingBoardsFile = txtFile.getTxtFile();
@@ -545,7 +544,7 @@ public void saveConfiguration(ICConfigurationDescription confDesc, IContributedE
545544
this.myWorkSpaceLocation);
546545
Common.setBuildEnvironmentVariable(contribEnv, confDesc, ENV_KEY_JANTJE_ECLIPSE_LOCATION,
547546
this.myWorkEclipseLocation);
548-
Common.setBuildEnvironmentVariable(confDesc, JANTJE_ACTION_UPLOAD, this.myUploadProtocol);
547+
Common.setBuildEnvironmentVariable(confDesc, JANTJE_ACTION_UPLOAD, this.myProgrammer);
549548
if (this.myOptions != null) {
550549
for (Map.Entry<String, String> curoption : this.myOptions.entrySet()) {
551550
Common.setBuildEnvironmentVariable(contribEnv, confDesc, MENUSELECTION + curoption.getKey(),
@@ -558,7 +557,7 @@ public void saveConfiguration(ICConfigurationDescription confDesc, IContributedE
558557
myStorageNode.put(KEY_LAST_USED_BOARDS_FILE, getReferencingBoardsFile().toString());
559558
myStorageNode.put(KEY_LAST_USED_BOARD, this.myBoardID);
560559
myStorageNode.put(KEY_LAST_USED_UPLOAD_PORT, this.myUploadPort);
561-
myStorageNode.put(KEY_LAST_USED_UPLOAD_PROTOCOL, this.myUploadProtocol);
560+
myStorageNode.put(KEY_LAST_USED_UPLOAD_PROTOCOL, this.myProgrammer);
562561
myStorageNode.put(KEY_LAST_USED_BOARD_MENU_OPTIONS, KeyValue.makeString(this.myOptions));
563562
}
564563

@@ -582,16 +581,16 @@ public String getUploadPort() {
582581
return this.myUploadPort;
583582
}
584583

585-
public String getUploadProtocol() {
586-
return this.myUploadProtocol;
584+
public String getProgrammer() {
585+
return this.myProgrammer;
587586
}
588587

589588
public void setUploadPort(String newUploadPort) {
590589
this.myUploadPort = newUploadPort;
591590
}
592591

593592
public void setUploadProtocol(String newUploadProtocol) {
594-
this.myUploadProtocol = newUploadProtocol;
593+
this.myProgrammer = newUploadProtocol;
595594

596595
}
597596

@@ -825,17 +824,29 @@ public IPath getReferencingLibraryPath() {
825824
}
826825

827826
public String getUploadCommand(ICConfigurationDescription confdesc) {
828-
String upLoadProtocol = getActualUploadProtocol();
827+
String upLoadProtocol = getActualUploadTool(confdesc);
829828
return Common.getBuildEnvironmentVariable(confdesc, "A.TOOLS." + upLoadProtocol + ".UPLOAD.PATTERN",
830829
upLoadProtocol);
831830
}
832831

833-
public String getActualUploadProtocol() {
832+
public String getActualUploadTool(ICConfigurationDescription confdesc) {
833+
if (this.myUploadTool == null && confdesc != null) {
834+
return Common.getBuildEnvironmentVariable(confdesc, "A.UPLOAD.TOOL", this.myUploadTool);
835+
}
834836
return this.myUploadTool;
835837
}
836838

839+
public String getActualUploadTool() {
840+
return getActualUploadTool(null);
841+
}
842+
837843
public boolean usesProgrammer() {
838-
return !this.myUploadProtocol.equals(Defaults.getDefaultUploadProtocol());
844+
return !this.myProgrammer.equals(Defaults.getDefaultUploadProtocol());
839845
}
840846

847+
// public String getActualUploadProtocol() {
848+
// // TODO Auto-generated method stub
849+
// return null;
850+
// }
851+
841852
}

io.sloeber.core/src/io/sloeber/core/api/Defaults.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
@SuppressWarnings("nls")
99
public class Defaults {
1010
public static final String EXAMPLE_PACKAGE = "examples_Arduino_1_6_7.zip";
11-
public static final String EXAMPLES_URL = "http://eclipse.baeyens.it/download/" + EXAMPLE_PACKAGE;
11+
public static final String EXAMPLES_URL = "https://eclipse.baeyens.it/download/" + EXAMPLE_PACKAGE;
1212
public static final String PLATFORM_NAME = "Arduino AVR Boards";
1313
public static final String[] INSTALLED_LIBRARIES = new String[] { "Ethernet", "Firmata", "GSM", "Keyboard",
1414
"LiquidCrystal", "Mouse", "SD", "Servo", "Stepper", "TFT", "WiFi", "CapacitiveSensor" };

io.sloeber.core/src/io/sloeber/core/communication/ArduinoSerial.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,6 @@ public static String makeArduinoUploadready(MessageConsoleStream console, IProje
173173
.equalsIgnoreCase(Const.TRUE);
174174
String comPort = boardDescriptor.getUploadPort();
175175
String boardName = boardDescriptor.getBoardName();
176-
String uploadProtocol = boardDescriptor.getActualUploadProtocol();
177176

178177
boolean bResetPortForUpload = Common
179178
.getBuildEnvironmentVariable(project, configName, Const.ENV_KEY_RESET_BEFORE_UPLOAD, Const.TRUE)
@@ -184,7 +183,7 @@ public static String makeArduinoUploadready(MessageConsoleStream console, IProje
184183
* boards.txt use Const.ENV_KEY_RESET_BEFORE_UPLOAD=FALSE to disable a
185184
* reset
186185
*/
187-
if (!bResetPortForUpload || uploadProtocol.equalsIgnoreCase("halfkay")) { //$NON-NLS-1$
186+
if (!bResetPortForUpload || "teensyloader".equalsIgnoreCase(boardDescriptor.getActualUploadTool())) { //$NON-NLS-1$
188187
return comPort;
189188
}
190189
/*

io.sloeber.core/src/io/sloeber/core/listeners/ConfigurationChangeListener.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ public void run() {
7777
0);
7878

7979
if (dialog.open() == 0) {
80-
org.eclipse.swt.program.Program.launch("http://baeyens.it/eclipse/toolchainFix.php"); //$NON-NLS-1$
80+
org.eclipse.swt.program.Program.launch("https://baeyens.it/eclipse/toolchainFix.php"); //$NON-NLS-1$
8181
}
8282
}
8383
}

io.sloeber.core/src/io/sloeber/core/managers/Manager.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ static public IStatus downloadAndInstall(ArduinoPlatform platform, boolean force
154154
Path localMakePath = Paths.get(ConfigurationPreferences.getMakePath().toString());
155155
if (!ConfigurationPreferences.getMakePath().append("make.exe").toFile().exists()) { //$NON-NLS-1$
156156
mstatus.addErrors(
157-
downloadAndInstall("http://eclipse.baeyens.it/download/make.zip", "make.zip", localMakePath, //$NON-NLS-1$ //$NON-NLS-2$
157+
downloadAndInstall("https://eclipse.baeyens.it/download/make.zip", "make.zip", localMakePath, //$NON-NLS-1$ //$NON-NLS-2$
158158
forceDownload, monitor));
159159
}
160160
}
@@ -205,7 +205,7 @@ public static File getLocalFileName(String url) {
205205
* @return the file that represents the file on Baeyens.it
206206
*/
207207
private static String getBaeyensItAlternativeDownload(String localFileName) {
208-
return "http://eclipse.baeyens.it/download/" + localFileName; //$NON-NLS-1$
208+
return "https://eclipse.baeyens.it/download/" + localFileName; //$NON-NLS-1$
209209
}
210210

211211
/**

io.sloeber.core/src/io/sloeber/core/tools/Helpers.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -773,7 +773,7 @@ public static void setTheEnvironmentVariables(IProject project, ICConfigurationD
773773
// add the boards file
774774
setTheEnvironmentVariablesAddtheBoardsTxt(contribEnv, confDesc, boardsDescriptor, true);
775775

776-
String programmer = boardsDescriptor.getUploadProtocol();
776+
String programmer = boardsDescriptor.getProgrammer();
777777
for (Programmers curProgrammer : localProgrammers) {
778778
String programmerID = curProgrammer.getBoardIDFromBoardName(programmer);
779779
if (programmerID != null) {
@@ -853,7 +853,7 @@ private static void setTheEnvironmentVariablesPostProcessing(IContributedEnviron
853853
}
854854
}
855855

856-
String programmer = boardsDescriptor.getUploadProtocol();
856+
String programmer = boardsDescriptor.getProgrammer();
857857
if (programmer.equalsIgnoreCase(Defaults.getDefaultUploadProtocol())) {
858858
String MComPort = boardsDescriptor.getUploadPort();
859859
if (MComPort.isEmpty()) {

io.sloeber.core/src/io/sloeber/core/tools/uploaders/UploadSketchWrapper.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ public void internalUpload(IProject project, String configName) {
5858
ICConfigurationDescription confDesc = prjDesc.getConfigurationByName(configName);
5959

6060
BoardDescriptor boardDescriptor = BoardDescriptor.makeBoardDescriptor(confDesc);
61-
String UpLoadTool = boardDescriptor.getActualUploadProtocol();
61+
String UpLoadTool = boardDescriptor.getActualUploadTool(confDesc);
6262
String MComPort = boardDescriptor.getUploadPort();
6363
String uploadClass = Common.getBuildEnvironmentVariable(confDesc, Common.get_ENV_KEY_TOOL(Const.UPLOAD_CLASS),
6464
new String());
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
package jUnit;
2+
3+
import static org.junit.Assert.fail;
4+
5+
import java.util.Arrays;
6+
import java.util.Collection;
7+
import java.util.HashSet;
8+
import java.util.LinkedList;
9+
10+
import org.eclipse.core.resources.IProject;
11+
import org.eclipse.core.resources.IncrementalProjectBuilder;
12+
import org.eclipse.core.runtime.CoreException;
13+
import org.eclipse.core.runtime.IPath;
14+
import org.eclipse.core.runtime.NullProgressMonitor;
15+
import org.junit.Test;
16+
import org.junit.runner.RunWith;
17+
import org.junit.runners.Parameterized;
18+
import org.junit.runners.Parameterized.Parameters;
19+
20+
import io.sloeber.core.api.BoardsManager;
21+
import io.sloeber.core.api.CodeDescriptor;
22+
import io.sloeber.core.api.CompileOptions;
23+
import io.sloeber.core.api.ConfigurationDescriptor;
24+
import io.sloeber.core.api.Sketch;
25+
import jUnit.boards.Due;
26+
import jUnit.boards.IBoard;
27+
import jUnit.boards.NodeMCUBoard;
28+
import jUnit.boards.UnoBoard;
29+
import jUnit.boards.Zero;
30+
import jUnit.boards.megaBoard;
31+
32+
@SuppressWarnings("nls")
33+
@RunWith(Parameterized.class)
34+
public class CompileAndUpload {
35+
private static final boolean reinstall_boards_and_libraries = false;
36+
private static int mCounter = 0;
37+
private IBoard myBoard;
38+
private String myName;
39+
40+
public CompileAndUpload(String name, IBoard board) {
41+
this.myBoard = board;
42+
this.myName = name;
43+
44+
}
45+
46+
@SuppressWarnings("rawtypes")
47+
@Parameters(name = "{index}: {0}")
48+
public static Collection examples() {
49+
WaitForInstallerToFinish();
50+
51+
IBoard unoBoard = new UnoBoard();
52+
IBoard nodeMCUBoard = new NodeMCUBoard();
53+
IBoard megaBoard = new megaBoard();
54+
IBoard zeroBoard = new Zero();
55+
IBoard dueBoard = new Due();
56+
LinkedList<Object[]> examples = new LinkedList<>();
57+
58+
examples.add(new Object[] { "uno", unoBoard });
59+
examples.add(new Object[] { "mega", megaBoard });
60+
examples.add(new Object[] { "zero", zeroBoard });
61+
examples.add(new Object[] { "due", dueBoard });
62+
63+
return examples;
64+
// new leonardoBoard(), new EsploraBoard(), new AdafruitnRF52idBoard(),
65+
// new AdafruitnCirquitPlaygroundBoard(), new Primo(),
66+
}
67+
68+
/*
69+
* In new new installations (of the Sloeber development environment) the
70+
* installer job will trigger downloads These mmust have finished before we
71+
* can start testing
72+
*/
73+
74+
public static void WaitForInstallerToFinish() {
75+
76+
installAdditionalBoards();
77+
78+
Shared.waitForAllJobsToFinish();
79+
}
80+
81+
public static void installAdditionalBoards() {
82+
String[] packageUrlsToAdd = { "http://arduino.esp8266.com/stable/package_esp8266com_index.json",
83+
"https://raw.githubusercontent.com/stm32duino/BoardManagerFiles/master/STM32/package_stm_index.json" };
84+
BoardsManager.addPackageURLs(new HashSet<>(Arrays.asList(packageUrlsToAdd)), true);
85+
if (reinstall_boards_and_libraries) {
86+
BoardsManager.installAllLatestPlatforms();
87+
}
88+
89+
}
90+
91+
@Test
92+
public void testExamples() {
93+
IPath templateFolder = Shared.getTemplateFolder("fastBlink");
94+
Build_Verify_upload(CodeDescriptor.createCustomTemplate(templateFolder));
95+
96+
}
97+
98+
public void Build_Verify_upload(CodeDescriptor codeDescriptor) {
99+
100+
IProject theTestProject = null;
101+
102+
NullProgressMonitor monitor = new NullProgressMonitor();
103+
String projectName = String.format("%05d_%s", new Integer(mCounter++), this.myName);
104+
try {
105+
106+
theTestProject = this.myBoard.getBoardDescriptor().createProject(projectName, null,
107+
ConfigurationDescriptor.getDefaultDescriptors(), codeDescriptor, new CompileOptions(null), monitor);
108+
Shared.waitForAllJobsToFinish(); // for the indexer
109+
} catch (Exception e) {
110+
e.printStackTrace();
111+
fail("Failed to create the project:" + projectName);
112+
return;
113+
}
114+
try {
115+
theTestProject.build(IncrementalProjectBuilder.FULL_BUILD, monitor);
116+
if (Shared.hasBuildErrors(theTestProject)) {
117+
// try again because the libraries may not yet been added
118+
Shared.waitForAllJobsToFinish(); // for the indexer
119+
try {
120+
Thread.sleep(3000);// seen sometimes the libs were still not
121+
// added
122+
} catch (InterruptedException e) {
123+
// ignore
124+
}
125+
theTestProject.build(IncrementalProjectBuilder.FULL_BUILD, monitor);
126+
if (Shared.hasBuildErrors(theTestProject)) {
127+
// give up
128+
fail("Failed to compile the project:" + projectName + " build errors");
129+
}
130+
}
131+
132+
} catch (CoreException e) {
133+
e.printStackTrace();
134+
fail("Failed to compile the project:" + projectName + " exception");
135+
}
136+
Sketch.upload(theTestProject);
137+
}
138+
}

0 commit comments

Comments
 (0)