diff --git a/src/modules/awake/Awake/Core/APIHelper.cs b/src/modules/awake/Awake/Core/APIHelper.cs index 1c1d2f95fb..91aff0e629 100644 --- a/src/modules/awake/Awake/Core/APIHelper.cs +++ b/src/modules/awake/Awake/Core/APIHelper.cs @@ -9,6 +9,7 @@ using System.IO; using System.Runtime.InteropServices; using System.Threading; using System.Threading.Tasks; +using Microsoft.PowerToys.Telemetry; using Microsoft.Win32; using NLog; using Windows.Win32; @@ -83,6 +84,8 @@ namespace Awake.Core public static void SetIndefiniteKeepAwake(Action callback, Action failureCallback, bool keepDisplayOn = false) { + PowerToysTelemetry.Log.WriteEvent(new Awake.Telemetry.AwakeIndefinitelyKeepAwakeEvent()); + _tokenSource.Cancel(); try @@ -131,6 +134,8 @@ namespace Awake.Core public static void SetTimedKeepAwake(uint seconds, Action callback, Action failureCallback, bool keepDisplayOn = true) { + PowerToysTelemetry.Log.WriteEvent(new Awake.Telemetry.AwakeTimedKeepAwakeEvent()); + _tokenSource.Cancel(); try diff --git a/src/modules/awake/Awake/Telemetry/AwakeIndefinitelyKeepAwakeEvent.cs b/src/modules/awake/Awake/Telemetry/AwakeIndefinitelyKeepAwakeEvent.cs new file mode 100644 index 0000000000..1aa8697eeb --- /dev/null +++ b/src/modules/awake/Awake/Telemetry/AwakeIndefinitelyKeepAwakeEvent.cs @@ -0,0 +1,16 @@ +// Copyright (c) Microsoft Corporation +// The Microsoft Corporation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.Diagnostics.Tracing; +using Microsoft.PowerToys.Telemetry; +using Microsoft.PowerToys.Telemetry.Events; + +namespace Awake.Telemetry +{ + [EventData] + public class AwakeIndefinitelyKeepAwakeEvent : EventBase, IEvent + { + public PartA_PrivTags PartA_PrivTags => PartA_PrivTags.ProductAndServiceUsage; + } +} diff --git a/src/modules/awake/Awake/Telemetry/AwakeTimedKeepAwakeEvent.cs b/src/modules/awake/Awake/Telemetry/AwakeTimedKeepAwakeEvent.cs new file mode 100644 index 0000000000..2025c6b34a --- /dev/null +++ b/src/modules/awake/Awake/Telemetry/AwakeTimedKeepAwakeEvent.cs @@ -0,0 +1,16 @@ +// Copyright (c) Microsoft Corporation +// The Microsoft Corporation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.Diagnostics.Tracing; +using Microsoft.PowerToys.Telemetry; +using Microsoft.PowerToys.Telemetry.Events; + +namespace Awake.Telemetry +{ + [EventData] + public class AwakeTimedKeepAwakeEvent : EventBase, IEvent + { + public PartA_PrivTags PartA_PrivTags => PartA_PrivTags.ProductAndServiceUsage; + } +} diff --git a/src/modules/awake/AwakeModuleInterface/dllmain.cpp b/src/modules/awake/AwakeModuleInterface/dllmain.cpp index 50747b8948..b302d6aa31 100644 --- a/src/modules/awake/AwakeModuleInterface/dllmain.cpp +++ b/src/modules/awake/AwakeModuleInterface/dllmain.cpp @@ -136,6 +136,7 @@ public: virtual void enable() { + Trace::EnableAwake(true); ResetEvent(send_telemetry_event); ResetEvent(m_hInvokeEvent); launch_process(); @@ -146,6 +147,7 @@ public: { if (m_enabled) { + Trace::EnableAwake(false); Logger::trace(L"Disabling Awake..."); ResetEvent(send_telemetry_event); ResetEvent(m_hInvokeEvent); diff --git a/src/modules/awake/AwakeModuleInterface/trace.cpp b/src/modules/awake/AwakeModuleInterface/trace.cpp index e2508396ca..fe90aa2658 100644 --- a/src/modules/awake/AwakeModuleInterface/trace.cpp +++ b/src/modules/awake/AwakeModuleInterface/trace.cpp @@ -17,3 +17,14 @@ void Trace::UnregisterProvider() { TraceLoggingUnregister(g_hProvider); } + +// Log if the user has Awake enabled or disabled +void Trace::EnableAwake(const bool enabled) noexcept +{ + TraceLoggingWrite( + g_hProvider, + "Awake_EnableAwake", + ProjectTelemetryPrivacyDataTag(ProjectTelemetryTag_ProductAndServicePerformance), + TraceLoggingKeyword(PROJECT_KEYWORD_MEASURE), + TraceLoggingBoolean(enabled, "Enabled")); +} diff --git a/src/modules/awake/AwakeModuleInterface/trace.h b/src/modules/awake/AwakeModuleInterface/trace.h index e5c7680cf0..40a903b98a 100644 --- a/src/modules/awake/AwakeModuleInterface/trace.h +++ b/src/modules/awake/AwakeModuleInterface/trace.h @@ -5,4 +5,7 @@ class Trace public: static void RegisterProvider(); static void UnregisterProvider(); + + // Log if the user has Awake enabled or disabled + static void EnableAwake(const bool enabled) noexcept; };