diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/ArduinoProjectGenerator.java b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/ArduinoProjectGenerator.java index 7dc68b00535..64a18c53f6e 100644 --- a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/ArduinoProjectGenerator.java +++ b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/ArduinoProjectGenerator.java @@ -84,9 +84,9 @@ public class ArduinoProjectGenerator { info.setManagedProject(mProj); // TODO make this a preference, the default board - String boardId = "uno"; //$NON-NLS-1$ - String platformId = "avr"; //$NON-NLS-1$ - String packageId = "arduino"; //$NON-NLS-1$ + String boardName = "Arduino Uno"; //$NON-NLS-1$ + String platformName = "Arduino AVR Boards"; //$NON-NLS-1$ + String packageName = "arduino"; //$NON-NLS-1$ IRemoteServicesManager remoteManager = Activator.getService(IRemoteServicesManager.class); IRemoteConnectionType connectionType = remoteManager.getConnectionType(ArduinoRemoteConnection.TYPE_ID); @@ -94,12 +94,12 @@ public class ArduinoProjectGenerator { if (!connections.isEmpty()) { IRemoteConnection firstConnection = connections.iterator().next(); IArduinoRemoteConnection firstArduino = firstConnection.getService(IArduinoRemoteConnection.class); - boardId = firstArduino.getBoardId(); - platformId = firstArduino.getPlatformId(); - packageId = firstArduino.getPackageId(); + boardName = firstArduino.getBoardName(); + platformName = firstArduino.getPlatformName(); + packageName = firstArduino.getPackageName(); } - ArduinoBoardManager.instance.createBuildConfiguration(cprojDesc, boardId, platformId, packageId); + ArduinoBoardManager.instance.createBuildConfiguration(cprojDesc, boardName, platformName, packageName); CCorePlugin.getDefault().setProjectDescription(project, cprojDesc, true, monitor); // Generate files diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/IArduinoRemoteConnection.java b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/IArduinoRemoteConnection.java index 79d1f8bd945..48e42276320 100644 --- a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/IArduinoRemoteConnection.java +++ b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/IArduinoRemoteConnection.java @@ -33,11 +33,11 @@ public interface IArduinoRemoteConnection extends IRemoteConnection.Service { */ String getPortName(); - String getBoardId(); + String getBoardName(); - String getPlatformId(); + String getPlatformName(); - String getPackageId(); + String getPackageName(); void pause(); diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/ArduinoBoardManager.java b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/ArduinoBoardManager.java index 97361b55b38..f5bdd4a34b7 100644 --- a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/ArduinoBoardManager.java +++ b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/ArduinoBoardManager.java @@ -118,25 +118,24 @@ public class ArduinoBoardManager { return projDesc.createConfiguration(ManagedBuildManager.CFG_DATA_PROVIDER_ID, data); } - public Board getBoard(String boardId, String platformId, String packageId) throws CoreException { - return packageIndex.getPackage(packageId).getPlatform(platformId).getBoard(boardId); + public Board getBoard(String boardName, String platformName, String packageName) throws CoreException { + return packageIndex.getPackage(packageName).getPlatform(platformName).getBoard(boardName); } public Board getBoard(IConfiguration configuration) throws CoreException { try { IToolChain toolChain = configuration.getToolChain(); IOption boardOption = toolChain.getOptionBySuperClassId(BOARD_OPTION_ID); - String boardId = boardOption.getStringValue(); + String boardName = boardOption.getStringValue(); IOption platformOption = toolChain.getOptionBySuperClassId(PLATFORM_OPTION_ID); - String platformId = platformOption.getStringValue(); + String platformName = platformOption.getStringValue(); IOption packageOption = toolChain.getOptionBySuperClassId(PACKAGE_OPTION_ID); - String packageId = packageOption.getStringValue(); + String packageName = packageOption.getStringValue(); - return getBoard(boardId, platformId, packageId); + return getBoard(boardName, platformName, packageName); } catch (BuildException e) { throw new CoreException(new Status(IStatus.ERROR, Activator.getId(), e.getLocalizedMessage(), e)); } - } public List getBoards() throws CoreException { @@ -149,4 +148,9 @@ public class ArduinoBoardManager { return boards; } + public Tool getTool(String packageName, String toolName, String version) { + BoardPackage pkg = packageIndex.getPackage(packageName); + return pkg != null ? pkg.getTool(toolName, version) : null; + } + } diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/BoardPackage.java b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/BoardPackage.java index bdcf97852fb..74ff5a15f9c 100644 --- a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/BoardPackage.java +++ b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/board/BoardPackage.java @@ -137,6 +137,15 @@ public class BoardPackage { return tools; } + public Tool getTool(String toolName, String version) { + for (Tool tool : tools) { + if (tool.getName().equals(toolName) && tool.getName().equals(version)) { + return tool; + } + } + return null; + } + public void install(IProgressMonitor monitor) { } diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/launch/ArduinoLaunchConfigurationDelegate.java b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/launch/ArduinoLaunchConfigurationDelegate.java index c45986badb4..c682b96b8d6 100644 --- a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/launch/ArduinoLaunchConfigurationDelegate.java +++ b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/launch/ArduinoLaunchConfigurationDelegate.java @@ -69,8 +69,8 @@ public class ArduinoLaunchConfigurationDelegate extends LaunchConfigurationDeleg boolean newConfig = false; if (configDesc == null) { IArduinoRemoteConnection arduinoRemote = target.getService(IArduinoRemoteConnection.class); - configDesc = ArduinoBoardManager.instance.createBuildConfiguration(projDesc, arduinoRemote.getBoardId(), - arduinoRemote.getPlatformId(), arduinoRemote.getPackageId()); + configDesc = ArduinoBoardManager.instance.createBuildConfiguration(projDesc, arduinoRemote.getBoardName(), + arduinoRemote.getPlatformName(), arduinoRemote.getPackageName()); newConfig = true; } if (newConfig || !projDesc.getActiveConfiguration().equals(configDesc)) { @@ -173,26 +173,26 @@ public class ArduinoLaunchConfigurationDelegate extends LaunchConfigurationDeleg */ private ICConfigurationDescription getBuildConfiguration(ICProjectDescription projDesc, IRemoteConnection target) throws CoreException { - String boardId; - String platformId; - String packageId; + String boardName; + String platformName; + String packageName; if (target != null) { IArduinoRemoteConnection arduinoRemote = target.getService(IArduinoRemoteConnection.class); - boardId = arduinoRemote.getBoardId(); - platformId = arduinoRemote.getPlatformId(); - packageId = arduinoRemote.getPackageId(); + boardName = arduinoRemote.getBoardName(); + platformName = arduinoRemote.getPlatformName(); + packageName = arduinoRemote.getPackageName(); } else { - // TODO preference for this - boardId = "uno"; //$NON-NLS-1$ - platformId = "avr"; //$NON-NLS-1$ - packageId = "arduino"; //$NON-NLS-1$ + // TODO + boardName = "Arduino Uno"; //$NON-NLS-1$ + platformName = "Arduino AVR Boards"; //$NON-NLS-1$ + packageName = "arduino"; //$NON-NLS-1$ } for (ICConfigurationDescription configDesc : projDesc.getConfigurations()) { IConfiguration config = ManagedBuildManager.getConfigurationForDescription(configDesc); Board board = ArduinoBoardManager.instance.getBoard(config); - if (boardId.equals(board.getId()) && platformId.equals(board.getPlatform().getArchitecture()) - && packageId.equals(board.getPlatform().getPackage().getName())) { + if (boardName.equals(board.getId()) && platformName.equals(board.getPlatform().getArchitecture()) + && packageName.equals(board.getPlatform().getPackage().getName())) { return configDesc; } } diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/remote/ArduinoRemoteConnection.java b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/remote/ArduinoRemoteConnection.java index 61a549984a7..1d58f14f959 100644 --- a/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/remote/ArduinoRemoteConnection.java +++ b/toolchains/arduino/org.eclipse.cdt.arduino.core/src/org/eclipse/cdt/arduino/core/internal/remote/ArduinoRemoteConnection.java @@ -87,17 +87,17 @@ public class ArduinoRemoteConnection implements IRemoteConnectionPropertyService } @Override - public String getBoardId() { + public String getBoardName() { return remoteConnection.getAttribute(BOARD_ID); } @Override - public String getPlatformId() { + public String getPlatformName() { return remoteConnection.getAttribute(PLATFORM_ID); } @Override - public String getPackageId() { + public String getPackageName() { return remoteConnection.getAttribute(PACKAGE_ID); } diff --git a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/remote/ArduinoTargetPropertyPage.java b/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/remote/ArduinoTargetPropertyPage.java index 870c47d7834..48d524590f4 100644 --- a/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/remote/ArduinoTargetPropertyPage.java +++ b/toolchains/arduino/org.eclipse.cdt.arduino.ui/src/org/eclipse/cdt/arduino/ui/internal/remote/ArduinoTargetPropertyPage.java @@ -73,8 +73,8 @@ public class ArduinoTargetPropertyPage extends PropertyPage implements IWorkbenc boardSelector.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); try { - Board currentBoard = ArduinoBoardManager.instance.getBoard(arduinoRemote.getBoardId(), - arduinoRemote.getPlatformId(), arduinoRemote.getPackageId()); + Board currentBoard = ArduinoBoardManager.instance.getBoard(arduinoRemote.getBoardName(), + arduinoRemote.getPlatformName(), arduinoRemote.getPackageName()); Collection boardList = ArduinoBoardManager.instance.getBoards(); boards = new Board[boardList.size()]; i = 0;