|
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