Skip to content

Commit 02a4200

Browse files
committed
add a flag to pause polling for serial port
1 parent 0d4dfb0 commit 02a4200

File tree

3 files changed

+19
-3
lines changed

3 files changed

+19
-3
lines changed

arduino-core/src/cc/arduino/packages/discoverers/SerialDiscovery.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -75,13 +75,15 @@ public void setSerialBoardPorts(List<BoardPort> newSerialBoardPorts) {
7575
}
7676

7777
public void forceRefresh() {
78-
serialBoardsLister.retriggerDiscovery();
78+
serialBoardsLister.retriggerDiscovery(false);
7979
}
8080

8181
public void setUploadInProgress(boolean param) {
8282
serialBoardsLister.uploadInProgress = param;
8383
}
8484

85+
public void pausePolling(boolean param) { serialBoardsLister.pausePolling = param;}
86+
8587
@Override
8688
public void start() {
8789
this.serialBoardsListerTimer = new Timer(SerialBoardsLister.class.getName());

arduino-core/src/cc/arduino/packages/discoverers/serial/SerialBoardsLister.java

+7-2
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ public class SerialBoardsLister extends TimerTask {
4444
private final List<BoardPort> boardPorts = new LinkedList<>();
4545
private List<String> oldPorts = new LinkedList<>();
4646
public boolean uploadInProgress = false;
47+
public boolean pausePolling = false;
4748
private BoardPort oldUploadBoardPort = null;
4849

4950
public SerialBoardsLister(SerialDiscovery serialDiscovery) {
@@ -54,7 +55,7 @@ public void start(Timer timer) {
5455
timer.schedule(this, 0, 1000);
5556
}
5657

57-
public synchronized void retriggerDiscovery() {
58+
public synchronized void retriggerDiscovery(boolean polled) {
5859
while (BaseNoGui.packages == null) {
5960
try {
6061
Thread.sleep(1000);
@@ -67,6 +68,10 @@ public synchronized void retriggerDiscovery() {
6768
return;
6869
}
6970

71+
if (polled && pausePolling) {
72+
return;
73+
}
74+
7075
List<String> ports = platform.listSerials();
7176
if (ports.equals(oldPorts)) {
7277
return;
@@ -163,6 +168,6 @@ public synchronized void retriggerDiscovery() {
163168

164169
@Override
165170
public void run() {
166-
retriggerDiscovery();
171+
retriggerDiscovery(true);
167172
}
168173
}

arduino-core/src/cc/arduino/packages/uploaders/SerialUploader.java

+9
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,8 @@ public boolean uploadUsingPreferences(File sourcePath, String buildPath, String
9191
return uploadUsingProgrammer(buildPath, className);
9292
}
9393

94+
BaseNoGui.getDiscoveryManager().getSerialDiscoverer().pausePolling(true);
95+
9496
if (noUploadPort)
9597
{
9698
prefs.put("build.path", buildPath);
@@ -108,6 +110,8 @@ public boolean uploadUsingPreferences(File sourcePath, String buildPath, String
108110
uploadResult = executeUploadCommand(cmd);
109111
} catch (Exception e) {
110112
throw new RunnerException(e);
113+
} finally {
114+
BaseNoGui.getDiscoveryManager().getSerialDiscoverer().pausePolling(false);
111115
}
112116
return uploadResult;
113117
}
@@ -154,6 +158,8 @@ public boolean uploadUsingPreferences(File sourcePath, String buildPath, String
154158
throw new RunnerException(e);
155159
} catch (InterruptedException e) {
156160
throw new RunnerException(e.getMessage());
161+
} finally {
162+
BaseNoGui.getDiscoveryManager().getSerialDiscoverer().pausePolling(false);
157163
}
158164
if (actualUploadPort == null) {
159165
actualUploadPort = userSelectedUploadPort;
@@ -191,9 +197,12 @@ public boolean uploadUsingPreferences(File sourcePath, String buildPath, String
191197
throw e;
192198
} catch (Exception e) {
193199
throw new RunnerException(e);
200+
} finally {
201+
BaseNoGui.getDiscoveryManager().getSerialDiscoverer().pausePolling(false);
194202
}
195203

196204
BaseNoGui.getDiscoveryManager().getSerialDiscoverer().setUploadInProgress(false);
205+
BaseNoGui.getDiscoveryManager().getSerialDiscoverer().pausePolling(false);
197206

198207
String finalUploadPort = null;
199208
if (uploadResult && doTouch) {

0 commit comments

Comments
 (0)