Skip to content

Commit 4b7ddaa

Browse files
committed
add a flag to pause polling for serial port
1 parent 4426621 commit 4b7ddaa

File tree

5 files changed

+71
-3
lines changed

5 files changed

+71
-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) {

hardware/arduino/avr/boards.txt

+51
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,57 @@ yun.build.extra_flags={build.usb_flags}
4646

4747
##############################################################
4848

49+
yun101.name=Arduino/Genuino Yún 101
50+
yun101.upload.via_ssh=true
51+
52+
yun101.vid.0=0x2341
53+
yun101.pid.0=0x0051
54+
yun101.vid.1=0x2341
55+
yun101.pid.1=0x8051
56+
57+
yun101.upload.tool=avrdude
58+
yun101.upload.protocol=avr109
59+
yun101.upload.maximum_size=28672
60+
yun101.upload.maximum_data_size=2560
61+
yun101.upload.speed=57600
62+
yun101.upload.disable_flushing=true
63+
yun101.upload.use_1200bps_touch=true
64+
yun101.upload.wait_for_upload_port=true
65+
66+
yun101.bootloader.tool=avrdude
67+
yun101.bootloader.low_fuses=0xff
68+
yun101.bootloader.high_fuses=0xd8
69+
yun101.bootloader.extended_fuses=0xfb
70+
yun101.bootloader.file=caterina2/Caterina2_ArduinoYun101.hex
71+
yun101.bootloader.unlock_bits=0x3F
72+
yun101.bootloader.lock_bits=0x2F
73+
74+
yun101.vid.2=0x2341
75+
yun101.pid.2=0x8251
76+
yun101.vid.2.build.vid=0x2341
77+
yun101.vid.2.build.pid=0x8251
78+
yun101.vid.2.build.usb_product="Genuino Yun101"
79+
yun101.vid.2.bootloader.file=caterina2/Caterina2_GenuinoYun101.hex
80+
81+
yun101.vid.3=0x2341
82+
yun101.pid.3=0x0251
83+
yun101.vid.3.build.vid=0x2341
84+
yun101.vid.3.build.pid=0x8251
85+
yun101.vid.3.build.usb_product="Genuino Yun101"
86+
yun101.vid.3.bootloader.file=caterina2/Caterina2_GenuinoYun101.hex
87+
88+
yun101.build.mcu=atmega32u4
89+
yun101.build.f_cpu=16000000L
90+
yun101.build.vid=0x2341
91+
yun101.build.pid=0x8051
92+
yun101.build.usb_product="Arduino Yun101"
93+
yun101.build.board=AVR_YUN
94+
yun101.build.core=arduino
95+
yun101.build.variant=yun
96+
yun101.build.extra_flags={build.usb_flags}
97+
98+
##############################################################
99+
49100
uno.name=Arduino/Genuino Uno
50101

51102
uno.vid.0=0x2341

hardware/arduino/avr/platform.txt

+1
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ tools.avrdude.bootloader.params.verbose=-v
109109
tools.avrdude.bootloader.params.quiet=-q -q
110110
tools.avrdude.bootloader.pattern="{cmd.path}" "-C{config.path}" {bootloader.verbose} -p{build.mcu} -c{protocol} {program.extra_params} "-Uflash:w:{runtime.platform.path}/bootloaders/{bootloader.file}:i" -Ulock:w:{bootloader.lock_bits}:m
111111

112+
tools.avrdude_remote.upload.pattern=/usr/bin/run-avrdude /tmp/sketch.hex {upload.verbose} -p{build.mcu} -l{bootloader.low_fuses} -h{bootloader.high_fuses} -e{bootloader.extended_fuses}
112113

113114
# USB Default Flags
114115
# Default blank usb manufacturer will be filled in at compile time

0 commit comments

Comments
 (0)