diff --git a/RGB.NET.Devices.Razer/ChromaLink/RazerChromaLinkUpdateQueue.cs b/RGB.NET.Devices.Razer/ChromaLink/RazerChromaLinkUpdateQueue.cs
index 0395c21..22ba06f 100644
--- a/RGB.NET.Devices.Razer/ChromaLink/RazerChromaLinkUpdateQueue.cs
+++ b/RGB.NET.Devices.Razer/ChromaLink/RazerChromaLinkUpdateQueue.cs
@@ -34,6 +34,9 @@ namespace RGB.NET.Devices.Razer
return ptr;
}
+ ///
+ protected override void CreateEffect(IntPtr effectParams, ref Guid effectId) => _RazerSDK.CreateChromaLinkEffect(_Defines.CHROMALINK_EFFECT_ID, effectParams, ref effectId);
+
#endregion
}
}
diff --git a/RGB.NET.Devices.Razer/Enum/RazerError.cs b/RGB.NET.Devices.Razer/Enum/RazerError.cs
index 06321a7..3400792 100644
--- a/RGB.NET.Devices.Razer/Enum/RazerError.cs
+++ b/RGB.NET.Devices.Razer/Enum/RazerError.cs
@@ -3,7 +3,7 @@
///
/// Razer-SDK: Error codes for Chroma SDK. If the error is not defined here, refer to WinError.h from the Windows SDK.
///
- public enum RazerError : long
+ public enum RazerError : int
{
///
/// Razer-SDK: Invalid.
@@ -88,6 +88,6 @@
///
/// Razer-SDK: General failure.
///
- Failed = 2147500037
+ Failed = unchecked(-2147467259)
}
}
diff --git a/RGB.NET.Devices.Razer/Generic/RazerUpdateQueue.cs b/RGB.NET.Devices.Razer/Generic/RazerUpdateQueue.cs
index 97baf19..0da1d49 100644
--- a/RGB.NET.Devices.Razer/Generic/RazerUpdateQueue.cs
+++ b/RGB.NET.Devices.Razer/Generic/RazerUpdateQueue.cs
@@ -31,7 +31,7 @@ namespace RGB.NET.Devices.Razer
{
IntPtr effectParams = CreateEffectParams(dataSet);
Guid effectId = Guid.NewGuid();
- _RazerSDK.CreateEffect(_deviceId, _Defines.EFFECT_ID, effectParams, ref effectId);
+ CreateEffect(effectParams, ref effectId);
_RazerSDK.SetEffect(effectId);
@@ -41,6 +41,8 @@ namespace RGB.NET.Devices.Razer
_lastEffect = effectId;
}
+ protected virtual void CreateEffect(IntPtr effectParams, ref Guid effectId) => _RazerSDK.CreateEffect(_deviceId, _Defines.EFFECT_ID, effectParams, ref effectId);
+
///
public override void Reset()
{
diff --git a/RGB.NET.Devices.Razer/Headset/RazerHeadsetUpdateQueue.cs b/RGB.NET.Devices.Razer/Headset/RazerHeadsetUpdateQueue.cs
index b867a4e..f038e4c 100644
--- a/RGB.NET.Devices.Razer/Headset/RazerHeadsetUpdateQueue.cs
+++ b/RGB.NET.Devices.Razer/Headset/RazerHeadsetUpdateQueue.cs
@@ -27,13 +27,16 @@ namespace RGB.NET.Devices.Razer
colors[(int)data.Key] = new _Color(data.Value);
_HeadsetCustomEffect effectParams = new _HeadsetCustomEffect { Color = colors };
-
+
IntPtr ptr = Marshal.AllocHGlobal(Marshal.SizeOf(effectParams));
Marshal.StructureToPtr(effectParams, ptr, false);
return ptr;
}
+ ///
+ protected override void CreateEffect(IntPtr effectParams, ref Guid effectId) => _RazerSDK.CreateHeadsetEffect(_Defines.HEADSET_EFFECT_ID, effectParams, ref effectId);
+
#endregion
}
}
diff --git a/RGB.NET.Devices.Razer/Native/_Defines.cs b/RGB.NET.Devices.Razer/Native/_Defines.cs
index 2c0c724..17d5167 100644
--- a/RGB.NET.Devices.Razer/Native/_Defines.cs
+++ b/RGB.NET.Devices.Razer/Native/_Defines.cs
@@ -3,6 +3,8 @@
internal static class _Defines
{
internal const int EFFECT_ID = 7;
+ internal const int HEADSET_EFFECT_ID = 4;
+ internal const int CHROMALINK_EFFECT_ID = 1;
internal const int KEYBOARD_MAX_ROW = 6;
internal const int KEYBOARD_MAX_COLUMN = 22;
diff --git a/RGB.NET.Devices.Razer/Native/_RazerSDK.cs b/RGB.NET.Devices.Razer/Native/_RazerSDK.cs
index b2638cb..17742b3 100644
--- a/RGB.NET.Devices.Razer/Native/_RazerSDK.cs
+++ b/RGB.NET.Devices.Razer/Native/_RazerSDK.cs
@@ -46,6 +46,8 @@ namespace RGB.NET.Devices.Razer.Native
_unInitPointer = (UnInitPointer)Marshal.GetDelegateForFunctionPointer(GetProcAddress(_dllHandle, "UnInit"), typeof(UnInitPointer));
_queryDevicePointer = (QueryDevicePointer)Marshal.GetDelegateForFunctionPointer(GetProcAddress(_dllHandle, "QueryDevice"), typeof(QueryDevicePointer));
_createEffectPointer = (CreateEffectPointer)Marshal.GetDelegateForFunctionPointer(GetProcAddress(_dllHandle, "CreateEffect"), typeof(CreateEffectPointer));
+ _createHeadsetEffectPointer = (CreateHeadsetEffectPointer)Marshal.GetDelegateForFunctionPointer(GetProcAddress(_dllHandle, "CreateHeadsetEffect"), typeof(CreateHeadsetEffectPointer));
+ _createChromaLinkEffectPointer = (CreateChromaLinkEffectPointer)Marshal.GetDelegateForFunctionPointer(GetProcAddress(_dllHandle, "CreateChromaLinkEffect"), typeof(CreateChromaLinkEffectPointer));
_setEffectPointer = (SetEffectPointer)Marshal.GetDelegateForFunctionPointer(GetProcAddress(_dllHandle, "SetEffect"), typeof(SetEffectPointer));
_deleteEffectPointer = (DeleteEffectPointer)Marshal.GetDelegateForFunctionPointer(GetProcAddress(_dllHandle, "DeleteEffect"), typeof(DeleteEffectPointer));
}
@@ -78,6 +80,8 @@ namespace RGB.NET.Devices.Razer.Native
private static UnInitPointer _unInitPointer;
private static QueryDevicePointer _queryDevicePointer;
private static CreateEffectPointer _createEffectPointer;
+ private static CreateHeadsetEffectPointer _createHeadsetEffectPointer;
+ private static CreateChromaLinkEffectPointer _createChromaLinkEffectPointer;
private static SetEffectPointer _setEffectPointer;
private static DeleteEffectPointer _deleteEffectPointer;
@@ -97,6 +101,12 @@ namespace RGB.NET.Devices.Razer.Native
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate RazerError CreateEffectPointer(Guid deviceId, int effectType, IntPtr param, ref Guid effectId);
+ [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+ private delegate RazerError CreateHeadsetEffectPointer(int effectType, IntPtr param, ref Guid effectId);
+
+ [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+ private delegate RazerError CreateChromaLinkEffectPointer(int effectType, IntPtr param, ref Guid effectId);
+
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
private delegate RazerError SetEffectPointer(Guid effectId);
@@ -135,6 +145,10 @@ namespace RGB.NET.Devices.Razer.Native
internal static RazerError CreateEffect(Guid deviceId, int effectType, IntPtr param, ref Guid effectId) => _createEffectPointer(deviceId, effectType, param, ref effectId);
+ internal static RazerError CreateHeadsetEffect(int effectType, IntPtr param, ref Guid effectId) => _createHeadsetEffectPointer(effectType, param, ref effectId);
+
+ internal static RazerError CreateChromaLinkEffect(int effectType, IntPtr param, ref Guid effectId) => _createChromaLinkEffectPointer(effectType, param, ref effectId);
+
internal static RazerError SetEffect(Guid effectId) => _setEffectPointer(effectId);
internal static RazerError DeleteEffect(Guid effectId) => _deleteEffectPointer(effectId);