From f90be846e5867aaf97650f6c85837949686e976a Mon Sep 17 00:00:00 2001 From: Denys Almazov Date: Wed, 5 Apr 2023 13:15:56 +0300 Subject: [PATCH 1/4] fix combo is empty and launch exception --- .../idf/core/build/IDFBuildConfigurationProvider.java | 4 ++++ .../serial/internal/SerialFlashLaunchConfigDelegate.java | 6 ++++++ .../connector/serial/controls/SerialSettingsPage.java | 7 ++----- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/bundles/com.espressif.idf.core/src/com/espressif/idf/core/build/IDFBuildConfigurationProvider.java b/bundles/com.espressif.idf.core/src/com/espressif/idf/core/build/IDFBuildConfigurationProvider.java index e360a6721..dc14474dd 100644 --- a/bundles/com.espressif.idf.core/src/com/espressif/idf/core/build/IDFBuildConfigurationProvider.java +++ b/bundles/com.espressif.idf.core/src/com/espressif/idf/core/build/IDFBuildConfigurationProvider.java @@ -60,6 +60,10 @@ public synchronized ICBuildConfiguration getCBuildConfiguration(IBuildConfigurat try { ILaunchTarget target = barManager.getActiveLaunchTarget(); + if (target == null) + { + return null; + } for (IToolChain tc : toolChainManager.getToolChainsMatching(target.getAttributes())) { if (tc instanceof AbstractESPToolchain) diff --git a/bundles/com.espressif.idf.launch.serial.core/src/com/espressif/idf/launch/serial/internal/SerialFlashLaunchConfigDelegate.java b/bundles/com.espressif.idf.launch.serial.core/src/com/espressif/idf/launch/serial/internal/SerialFlashLaunchConfigDelegate.java index 0736ad075..138bd939a 100644 --- a/bundles/com.espressif.idf.launch.serial.core/src/com/espressif/idf/launch/serial/internal/SerialFlashLaunchConfigDelegate.java +++ b/bundles/com.espressif.idf.launch.serial.core/src/com/espressif/idf/launch/serial/internal/SerialFlashLaunchConfigDelegate.java @@ -42,6 +42,7 @@ import org.eclipse.embedcdt.core.EclipseUtils; import org.eclipse.embedcdt.core.StringUtils; import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.launchbar.core.ILaunchBarManager; import org.eclipse.launchbar.core.target.ILaunchTarget; import org.eclipse.launchbar.core.target.ILaunchTargetManager; import org.eclipse.launchbar.core.target.launch.ITargetedLaunch; @@ -49,6 +50,7 @@ import org.eclipse.launchbar.ui.target.ILaunchTargetUIManager; import org.eclipse.swt.widgets.Display; +import com.espressif.idf.core.IDFCorePlugin; import com.espressif.idf.core.IDFEnvironmentVariables; import com.espressif.idf.core.build.IDFLaunchConstants; import com.espressif.idf.core.logging.Logger; @@ -75,6 +77,10 @@ public class SerialFlashLaunchConfigDelegate extends CoreBuildGenericLaunchConfi @Override public ITargetedLaunch getLaunch(ILaunchConfiguration configuration, String mode, ILaunchTarget target) throws CoreException { + if (target == null) { + ILaunchBarManager barManager = IDFCorePlugin.getService(ILaunchBarManager.class); + target = barManager.getActiveLaunchTarget(); + } return new SerialFlashLaunch(configuration, mode, null, target); } diff --git a/bundles/com.espressif.idf.terminal.connector.serial/src/com/espressif/idf/terminal/connector/serial/controls/SerialSettingsPage.java b/bundles/com.espressif.idf.terminal.connector.serial/src/com/espressif/idf/terminal/connector/serial/controls/SerialSettingsPage.java index cc2a190d3..10b8b677b 100644 --- a/bundles/com.espressif.idf.terminal.connector.serial/src/com/espressif/idf/terminal/connector/serial/controls/SerialSettingsPage.java +++ b/bundles/com.espressif.idf.terminal.connector.serial/src/com/espressif/idf/terminal/connector/serial/controls/SerialSettingsPage.java @@ -17,7 +17,6 @@ import java.util.Optional; import org.eclipse.cdt.serial.SerialPort; -import org.eclipse.core.resources.IBuildConfiguration; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; @@ -38,7 +37,7 @@ import org.eclipse.tm.terminal.view.ui.interfaces.IConfigurationPanelContainer; import org.osgi.service.prefs.Preferences; -import com.espressif.idf.core.build.IDFBuildConfigurationProvider; +import com.espressif.idf.core.IDFProjectNature; import com.espressif.idf.core.logging.Logger; import com.espressif.idf.core.util.StringUtil; import com.espressif.idf.terminal.connector.serial.activator.Activator; @@ -105,9 +104,7 @@ public void createControl(Composite parent) { try { - IBuildConfiguration activeBuildConfig = project.getActiveBuildConfig(); - if (activeBuildConfig != null - && activeBuildConfig.getName().startsWith(IDFBuildConfigurationProvider.ID)) + if (project.hasNature(IDFProjectNature.ID)) { projectCombo.add(project.getName()); } From 31926f9832e954618741c825ac7e39f5b7770c2a Mon Sep 17 00:00:00 2001 From: Denys Almazov Date: Wed, 5 Apr 2023 13:42:01 +0300 Subject: [PATCH 2/4] default project selection fix --- .../src/com/espressif/idf/ui/EclipseUtil.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/bundles/com.espressif.idf.ui/src/com/espressif/idf/ui/EclipseUtil.java b/bundles/com.espressif.idf.ui/src/com/espressif/idf/ui/EclipseUtil.java index ca04b2c81..a2aa3f85e 100644 --- a/bundles/com.espressif.idf.ui/src/com/espressif/idf/ui/EclipseUtil.java +++ b/bundles/com.espressif.idf.ui/src/com/espressif/idf/ui/EclipseUtil.java @@ -17,7 +17,7 @@ import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.PlatformUI; -import com.espressif.idf.core.build.IDFBuildConfigurationProvider; +import com.espressif.idf.core.IDFProjectNature; import com.espressif.idf.core.logging.Logger; /** @@ -70,8 +70,7 @@ public static IProject getSelectedIDFProjectInExplorer() IProject project = getSelectedProject(IPageLayout.ID_PROJECT_EXPLORER); try { - if (project != null && project.getActiveBuildConfig() != null - && project.getActiveBuildConfig().getName().startsWith(IDFBuildConfigurationProvider.ID)) + if (project != null && project.hasNature(IDFProjectNature.ID)) { return project; } @@ -94,10 +93,10 @@ private static IProject getSelectedProject(String viewID) IStructuredSelection structured = (IStructuredSelection) service.getSelection(viewID); if (structured instanceof IStructuredSelection) { - Object selectedObject = ((IStructuredSelection) structured).getFirstElement(); + Object selectedObject = structured.getFirstElement(); if (selectedObject instanceof IAdaptable) { - IResource resource = (IResource) ((IAdaptable) selectedObject).getAdapter(IResource.class); + IResource resource = ((IAdaptable) selectedObject).getAdapter(IResource.class); if (resource != null) { return resource.getProject(); From b2e87404b82fd19ac4c375495dd332ef9d3cff85 Mon Sep 17 00:00:00 2001 From: Denys Almazov Date: Wed, 5 Apr 2023 21:03:47 +0300 Subject: [PATCH 3/4] fix: can't change default toolchain for target --- .../idf/core/build/IDFBuildConfiguration.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/bundles/com.espressif.idf.core/src/com/espressif/idf/core/build/IDFBuildConfiguration.java b/bundles/com.espressif.idf.core/src/com/espressif/idf/core/build/IDFBuildConfiguration.java index f7634cce3..435c52ec1 100644 --- a/bundles/com.espressif.idf.core/src/com/espressif/idf/core/build/IDFBuildConfiguration.java +++ b/bundles/com.espressif.idf.core/src/com/espressif/idf/core/build/IDFBuildConfiguration.java @@ -54,6 +54,7 @@ import org.eclipse.cdt.core.IConsoleParser2; import org.eclipse.cdt.core.build.CBuildConfiguration; import org.eclipse.cdt.core.build.IToolChain; +import org.eclipse.cdt.core.build.IToolChainManager; import org.eclipse.cdt.core.envvar.EnvironmentVariable; import org.eclipse.cdt.core.envvar.IEnvironmentVariable; import org.eclipse.cdt.core.index.IIndexManager; @@ -141,8 +142,6 @@ public IDFBuildConfiguration(IBuildConfiguration config, String name) throws Cor { super(config, name); buildConfiguration = config; - ICMakeToolChainManager manager = IDFCorePlugin.getService(ICMakeToolChainManager.class); - this.toolChainFile = manager.getToolChainFileFor(getToolChain()); } public IDFBuildConfiguration(IBuildConfiguration config, String name, IToolChain toolChain) @@ -266,8 +265,10 @@ private IBinary[] getBuildOutput(final IBinaryContainer binaries, final IPath ou .toArray(IBinary[]::new); } - public ICMakeToolChainFile getToolChainFile() + public ICMakeToolChainFile getToolChainFile() throws CoreException { + ICMakeToolChainManager manager = IDFCorePlugin.getService(ICMakeToolChainManager.class); + this.toolChainFile = manager.getToolChainFileFor(getToolChain()); return toolChainFile; } @@ -799,6 +800,14 @@ private IFolder getIDFComponentsFolder() throws CoreException return folder; } + @Override + public IToolChain getToolChain() throws CoreException + { + String typeId = getProperty(TOOLCHAIN_TYPE); + String id = getProperty(TOOLCHAIN_ID); + IToolChainManager toolChainManager = CCorePlugin.getService(IToolChainManager.class); + return toolChainManager.getToolChain(typeId, id); + } private static IPath getComponentsPath() { return new org.eclipse.core.runtime.Path(IDFConstants.BUILD_FOLDER).append("ide").append(ESP_IDF_COMPONENTS); //$NON-NLS-1$ From cd71643b85b452611b8751b7dc77b317b9916db7 Mon Sep 17 00:00:00 2001 From: Denys Almazov Date: Wed, 5 Apr 2023 22:16:19 +0300 Subject: [PATCH 4/4] fix problem with jtag/uart flash --- .../serial/internal/SerialFlashLaunchConfigDelegate.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bundles/com.espressif.idf.launch.serial.core/src/com/espressif/idf/launch/serial/internal/SerialFlashLaunchConfigDelegate.java b/bundles/com.espressif.idf.launch.serial.core/src/com/espressif/idf/launch/serial/internal/SerialFlashLaunchConfigDelegate.java index 138bd939a..907b02314 100644 --- a/bundles/com.espressif.idf.launch.serial.core/src/com/espressif/idf/launch/serial/internal/SerialFlashLaunchConfigDelegate.java +++ b/bundles/com.espressif.idf.launch.serial.core/src/com/espressif/idf/launch/serial/internal/SerialFlashLaunchConfigDelegate.java @@ -137,7 +137,7 @@ protected void launchInternal(ILaunchConfiguration configuration, String mode, I if (checkIfPortIsEmpty(configuration)) { return; } - String arguments = configuration.getAttribute(ICDTLaunchConfigurationConstants.ATTR_TOOL_ARGUMENTS, + String arguments = configuration.getAttribute(IDFLaunchConstants.ATTR_SERIAL_FLASH_ARGUMENTS, espFlashCommand); arguments = arguments.replace(ESPFlashUtil.SERIAL_PORT, serialPort); if (!arguments.isEmpty()) { @@ -183,7 +183,7 @@ protected void flashOverJtag(ILaunchConfiguration configuration, ILaunch launch) openocdExe = openocdExe.replace(DEFAULT_PATH, tmp); commands.add(openocdExe); - String arguments = configuration.getAttribute(ICDTLaunchConfigurationConstants.ATTR_TOOL_ARGUMENTS, ""); //$NON-NLS-1$ + String arguments = configuration.getAttribute(IDFLaunchConstants.ATTR_JTAG_FLASH_ARGUMENTS, ""); //$NON-NLS-1$ arguments = arguments.replace(DEFAULT_PATH, tmp).trim(); commands.addAll(StringUtils.splitCommandLineOptions(arguments));