1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-08-13 19:25:38 +02:00

Some cleanup for Arduino CDT.

Change-Id: Ib2384053c1bf40d65c9e6e72c3146a3264abbf33
This commit is contained in:
Doug Schaefer 2015-07-28 15:58:25 -04:00
parent 8d2489c8ac
commit 7571170de6
7 changed files with 49 additions and 36 deletions

View file

@ -84,9 +84,9 @@ public class ArduinoProjectGenerator {
info.setManagedProject(mProj); info.setManagedProject(mProj);
// TODO make this a preference, the default board // TODO make this a preference, the default board
String boardId = "uno"; //$NON-NLS-1$ String boardName = "Arduino Uno"; //$NON-NLS-1$
String platformId = "avr"; //$NON-NLS-1$ String platformName = "Arduino AVR Boards"; //$NON-NLS-1$
String packageId = "arduino"; //$NON-NLS-1$ String packageName = "arduino"; //$NON-NLS-1$
IRemoteServicesManager remoteManager = Activator.getService(IRemoteServicesManager.class); IRemoteServicesManager remoteManager = Activator.getService(IRemoteServicesManager.class);
IRemoteConnectionType connectionType = remoteManager.getConnectionType(ArduinoRemoteConnection.TYPE_ID); IRemoteConnectionType connectionType = remoteManager.getConnectionType(ArduinoRemoteConnection.TYPE_ID);
@ -94,12 +94,12 @@ public class ArduinoProjectGenerator {
if (!connections.isEmpty()) { if (!connections.isEmpty()) {
IRemoteConnection firstConnection = connections.iterator().next(); IRemoteConnection firstConnection = connections.iterator().next();
IArduinoRemoteConnection firstArduino = firstConnection.getService(IArduinoRemoteConnection.class); IArduinoRemoteConnection firstArduino = firstConnection.getService(IArduinoRemoteConnection.class);
boardId = firstArduino.getBoardId(); boardName = firstArduino.getBoardName();
platformId = firstArduino.getPlatformId(); platformName = firstArduino.getPlatformName();
packageId = firstArduino.getPackageId(); packageName = firstArduino.getPackageName();
} }
ArduinoBoardManager.instance.createBuildConfiguration(cprojDesc, boardId, platformId, packageId); ArduinoBoardManager.instance.createBuildConfiguration(cprojDesc, boardName, platformName, packageName);
CCorePlugin.getDefault().setProjectDescription(project, cprojDesc, true, monitor); CCorePlugin.getDefault().setProjectDescription(project, cprojDesc, true, monitor);
// Generate files // Generate files

View file

@ -33,11 +33,11 @@ public interface IArduinoRemoteConnection extends IRemoteConnection.Service {
*/ */
String getPortName(); String getPortName();
String getBoardId(); String getBoardName();
String getPlatformId(); String getPlatformName();
String getPackageId(); String getPackageName();
void pause(); void pause();

View file

@ -118,25 +118,24 @@ public class ArduinoBoardManager {
return projDesc.createConfiguration(ManagedBuildManager.CFG_DATA_PROVIDER_ID, data); return projDesc.createConfiguration(ManagedBuildManager.CFG_DATA_PROVIDER_ID, data);
} }
public Board getBoard(String boardId, String platformId, String packageId) throws CoreException { public Board getBoard(String boardName, String platformName, String packageName) throws CoreException {
return packageIndex.getPackage(packageId).getPlatform(platformId).getBoard(boardId); return packageIndex.getPackage(packageName).getPlatform(platformName).getBoard(boardName);
} }
public Board getBoard(IConfiguration configuration) throws CoreException { public Board getBoard(IConfiguration configuration) throws CoreException {
try { try {
IToolChain toolChain = configuration.getToolChain(); IToolChain toolChain = configuration.getToolChain();
IOption boardOption = toolChain.getOptionBySuperClassId(BOARD_OPTION_ID); IOption boardOption = toolChain.getOptionBySuperClassId(BOARD_OPTION_ID);
String boardId = boardOption.getStringValue(); String boardName = boardOption.getStringValue();
IOption platformOption = toolChain.getOptionBySuperClassId(PLATFORM_OPTION_ID); IOption platformOption = toolChain.getOptionBySuperClassId(PLATFORM_OPTION_ID);
String platformId = platformOption.getStringValue(); String platformName = platformOption.getStringValue();
IOption packageOption = toolChain.getOptionBySuperClassId(PACKAGE_OPTION_ID); 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) { } catch (BuildException e) {
throw new CoreException(new Status(IStatus.ERROR, Activator.getId(), e.getLocalizedMessage(), e)); throw new CoreException(new Status(IStatus.ERROR, Activator.getId(), e.getLocalizedMessage(), e));
} }
} }
public List<Board> getBoards() throws CoreException { public List<Board> getBoards() throws CoreException {
@ -149,4 +148,9 @@ public class ArduinoBoardManager {
return boards; return boards;
} }
public Tool getTool(String packageName, String toolName, String version) {
BoardPackage pkg = packageIndex.getPackage(packageName);
return pkg != null ? pkg.getTool(toolName, version) : null;
}
} }

View file

@ -137,6 +137,15 @@ public class BoardPackage {
return tools; 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) { public void install(IProgressMonitor monitor) {
} }

View file

@ -69,8 +69,8 @@ public class ArduinoLaunchConfigurationDelegate extends LaunchConfigurationDeleg
boolean newConfig = false; boolean newConfig = false;
if (configDesc == null) { if (configDesc == null) {
IArduinoRemoteConnection arduinoRemote = target.getService(IArduinoRemoteConnection.class); IArduinoRemoteConnection arduinoRemote = target.getService(IArduinoRemoteConnection.class);
configDesc = ArduinoBoardManager.instance.createBuildConfiguration(projDesc, arduinoRemote.getBoardId(), configDesc = ArduinoBoardManager.instance.createBuildConfiguration(projDesc, arduinoRemote.getBoardName(),
arduinoRemote.getPlatformId(), arduinoRemote.getPackageId()); arduinoRemote.getPlatformName(), arduinoRemote.getPackageName());
newConfig = true; newConfig = true;
} }
if (newConfig || !projDesc.getActiveConfiguration().equals(configDesc)) { if (newConfig || !projDesc.getActiveConfiguration().equals(configDesc)) {
@ -173,26 +173,26 @@ public class ArduinoLaunchConfigurationDelegate extends LaunchConfigurationDeleg
*/ */
private ICConfigurationDescription getBuildConfiguration(ICProjectDescription projDesc, IRemoteConnection target) private ICConfigurationDescription getBuildConfiguration(ICProjectDescription projDesc, IRemoteConnection target)
throws CoreException { throws CoreException {
String boardId; String boardName;
String platformId; String platformName;
String packageId; String packageName;
if (target != null) { if (target != null) {
IArduinoRemoteConnection arduinoRemote = target.getService(IArduinoRemoteConnection.class); IArduinoRemoteConnection arduinoRemote = target.getService(IArduinoRemoteConnection.class);
boardId = arduinoRemote.getBoardId(); boardName = arduinoRemote.getBoardName();
platformId = arduinoRemote.getPlatformId(); platformName = arduinoRemote.getPlatformName();
packageId = arduinoRemote.getPackageId(); packageName = arduinoRemote.getPackageName();
} else { } else {
// TODO preference for this // TODO
boardId = "uno"; //$NON-NLS-1$ boardName = "Arduino Uno"; //$NON-NLS-1$
platformId = "avr"; //$NON-NLS-1$ platformName = "Arduino AVR Boards"; //$NON-NLS-1$
packageId = "arduino"; //$NON-NLS-1$ packageName = "arduino"; //$NON-NLS-1$
} }
for (ICConfigurationDescription configDesc : projDesc.getConfigurations()) { for (ICConfigurationDescription configDesc : projDesc.getConfigurations()) {
IConfiguration config = ManagedBuildManager.getConfigurationForDescription(configDesc); IConfiguration config = ManagedBuildManager.getConfigurationForDescription(configDesc);
Board board = ArduinoBoardManager.instance.getBoard(config); Board board = ArduinoBoardManager.instance.getBoard(config);
if (boardId.equals(board.getId()) && platformId.equals(board.getPlatform().getArchitecture()) if (boardName.equals(board.getId()) && platformName.equals(board.getPlatform().getArchitecture())
&& packageId.equals(board.getPlatform().getPackage().getName())) { && packageName.equals(board.getPlatform().getPackage().getName())) {
return configDesc; return configDesc;
} }
} }

View file

@ -87,17 +87,17 @@ public class ArduinoRemoteConnection implements IRemoteConnectionPropertyService
} }
@Override @Override
public String getBoardId() { public String getBoardName() {
return remoteConnection.getAttribute(BOARD_ID); return remoteConnection.getAttribute(BOARD_ID);
} }
@Override @Override
public String getPlatformId() { public String getPlatformName() {
return remoteConnection.getAttribute(PLATFORM_ID); return remoteConnection.getAttribute(PLATFORM_ID);
} }
@Override @Override
public String getPackageId() { public String getPackageName() {
return remoteConnection.getAttribute(PACKAGE_ID); return remoteConnection.getAttribute(PACKAGE_ID);
} }

View file

@ -73,8 +73,8 @@ public class ArduinoTargetPropertyPage extends PropertyPage implements IWorkbenc
boardSelector.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); boardSelector.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
try { try {
Board currentBoard = ArduinoBoardManager.instance.getBoard(arduinoRemote.getBoardId(), Board currentBoard = ArduinoBoardManager.instance.getBoard(arduinoRemote.getBoardName(),
arduinoRemote.getPlatformId(), arduinoRemote.getPackageId()); arduinoRemote.getPlatformName(), arduinoRemote.getPackageName());
Collection<Board> boardList = ArduinoBoardManager.instance.getBoards(); Collection<Board> boardList = ArduinoBoardManager.instance.getBoards();
boards = new Board[boardList.size()]; boards = new Board[boardList.size()];
i = 0; i = 0;