diff --git a/bundles/com.espressif.idf.core/.classpath b/bundles/com.espressif.idf.core/.classpath index 63b29b03b..7f9a1fc9a 100644 --- a/bundles/com.espressif.idf.core/.classpath +++ b/bundles/com.espressif.idf.core/.classpath @@ -1,6 +1,7 @@ + diff --git a/bundles/com.espressif.idf.core/META-INF/MANIFEST.MF b/bundles/com.espressif.idf.core/META-INF/MANIFEST.MF index 6298a9e93..aed1da27f 100644 --- a/bundles/com.espressif.idf.core/META-INF/MANIFEST.MF +++ b/bundles/com.espressif.idf.core/META-INF/MANIFEST.MF @@ -61,6 +61,7 @@ Bundle-ClassPath: ., lib/commons-beanutils-1.9.4.jar, lib/commons-text-1.10.0.jar, lib/commons-compress-1.21.jar, - lib/xz-1.9.jar + lib/xz-1.9.jar, + lib/applicationinsights-core-3.6.2.jar Import-Package: org.eclipse.embedcdt.core, org.eclipse.launchbar.ui.target diff --git a/bundles/com.espressif.idf.core/build.properties b/bundles/com.espressif.idf.core/build.properties index dbb089ce8..d96e78d60 100644 --- a/bundles/com.espressif.idf.core/build.properties +++ b/bundles/com.espressif.idf.core/build.properties @@ -13,4 +13,5 @@ bin.includes = META-INF/,\ lib/commons-beanutils-1.9.4.jar,\ lib/commons-text-1.10.0.jar,\ lib/commons-compress-1.21.jar,\ - lib/xz-1.9.jar + lib/xz-1.9.jar,\ + lib/applicationinsights-core-3.6.2.jar diff --git a/bundles/com.espressif.idf.core/lib/applicationinsights-core-3.6.2.jar b/bundles/com.espressif.idf.core/lib/applicationinsights-core-3.6.2.jar new file mode 100644 index 000000000..692365094 Binary files /dev/null and b/bundles/com.espressif.idf.core/lib/applicationinsights-core-3.6.2.jar differ diff --git a/bundles/com.espressif.idf.core/src/com/espressif/idf/core/logging/TelemetryLogger.java b/bundles/com.espressif.idf.core/src/com/espressif/idf/core/logging/TelemetryLogger.java new file mode 100644 index 000000000..21b12b08c --- /dev/null +++ b/bundles/com.espressif.idf.core/src/com/espressif/idf/core/logging/TelemetryLogger.java @@ -0,0 +1,26 @@ +/******************************************************************************* + * Copyright 2024 Espressif Systems (Shanghai) PTE LTD. All rights reserved. + * Use is subject to license terms. + *******************************************************************************/ +package com.espressif.idf.core.logging; + +import java.util.Map; + +import com.microsoft.applicationinsights.TelemetryClient; + +/** + * Azure Telemetry logger + * + * @author Kondal Kolipaka + * + */ +public class TelemetryLogger +{ + private static final TelemetryClient telemetryClient = new TelemetryClient(); + + public static void logEvent(String eventName, Map properties) + { + telemetryClient.trackEvent(eventName, properties, null); + telemetryClient.flush(); + } +} diff --git a/bundles/com.espressif.idf.telemetry/.classpath b/bundles/com.espressif.idf.telemetry/.classpath new file mode 100644 index 000000000..5050774b8 --- /dev/null +++ b/bundles/com.espressif.idf.telemetry/.classpath @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/bundles/com.espressif.idf.telemetry/.gitignore b/bundles/com.espressif.idf.telemetry/.gitignore new file mode 100644 index 000000000..b83d22266 --- /dev/null +++ b/bundles/com.espressif.idf.telemetry/.gitignore @@ -0,0 +1 @@ +/target/ diff --git a/bundles/com.espressif.idf.telemetry/.project b/bundles/com.espressif.idf.telemetry/.project new file mode 100644 index 000000000..5ca26a371 --- /dev/null +++ b/bundles/com.espressif.idf.telemetry/.project @@ -0,0 +1,34 @@ + + + com.espressif.idf.telemetry + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.m2e.core.maven2Nature + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + diff --git a/bundles/com.espressif.idf.telemetry/.settings/org.eclipse.core.resources.prefs b/bundles/com.espressif.idf.telemetry/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 000000000..99f26c020 --- /dev/null +++ b/bundles/com.espressif.idf.telemetry/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/bundles/com.espressif.idf.telemetry/.settings/org.eclipse.jdt.core.prefs b/bundles/com.espressif.idf.telemetry/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 000000000..5500104fb --- /dev/null +++ b/bundles/com.espressif.idf.telemetry/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,10 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=21 +org.eclipse.jdt.core.compiler.compliance=21 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=21 diff --git a/bundles/com.espressif.idf.telemetry/.settings/org.eclipse.m2e.core.prefs b/bundles/com.espressif.idf.telemetry/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 000000000..f897a7f1c --- /dev/null +++ b/bundles/com.espressif.idf.telemetry/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/bundles/com.espressif.idf.telemetry/META-INF/MANIFEST.MF b/bundles/com.espressif.idf.telemetry/META-INF/MANIFEST.MF new file mode 100644 index 000000000..b0c4b9c90 --- /dev/null +++ b/bundles/com.espressif.idf.telemetry/META-INF/MANIFEST.MF @@ -0,0 +1,9 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: Telemetry +Bundle-SymbolicName: com.espressif.idf.telemetry +Bundle-Version: 1.0.0.qualifier +Eclipse-BundleShape: dir +Bundle-Vendor: Espressif Systems +Automatic-Module-Name: com.espressif.idf.telemetry +Bundle-RequiredExecutionEnvironment: JavaSE-17 diff --git a/bundles/com.espressif.idf.telemetry/build.properties b/bundles/com.espressif.idf.telemetry/build.properties new file mode 100644 index 000000000..c204f6f0c --- /dev/null +++ b/bundles/com.espressif.idf.telemetry/build.properties @@ -0,0 +1,7 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + .,\ + rootfiles/ +root=rootfiles +root.files=rootfiles/** diff --git a/bundles/com.espressif.idf.telemetry/pom.xml b/bundles/com.espressif.idf.telemetry/pom.xml new file mode 100644 index 000000000..d68b6b6b0 --- /dev/null +++ b/bundles/com.espressif.idf.telemetry/pom.xml @@ -0,0 +1,13 @@ + + 4.0.0 + com.espressif.idf.telemetry + 1.0.0-SNAPSHOT + eclipse-plugin + + + com.espressif.idf + com.espressif.idf.bundles + 1.0.0-SNAPSHOT + + + \ No newline at end of file diff --git a/bundles/com.espressif.idf.telemetry/rootfiles/applicationinsights-agent-3.6.2.jar b/bundles/com.espressif.idf.telemetry/rootfiles/applicationinsights-agent-3.6.2.jar new file mode 100644 index 000000000..52a1da115 --- /dev/null +++ b/bundles/com.espressif.idf.telemetry/rootfiles/applicationinsights-agent-3.6.2.jar @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e81ef99fd30444f6f1da70cd31db5e47f8e6906acbbc9199cac3b390dc6cfedf +size 47332700 diff --git a/bundles/com.espressif.idf.telemetry/rootfiles/applicationinsights.json b/bundles/com.espressif.idf.telemetry/rootfiles/applicationinsights.json new file mode 100644 index 000000000..a4896976a --- /dev/null +++ b/bundles/com.espressif.idf.telemetry/rootfiles/applicationinsights.json @@ -0,0 +1,6 @@ +{ + "connectionString": "InstrumentationKey=912cbb4e-e606-4c4f-9a00-1731acb15117;IngestionEndpoint=https://eastasia-0.in.applicationinsights.azure.com/;LiveEndpoint=https://eastasia.livediagnostics.monitor.azure.com/;ApplicationId=1efdbec9-ed3f-4e75-a44d-67c6708b6d79", + "role": { + "name": "Espressif-IDE" + } +} \ No newline at end of file diff --git a/bundles/com.espressif.idf.ui/src/com/espressif/idf/ui/wizard/NewIDFProjectWizard.java b/bundles/com.espressif.idf.ui/src/com/espressif/idf/ui/wizard/NewIDFProjectWizard.java index d43476490..01af58a37 100644 --- a/bundles/com.espressif.idf.ui/src/com/espressif/idf/ui/wizard/NewIDFProjectWizard.java +++ b/bundles/com.espressif.idf.ui/src/com/espressif/idf/ui/wizard/NewIDFProjectWizard.java @@ -5,6 +5,8 @@ package com.espressif.idf.ui.wizard; import java.io.File; +import java.util.HashMap; +import java.util.Map; import org.eclipse.cdt.debug.internal.core.InternalDebugCoreMessages; import org.eclipse.core.resources.IProject; @@ -40,8 +42,10 @@ import com.espressif.idf.core.LaunchBarTargetConstants; import com.espressif.idf.core.build.IDFLaunchConstants; import com.espressif.idf.core.logging.Logger; +import com.espressif.idf.core.logging.TelemetryLogger; import com.espressif.idf.core.util.ClangFormatFileHandler; import com.espressif.idf.core.util.ClangdConfigFileHandler; +import com.espressif.idf.core.util.EclipseIniUtil; import com.espressif.idf.core.util.LaunchUtil; import com.espressif.idf.ui.UIPlugin; import com.espressif.idf.ui.handlers.EclipseHandler; @@ -113,6 +117,11 @@ public boolean performFinish() IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName); selProvider.setSelection(new StructuredSelection(project)); updateClangFiles(project); + + //update telemetry + Map properties = new HashMap(); + properties.put("platform", "eclipse"); + TelemetryLogger.logEvent("New project creation", properties); } } diff --git a/bundles/pom.xml b/bundles/pom.xml index 9560c1730..f1fe203ac 100644 --- a/bundles/pom.xml +++ b/bundles/pom.xml @@ -31,6 +31,7 @@ com.espressif.idf.wokwi com.espressif.idf.lsp com.espressif.idf.swt.custom + com.espressif.idf.telemetry diff --git a/features/com.espressif.idf.feature/feature.xml b/features/com.espressif.idf.feature/feature.xml index dd0edbead..b03b9b4b0 100644 --- a/features/com.espressif.idf.feature/feature.xml +++ b/features/com.espressif.idf.feature/feature.xml @@ -165,4 +165,8 @@ You may add additional accurate notices of copyright ownership. id="com.espressif.idf.swt.custom" version="0.0.0"/> + + diff --git a/releng/com.espressif.idf.product/idf.product b/releng/com.espressif.idf.product/idf.product index fab1b6294..4bd291991 100644 --- a/releng/com.espressif.idf.product/idf.product +++ b/releng/com.espressif.idf.product/idf.product @@ -14,11 +14,13 @@ - -Xms2048m -Xmx4096m -Dosgi.requiredJavaVersion=17 -Dosgi.instance.area.default=@user.home/workspace + -javaagent:resources/applicationinsights-agent-3.6.2.jar +-Xms2048m -Xmx4096m -Dosgi.requiredJavaVersion=17 -Dosgi.instance.area.default=@user.home/workspace - -Xms2048m -Xmx4096m -Xdock:icon=../Resources/espressif.icns -XstartOnFirstThread -Dosgi.requiredJavaVersion=17 -Dorg.eclipse.swt.internal.carbon.smallFonts -Dosgi.instance.area.default=@user.home/workspace + -javaagent:resources/applicationinsights-agent-3.6.2.jar +-Xms2048m -Xmx4096m -Xdock:icon=../Resources/espressif.icns -XstartOnFirstThread -Dosgi.requiredJavaVersion=17 -Dorg.eclipse.swt.internal.carbon.smallFonts -Dosgi.instance.area.default=@user.home/workspace - -Xms2048m -Xmx4096m -Dosgi.requiredJavaVersion=17 -Dosgi.instance.area.default=@user.home/workspace + -javaagent:resources/applicationinsights-agent-3.6.2.jar -Xms2048m -Xmx4096m -Dosgi.requiredJavaVersion=17 -Dosgi.instance.area.default=@user.home/workspace