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