From f654f825f70169dec51112774b1f896fcf1652c7 Mon Sep 17 00:00:00 2001 From: Darth Affe Date: Tue, 15 Aug 2017 21:09:16 +0200 Subject: [PATCH] Added stub-novation-library for launchpad support --- NuGet/RGB.NET.Devices.Novation.nuspec | 30 +++++ RGB.NET.Core/Devices/RGBDeviceType.cs | 7 +- .../Enum/NovationLedIds.cs | 106 +++++++++++++++ .../Generic/NovationLedId.cs | 107 ++++++++++++++++ .../Generic/NovationRGBDevice.cs | 121 ++++++++++++++++++ .../Generic/NovationRGBDeviceInfo.cs | 45 +++++++ .../Helper/NovationLedIdsExtension.cs | 47 +++++++ .../Launchpad/NovationLaunchpadRGBDevice.cs | 63 +++++++++ .../NovationLaunchpadRGBDeviceInfo.cs | 25 ++++ .../NovationDeviceProvider.cs | 96 ++++++++++++++ .../Properties/AssemblyInfo.cs | 35 +++++ .../RGB.NET.Devices.Novation.csproj | 72 +++++++++++ ...GB.NET.Devices.Novation.csproj.DotSettings | 5 + RGB.NET.Devices.Novation/packages.config | 4 + RGB.NET.sln | 8 ++ 15 files changed, 770 insertions(+), 1 deletion(-) create mode 100644 NuGet/RGB.NET.Devices.Novation.nuspec create mode 100644 RGB.NET.Devices.Novation/Enum/NovationLedIds.cs create mode 100644 RGB.NET.Devices.Novation/Generic/NovationLedId.cs create mode 100644 RGB.NET.Devices.Novation/Generic/NovationRGBDevice.cs create mode 100644 RGB.NET.Devices.Novation/Generic/NovationRGBDeviceInfo.cs create mode 100644 RGB.NET.Devices.Novation/Helper/NovationLedIdsExtension.cs create mode 100644 RGB.NET.Devices.Novation/Launchpad/NovationLaunchpadRGBDevice.cs create mode 100644 RGB.NET.Devices.Novation/Launchpad/NovationLaunchpadRGBDeviceInfo.cs create mode 100644 RGB.NET.Devices.Novation/NovationDeviceProvider.cs create mode 100644 RGB.NET.Devices.Novation/Properties/AssemblyInfo.cs create mode 100644 RGB.NET.Devices.Novation/RGB.NET.Devices.Novation.csproj create mode 100644 RGB.NET.Devices.Novation/RGB.NET.Devices.Novation.csproj.DotSettings create mode 100644 RGB.NET.Devices.Novation/packages.config diff --git a/NuGet/RGB.NET.Devices.Novation.nuspec b/NuGet/RGB.NET.Devices.Novation.nuspec new file mode 100644 index 0000000..23131e4 --- /dev/null +++ b/NuGet/RGB.NET.Devices.Novation.nuspec @@ -0,0 +1,30 @@ + + + + RGB.NET.Devices.Novation + RGB.NET.Devices.Novation + 1.0.0.0 + Darth Affe + Darth Affe + https://github.com/DarthAffe/RGB.NET + https://raw.githubusercontent.com/DarthAffe/RGB.NET/master/LICENSE + true + Novation-Device-Implementations of RGB.NET + + Novation-Device-Implementations of RGB.NET, a C# (.NET) library for accessing various RGB-peripherals + Copyright © Wyrez 2017 + en-US + + + + + + + + + + + + + + \ No newline at end of file diff --git a/RGB.NET.Core/Devices/RGBDeviceType.cs b/RGB.NET.Core/Devices/RGBDeviceType.cs index 7345bab..c02be47 100644 --- a/RGB.NET.Core/Devices/RGBDeviceType.cs +++ b/RGB.NET.Core/Devices/RGBDeviceType.cs @@ -33,6 +33,11 @@ /// /// Represents a LED-stipe. /// - LedStripe + LedStripe, + + /// + /// Represents a LED-matrix + /// + LedMatrix } } diff --git a/RGB.NET.Devices.Novation/Enum/NovationLedIds.cs b/RGB.NET.Devices.Novation/Enum/NovationLedIds.cs new file mode 100644 index 0000000..ad112db --- /dev/null +++ b/RGB.NET.Devices.Novation/Enum/NovationLedIds.cs @@ -0,0 +1,106 @@ +// ReSharper disable InconsistentNaming + +#pragma warning disable 1591 // Missing XML comment for publicly visible type or member + +namespace RGB.NET.Devices.Novation +{ + /// + /// Contains list of all LEDs available for all Novation devices. + /// They are represented as Hex 0x[00][11] where [00] is the status flag, [1] the id of the led. + /// + //TODO DarthAffe 15.08.2017: Check if this is really correct for all devices + public enum NovationLedIds + { + Invalid = -1, + + Grid1 = 0x9000, + Grid2 = 0x9001, + Grid3 = 0x9002, + Grid4 = 0x9003, + Grid5 = 0x9004, + Grid6 = 0x9005, + Grid7 = 0x9006, + Grid8 = 0x9007, + + Grid9 = 0x9010, + Grid10 = 0x9011, + Grid11 = 0x9012, + Grid12 = 0x9013, + Grid13 = 0x9014, + Grid14 = 0x9015, + Grid15 = 0x9016, + Grid16 = 0x9017, + + Grid17 = 0x9020, + Grid18 = 0x9021, + Grid19 = 0x9022, + Grid20 = 0x9023, + Grid21 = 0x9024, + Grid22 = 0x9025, + Grid23 = 0x9026, + Grid24 = 0x9027, + + Grid25 = 0x9030, + Grid26 = 0x9031, + Grid27 = 0x9032, + Grid28 = 0x9033, + Grid29 = 0x9034, + Grid30 = 0x9035, + Grid31 = 0x9036, + Grid32 = 0x9037, + + Grid33 = 0x9040, + Grid34 = 0x9041, + Grid35 = 0x9042, + Grid36 = 0x9043, + Grid37 = 0x9044, + Grid38 = 0x9045, + Grid39 = 0x9046, + Grid40 = 0x9047, + + Grid41 = 0x9050, + Grid42 = 0x9051, + Grid43 = 0x9052, + Grid44 = 0x9053, + Grid45 = 0x9054, + Grid46 = 0x9055, + Grid47 = 0x9056, + Grid48 = 0x9057, + + Grid49 = 0x9060, + Grid50 = 0x9061, + Grid51 = 0x9062, + Grid52 = 0x9063, + Grid53 = 0x9064, + Grid54 = 0x9065, + Grid55 = 0x9066, + Grid56 = 0x9067, + + Grid57 = 0x9070, + Grid58 = 0x9071, + Grid59 = 0x9072, + Grid60 = 0x9073, + Grid61 = 0x9074, + Grid62 = 0x9075, + Grid63 = 0x9076, + Grid64 = 0x9077, + + Up = 0xB068, + Down = 0xB069, + Left = 0xB06A, + Right = 0xB06B, + Session = 0xB06C, + User1 = 0xB06D, + User2 = 0xB06E, + Mix = 0xB06F, + + Scene1 = 0x9009, + Scene2 = 0x9019, + Scene3 = 0x9029, + Scene4 = 0x9039, + Scene5 = 0x9049, + Scene6 = 0x9059, + Scene7 = 0x9069, + Scene8 = 0x9079 + } +} diff --git a/RGB.NET.Devices.Novation/Generic/NovationLedId.cs b/RGB.NET.Devices.Novation/Generic/NovationLedId.cs new file mode 100644 index 0000000..45d87bb --- /dev/null +++ b/RGB.NET.Devices.Novation/Generic/NovationLedId.cs @@ -0,0 +1,107 @@ +using System.Diagnostics; +using RGB.NET.Core; + +namespace RGB.NET.Devices.Novation +{ + /// + /// Represents a Id of a on a . + /// + [DebuggerDisplay("{" + nameof(LedId) + "}")] + public class NovationLedId : ILedId + { + #region Properties & Fields + + internal readonly NovationLedIds LedId; + + /// + public IRGBDevice Device { get; } + + /// + public bool IsValid => LedId != NovationLedIds.Invalid; + + #endregion + + #region Constructors + + /// + /// Initializes a new instance of the class. + /// + /// The the belongs to. + /// The of the represented . + public NovationLedId(IRGBDevice device, NovationLedIds ledId) + { + this.Device = device; + this.LedId = ledId; + } + + #endregion + + #region Methods + + /// + /// Converts the Id of this to a human-readable string. + /// + /// A string that contains the Id of this . For example "Enter". + public override string ToString() + { + return LedId.ToString(); + } + + /// + /// Tests whether the specified object is a and is equivalent to this . + /// + /// The object to test. + /// true if is a equivalent to this ; otherwise, false. + public override bool Equals(object obj) + { + NovationLedId compareLedId = obj as NovationLedId; + if (ReferenceEquals(compareLedId, null)) + return false; + + if (ReferenceEquals(this, compareLedId)) + return true; + + if (GetType() != compareLedId.GetType()) + return false; + + return compareLedId.LedId == LedId; + } + + /// + /// Returns a hash code for this . + /// + /// An integer value that specifies the hash code for this . + public override int GetHashCode() + { + return LedId.GetHashCode(); + } + + #endregion + + #region Operators + + /// + /// Returns a value that indicates whether two specified are equal. + /// + /// The first to compare. + /// The second to compare. + /// true if and are equal; otherwise, false. + public static bool operator ==(NovationLedId ledId1, NovationLedId ledId2) + { + return ReferenceEquals(ledId1, null) ? ReferenceEquals(ledId2, null) : ledId1.Equals(ledId2); + } + + /// + /// Returns a value that indicates whether two specified are equal. + /// + /// The first to compare. + /// The second to compare. + /// true if and are not equal; otherwise, false. + public static bool operator !=(NovationLedId ledId1, NovationLedId ledId2) + { + return !(ledId1 == ledId2); + } + + #endregion + } +} diff --git a/RGB.NET.Devices.Novation/Generic/NovationRGBDevice.cs b/RGB.NET.Devices.Novation/Generic/NovationRGBDevice.cs new file mode 100644 index 0000000..4c3db2b --- /dev/null +++ b/RGB.NET.Devices.Novation/Generic/NovationRGBDevice.cs @@ -0,0 +1,121 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using RGB.NET.Core; +using RGB.NET.Core.Layout; + +namespace RGB.NET.Devices.Novation +{ + /// + /// Represents a generic Novation-device. (keyboard, mouse, headset, mousepad). + /// + public abstract class NovationRGBDevice : AbstractRGBDevice + { + #region Properties & Fields + /// + /// Gets information about the . + /// + public override IRGBDeviceInfo DeviceInfo { get; } + + #endregion + + #region Constructors + + /// + /// Initializes a new instance of the class. + /// + /// The generic information provided by Novation for the device. + protected NovationRGBDevice(IRGBDeviceInfo info) + { + this.DeviceInfo = info; + } + + #endregion + + #region Methods + + + /// + /// Initializes the device. + /// + internal void Initialize() + { + InitializeLayout(); + + if (InternalSize == null) + { + Rectangle ledRectangle = new Rectangle(this.Select(x => x.LedRectangle)); + InternalSize = ledRectangle.Size + new Size(ledRectangle.Location.X, ledRectangle.Location.Y); + } + } + + /// + /// Initializes the and of the device. + /// + protected abstract void InitializeLayout(); + + /// + /// Applies the given layout. + /// + /// The file containing the layout. + /// The name of the layout used to get the images of the leds. + /// The path images for this device are collected in. + protected void ApplyLayoutFromFile(string layoutPath, string imageLayout, string imageBasePath) + { + DeviceLayout layout = DeviceLayout.Load(layoutPath); + if (layout != null) + { + LedImageLayout ledImageLayout = layout.LedImageLayouts.FirstOrDefault(x => string.Equals(x.Layout, imageLayout, StringComparison.OrdinalIgnoreCase)); + + InternalSize = new Size(layout.Width, layout.Height); + + if (layout.Leds != null) + foreach (LedLayout layoutLed in layout.Leds) + { + NovationLedIds ledId; + if (Enum.TryParse(layoutLed.Id, true, out ledId)) + { + Led led; + if (LedMapping.TryGetValue(new NovationLedId(this, ledId), out led)) + { + led.LedRectangle.Location.X = layoutLed.X; + led.LedRectangle.Location.Y = layoutLed.Y; + led.LedRectangle.Size.Width = layoutLed.Width; + led.LedRectangle.Size.Height = layoutLed.Height; + + led.Shape = layoutLed.Shape; + led.ShapeData = layoutLed.ShapeData; + + LedImage image = ledImageLayout?.LedImages.FirstOrDefault(x => x.Id == layoutLed.Id); + led.Image = (!string.IsNullOrEmpty(image?.Image)) + ? new Uri(Path.Combine(imageBasePath, image.Image), UriKind.Absolute) + : new Uri(Path.Combine(imageBasePath, "Missing.png"), UriKind.Absolute); + } + } + } + } + } + + /// + protected override void UpdateLeds(IEnumerable ledsToUpdate) + { + List leds = ledsToUpdate.Where(x => x.Color.A > 0).ToList(); + + if (leds.Count > 0) + { + //TODO DarthAffe 15.08.2017: Update Leds + } + } + + /// + public override void Dispose() + { + //TODO DarthAffe 15.08.2017: Dispose + + base.Dispose(); + } + + #endregion + } +} diff --git a/RGB.NET.Devices.Novation/Generic/NovationRGBDeviceInfo.cs b/RGB.NET.Devices.Novation/Generic/NovationRGBDeviceInfo.cs new file mode 100644 index 0000000..7384f03 --- /dev/null +++ b/RGB.NET.Devices.Novation/Generic/NovationRGBDeviceInfo.cs @@ -0,0 +1,45 @@ +using System; +using RGB.NET.Core; + +namespace RGB.NET.Devices.Novation +{ + /// + /// Represents a generic information for a Corsair-. + /// + public class NovationRGBDeviceInfo : IRGBDeviceInfo + { + #region Properties & Fields + + /// + public RGBDeviceType DeviceType { get; } + + /// + public string Manufacturer => "Novation"; + + /// + public string Model { get; } + + /// + public Uri Image { get; protected set; } + + /// + public RGBDeviceLighting Lighting => RGBDeviceLighting.Key; + + #endregion + + #region Constructors + + /// + /// Internal constructor of managed . + /// + /// The type of the . + /// The represented device model. + internal NovationRGBDeviceInfo(RGBDeviceType deviceType, string model) + { + this.DeviceType = deviceType; + this.Model = model; + } + + #endregion + } +} diff --git a/RGB.NET.Devices.Novation/Helper/NovationLedIdsExtension.cs b/RGB.NET.Devices.Novation/Helper/NovationLedIdsExtension.cs new file mode 100644 index 0000000..a68c150 --- /dev/null +++ b/RGB.NET.Devices.Novation/Helper/NovationLedIdsExtension.cs @@ -0,0 +1,47 @@ +namespace RGB.NET.Devices.Novation +{ + /// + /// Offers some extensions and helper-methods for NovationLedIds related things. + /// + public static class NovationLedIdsExtension + { + #region Methods + + /// + /// Gets the status-flag associated with the id. + /// + /// The whose status-flag should be determinated. + /// The status-flag of the . + public static int GetStatus(this NovationLedIds ledId) => ((int)ledId & 0xFF00) >> 8; + + /// + /// Gets the id associated with the id. + /// + /// The whose idshould be determinated. + /// The id of the . + public static int GetId(this NovationLedIds ledId) => (int)ledId & 0x00FF; + + /// + /// Tests if the given is a grid-button. + /// + /// the to test. + /// true if is a grid-button; otherwise, false. + public static bool IsGrid(this NovationLedIds ledId) => (ledId.GetStatus() == 0x90) && ((ledId.GetId() / 0x10) < 0x08) && ((ledId.GetId() % 0x10) < 0x08); + + /// + /// Tests if the given is a scene-button. + /// + /// the to test. + /// true if is a scene-button; otherwise, false. + public static bool IsScene(this NovationLedIds ledId) => (ledId.GetStatus() == 0x90) && ((ledId.GetId() / 0x10) < 0x08) && ((ledId.GetId() % 0x10) == 0x09); + + /// + /// Tests if the given is custom-button. + /// + /// the to test. + /// true if is a custom-button; otherwise, false. + public static bool IsCustom(this NovationLedIds ledId) => (ledId.GetStatus() == 0xB0) && ((ledId.GetId() / 0x10) == 0x06) && ((ledId.GetId() % 0x10) > 0x07); + + #endregion + } +} diff --git a/RGB.NET.Devices.Novation/Launchpad/NovationLaunchpadRGBDevice.cs b/RGB.NET.Devices.Novation/Launchpad/NovationLaunchpadRGBDevice.cs new file mode 100644 index 0000000..7b69ca5 --- /dev/null +++ b/RGB.NET.Devices.Novation/Launchpad/NovationLaunchpadRGBDevice.cs @@ -0,0 +1,63 @@ +using System; +using RGB.NET.Core; + +namespace RGB.NET.Devices.Novation +{ + /// + /// Represents a Novation launchpad. + /// + public class NovationLaunchpadRGBDevice : NovationRGBDevice + { + #region Properties & Fields + + /// + /// Gets information about the . + /// + public NovationLaunchpadRGBDeviceInfo LaunchpadDeviceInfo { get; } + + #endregion + + #region Constructors + + /// + /// Initializes a new instance of the class. + /// + /// The specific information provided by Novation for the launchpad + internal NovationLaunchpadRGBDevice(NovationLaunchpadRGBDeviceInfo info) + : base(info) + { + this.LaunchpadDeviceInfo = info; + } + + #endregion + + #region Methods + + /// + protected override void InitializeLayout() + { + //TODO DarthAffe 15.08.2017: Check if all launchpads are using the same basic layout + //TODO DarthAffe 15.08.2017: Measure button size + const int BUTTON_SIZE = 16; + foreach (NovationLedIds ledId in Enum.GetValues(typeof(NovationLedIds))) + { + Rectangle rectangle; + if (ledId.IsCustom()) + rectangle = new Rectangle(BUTTON_SIZE * (ledId.GetId() - 0x68), 0, BUTTON_SIZE, BUTTON_SIZE); + else if (ledId.IsScene()) + rectangle = new Rectangle(8 * BUTTON_SIZE, BUTTON_SIZE * (((int)ledId.GetId() / 0x10) + 1), BUTTON_SIZE, BUTTON_SIZE); + else if (ledId.IsGrid()) + rectangle = new Rectangle(BUTTON_SIZE * ((int)ledId.GetId() % 0x10), BUTTON_SIZE * (((int)ledId.GetId() / 0x10) + 1), BUTTON_SIZE, BUTTON_SIZE); + else continue; + + InitializeLed(new NovationLedId(this, ledId), rectangle); + } + + string model = LaunchpadDeviceInfo.Model.Replace(" ", string.Empty).ToUpper(); + ApplyLayoutFromFile(PathHelper.GetAbsolutePath( + $@"Layouts\Novation\Launchpads\{model.ToUpper()}.xml"), "Default", PathHelper.GetAbsolutePath(@"Images\Novation\Launchpads")); + } + + #endregion + } +} \ No newline at end of file diff --git a/RGB.NET.Devices.Novation/Launchpad/NovationLaunchpadRGBDeviceInfo.cs b/RGB.NET.Devices.Novation/Launchpad/NovationLaunchpadRGBDeviceInfo.cs new file mode 100644 index 0000000..82f81f9 --- /dev/null +++ b/RGB.NET.Devices.Novation/Launchpad/NovationLaunchpadRGBDeviceInfo.cs @@ -0,0 +1,25 @@ +using System; +using RGB.NET.Core; + +namespace RGB.NET.Devices.Novation +{ + /// + /// Represents a generic information for a . + /// + public class NovationLaunchpadRGBDeviceInfo : NovationRGBDeviceInfo + { + #region Constructors + + /// + /// Internal constructor of managed . + /// + /// The represented device model. + internal NovationLaunchpadRGBDeviceInfo(string model) + : base(RGBDeviceType.LedMatrix, model) + { + Image = new Uri(PathHelper.GetAbsolutePath($@"Images\Novation\Launchpads\{Model.Replace(" ", string.Empty).ToUpper()}.png"), UriKind.Absolute); + } + + #endregion + } +} diff --git a/RGB.NET.Devices.Novation/NovationDeviceProvider.cs b/RGB.NET.Devices.Novation/NovationDeviceProvider.cs new file mode 100644 index 0000000..72676c9 --- /dev/null +++ b/RGB.NET.Devices.Novation/NovationDeviceProvider.cs @@ -0,0 +1,96 @@ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using RGB.NET.Core; + +namespace RGB.NET.Devices.Novation +{ + public class NovationDeviceProvider : IRGBDeviceProvider + { + #region Properties & Fields + + private static NovationDeviceProvider _instance; + /// + /// Gets the singleton instance. + /// + public static NovationDeviceProvider Instance => _instance ?? new NovationDeviceProvider(); + + /// + /// Indicates if the SDK is initialized and ready to use. + /// + public bool IsInitialized { get; private set; } + + /// + /// Gets whether the application has exclusive access to the SDK or not. + /// + public bool HasExclusiveAccess => false; + + /// + public IEnumerable Devices { get; private set; } + + #endregion + + #region Constructors + + /// + /// Initializes a new instance of the class. + /// + /// Thrown if this constructor is called even if there is already an instance of this class. + private NovationDeviceProvider() + { + if (_instance != null) throw new InvalidOperationException($"There can be only one instanc of type {nameof(NovationDeviceProvider)}"); + _instance = this; + } + + #endregion + + #region Methods + + public bool Initialize(bool exclusiveAccessIfPossible = false, bool throwExceptions = false) + { + IsInitialized = false; + + try + { + IList devices = new List(); + + //TODO DarthAffe 15.08.2017: Get devices + // foreach ... + try + { + NovationRGBDevice device = null; + device = new NovationLaunchpadRGBDevice(new NovationLaunchpadRGBDeviceInfo("Launchpad S")); + device.Initialize(); + devices.Add(device); + } + catch + { + if (throwExceptions) + throw; + //else + //continue; + } + + Devices = new ReadOnlyCollection(devices); + } + catch + { + if (throwExceptions) + throw; + else + return false; + } + + IsInitialized = true; + + return true; + } + + public void ResetDevices() + { + //TODO DarthAffe 15.08.2017: Is this possible? + } + + #endregion + } +} diff --git a/RGB.NET.Devices.Novation/Properties/AssemblyInfo.cs b/RGB.NET.Devices.Novation/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..85ae5fe --- /dev/null +++ b/RGB.NET.Devices.Novation/Properties/AssemblyInfo.cs @@ -0,0 +1,35 @@ +using System.Reflection; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("RGB.NET.Devices.Novation")] +[assembly: AssemblyDescription("Novation-Device-Implementations of RGB.NET")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Wyrez")] +[assembly: AssemblyProduct("RGB.NET.Devices.Novation")] +[assembly: AssemblyCopyright("Copyright © Wyrez 2017")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("dda8c4c2-8abf-4fa0-9af9-c47ad0bfe47d")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] \ No newline at end of file diff --git a/RGB.NET.Devices.Novation/RGB.NET.Devices.Novation.csproj b/RGB.NET.Devices.Novation/RGB.NET.Devices.Novation.csproj new file mode 100644 index 0000000..6cc41d6 --- /dev/null +++ b/RGB.NET.Devices.Novation/RGB.NET.Devices.Novation.csproj @@ -0,0 +1,72 @@ + + + + + Debug + AnyCPU + {DB2911F6-404C-4BC8-B35F-232A7450755F} + Library + Properties + RGB.NET.Devices.Novation + RGB.NET.Devices.Novation + v4.5 + 512 + + + true + full + false + ..\bin\ + DEBUG;TRACE + prompt + 4 + ..\bin\RGB.NET.Devices.Novation.XML + + + pdbonly + true + ..\bin\ + TRACE + prompt + 4 + ..\bin\RGB.NET.Devices.Novation.XML + + + + + + ..\packages\System.ValueTuple.4.4.0\lib\netstandard1.0\System.ValueTuple.dll + + + + + + + + + + + + + + + + + + + + + + + + + + {5a4f9a75-75fe-47cd-90e5-914d5b20d232} + RGB.NET.Core + + + + + + + \ No newline at end of file diff --git a/RGB.NET.Devices.Novation/RGB.NET.Devices.Novation.csproj.DotSettings b/RGB.NET.Devices.Novation/RGB.NET.Devices.Novation.csproj.DotSettings new file mode 100644 index 0000000..b5910ca --- /dev/null +++ b/RGB.NET.Devices.Novation/RGB.NET.Devices.Novation.csproj.DotSettings @@ -0,0 +1,5 @@ + + True + True + True + True \ No newline at end of file diff --git a/RGB.NET.Devices.Novation/packages.config b/RGB.NET.Devices.Novation/packages.config new file mode 100644 index 0000000..a59695c --- /dev/null +++ b/RGB.NET.Devices.Novation/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/RGB.NET.sln b/RGB.NET.sln index 224592c..f4fde81 100644 --- a/RGB.NET.sln +++ b/RGB.NET.sln @@ -32,6 +32,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "NuGet", "NuGet", "{06416566 NuGet\RGB.NET.Devices.CoolerMaster.nuspec = NuGet\RGB.NET.Devices.CoolerMaster.nuspec NuGet\RGB.NET.Devices.Corsair.nuspec = NuGet\RGB.NET.Devices.Corsair.nuspec NuGet\RGB.NET.Devices.Logitech.nuspec = NuGet\RGB.NET.Devices.Logitech.nuspec + NuGet\RGB.NET.Devices.Novation.nuspec = NuGet\RGB.NET.Devices.Novation.nuspec NuGet\RGB.NET.Effects.nuspec = NuGet\RGB.NET.Effects.nuspec NuGet\RGB.NET.Groups.nuspec = NuGet\RGB.NET.Groups.nuspec NuGet\RGB.NET.Input.Corsair.nuspec = NuGet\RGB.NET.Input.Corsair.nuspec @@ -47,6 +48,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RGB.NET.Devices.Logitech", EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RGB.NET.Devices.CoolerMaster", "RGB.NET.Devices.CoolerMaster\RGB.NET.Devices.CoolerMaster.csproj", "{85609427-D433-44E2-A249-CE890B66D845}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RGB.NET.Devices.Novation", "RGB.NET.Devices.Novation\RGB.NET.Devices.Novation.csproj", "{DB2911F6-404C-4BC8-B35F-232A7450755F}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -93,6 +96,10 @@ Global {85609427-D433-44E2-A249-CE890B66D845}.Debug|Any CPU.Build.0 = Debug|Any CPU {85609427-D433-44E2-A249-CE890B66D845}.Release|Any CPU.ActiveCfg = Release|Any CPU {85609427-D433-44E2-A249-CE890B66D845}.Release|Any CPU.Build.0 = Release|Any CPU + {DB2911F6-404C-4BC8-B35F-232A7450755F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DB2911F6-404C-4BC8-B35F-232A7450755F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DB2911F6-404C-4BC8-B35F-232A7450755F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DB2911F6-404C-4BC8-B35F-232A7450755F}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -107,5 +114,6 @@ Global {8D6C4FE6-0046-4E98-876F-4C0B87249989} = {BD7C9994-1747-4595-9C21-298E8FDCB657} {E7B2F174-FCC6-4FC7-9970-3138B5F4C921} = {33D5E279-1C4E-4AB6-9D1E-6D18109A6C25} {85609427-D433-44E2-A249-CE890B66D845} = {33D5E279-1C4E-4AB6-9D1E-6D18109A6C25} + {DB2911F6-404C-4BC8-B35F-232A7450755F} = {33D5E279-1C4E-4AB6-9D1E-6D18109A6C25} EndGlobalSection EndGlobal