diff --git a/RGB.NET.Devices.SteelSeries/Generic/SteelSeriesDeviceUpdateQueue.cs b/RGB.NET.Devices.SteelSeries/Generic/SteelSeriesDeviceUpdateQueue.cs
index 3ccc664..67c39a4 100644
--- a/RGB.NET.Devices.SteelSeries/Generic/SteelSeriesDeviceUpdateQueue.cs
+++ b/RGB.NET.Devices.SteelSeries/Generic/SteelSeriesDeviceUpdateQueue.cs
@@ -14,7 +14,7 @@ internal class SteelSeriesDeviceUpdateQueue : UpdateQueue
{
#region Properties & Fields
- private string _deviceType;
+ private readonly string _deviceType;
#endregion
@@ -37,7 +37,7 @@ internal class SteelSeriesDeviceUpdateQueue : UpdateQueue
protected override void OnUpdate(object? sender, CustomUpdateData customData)
{
- if (customData["refresh"] as bool? ?? false)
+ if (customData[CustomUpdateDataIndex.HEARTBEAT] as bool? ?? false)
SteelSeriesSDK.SendHeartbeat();
else
base.OnUpdate(sender, customData);
diff --git a/RGB.NET.Devices.SteelSeries/Generic/SteelSeriesDeviceUpdateTrigger.cs b/RGB.NET.Devices.SteelSeries/Generic/SteelSeriesDeviceUpdateTrigger.cs
deleted file mode 100644
index ddc644b..0000000
--- a/RGB.NET.Devices.SteelSeries/Generic/SteelSeriesDeviceUpdateTrigger.cs
+++ /dev/null
@@ -1,80 +0,0 @@
-// ReSharper disable MemberCanBePrivate.Global
-
-using System.Diagnostics;
-using System.Threading;
-using RGB.NET.Core;
-
-namespace RGB.NET.Devices.SteelSeries;
-
-///
-/// Represents an update-trigger used to update SteelSeries devices
-///
-public class SteelSeriesDeviceUpdateTrigger : DeviceUpdateTrigger
-{
- #region Constants
-
- private static readonly long FLUSH_TIMER = 5 * 1000 * (long)(Stopwatch.Frequency / 1000.0); // flush the device every 5 seconds to prevent timeouts
-
- #endregion
-
- #region Properties & Fields
-
- private long _lastUpdateTimestamp;
-
- #endregion
-
- #region Constructors
-
- ///
- /// Initializes a new instance of the class.
- ///
- public SteelSeriesDeviceUpdateTrigger()
- { }
-
- ///
- /// Initializes a new instance of the class.
- ///
- /// The hard limit of the update rate of this trigger.
- public SteelSeriesDeviceUpdateTrigger(double updateRateHardLimit)
- : base(updateRateHardLimit)
- { }
-
- #endregion
-
- #region Methods
-
- ///
- protected override void UpdateLoop()
- {
- OnStartup();
-
- while (!UpdateToken.IsCancellationRequested)
- {
- if (HasDataEvent.WaitOne(Timeout))
- {
- long preUpdateTicks = Stopwatch.GetTimestamp();
-
- OnUpdate();
-
- if (UpdateFrequency > 0)
- {
- double lastUpdateTime = ((_lastUpdateTimestamp - preUpdateTicks) / (Stopwatch.Frequency / 1000.0));
- int sleep = (int)((UpdateFrequency * 1000.0) - lastUpdateTime);
- if (sleep > 0)
- Thread.Sleep(sleep);
- }
- }
- else if ((_lastUpdateTimestamp > 0) && ((Stopwatch.GetTimestamp() - _lastUpdateTimestamp) > FLUSH_TIMER))
- OnUpdate(new CustomUpdateData(("refresh", true)));
- }
- }
-
- ///
- protected override void OnUpdate(CustomUpdateData? updateData = null)
- {
- base.OnUpdate(updateData);
- _lastUpdateTimestamp = Stopwatch.GetTimestamp();
- }
-
- #endregion
-}
\ No newline at end of file
diff --git a/RGB.NET.Devices.SteelSeries/SteelSeriesDeviceProvider.cs b/RGB.NET.Devices.SteelSeries/SteelSeriesDeviceProvider.cs
index 3deb842..8b04c34 100644
--- a/RGB.NET.Devices.SteelSeries/SteelSeriesDeviceProvider.cs
+++ b/RGB.NET.Devices.SteelSeries/SteelSeriesDeviceProvider.cs
@@ -12,6 +12,12 @@ namespace RGB.NET.Devices.SteelSeries;
///
public class SteelSeriesDeviceProvider : AbstractRGBDeviceProvider
{
+ #region Constants
+
+ private static readonly int HEARTBEAT_TIMER = 5000; // flush the device every 5 seconds to prevent timeouts
+
+ #endregion
+
#region Properties & Fields
private static SteelSeriesDeviceProvider? _instance;
@@ -121,7 +127,7 @@ public class SteelSeriesDeviceProvider : AbstractRGBDeviceProvider
}
///
- protected override IDeviceUpdateTrigger CreateUpdateTrigger(int id, double updateRateHardLimit) => new SteelSeriesDeviceUpdateTrigger(updateRateHardLimit);
+ protected override IDeviceUpdateTrigger CreateUpdateTrigger(int id, double updateRateHardLimit) => new DeviceUpdateTrigger(updateRateHardLimit) { HeartbeatTimer = HEARTBEAT_TIMER };
///
public override void Dispose()