|
29 | 29 |
|
30 | 30 | package cc.arduino.packages.discoverers.serial;
|
31 | 31 |
|
| 32 | +import java.util.ArrayList; |
| 33 | +import java.util.List; |
| 34 | +import java.util.Map; |
| 35 | +import java.util.Timer; |
| 36 | +import java.util.TimerTask; |
| 37 | + |
32 | 38 | import cc.arduino.packages.BoardPort;
|
33 |
| -import cc.arduino.packages.discoverers.SerialDiscovery; |
| 39 | +import cc.arduino.packages.Discovery; |
34 | 40 | import processing.app.BaseNoGui;
|
35 | 41 | import processing.app.Platform;
|
36 | 42 | import processing.app.debug.TargetBoard;
|
37 | 43 |
|
38 |
| -import java.util.*; |
39 |
| - |
40 |
| -public class SerialBoardsLister extends TimerTask { |
| 44 | +public class SerialDiscovery implements Discovery, Runnable { |
41 | 45 |
|
42 |
| - private final SerialDiscovery serialDiscovery; |
43 |
| - private final List<BoardPort> boardPorts = new LinkedList<>(); |
44 |
| - private List<String> oldPorts = new LinkedList<>(); |
| 46 | + private Timer serialBoardsListerTimer; |
| 47 | + private final List<BoardPort> serialBoardPorts = new ArrayList<>(); |
| 48 | + private final List<BoardPort> boardPorts = new ArrayList<>(); |
| 49 | + private final List<String> oldPorts = new ArrayList<>(); |
45 | 50 | public boolean uploadInProgress = false;
|
46 | 51 | public boolean pausePolling = false;
|
47 | 52 | private BoardPort oldUploadBoardPort = null;
|
48 | 53 |
|
49 |
| - public SerialBoardsLister(SerialDiscovery serialDiscovery) { |
50 |
| - this.serialDiscovery = serialDiscovery; |
| 54 | + |
| 55 | + @Override |
| 56 | + public List<BoardPort> listDiscoveredBoards() { |
| 57 | + return listDiscoveredBoards(false); |
| 58 | + } |
| 59 | + |
| 60 | + @Override |
| 61 | + public List<BoardPort> listDiscoveredBoards(boolean complete) { |
| 62 | + if (complete) { |
| 63 | + return new ArrayList<>(serialBoardPorts); |
| 64 | + } |
| 65 | + List<BoardPort> onlineBoardPorts = new ArrayList<>(); |
| 66 | + for (BoardPort port : serialBoardPorts) { |
| 67 | + if (port.isOnline() == true) { |
| 68 | + onlineBoardPorts.add(port); |
| 69 | + } |
| 70 | + } |
| 71 | + return onlineBoardPorts; |
| 72 | + } |
| 73 | + |
| 74 | + public void setSerialBoardPorts(List<BoardPort> newSerialBoardPorts) { |
| 75 | + serialBoardPorts.clear(); |
| 76 | + serialBoardPorts.addAll(newSerialBoardPorts); |
| 77 | + } |
| 78 | + |
| 79 | + public void forceRefresh() { |
| 80 | + retriggerDiscovery(false); |
| 81 | + } |
| 82 | + |
| 83 | + public void setUploadInProgress(boolean param) { |
| 84 | + uploadInProgress = param; |
51 | 85 | }
|
52 | 86 |
|
53 |
| - public void start(Timer timer) { |
54 |
| - timer.schedule(this, 0, 1000); |
| 87 | + public void pausePolling(boolean param) { |
| 88 | + pausePolling = param; |
| 89 | + } |
| 90 | + |
| 91 | + @Override |
| 92 | + public void run() { |
| 93 | + start(); |
| 94 | + } |
| 95 | + |
| 96 | + @Override |
| 97 | + public void start() { |
| 98 | + serialBoardsListerTimer = new Timer(SerialDiscovery.class.getName()); |
| 99 | + serialBoardsListerTimer.schedule(new TimerTask() { |
| 100 | + @Override |
| 101 | + public void run() { |
| 102 | + if (BaseNoGui.packages != null) { |
| 103 | + retriggerDiscovery(true); |
| 104 | + } |
| 105 | + } |
| 106 | + }, 0, 1000); |
| 107 | + } |
| 108 | + |
| 109 | + @Override |
| 110 | + public void stop() { |
| 111 | + serialBoardsListerTimer.cancel(); |
55 | 112 | }
|
56 | 113 |
|
57 | 114 | public synchronized void retriggerDiscovery(boolean polled) {
|
@@ -171,14 +228,6 @@ public synchronized void retriggerDiscovery(boolean polled) {
|
171 | 228 | boardPorts.add(boardPort);
|
172 | 229 | }
|
173 | 230 | }
|
174 |
| - serialDiscovery.setSerialBoardPorts(boardPorts); |
175 |
| - } |
176 |
| - |
177 |
| - @Override |
178 |
| - public void run() { |
179 |
| - if (BaseNoGui.packages == null) { |
180 |
| - return; |
181 |
| - } |
182 |
| - retriggerDiscovery(true); |
| 231 | + setSerialBoardPorts(boardPorts); |
183 | 232 | }
|
184 | 233 | }
|
0 commit comments