mirror of
https://github.com/arduino/Arduino.git
synced 2025-03-15 12:29:26 +01:00
Temporary workaround on network discovery
This commit is contained in:
parent
b4852f353c
commit
0ab4f8b24b
@ -2,6 +2,7 @@ package cc.arduino.packages.discoverers;
|
|||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.net.InetAddress;
|
import java.net.InetAddress;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.CopyOnWriteArrayList;
|
import java.util.concurrent.CopyOnWriteArrayList;
|
||||||
|
|
||||||
@ -25,7 +26,9 @@ public class NetworkDiscovery implements Discovery, ServiceListener {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<BoardPort> discovery() {
|
public List<BoardPort> discovery() {
|
||||||
return ports;
|
synchronized (this) {
|
||||||
|
return new ArrayList<BoardPort>(ports);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -69,29 +72,35 @@ public class NetworkDiscovery implements Discovery, ServiceListener {
|
|||||||
@Override
|
@Override
|
||||||
public void serviceRemoved(ServiceEvent serviceEvent) {
|
public void serviceRemoved(ServiceEvent serviceEvent) {
|
||||||
String name = serviceEvent.getName();
|
String name = serviceEvent.getName();
|
||||||
|
synchronized (this) {
|
||||||
for (BoardPort port : ports) {
|
for (BoardPort port : ports) {
|
||||||
if (port.getBoardName().equals(name))
|
if (port.getBoardName().equals(name))
|
||||||
ports.remove(port);
|
ports.remove(port);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void serviceResolved(ServiceEvent serviceEvent) {
|
public void serviceResolved(ServiceEvent serviceEvent) {
|
||||||
ServiceInfo info = serviceEvent.getInfo();
|
ServiceInfo info = serviceEvent.getInfo();
|
||||||
String address = serviceEvent.getInfo().getInet4Addresses()[0]
|
String address = info.getInet4Addresses()[0].getHostAddress();
|
||||||
.getHostAddress();
|
|
||||||
String name = serviceEvent.getName();
|
String name = serviceEvent.getName();
|
||||||
|
|
||||||
PreferencesMap prefs = null;
|
PreferencesMap prefs = null;
|
||||||
|
String board = null;
|
||||||
if (info.hasData()) {
|
if (info.hasData()) {
|
||||||
prefs = new PreferencesMap();
|
prefs = new PreferencesMap();
|
||||||
prefs.put("id", info.getPropertyString("board"));
|
board = info.getPropertyString("board");
|
||||||
|
prefs.put("board", board);
|
||||||
prefs.put("distro_version", info.getPropertyString("distro_version"));
|
prefs.put("distro_version", info.getPropertyString("distro_version"));
|
||||||
}
|
}
|
||||||
String boardName = Base.getPlatform()
|
|
||||||
.resolveDeviceByBoardID(Base.packages, prefs.get("id"));
|
|
||||||
|
|
||||||
String label = name + " at " + address + " (" + boardName + ")";
|
String label = name + " at " + address;
|
||||||
|
if (board != null) {
|
||||||
|
String boardName = Base.getPlatform()
|
||||||
|
.resolveDeviceByBoardID(Base.packages, board);
|
||||||
|
label += " (" + boardName + ")";
|
||||||
|
}
|
||||||
|
|
||||||
BoardPort port = new BoardPort();
|
BoardPort port = new BoardPort();
|
||||||
port.setAddress(address);
|
port.setAddress(address);
|
||||||
@ -99,7 +108,9 @@ public class NetworkDiscovery implements Discovery, ServiceListener {
|
|||||||
port.setProtocol("network");
|
port.setProtocol("network");
|
||||||
port.setPrefs(prefs);
|
port.setPrefs(prefs);
|
||||||
port.setLabel(label);
|
port.setLabel(label);
|
||||||
|
synchronized (this) {
|
||||||
ports.add(port);
|
ports.add(port);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user