use of cc.arduino.packages.BoardPort in project arduino-eclipse-plugin by Sloeber.
the class SloeberNetworkDiscovery method getList.
@SuppressWarnings("nls")
public static String[] getList() {
List<BoardPort> boardPorts = getDiscovery().getBoardPortsDiscoveredWithJmDNS();
HashSet<String> allBoards = new HashSet<>();
for (BoardPort boardPort : boardPorts) {
String boardName = boardPort.getBoardName();
if (!boardName.contains(".")) {
boardName = boardName + ".local";
}
allBoards.add(boardName + " " + boardPort.getAddress());
}
String[] sBoards = new String[allBoards.size()];
allBoards.toArray(sBoards);
Arrays.sort(sBoards);
return sBoards;
}
use of cc.arduino.packages.BoardPort in project arduino-eclipse-plugin by Sloeber.
the class SSHUpload method uploadUsingPreferences.
@Override
public boolean uploadUsingPreferences(IFile hexFile, BoardDescriptor boardDescriptor, IProgressMonitor monitor) {
boolean ret = true;
if (boardDescriptor.usesProgrammer()) {
this.myHighLevelConsoleStream.println(Messages.Upload_error_network);
return false;
}
Session session = null;
SCP scp = null;
try {
JSch jSch = new JSch();
SSHClientSetupChainRing sshClientSetupChain = new SSHConfigFileSetup(new SSHPwdSetup());
BoardPort boardPort = new BoardPort();
boardPort.setBoardName(this.myHost);
session = sshClientSetupChain.setup(boardPort, jSch);
if (session != null) {
// $NON-NLS-1$ //$NON-NLS-2$
session.setConfig("PreferredAuthentications", "publickey,keyboard-interactive,password");
session.connect(30000);
scp = new SCP(session);
SSH ssh = new SSH(session);
this.myHighLevelConsoleStream.println(Messages.Upload_sending_sketch + hexFile + Messages.Upload_to + this.myHost);
scpFiles(scp, hexFile);
this.myHighLevelConsoleStream.println(Messages.Upload_sketch_on_yun);
String remoteUploadCommand = Common.getBuildEnvironmentVariable(this.myProject, // $NON-NLS-1$ //$NON-NLS-2$
"A.TOOLS." + this.myUpLoadTool.toUpperCase() + "_REMOTE.UPLOAD.PATTERN", // $NON-NLS-1$
"run-avrdude /tmp/sketch.hex ");
// $NON-NLS-1$
this.myHighLevelConsoleStream.println("merge-sketch-with-bootloader.lua /tmp/sketch.hex");
ret = // $NON-NLS-1$
ssh.execSyncCommand(// $NON-NLS-1$
"merge-sketch-with-bootloader.lua /tmp/sketch.hex", // $NON-NLS-1$
this.myOutconsole, this.myErrconsole);
// $NON-NLS-1$
this.myHighLevelConsoleStream.println("kill-bridge");
// $NON-NLS-1$
ssh.execSyncCommand("kill-bridge", this.myOutconsole, this.myErrconsole);
this.myHighLevelConsoleStream.println(remoteUploadCommand);
ret = ret && ssh.execSyncCommand(remoteUploadCommand, this.myOutconsole, this.myErrconsole);
}
} catch (JSchException e) {
String message = e.getMessage();
String errormessage = new String();
if (Messages.Upload_auth_cancel.equals(message) || Messages.Upload_auth_fail.equals(message)) {
errormessage = new String(Messages.Upload_error_auth_fail) + this.myHost;
// TODO add to ask if if the user wants to remove the password
PasswordManager.ErasePassword(this.myHost);
}
if (e.getMessage().contains(Messages.Upload_connection_refused)) {
errormessage = new String(Messages.Upload_error_connection_refused) + this.myHost;
}
this.myHighLevelConsoleStream.println(errormessage);
this.myHighLevelConsoleStream.println(message);
return false;
} catch (Exception e) {
this.myHighLevelConsoleStream.println(e.getMessage());
return false;
} finally {
if (scp != null) {
scp.close();
}
if (session != null) {
session.disconnect();
}
}
return ret;
}
use of cc.arduino.packages.BoardPort in project arduino-eclipse-plugin by Sloeber.
the class BoardReachabilityFilter method run.
@SuppressWarnings({ "boxing", "nls" })
@Override
public void run() {
List<BoardPort> boardPorts = this.networkDiscovery.getBoardPortsDiscoveredWithJmDNS();
Iterator<BoardPort> boardPortIterator = boardPorts.iterator();
while (boardPortIterator.hasNext()) {
BoardPort board = boardPortIterator.next();
int broadcastedPort = Integer.valueOf(board.getPrefs().get("port"));
List<Integer> ports = new LinkedList<>();
ports.add(broadcastedPort);
// broadcast port 22
if (broadcastedPort == 80) {
ports.add(0, 22);
}
boolean reachable = board.getPrefs().get("tcp_check").contentEquals("no");
if (!reachable) {
boardPortIterator.remove();
}
}
this.networkDiscovery.setReachableBoardPorts(boardPorts);
}
use of cc.arduino.packages.BoardPort in project arduino-eclipse-plugin by Sloeber.
the class NetworkDiscovery method serviceResolved.
@SuppressWarnings("nls")
@Override
public void serviceResolved(ServiceEvent serviceEvent) {
ServiceInfo info = serviceEvent.getInfo();
for (InetAddress inetAddress : info.getInet4Addresses()) {
String address = inetAddress.getHostAddress();
String name = serviceEvent.getName();
BoardPort port = new BoardPort();
String board = null;
String description = null;
if (info.hasData()) {
board = info.getPropertyString("board");
description = info.getPropertyString("description");
port.getPrefs().put("board", board);
port.getPrefs().put("distro_version", info.getPropertyString("distro_version"));
port.getPrefs().put("port", "" + info.getPort());
// Add additional fields to permit generic ota updates
// and make sure we do not intefere with Arduino boards
// define "ssh_upload=no" TXT property to use generic uploader
// define "tcp_check=no" TXT property if you are not using TCP
// define "auth_upload=yes" TXT property if you want to use authenticated generic upload
String useSSH = info.getPropertyString("ssh_upload");
String checkTCP = info.getPropertyString("tcp_check");
String useAuth = info.getPropertyString("auth_upload");
if (useSSH == null || !useSSH.contentEquals("no"))
useSSH = "yes";
if (checkTCP == null || !checkTCP.contentEquals("no"))
checkTCP = "yes";
if (useAuth == null || !useAuth.contentEquals("yes"))
useAuth = "no";
port.getPrefs().put("ssh_upload", useSSH);
port.getPrefs().put("tcp_check", checkTCP);
port.getPrefs().put("auth_upload", useAuth);
}
String label = name + " at " + address;
// if (board != null && BaseNoGui.packages != null) {
// String boardName = BaseNoGui.getPlatform().resolveDeviceByBoardID(BaseNoGui.packages, board);
// if (boardName != null) {
// label += " (" + boardName + ")";
// }
// } else if (description != null) {
label += " (" + description + ")";
// }
port.setAddress(address);
port.setBoardName(name);
port.setProtocol("network");
port.setLabel(label);
synchronized (this.boardPortsDiscoveredWithJmDNS) {
removeDuplicateBoards(port);
this.boardPortsDiscoveredWithJmDNS.add(port);
}
}
}
Aggregations