@Override
    protected String doGetSpecificCommandString(SingleCommand singleCommandToExec,Robot robot) {

        Commands command=singleCommandToExec.getCommandInstruction();
        int distance=singleCommandToExec.getDistance();
        int degrees=singleCommandToExec.getDegrees();
        int time=singleCommandToExec.getTime();
        
        int rotationSpeed=Configuration.getInstance().getRp6RotationSpeed();
        int linemoveSpeed=Configuration.getInstance().getRp6LineMoveSpeed();
        
        if (command.isMetaCommand()) 
            return "";
        
        StringBuilder prog=new StringBuilder(200);
        if (command.equals(Commands.TURNRIGHT)) {
            prog.append("rotate(").append(rotationSpeed).append(",RIGHT,").append(degrees).append(",true);");
        }
        else if (command.equals(Commands.TURNLEFT)) {
            prog.append("rotate(").append(rotationSpeed).append(",LEFT,").append(degrees).append(",true);");
        }
        else if (command.equals(Commands.FORWARD)) {
            prog.append("move(").append(linemoveSpeed).append(",FWD,DIST_MM(").append(distance).append("),true);");        
        }
        else if (command.equals(Commands.BACKWARD)) {
            prog.append("move(").append(linemoveSpeed).append(",BWD,DIST_MM(").append(distance).append("),true);");
        }
        else if (command.equals(Commands.SENDSIGNAL)) {
            prog.append("signal();");
        }
        else if (command.equals(Commands.WAIT)) {
            prog.append("mSleep(").append(time>0 ? time:1000).append(");");
        }
        return prog.toString();
    }