Search in sources :

Example 1 with BoardPort

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;
}
Also used : BoardPort(cc.arduino.packages.BoardPort) HashSet(java.util.HashSet)

Example 2 with BoardPort

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;
}
Also used : SSHClientSetupChainRing(cc.arduino.packages.ssh.SSHClientSetupChainRing) JSchException(com.jcraft.jsch.JSchException) SCP(cc.arduino.packages.ssh.SCP) BoardPort(cc.arduino.packages.BoardPort) SSHPwdSetup(cc.arduino.packages.ssh.SSHPwdSetup) SSH(cc.arduino.packages.ssh.SSH) JSch(com.jcraft.jsch.JSch) IOException(java.io.IOException) JSchException(com.jcraft.jsch.JSchException) Session(com.jcraft.jsch.Session) SSHConfigFileSetup(cc.arduino.packages.ssh.SSHConfigFileSetup)

Example 3 with BoardPort

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);
}
Also used : BoardPort(cc.arduino.packages.BoardPort) LinkedList(java.util.LinkedList)

Example 4 with BoardPort

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);
        }
    }
}
Also used : ServiceInfo(javax.jmdns.ServiceInfo) BoardPort(cc.arduino.packages.BoardPort) InetAddress(java.net.InetAddress)

Aggregations

BoardPort (cc.arduino.packages.BoardPort)4 SCP (cc.arduino.packages.ssh.SCP)1 SSH (cc.arduino.packages.ssh.SSH)1 SSHClientSetupChainRing (cc.arduino.packages.ssh.SSHClientSetupChainRing)1 SSHConfigFileSetup (cc.arduino.packages.ssh.SSHConfigFileSetup)1 SSHPwdSetup (cc.arduino.packages.ssh.SSHPwdSetup)1 JSch (com.jcraft.jsch.JSch)1 JSchException (com.jcraft.jsch.JSchException)1 Session (com.jcraft.jsch.Session)1 IOException (java.io.IOException)1 InetAddress (java.net.InetAddress)1 HashSet (java.util.HashSet)1 LinkedList (java.util.LinkedList)1 ServiceInfo (javax.jmdns.ServiceInfo)1