diff --git a/RGB.NET.Devices.Corsair/CorsairDeviceProvider.cs b/RGB.NET.Devices.Corsair/CorsairDeviceProvider.cs
index 7a1abe0..d4cd116 100644
--- a/RGB.NET.Devices.Corsair/CorsairDeviceProvider.cs
+++ b/RGB.NET.Devices.Corsair/CorsairDeviceProvider.cs
@@ -45,6 +45,11 @@ public class CorsairDeviceProvider : AbstractRGBDeviceProvider
///
public static bool ExclusiveAccess { get; set; } = false;
+ ///
+ /// Gets the details for the current SDK-session.
+ ///
+ public CorsairSessionDetails SessionDetails { get; private set; } = new();
+
#endregion
#region Constructors
@@ -81,12 +86,17 @@ public class CorsairDeviceProvider : AbstractRGBDeviceProvider
_CUESDK.SessionStateChanged += OnSessionStateChanged;
CorsairError errorCode = _CUESDK.CorsairConnect();
-
if (errorCode != CorsairError.Success)
Throw(new RGBDeviceException($"Failed to initialized Corsair-SDK. (ErrorCode: {errorCode})"));
if (!waitEvent.Wait(ConnectionTimeout))
Throw(new RGBDeviceException($"Failed to initialized Corsair-SDK. (Timeout - Current connection state: {_CUESDK.SesionState})"));
+
+ _CUESDK.CorsairGetSessionDetails(out _CorsairSessionDetails? details);
+ if (errorCode != CorsairError.Success)
+ Throw(new RGBDeviceException($"Failed to get session details. (ErrorCode: {errorCode})"));
+
+ SessionDetails = new CorsairSessionDetails(details!);
}
finally
{
diff --git a/RGB.NET.Devices.Corsair/Generic/CorsairProtocolDetails.cs b/RGB.NET.Devices.Corsair/Generic/CorsairProtocolDetails.cs
new file mode 100644
index 0000000..7069776
--- /dev/null
+++ b/RGB.NET.Devices.Corsair/Generic/CorsairProtocolDetails.cs
@@ -0,0 +1,37 @@
+// ReSharper disable MemberCanBePrivate.Global
+
+using RGB.NET.Devices.Corsair.Native;
+
+namespace RGB.NET.Devices.Corsair;
+
+///
+/// Represents version information for the Corsair-SDK
+///
+public class CorsairSessionDetails
+{
+ #region Properties & Fields
+
+ public string ClientVersion { get; }
+ public string ServerVersion { get; }
+ public string ServerHostVersion { get; }
+
+ #endregion
+
+ #region Constructors
+
+ internal CorsairSessionDetails()
+ {
+ ClientVersion = string.Empty;
+ ServerVersion = string.Empty;
+ ServerHostVersion = string.Empty;
+ }
+
+ internal CorsairSessionDetails(_CorsairSessionDetails nativeDetails)
+ {
+ this.ClientVersion = nativeDetails.clientVersion.ToString();
+ this.ServerVersion = nativeDetails.serverVersion.ToString();
+ this.ServerHostVersion = nativeDetails.serverHostVersion.ToString();
+ }
+
+ #endregion
+}
\ No newline at end of file