diff --git a/README.md b/README.md
index 7d7098d..7261a9a 100644
--- a/README.md
+++ b/README.md
@@ -1,30 +1,87 @@
# RGB.NET
+[](https://github.com/DarthAffe/RGB.NET/releases)
+[](https://www.nuget.org/packages?q=rgb.net)
+[](https://github.com/DarthAffe/RGB.NET/blob/master/LICENSE)
+[](https://github.com/DarthAffe/RGB.NET/stargazers)
+[](https://discord.gg/9kytURv)
-This project aims to unify the use of various RGB-devices.
-**It is currently under heavy development and will have breaking changes in the future!** Right now a lot of devices aren't working as expected and there are bugs/unfinished features. Please think about that when you consider using the library in this early stage.
-
-If you want to help with layouting/testing devices or if you need support using the library feel free to join the [RGB.NET discord-channel](https://discord.gg/9kytURv).
+> **IMPORTANT NOTE**
+This is a library to integrate RGB-devices into your own application. It does not contain any executables!
+If you're looking for a full blown software solution to manage your RGB-devices, take a look at [Artemis](https://artemis-rgb.com/).
+## Getting Started
+### Setup
+1. Add the [RGB.NET.Core](https://www.nuget.org/packages/RGB.NET.Core) and [Devices](https://www.nuget.org/packages?q=rgb.net.Devices)-Nugets for all devices you want to use.
+2. For some of the vendors SDK-libraries are needed. Check the contained Readmes for more information in that case.
+3. Create a new `RGBSurface`.
+```csharp
+RGBSurface surface = new RGBSurface();
+```
-## Adding prerelease packages using NuGet ##
-This is the easiest and therefore preferred way to include RGB.NET in your project.
+4. Initialize the providers for all devices you want to use and add the devices to the surface. For example:
+```csharp
+CorsairDeviceProvider.Instance.Initialize(throwExceptions: true);
+surface.Attach(CorsairDeviceProvider.Instance.Devices);
+```
+The `Initialize`-method allows to load only devices of specific types by setting a filter and for debugging purposes allows to enable exception throwing. (By default they are catched and provided through the `Exception`-event.)
+You can also use the `Load`-Extension on the surface.
+```csharp
+surface.Load(CorsairDeviceProvider.Instance);
+```
+> While most device-providers are implemented in a way that supports fast loading like this some may have a different loading procedures. (For example the `WS281XDeviceProvider` requires device-definitions before loading.)
-Since there aren't any release-packages right now you'll have to use the CI-feed from [http://nuget.arge.be](http://nuget.arge.be).
-You can include it either by adding ```http://nuget.arge.be/v3/index.json``` to your Visual Studio package sources or by adding this [NuGet.Config](https://github.com/DarthAffe/RGB.NET/tree/master/Documentation/NuGet.Config) to your project (at the same level as your solution).
+5. Add an update-trigger. In most cases the TimerUpdateTrigger is preferable, but you can also implement your own to fit your needs.
+```csharp
+surface.RegisterUpdateTrigger(new TimerUpdateTrigger());
+```
+> If you want to trigger updates manually the `ManualUpdateTrigger` should be used.
-### .NET 4.5 Support ###
-At the end of the year with the release of .NET 5 the support for old .NET-Framwork versions will be droppped!
-It's not recommended to use RGB.NET in projects targeting .NET 4.x that aren't planned to be moved to Core/.NET 5 in the future.
+6. *This step is optional but recommended.* For rendering the location of each LED on the surface can be important. Since not all SDKs provide useful layout-information you might want to add Layouts to your devices. (TODO: add wiki article for this)
+Same goes for the location of the device on the surface. If you don't care about the exact location of the devices you can use:
+```csharp
+surface.AlignDevices();
+```
+The basic setup is now complete and you can start setting up your rendering.
-### Device-Layouts
-To be able to have devices with correct LED-locations and sizes they need to be layouted. Pre-created layouts can be found at https://github.com/DarthAffe/RGB.NET-Resources.
+### Basic Rendering
+As an example we'll add a moving rainbow over all devices on the surface.
+1. Create a led-group containing all leds on the surface (all devices)
+```csharp
+ILedGroup allLeds = new ListLedGroup(surface, surface.Leds);
+```
-If you plan to create layouts for your own devices check out https://github.com/DarthAffe/RGB.NET/wiki/Creating-Layouts first. There's also a layout-editor which strongly simplifies most of the work: https://github.com/SpoinkyNL/RGB.NET-Layout-Editor
+2. Create a rainbow-gradient.
+```csharp
+RainbowGradient rainbow = new RainbowGradient();
+```
-### Example usage of RGB.NET
-[](http://www.youtube.com/watch?v=JLRa0Wv4qso)
+3. Add a decorator to the gradient to make it move. (Decorators are
+```csharp
+rainbow.AddDecorator(new MoveGradientDecorator(surface));
+```
-#### Example Projects
-[https://github.com/DarthAffe/KeyboardAudioVisualizer](https://github.com/DarthAffe/KeyboardAudioVisualizer)
-[https://github.com/DarthAffe/RGBSyncPlus](https://github.com/DarthAffe/RGBSyncPlus)
+4. Create a texture (the size - in this example 10, 10 - is not important here since the gradient shoukd be stretched anyway)
+```csharp
+ITexture texture = new ConicalGradientTexture(new Size(10, 10), rainbow);
+```
+
+5. Add a brush rendering the texture to the led-group
+```csharp
+allLeds.Brush = new TextureBrush(texture);
+```
+
+### Full example
+```csharp
+RGBSurface surface = new RGBSurface();
+surface.Load(CorsairDeviceProvider.Instance);
+surface.AlignDevices();
+
+surface.RegisterUpdateTrigger(new TimerUpdateTrigger());
+
+ILedGroup allLeds = new ListLedGroup(surface, surface.Leds);
+RainbowGradient rainbow = new RainbowGradient();
+rainbow.AddDecorator(new MoveGradientDecorator(surface));
+ITexture texture = new ConicalGradientTexture(new Size(10, 10), rainbow);
+allLeds.Brush = new TextureBrush(texture);
+```
\ No newline at end of file
diff --git a/RGB.NET.Core/README.md b/RGB.NET.Core/README.md
new file mode 100644
index 0000000..d31978b
--- /dev/null
+++ b/RGB.NET.Core/README.md
@@ -0,0 +1,36 @@
+[RGB.NET](https://github.com/DarthAffe/RGB.NET) Core-Package.
+
+Required to use RGB.NET
+
+## Getting Started
+```csharp
+// Create a surface - this is where all devices belongs too
+RGBSurface surface = new RGBSurface();
+
+// Load your devices - check out the RGB.NET.Devices-packages for more information
+// TODO: Load device-providers
+
+// Automatically align devices to not overlap - you can ofc also move them by hand
+surface.AlignDevices();
+
+// Register an update-trigger
+surface.RegisterUpdateTrigger(new TimerUpdateTrigger());
+```
+
+## Basis Rendering
+```csharp
+// Create a led-group containing all leds on the surface
+ILedGroup allLeds = new ListLedGroup(surface, surface.Leds);
+
+// Create a rainbow gradient
+RainbowGradient rainbow = new RainbowGradient();
+
+// Animate the gradient to steadily move
+rainbow.AddDecorator(new MoveGradientDecorator(surface));
+
+// Create a texture rendering that gradient
+ITexture texture = new ConicalGradientTexture(new Size(10, 10), rainbow);
+
+// Create a brush rendering the texture and assign it to the group
+allLeds.Brush = new TextureBrush(texture);
+```
\ No newline at end of file
diff --git a/RGB.NET.Core/RGB.NET.Core.csproj b/RGB.NET.Core/RGB.NET.Core.csproj
index c113e88..6357388 100644
--- a/RGB.NET.Core/RGB.NET.Core.csproj
+++ b/RGB.NET.Core/RGB.NET.Core.csproj
@@ -15,9 +15,10 @@
RGB.NET.Core
Core-Module of RGB.NET
Core-Module of RGB.NET, a C# (.NET) library for accessing various RGB-peripherals
- Copyright © Darth Affe 2022
- Copyright © Darth Affe 2022
+ Copyright © Darth Affe 2023
+ Copyright © Darth Affe 2023
icon.png
+ README.md
https://github.com/DarthAffe/RGB.NET
LGPL-2.1-only
Github
@@ -53,6 +54,7 @@
+
\ No newline at end of file
diff --git a/RGB.NET.Devices.Asus/README.md b/RGB.NET.Devices.Asus/README.md
new file mode 100644
index 0000000..41abee0
--- /dev/null
+++ b/RGB.NET.Devices.Asus/README.md
@@ -0,0 +1,13 @@
+[RGB.NET](https://github.com/DarthAffe/RGB.NET) Device-Provider-Package for Asus-Devices.
+
+## Usage
+This provider follows the default pattern and does not require additional setup.
+
+```csharp
+surface.Load(AsusDeviceProvider.Instance);
+```
+
+# Required SDK
+This providers requires the `Interop.AuraServiceLib.dll` to be present on the system. Normally this dll is installed with ASUS Aura and registered in the GAC.
+There are some known issue with this dll missing and it's recommended to pack it with your application. You can get it from your Aura-Installation or get a copy from [https://redist.arge.be/Asus/Interop.AuraServiceLib.dll](https://redist.arge.be/Asus/Interop.AuraServiceLib.dll).
+If packed it has to be located in a spot that your application is loading runtime dlls from.
diff --git a/RGB.NET.Devices.Asus/RGB.NET.Devices.Asus.csproj b/RGB.NET.Devices.Asus/RGB.NET.Devices.Asus.csproj
index 64483e6..b4ac280 100644
--- a/RGB.NET.Devices.Asus/RGB.NET.Devices.Asus.csproj
+++ b/RGB.NET.Devices.Asus/RGB.NET.Devices.Asus.csproj
@@ -15,9 +15,10 @@
RGB.NET.Devices.Asus
Asus-Device-Implementations of RGB.NET
Asus-Device-Implementations of RGB.NET, a C# (.NET) library for accessing various RGB-peripherals
- Copyright © Darth Affe 2022
- Copyright © Darth Affe 2022
+ Copyright © Darth Affe 2023
+ Copyright © Darth Affe 2023
icon.png
+ README.md
https://github.com/DarthAffe/RGB.NET
LGPL-2.1-only
Github
@@ -52,6 +53,7 @@
+
diff --git a/RGB.NET.Devices.CoolerMaster/README.md b/RGB.NET.Devices.CoolerMaster/README.md
new file mode 100644
index 0000000..850fc72
--- /dev/null
+++ b/RGB.NET.Devices.CoolerMaster/README.md
@@ -0,0 +1,24 @@
+[RGB.NET](https://github.com/DarthAffe/RGB.NET) Device-Provider-Package for Cooler Master-Devices.
+
+## Usage
+This provider follows the default pattern and does not require additional setup.
+
+```csharp
+surface.Load(CoolerMasterDeviceProvider.Instance);
+```
+
+# Required SDK
+This providers requires native SDK-dlls.
+You can get them directly from Cooler Master at [https://templates.coolermaster.com/](https://templates.coolermaster.com/) (Direct Link: [https://templates.coolermaster.com/assets/sdk/coolermaster-sdk.zip](https://templates.coolermaster.com/assets/sdk/coolermaster-sdk.zip))
+
+Since the SDK-dlls are native it's important to use the correct architecture you're building your application for. (If in doubt you can always include both.)
+
+### x64
+`Src\SDK\x64\SDKDLL.dll` from the SDK-zip needs to be distributed as `\x64\CMSDK.dll`
+
+You can use other, custom paths by adding them to `CoolerMasterDeviceProvider.PossibleX64NativePaths`.
+
+### x86
+`Src\SDK\x86\SDKDLL.dll` from the SDK-zip needs to be distributed as `\x86\CMSDK.dll`
+
+You can use other, custom paths by adding them to `CoolerMasterDeviceProvider.PossibleX86NativePaths`.
diff --git a/RGB.NET.Devices.CoolerMaster/RGB.NET.Devices.CoolerMaster.csproj b/RGB.NET.Devices.CoolerMaster/RGB.NET.Devices.CoolerMaster.csproj
index c61028a..d4812ed 100644
--- a/RGB.NET.Devices.CoolerMaster/RGB.NET.Devices.CoolerMaster.csproj
+++ b/RGB.NET.Devices.CoolerMaster/RGB.NET.Devices.CoolerMaster.csproj
@@ -15,9 +15,10 @@
RGB.NET.Devices.CoolerMaster
Cooler Master-Device-Implementations of RGB.NET
Cooler Master-Device-Implementations of RGB.NET, a C# (.NET) library for accessing various RGB-peripherals
- Copyright © Darth Affe 2022
- Copyright © Darth Affe 2022
+ Copyright © Darth Affe 2023
+ Copyright © Darth Affe 2023
icon.png
+ README.md
https://github.com/DarthAffe/RGB.NET
LGPL-2.1-only
Github
@@ -52,6 +53,7 @@
+
diff --git a/RGB.NET.Devices.Corsair/README.md b/RGB.NET.Devices.Corsair/README.md
new file mode 100644
index 0000000..dd30377
--- /dev/null
+++ b/RGB.NET.Devices.Corsair/README.md
@@ -0,0 +1,24 @@
+[RGB.NET](https://github.com/DarthAffe/RGB.NET) Device-Provider-Package for Corsair-Devices.
+
+## Usage
+This provider follows the default pattern and does not require additional setup.
+
+```csharp
+surface.Load(CorsairDeviceProvider.Instance);
+```
+
+# Required SDK
+This providers requires native SDK-dlls.
+You can get them directly from Corsair at [https://github.com/CorsairOfficial/cue-sdk/releases](https://github.com/CorsairOfficial/cue-sdk/releases)
+
+Since the SDK-dlls are native it's important to use the correct architecture you're building your application for. (If in doubt you can always include both.)
+
+### x64
+`redist\x64\CUESDK.x64_2019.dll` from the SDK-zip needs to be distributed as `\x64\CUESDK.x64_2019.dll` (or simply named `CUESDK.dll`)
+
+You can use other, custom paths by adding them to `CorsairDeviceProvider.PossibleX64NativePaths`.
+
+### x86
+`redist\i386\CUESDK_2019.dll` from the SDK-zip needs to be distributed as `\x86\CUESDK_2019.dll` (or simply named `CUESDK.dll`)
+
+You can use other, custom paths by adding them to `CorsairDeviceProvider.PossibleX86NativePaths`.
diff --git a/RGB.NET.Devices.Corsair/RGB.NET.Devices.Corsair.csproj b/RGB.NET.Devices.Corsair/RGB.NET.Devices.Corsair.csproj
index 81fd8c1..302d93d 100644
--- a/RGB.NET.Devices.Corsair/RGB.NET.Devices.Corsair.csproj
+++ b/RGB.NET.Devices.Corsair/RGB.NET.Devices.Corsair.csproj
@@ -15,9 +15,10 @@
RGB.NET.Devices.Corsair
Corsair-Device-Implementations of RGB.NET
Corsair-Device-Implementations of RGB.NET, a C# (.NET) library for accessing various RGB-peripherals
- Copyright © Darth Affe 2022
- Copyright © Darth Affe 2022
+ Copyright © Darth Affe 2023
+ Copyright © Darth Affe 2023
icon.png
+ README.md
https://github.com/DarthAffe/RGB.NET
LGPL-2.1-only
Github
@@ -53,6 +54,7 @@
+
diff --git a/RGB.NET.Devices.DMX/README.md b/RGB.NET.Devices.DMX/README.md
new file mode 100644
index 0000000..494c5d2
--- /dev/null
+++ b/RGB.NET.Devices.DMX/README.md
@@ -0,0 +1,16 @@
+[RGB.NET](https://github.com/DarthAffe/RGB.NET) Device-Provider-Package for E1.31 DMX-Devices.
+
+## Usage
+This provider does not load anything by default and requires additional configuration to work.
+
+```csharp
+// Add as many DMX devices as you like
+DMXDeviceProvider.Instance.AddDeviceDefinition(new E131DMXDeviceDefinition(""));
+
+surface.Load(DMXDeviceProvider.Instance);
+```
+
+You can also configure additional things like device names, custom ports, heartbeats and so on in the DeviceDefinition.
+
+# Required SDK
+This provider does not require an additional SDK.
diff --git a/RGB.NET.Devices.DMX/RGB.NET.Devices.DMX.csproj b/RGB.NET.Devices.DMX/RGB.NET.Devices.DMX.csproj
index 49c07a8..d291aa0 100644
--- a/RGB.NET.Devices.DMX/RGB.NET.Devices.DMX.csproj
+++ b/RGB.NET.Devices.DMX/RGB.NET.Devices.DMX.csproj
@@ -15,9 +15,10 @@
RGB.NET.Devices.DMX
DMX-Device-Implementations of RGB.NET
DMX-Device-Implementations of RGB.NET, a C# (.NET) library for accessing various RGB-peripherals
- Copyright © Darth Affe 2022
- Copyright © Darth Affe 2022
+ Copyright © Darth Affe 2023
+ Copyright © Darth Affe 2023
icon.png
+ README.md
https://github.com/DarthAffe/RGB.NET
LGPL-2.1-only
Github
@@ -52,6 +53,7 @@
+
diff --git a/RGB.NET.Devices.Debug/README.md b/RGB.NET.Devices.Debug/README.md
new file mode 100644
index 0000000..621def2
--- /dev/null
+++ b/RGB.NET.Devices.Debug/README.md
@@ -0,0 +1,16 @@
+[RGB.NET](https://github.com/DarthAffe/RGB.NET) Device-Provider-Package for Debug-Devices.
+
+> This provider is only for debug purposes!
+
+## Usage
+This provider does not load anything by default and requires additional configuration to work.
+
+```csharp
+// Add as many debug devices as you like
+DebugDeviceProvider.Instance.AddFakeDeviceDefinition(DeviceLayout.Load(""));
+
+surface.Load(DebugDeviceProvider.Instance);
+```
+
+# Required SDK
+This provider does not require an additional SDK.
diff --git a/RGB.NET.Devices.Debug/RGB.NET.Devices.Debug.csproj b/RGB.NET.Devices.Debug/RGB.NET.Devices.Debug.csproj
index 3f2477a..f4edaae 100644
--- a/RGB.NET.Devices.Debug/RGB.NET.Devices.Debug.csproj
+++ b/RGB.NET.Devices.Debug/RGB.NET.Devices.Debug.csproj
@@ -15,9 +15,10 @@
RGB.NET.Devices.Debug
Debug-Device-Implementations of RGB.NET
Debug-Device-Implementations of RGB.NET, a C# (.NET) library
- Copyright © Darth Affe 2022
- Copyright © Darth Affe 2022
+ Copyright © Darth Affe 2023
+ Copyright © Darth Affe 2023
icon.png
+ README.md
https://github.com/DarthAffe/RGB.NET
LGPL-2.1-only
Github
@@ -52,6 +53,7 @@
+
diff --git a/RGB.NET.Devices.Logitech/README.md b/RGB.NET.Devices.Logitech/README.md
new file mode 100644
index 0000000..67cc2d7
--- /dev/null
+++ b/RGB.NET.Devices.Logitech/README.md
@@ -0,0 +1,27 @@
+[RGB.NET](https://github.com/DarthAffe/RGB.NET) Device-Provider-Package for Logitech-Devices.
+
+## Usage
+This provider follows the default pattern and does not require additional setup.
+
+```csharp
+surface.Load(LogitechDeviceProvider.Instance);
+```
+
+Since the logitech SDK does not provide device information only known devices will work.
+You can add detection for additional devices by adding entires for them to the respective static `DeviceDefinitions` on the `LogitechDeviceProvider`.
+
+# Required SDK
+This providers requires native SDK-dlls.
+You can get them directly from Logitech at [https://www.logitechg.com/en-us/innovation/developer-lab.html](https://www.logitechg.com/en-us/innovation/developer-lab.html) (Direct Link: [https://www.logitechg.com/sdk/LED_SDK_9.00.zip](https://www.logitechg.com/sdk/LED_SDK_9.00.zip))
+
+Since the SDK-dlls are native it's important to use the correct architecture you're building your application for. (If in doubt you can always include both.)
+
+### x64
+`Lib\LogitechLedEnginesWrapper\x64\LogitechLedEnginesWrapper.dll` from the SDK-zip needs to be distributed as `\x64\LogitechLedEnginesWrapper.dll`
+
+You can use other, custom paths by adding them to `LogitechDeviceProvider.PossibleX64NativePaths`.
+
+### x86
+`Lib\LogitechLedEnginesWrapper\x86\LogitechLedEnginesWrapper.dll` from the SDK-zip needs to be distributed as `\x86\LogitechLedEnginesWrapper.dll`
+
+You can use other, custom paths by adding them to `LogitechDeviceProvider.PossibleX86NativePaths`.
diff --git a/RGB.NET.Devices.Logitech/RGB.NET.Devices.Logitech.csproj b/RGB.NET.Devices.Logitech/RGB.NET.Devices.Logitech.csproj
index c243acb..7ee22dd 100644
--- a/RGB.NET.Devices.Logitech/RGB.NET.Devices.Logitech.csproj
+++ b/RGB.NET.Devices.Logitech/RGB.NET.Devices.Logitech.csproj
@@ -15,9 +15,10 @@
RGB.NET.Devices.Logitech
Logitech-Device-Implementations of RGB.NET
Logitech-Device-Implementations of RGB.NET, a C# (.NET) library for accessing various RGB-peripherals
- Copyright © Darth Affe 2022
- Copyright © Darth Affe 2022
+ Copyright © Darth Affe 2023
+ Copyright © Darth Affe 2023
icon.png
+ README.md
https://github.com/DarthAffe/RGB.NET
LGPL-2.1-only
Github
@@ -53,6 +54,7 @@
+
diff --git a/RGB.NET.Devices.Msi/README.md b/RGB.NET.Devices.Msi/README.md
new file mode 100644
index 0000000..2cc6923
--- /dev/null
+++ b/RGB.NET.Devices.Msi/README.md
@@ -0,0 +1,24 @@
+[RGB.NET](https://github.com/DarthAffe/RGB.NET) Device-Provider-Package for msi-Devices.
+
+## Usage
+This provider follows the default pattern and does not require additional setup.
+
+```csharp
+surface.Load(MsiDeviceProvider.Instance);
+```
+
+# Required SDK
+This providers requires native SDK-dlls.
+You can get them directly from Msi at [https://de.msi.com/Landing/mystic-light-rgb-gaming-pc/download](https://de.msi.com/Landing/mystic-light-rgb-gaming-pc/download) (Direct Link: [https://download.msi.com/uti_exe/Mystic_light_SDK.zip](https://download.msi.com/uti_exe/Mystic_light_SDK.zip))
+
+Since the SDK-dlls are native it's important to use the correct architecture you're building your application for. (If in doubt you can always include both.)
+
+### x64
+`MysticLight_SDK_x64.dll` from the SDK-zip needs to be distributed as `\x64\MysticLight_SDK.dll`
+
+You can use other, custom paths by adding them to `MsiDeviceProvider.PossibleX64NativePaths`.
+
+### x86
+`MysticLight_SDK.dll` from the SDK-zip needs to be distributed as `\x86\MysticLight_SDK.dll`
+
+You can use other, custom paths by adding them to `MsiDeviceProvider.PossibleX86NativePaths`.
diff --git a/RGB.NET.Devices.Msi/RGB.NET.Devices.Msi.csproj b/RGB.NET.Devices.Msi/RGB.NET.Devices.Msi.csproj
index da85318..c565c94 100644
--- a/RGB.NET.Devices.Msi/RGB.NET.Devices.Msi.csproj
+++ b/RGB.NET.Devices.Msi/RGB.NET.Devices.Msi.csproj
@@ -15,9 +15,10 @@
RGB.NET.Devices.Msi
Msi-Device-Implementations of RGB.NET
Msi-Device-Implementations of RGB.NET, a C# (.NET) library for accessing various RGB-peripherals
- Copyright © Darth Affe 2022
- Copyright © Darth Affe 2022
+ Copyright © Darth Affe 2023
+ Copyright © Darth Affe 2023
icon.png
+ README.md
https://github.com/DarthAffe/RGB.NET
LGPL-2.1-only
Github
@@ -52,6 +53,7 @@
+
diff --git a/RGB.NET.Devices.Novation/README.md b/RGB.NET.Devices.Novation/README.md
new file mode 100644
index 0000000..f0cabf5
--- /dev/null
+++ b/RGB.NET.Devices.Novation/README.md
@@ -0,0 +1,11 @@
+[RGB.NET](https://github.com/DarthAffe/RGB.NET) Device-Provider-Package for Novation-Devices.
+
+## Usage
+This provider follows the default pattern and does not require additional setup.
+
+```csharp
+surface.Load(NovationDeviceProvider.Instance);
+```
+
+# Required SDK
+This provider does not require an additional SDK.
diff --git a/RGB.NET.Devices.Novation/RGB.NET.Devices.Novation.csproj b/RGB.NET.Devices.Novation/RGB.NET.Devices.Novation.csproj
index 0cfdc3d..12a7919 100644
--- a/RGB.NET.Devices.Novation/RGB.NET.Devices.Novation.csproj
+++ b/RGB.NET.Devices.Novation/RGB.NET.Devices.Novation.csproj
@@ -15,9 +15,10 @@
RGB.NET.Devices.Novation
Novation-Device-Implementations of RGB.NET
Novation-Device-Implementations of RGB.NET, a C# (.NET) library for accessing various RGB-peripherals
- Copyright © Darth Affe 2022
- Copyright © Darth Affe 2022
+ Copyright © Darth Affe 2023
+ Copyright © Darth Affe 2023
icon.png
+ README.md
https://github.com/DarthAffe/RGB.NET
LGPL-2.1-only
Github
@@ -52,6 +53,7 @@
+
diff --git a/RGB.NET.Devices.OpenRGB/OpenRGBDeviceProvider.cs b/RGB.NET.Devices.OpenRGB/OpenRGBDeviceProvider.cs
index a3a6e28..b912cde 100644
--- a/RGB.NET.Devices.OpenRGB/OpenRGBDeviceProvider.cs
+++ b/RGB.NET.Devices.OpenRGB/OpenRGBDeviceProvider.cs
@@ -56,6 +56,14 @@ public class OpenRGBDeviceProvider : AbstractRGBDeviceProvider
#endregion
#region Methods
+
+ ///
+ /// Adds the specified to this device-provider.
+ ///
+ /// The to add.
+ // ReSharper disable once UnusedMember.Global
+ public void AddDeviceDefinition(OpenRGBServerDefinition deviceDefinition) => DeviceDefinitions.Add(deviceDefinition);
+
///
protected override void InitializeSDK()
{
@@ -63,7 +71,7 @@ public class OpenRGBDeviceProvider : AbstractRGBDeviceProvider
{
try
{
- OpenRGBClient? openRgb = new(ip: deviceDefinition.Ip, port: deviceDefinition.Port, name: deviceDefinition.ClientName, autoconnect: true);
+ OpenRGBClient openRgb = new(ip: deviceDefinition.Ip, port: deviceDefinition.Port, name: deviceDefinition.ClientName, autoconnect: true);
_clients.Add(openRgb);
deviceDefinition.Connected = true;
}
diff --git a/RGB.NET.Devices.OpenRGB/OpenRGBServerDefinition.cs b/RGB.NET.Devices.OpenRGB/OpenRGBServerDefinition.cs
index 7d81033..860b6bc 100644
--- a/RGB.NET.Devices.OpenRGB/OpenRGBServerDefinition.cs
+++ b/RGB.NET.Devices.OpenRGB/OpenRGBServerDefinition.cs
@@ -8,17 +8,17 @@ public class OpenRGBServerDefinition
///
/// The name of the client that will appear in the OpenRGB interface.
///
- public string? ClientName { get; set; }
+ public string? ClientName { get; set; } = "RGB.NET";
///
/// The ip address of the server.
///
- public string? Ip { get; set; }
+ public string? Ip { get; set; } = "127.0.0.1";
///
/// The port of the server.
///
- public int Port { get; set; }
+ public int Port { get; set; } = 6742;
///
/// Whether the provider is connected to this server definition or not.
diff --git a/RGB.NET.Devices.OpenRGB/README.md b/RGB.NET.Devices.OpenRGB/README.md
new file mode 100644
index 0000000..185910f
--- /dev/null
+++ b/RGB.NET.Devices.OpenRGB/README.md
@@ -0,0 +1,16 @@
+[RGB.NET](https://github.com/DarthAffe/RGB.NET) Device-Provider-Package for E1.31 DMX-Devices.
+
+## Usage
+This provider does not load anything by default and requires additional configuration to work.
+
+```csharp
+// Add as many OpenRGB-instances as you like
+OpenRGBDeviceProvider.Instance.AddDeviceDefinition(new OpenRGBServerDefinition());
+
+surface.Attach(OpenRGBDeviceProvider.Instance.Devices);
+```
+
+You can also configure additional things like IP and Port in the ServerDefinition.
+
+# Required SDK
+This provider does not require an additional SDK.
diff --git a/RGB.NET.Devices.OpenRGB/RGB.NET.Devices.OpenRGB.csproj b/RGB.NET.Devices.OpenRGB/RGB.NET.Devices.OpenRGB.csproj
index 0757413..9fd3eec 100644
--- a/RGB.NET.Devices.OpenRGB/RGB.NET.Devices.OpenRGB.csproj
+++ b/RGB.NET.Devices.OpenRGB/RGB.NET.Devices.OpenRGB.csproj
@@ -15,9 +15,10 @@
RGB.NET.Devices.OpenRGB
OpenRGB-Device-Implementations of RGB.NET
OpenRGB-Device-Implementations of RGB.NET, a C# (.NET) library for accessing various RGB-peripherals
- Copyright © Darth Affe 2022
- Copyright © Darth Affe 2022
+ Copyright © Darth Affe 2023
+ Copyright © Darth Affe 2023
icon.png
+ README.md
https://github.com/DarthAffe/RGB.NET
LGPL-2.1-only
Github
@@ -52,6 +53,7 @@
+
diff --git a/RGB.NET.Devices.PicoPi/RGB.NET.Devices.PicoPi.csproj b/RGB.NET.Devices.PicoPi/RGB.NET.Devices.PicoPi.csproj
index 17276a4..db64c4a 100644
--- a/RGB.NET.Devices.PicoPi/RGB.NET.Devices.PicoPi.csproj
+++ b/RGB.NET.Devices.PicoPi/RGB.NET.Devices.PicoPi.csproj
@@ -15,9 +15,10 @@
RGB.NET.Devices.PicoPi
PicoPi-Device-Implementations of RGB.NET
PicoPi-Device-Implementations of RGB.NET, a C# (.NET) library for accessing various RGB-peripherals
- Copyright © Darth Affe 2022
- Copyright © Darth Affe 2022
+ Copyright © Darth Affe 2023
+ Copyright © Darth Affe 2023
icon.png
+ README.md
https://github.com/DarthAffe/RGB.NET
LGPL-2.1-only
Github
@@ -52,6 +53,7 @@
+
diff --git a/RGB.NET.Devices.PicoPi/ReadMe.md b/RGB.NET.Devices.PicoPi/ReadMe.md
index 5772cd4..c0d3b49 100644
--- a/RGB.NET.Devices.PicoPi/ReadMe.md
+++ b/RGB.NET.Devices.PicoPi/ReadMe.md
@@ -1 +1,13 @@
-Check https://github.com/DarthAffe/RGB.NET-PicoPi for the required firmware.
+[RGB.NET](https://github.com/DarthAffe/RGB.NET) Device-Provider-Package for RGB.NET-Devices based on the Raspi Pi Pico.
+
+To create your own Raspberry PI Pico based controller check the RGB.NET Firmware at [https://github.com/DarthAffe/RGB.NET-PicoPi](https://github.com/DarthAffe/RGB.NET-PicoPi)
+
+## Usage
+This provider follows the default pattern and does not require additional setup.
+
+```csharp
+surface.Load(PicoPiDeviceProvider.Instance);
+```
+
+# Required SDK
+This provider does not require an additional SDK.
diff --git a/RGB.NET.Devices.Razer/README.md b/RGB.NET.Devices.Razer/README.md
new file mode 100644
index 0000000..b18dd58
--- /dev/null
+++ b/RGB.NET.Devices.Razer/README.md
@@ -0,0 +1,14 @@
+[RGB.NET](https://github.com/DarthAffe/RGB.NET) Device-Provider-Package for Razer-Devices.
+
+## Usage
+This provider follows the default pattern and does not require additional setup.
+
+```csharp
+surface.Load(RazerDeviceProvider.Instance);
+```
+
+Since the Razer SDK does not provide device information only known devices will work.
+You can add detection for additional devices by adding entires for them to the respective static `DeviceDefinitions` on the `RazerDeviceProvider`.
+
+# Required SDK
+The SDK needs to be installed inside Synapse by the user and is not redistributed.
diff --git a/RGB.NET.Devices.Razer/RGB.NET.Devices.Razer.csproj b/RGB.NET.Devices.Razer/RGB.NET.Devices.Razer.csproj
index 30d2bd9..32fcbe0 100644
--- a/RGB.NET.Devices.Razer/RGB.NET.Devices.Razer.csproj
+++ b/RGB.NET.Devices.Razer/RGB.NET.Devices.Razer.csproj
@@ -15,9 +15,10 @@
RGB.NET.Devices.Razer
Razer-Device-Implementations of RGB.NET
Razer-Device-Implementations of RGB.NET, a C# (.NET) library for accessing various RGB-peripherals
- Copyright © Darth Affe 2022
- Copyright © Darth Affe 2022
+ Copyright © Darth Affe 2023
+ Copyright © Darth Affe 2023
icon.png
+ README.md
https://github.com/DarthAffe/RGB.NET
LGPL-2.1-only
Github
@@ -53,6 +54,7 @@
+
diff --git a/RGB.NET.Devices.Roccat/Native/_ROCCATSDK.cs b/RGB.NET.Devices.Roccat/Native/_ROCCATSDK.cs
deleted file mode 100644
index 21e1644..0000000
--- a/RGB.NET.Devices.Roccat/Native/_ROCCATSDK.cs
+++ /dev/null
@@ -1,163 +0,0 @@
-// ReSharper disable UnusedMethodReturnValue.Global
-// ReSharper disable UnusedMember.Global
-
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using System.Runtime.InteropServices;
-using RGB.NET.Core;
-
-namespace RGB.NET.Devices.Roccat.Native
-{
- // ReSharper disable once InconsistentNaming
- internal static class _RoccatSDK
- {
- #region Libary Management
-
- private static IntPtr _dllHandle = IntPtr.Zero;
-
- ///
- /// Gets the loaded architecture (x64/x86).
- ///
- internal static string LoadedArchitecture { get; private set; }
-
- ///
- /// Reloads the SDK.
- ///
- internal static void Reload()
- {
- UnloadRoccatSDK();
- LoadRoccatSDK();
- }
-
- private static void LoadRoccatSDK()
- {
- if (_dllHandle != IntPtr.Zero) return;
-
- // HACK: Load library at runtime to support both, x86 and x64 with one managed dll
- List possiblePathList = Environment.Is64BitProcess ? RoccatDeviceProvider.PossibleX64NativePaths : RoccatDeviceProvider.PossibleX86NativePaths;
- string dllPath = possiblePathList.FirstOrDefault(File.Exists);
- if (dllPath == null) throw new RGBDeviceException($"Can't find the CUE-SDK at one of the expected locations:\r\n '{string.Join("\r\n", possiblePathList.Select(Path.GetFullPath))}'");
-
- _dllHandle = LoadLibrary(dllPath);
-
- _initSDKPointer = (InitSDKPointer)Marshal.GetDelegateForFunctionPointer(GetProcAddress(_dllHandle, "InitSDK"), typeof(InitSDKPointer));
- _unloadSDKPointer = (UnloadSDKPointer)Marshal.GetDelegateForFunctionPointer(GetProcAddress(_dllHandle, "UnloadSDK"), typeof(UnloadSDKPointer));
- _initRyosTalkPointer = (InitRyosTalkPointer)Marshal.GetDelegateForFunctionPointer(GetProcAddress(_dllHandle, "init_ryos_talk"), typeof(InitRyosTalkPointer));
- _restoreLedRGBPointer = (RestoreLedRGBPointer)Marshal.GetDelegateForFunctionPointer(GetProcAddress(_dllHandle, "RestoreLEDRGB"), typeof(RestoreLedRGBPointer));
- _setRyosKbSDKModePointer = (SetRyosKbSDKModePointer)Marshal.GetDelegateForFunctionPointer(GetProcAddress(_dllHandle, "set_ryos_kb_SDKmode"), typeof(SetRyosKbSDKModePointer));
- _turnOffAllLedsPointer = (TurnOffAllLedsPointer)Marshal.GetDelegateForFunctionPointer(GetProcAddress(_dllHandle, "turn_off_all_LEDS"), typeof(TurnOffAllLedsPointer));
- _turnOnAllLedsPointer = (TurnOnAllLedsPointer)Marshal.GetDelegateForFunctionPointer(GetProcAddress(_dllHandle, "turn_on_all_LEDS"), typeof(TurnOnAllLedsPointer));
- _setLedOnPointer = (SetLedOnPointer)Marshal.GetDelegateForFunctionPointer(GetProcAddress(_dllHandle, "set_LED_on"), typeof(SetLedOnPointer));
- _setLedOffPointer = (SetLedOffPointer)Marshal.GetDelegateForFunctionPointer(GetProcAddress(_dllHandle, "set_LED_off"), typeof(SetLedOffPointer));
- _setAllLedsPointer = (SetAllLedsPointer)Marshal.GetDelegateForFunctionPointer(GetProcAddress(_dllHandle, "Set_all_LEDS"), typeof(SetAllLedsPointer));
- _allKeyblinkingPointer = (AllKeyblinkingPointer)Marshal.GetDelegateForFunctionPointer(GetProcAddress(_dllHandle, "All_Key_Blinking"), typeof(AllKeyblinkingPointer));
- _setLedRGBPointer = (SetLedRGBPointer)Marshal.GetDelegateForFunctionPointer(GetProcAddress(_dllHandle, "Set_LED_RGB"), typeof(SetLedRGBPointer));
- _setAllLedSfxPointer = (SetAllLedSfxPointer)Marshal.GetDelegateForFunctionPointer(GetProcAddress(_dllHandle, "Set_all_LEDSFX"), typeof(SetAllLedSfxPointer));
- }
-
- internal static void UnloadRoccatSDK()
- {
- if (_dllHandle == IntPtr.Zero) return;
-
- // ReSharper disable once EmptyEmbeddedStatement - DarthAffe 20.02.2016: We might need to reduce the internal reference counter more than once to set the library free
- while (FreeLibrary(_dllHandle)) ;
- _dllHandle = IntPtr.Zero;
- }
-
- [DllImport("kernel32.dll")]
- private static extern IntPtr LoadLibrary(string dllToLoad);
-
- [DllImport("kernel32.dll")]
- private static extern bool FreeLibrary(IntPtr dllHandle);
-
- [DllImport("kernel32.dll")]
- private static extern IntPtr GetProcAddress(IntPtr dllHandle, string name);
-
- #endregion
-
- #region SDK-METHODS
-
- #region Pointers
-
- private static InitSDKPointer _initSDKPointer;
- private static UnloadSDKPointer _unloadSDKPointer;
- private static InitRyosTalkPointer _initRyosTalkPointer;
- private static RestoreLedRGBPointer _restoreLedRGBPointer;
- private static SetRyosKbSDKModePointer _setRyosKbSDKModePointer;
- private static TurnOffAllLedsPointer _turnOffAllLedsPointer;
- private static TurnOnAllLedsPointer _turnOnAllLedsPointer;
- private static SetLedOnPointer _setLedOnPointer;
- private static SetLedOffPointer _setLedOffPointer;
- private static SetAllLedsPointer _setAllLedsPointer;
- private static AllKeyblinkingPointer _allKeyblinkingPointer;
- private static SetLedRGBPointer _setLedRGBPointer;
- private static SetAllLedSfxPointer _setAllLedSfxPointer;
-
- #endregion
-
- #region Delegates
-
- [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
- private delegate IntPtr InitSDKPointer();
-
- [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
- private delegate void UnloadSDKPointer(IntPtr handle);
-
- [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
- private delegate bool InitRyosTalkPointer(IntPtr handle);
-
- [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
- private delegate void RestoreLedRGBPointer(IntPtr handle);
-
- [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
- private delegate bool SetRyosKbSDKModePointer(IntPtr handle, bool state);
-
- [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
- private delegate void TurnOffAllLedsPointer(IntPtr handle);
-
- [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
- private delegate void TurnOnAllLedsPointer(IntPtr handle);
-
- [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
- private delegate void SetLedOnPointer(IntPtr handle, byte position);
-
- [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
- private delegate void SetLedOffPointer(IntPtr handle, byte position);
-
- [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
- private delegate void SetAllLedsPointer(IntPtr handle, byte led, byte country);
-
- [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
- private delegate void AllKeyblinkingPointer(IntPtr handle, int delayTime, int loopTime);
-
- [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
- private delegate void SetLedRGBPointer(IntPtr handle, byte zone, byte effect, byte speed, byte r, byte g, byte b);
-
- [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
- private delegate void SetAllLedSfxPointer(IntPtr handle, byte ledOnOff, byte r, byte g, byte b, byte layout);
-
- #endregion
-
- // ReSharper disable EventExceptionNotDocumented
-
- internal static IntPtr InitSDK() => _initSDKPointer();
- internal static void UnloadSDK(IntPtr handle) => _unloadSDKPointer(handle);
- internal static bool InitRyosTalk(IntPtr handle) => _initRyosTalkPointer(handle);
- internal static void RestoreLedRGB(IntPtr handle) => _restoreLedRGBPointer(handle);
- internal static bool SetRyosKbSDKMode(IntPtr handle, bool state) => _setRyosKbSDKModePointer(handle, state);
- internal static void TurnOffAllLeds(IntPtr handle) => _turnOffAllLedsPointer(handle);
- internal static void TurnOnAllLeds(IntPtr handle) => _turnOnAllLedsPointer(handle);
- internal static void SetLedOn(IntPtr handle, byte position) => _setLedOnPointer(handle, position);
- internal static void SetLedOff(IntPtr handle, byte position) => _setLedOffPointer(handle, position);
- internal static void SetAllLeds(IntPtr handle, byte led, byte country) => _setAllLedsPointer(handle, led, country);
- internal static void AllKeyblinking(IntPtr handle, int delayTime, int loopTime) => _allKeyblinkingPointer(handle, delayTime, loopTime);
- internal static void SetLedRGB(IntPtr handle, byte zone, byte effect, byte speed, byte r, byte g, byte b) => _setLedRGBPointer(handle, zone, effect, speed, r, g, b);
- internal static void SetAllLedSfx(IntPtr handle, byte ledOnOff, byte r, byte g, byte b, byte layout) => _setAllLedSfxPointer(handle, ledOnOff, r, g, b, layout);
-
- // ReSharper restore EventExceptionNotDocumented
-
- #endregion
- }
-}
diff --git a/RGB.NET.Devices.Roccat/RGB.NET.Devices.Roccat.csproj b/RGB.NET.Devices.Roccat/RGB.NET.Devices.Roccat.csproj
deleted file mode 100644
index d69b9ec..0000000
--- a/RGB.NET.Devices.Roccat/RGB.NET.Devices.Roccat.csproj
+++ /dev/null
@@ -1,56 +0,0 @@
-
-
- net6.0
- latest
- enable
-
- Darth Affe
- Wyrez
- en-US
- en-US
- RGB.NET.Devices.Roccat
- RGB.NET.Devices.Roccat
- RGB.NET.Devices.Roccat
- RGB.NET.Devices.Roccat
- RGB.NET.Devices.Roccat
- Roccat-Device-Implementations of RGB.NET
- Roccat-Device-Implementations of RGB.NET, a C# (.NET) library for accessing various RGB-peripherals
- Copyright © Darth Affe 2020
- Copyright © Darth Affe 2020
- http://lib.arge.be/icon.png
- https://github.com/DarthAffe/RGB.NET
- https://raw.githubusercontent.com/DarthAffe/RGB.NET/master/LICENSE
- Github
- https://github.com/DarthAffe/RGB.NET
- False
-
-
-
- 0.0.1
- 0.0.1
- 0.0.1
-
- ..\bin\
- true
- True
- True
-
-
-
- $(DefineConstants);TRACE;DEBUG
- true
- full
- false
-
-
-
- pdbonly
- true
- $(NoWarn);CS1591;CS1572;CS1573
- $(DefineConstants);RELEASE
-
-
-
-
-
-
\ No newline at end of file
diff --git a/RGB.NET.Devices.Roccat/RoccatDeviceProvider.cs b/RGB.NET.Devices.Roccat/RoccatDeviceProvider.cs
deleted file mode 100644
index 4ad9a9e..0000000
--- a/RGB.NET.Devices.Roccat/RoccatDeviceProvider.cs
+++ /dev/null
@@ -1,124 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using RGB.NET.Core;
-using RGB.NET.Devices.Roccat.Native;
-
-namespace RGB.NET.Devices.Roccat
-{
- ///
- ///
- /// Represents a device provider responsible for roccat (TalkFX)devices.
- ///
- public class RoccatDeviceProvider : IRGBDeviceProvider
- {
- #region Properties & Fields
-
- private static RoccatDeviceProvider _instance;
- ///
- /// Gets the singleton instance.
- ///
- public static RoccatDeviceProvider Instance => _instance ?? new RoccatDeviceProvider();
-
- ///
- /// Gets a modifiable list of paths used to find the native SDK-dlls for x86 applications.
- /// The first match will be used.
- ///
- public static List PossibleX86NativePaths { get; } = new List { "x86/RoccatTalkSDKWrapper.dll" };
-
- ///
- /// Gets a modifiable list of paths used to find the native SDK-dlls for x64 applications.
- /// The first match will be used.
- ///
- public static List PossibleX64NativePaths { get; } = new List { "x64/RoccatTalkSDKWrapper.dll" };
-
- ///
- ///
- /// Indicates if the SDK is initialized and ready to use.
- ///
- public bool IsInitialized { get; private set; }
-
- ///
- /// Gets the loaded architecture (x64/x86).
- ///
- public string LoadedArchitecture => _RoccatSDK.LoadedArchitecture;
-
- ///
- ///
- /// Gets whether the application has exclusive access to the SDK or not.
- ///
- public bool HasExclusiveAccess { get; private set; }
-
- ///
- public IEnumerable Devices { get; private set; }
-
- private IntPtr _sdkHandle;
-
- #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.
- public RoccatDeviceProvider()
- {
- if (_instance != null) throw new InvalidOperationException($"There can be only one instance of type {nameof(RoccatDeviceProvider)}");
- _instance = this;
- }
-
- #endregion
-
- #region Methods
-
- ///
- /// Thrown if the SDK is already initialized or if the SDK is not compatible to CUE.
- public bool Initialize(RGBDeviceType loadFilter = RGBDeviceType.All, bool exclusiveAccessIfPossible = false, bool throwExceptions = false)
- {
- IsInitialized = false;
-
- try
- {
- _sdkHandle = _RoccatSDK.InitSDK();
-
- IList devices = new List();
-
- Devices = new ReadOnlyCollection(devices);
- IsInitialized = true;
- }
- catch
- {
- if (throwExceptions) throw;
- return false;
- }
-
- return true;
- }
-
- ///
- public void ResetDevices()
- { }
-
- ///
- public void Dispose()
- {
- if (_sdkHandle != IntPtr.Zero)
- {
- try { _RoccatSDK.RestoreLedRGB(_sdkHandle); }
- catch { /* We tried our best */}
-
- try { _RoccatSDK.SetRyosKbSDKMode(_sdkHandle, false); }
- catch { /* We tried our best */}
-
- try { _RoccatSDK.UnloadSDK(_sdkHandle); }
- catch { /* We tried our best */}
- }
-
- try { _RoccatSDK.UnloadRoccatSDK(); }
- catch { /* at least we tried */ }
- }
-
- #endregion
- }
-}
diff --git a/RGB.NET.Devices.Roccat/RoccatDeviceProviderLoader.cs b/RGB.NET.Devices.Roccat/RoccatDeviceProviderLoader.cs
deleted file mode 100644
index 261de13..0000000
--- a/RGB.NET.Devices.Roccat/RoccatDeviceProviderLoader.cs
+++ /dev/null
@@ -1,24 +0,0 @@
-using RGB.NET.Core;
-
-namespace RGB.NET.Devices.Roccat
-{
- ///
- /// Represents a device provider loaded used to dynamically load roccat devices into an application.
- ///
- public class RoccatDeviceProviderLoader : IRGBDeviceProviderLoader
- {
- #region Properties & Fields
-
- ///
- public bool RequiresInitialization => false;
-
- #endregion
-
- #region Methods
-
- ///
- public IRGBDeviceProvider GetDeviceProvider() => RoccatDeviceProvider.Instance;
-
- #endregion
- }
-}
diff --git a/RGB.NET.Devices.SteelSeries/README.md b/RGB.NET.Devices.SteelSeries/README.md
new file mode 100644
index 0000000..7971dc8
--- /dev/null
+++ b/RGB.NET.Devices.SteelSeries/README.md
@@ -0,0 +1,14 @@
+[RGB.NET](https://github.com/DarthAffe/RGB.NET) Device-Provider-Package for Steel Series-Devices.
+
+## Usage
+This provider follows the default pattern and does not require additional setup.
+
+```csharp
+surface.Load(SteelSeriesDeviceProvider.Instance);
+```
+
+Since the Steel Series SDK does not provide device information only known devices will work.
+You can add detection for additional devices by adding entires for them to the respective static `DeviceDefinitions` on the `SteelSeriesDeviceProvider`.
+
+# Required SDK
+This provider does not require an additional SDK.
diff --git a/RGB.NET.Devices.SteelSeries/RGB.NET.Devices.SteelSeries.csproj b/RGB.NET.Devices.SteelSeries/RGB.NET.Devices.SteelSeries.csproj
index 66c22d0..d8b2ab6 100644
--- a/RGB.NET.Devices.SteelSeries/RGB.NET.Devices.SteelSeries.csproj
+++ b/RGB.NET.Devices.SteelSeries/RGB.NET.Devices.SteelSeries.csproj
@@ -15,9 +15,10 @@
RGB.NET.Devices.SteelSeries
SteelSeries-Device-Implementations of RGB.NET
SteelSeries-Device-Implementations of RGB.NET, a C# (.NET) library for accessing various RGB-peripherals
- Copyright © Darth Affe 2022
- Copyright © Darth Affe 2022
+ Copyright © Darth Affe 2023
+ Copyright © Darth Affe 2023
icon.png
+ README.md
https://github.com/DarthAffe/RGB.NET
LGPL-2.1-only
Github
@@ -52,6 +53,7 @@
+
diff --git a/RGB.NET.Devices.WS281X/README.md b/RGB.NET.Devices.WS281X/README.md
new file mode 100644
index 0000000..c18d323
--- /dev/null
+++ b/RGB.NET.Devices.WS281X/README.md
@@ -0,0 +1,20 @@
+[RGB.NET](https://github.com/DarthAffe/RGB.NET) Device-Provider-Package for RGB.NET-Devices based on Aurdion or ESP8266.
+
+To create your own Aurdion/ESP8266 based controller check the Sketches at [https://github.com/DarthAffe/RGB.NET/tree/master/RGB.NET.Devices.WS281X/Sketches](https://github.com/DarthAffe/RGB.NET/tree/master/RGB.NET.Devices.WS281X/Sketches)
+
+> If you start a new project it's recommended to use the Raspberry Pi Pico due to it's better performance and lower cost. Check the `RGB.NET.Devices.PicoPi`-package.
+
+> This provider does not work with WLED. If you want to use that check the `RGB.NET.Devices.DMX`-package.
+
+## Usage
+This provider does not load anything by default and requires additional configuration to work.
+
+```csharp
+// Add as many Arduino or NodeMCU devices as you like
+WS281XDeviceProvider.Instance.AddDeviceDefinition(new ArduinoWS281XDeviceDefinition("COM3"));
+
+surface.Load(WS281XDeviceProvider.Instance);
+```
+
+# Required SDK
+This provider does not require an additional SDK.
diff --git a/RGB.NET.Devices.WS281X/RGB.NET.Devices.WS281X.csproj b/RGB.NET.Devices.WS281X/RGB.NET.Devices.WS281X.csproj
index 0a64534..0e0e08f 100644
--- a/RGB.NET.Devices.WS281X/RGB.NET.Devices.WS281X.csproj
+++ b/RGB.NET.Devices.WS281X/RGB.NET.Devices.WS281X.csproj
@@ -15,9 +15,10 @@
RGB.NET.Devices.WS281X
WS281X-Device-Implementations of RGB.NET
WS281X-Device-Implementations of RGB.NET, a C# (.NET) library for accessing various RGB-peripherals
- Copyright © Darth Affe 2022
- Copyright © Darth Affe 2022
+ Copyright © Darth Affe 2023
+ Copyright © Darth Affe 2023
icon.png
+ README.md
https://github.com/DarthAffe/RGB.NET
LGPL-2.1-only
Github
@@ -52,6 +53,7 @@
+
diff --git a/RGB.NET.Devices.Wooting/README.md b/RGB.NET.Devices.Wooting/README.md
new file mode 100644
index 0000000..6348b98
--- /dev/null
+++ b/RGB.NET.Devices.Wooting/README.md
@@ -0,0 +1,24 @@
+[RGB.NET](https://github.com/DarthAffe/RGB.NET) Device-Provider-Package for Wooting-Devices.
+
+## Usage
+This provider follows the default pattern and does not require additional setup.
+
+```csharp
+surface.Load(WootingDeviceProvider.Instance);
+```
+
+# Required SDK
+This providers requires native SDK-dlls.
+You can get them directly from Wooting at [https://github.com/WootingKb/wooting-rgb-sdk/releases](https://github.com/WootingKb/wooting-rgb-sdk/releases)
+
+Since the SDK-dlls are native it's important to use the correct architecture you're building your application for. (If in doubt you can always include both.)
+
+### x64
+`wooting-rgb-sdk.dll` from the x64-zip needs to be distributed as `\x64\wooting-rgb-sdk.dll`
+
+You can use other, custom paths by adding them to `WootingDeviceProvider.PossibleX64NativePaths`.
+
+### x86
+`wooting-rgb-sdk.dll` from the x86-zip needs to be distributed as `\x86\wooting-rgb-sdk.dll`
+
+You can use other, custom paths by adding them to `WootingDeviceProvider.PossibleX86NativePaths`.
diff --git a/RGB.NET.Devices.Wooting/RGB.NET.Devices.Wooting.csproj b/RGB.NET.Devices.Wooting/RGB.NET.Devices.Wooting.csproj
index 0adf3c5..ac158f0 100644
--- a/RGB.NET.Devices.Wooting/RGB.NET.Devices.Wooting.csproj
+++ b/RGB.NET.Devices.Wooting/RGB.NET.Devices.Wooting.csproj
@@ -15,9 +15,10 @@
RGB.NET.Devices.Wooting
Wooting-Device-Implementations of RGB.NET
Wooting-Device-Implementations of RGB.NET, a C# (.NET) library for accessing various RGB-peripherals
- Copyright © Darth Affe 2022
- Copyright © Darth Affe 2022
+ Copyright © Darth Affe 2023
+ Copyright © Darth Affe 2023
icon.png
+ README.md
https://github.com/DarthAffe/RGB.NET
LGPL-2.1-only
Github
@@ -53,6 +54,7 @@
+
diff --git a/RGB.NET.HID/README.md b/RGB.NET.HID/README.md
new file mode 100644
index 0000000..b3a7354
--- /dev/null
+++ b/RGB.NET.HID/README.md
@@ -0,0 +1,3 @@
+[RGB.NET](https://github.com/DarthAffe/RGB.NET) HID-Package.
+
+Abstraction for device-providers that require HID-functionality.
\ No newline at end of file
diff --git a/RGB.NET.HID/RGB.NET.HID.csproj b/RGB.NET.HID/RGB.NET.HID.csproj
index bdd2152..5469438 100644
--- a/RGB.NET.HID/RGB.NET.HID.csproj
+++ b/RGB.NET.HID/RGB.NET.HID.csproj
@@ -15,9 +15,10 @@
RGB.NET.HID
HID-Module of RGB.NET
HID-Module of RGB.NET, a C# (.NET) library for accessing various RGB-peripherals
- Copyright © Darth Affe 2022
- Copyright © Darth Affe 2022
+ Copyright © Darth Affe 2023
+ Copyright © Darth Affe 2023
icon.png
+ README.md
https://github.com/DarthAffe/RGB.NET
LGPL-2.1-only
Github
@@ -52,6 +53,7 @@
+
diff --git a/RGB.NET.Layout/README.md b/RGB.NET.Layout/README.md
new file mode 100644
index 0000000..9120357
--- /dev/null
+++ b/RGB.NET.Layout/README.md
@@ -0,0 +1,3 @@
+[RGB.NET](https://github.com/DarthAffe/RGB.NET) Layout-Package.
+
+Required to use the RGB.NET-Layout-System.
\ No newline at end of file
diff --git a/RGB.NET.Layout/RGB.NET.Layout.csproj b/RGB.NET.Layout/RGB.NET.Layout.csproj
index bcfc4b8..f6330ed 100644
--- a/RGB.NET.Layout/RGB.NET.Layout.csproj
+++ b/RGB.NET.Layout/RGB.NET.Layout.csproj
@@ -15,9 +15,10 @@
RGB.NET.Layout
Layout-Module of RGB.NET
Layout-Module of RGB.NET, a C# (.NET) library for accessing various RGB-peripherals
- Copyright © Darth Affe 2022
- Copyright © Darth Affe 2022
+ Copyright © Darth Affe 2023
+ Copyright © Darth Affe 2023
icon.png
+ README.md
https://github.com/DarthAffe/RGB.NET
LGPL-2.1-only
Github
@@ -52,6 +53,7 @@
+
diff --git a/RGB.NET.Presets/README.md b/RGB.NET.Presets/README.md
new file mode 100644
index 0000000..62228d5
--- /dev/null
+++ b/RGB.NET.Presets/README.md
@@ -0,0 +1,3 @@
+[RGB.NET](https://github.com/DarthAffe/RGB.NET) Presets-Package.
+
+Contains a mix of Groups, Textures, Decorators and more.
\ No newline at end of file
diff --git a/RGB.NET.Presets/RGB.NET.Presets.csproj b/RGB.NET.Presets/RGB.NET.Presets.csproj
index f948b3c..fc2d052 100644
--- a/RGB.NET.Presets/RGB.NET.Presets.csproj
+++ b/RGB.NET.Presets/RGB.NET.Presets.csproj
@@ -15,9 +15,10 @@
RGB.NET.Presets
Presets-Presets of RGB.NET
Presets for RGB.NET, a C# (.NET) library for accessing various RGB-peripherals
- Copyright © Darth Affe 2022
- Copyright © Darth Affe 2022
+ Copyright © Darth Affe 2023
+ Copyright © Darth Affe 2023
icon.png
+ README.md
https://github.com/DarthAffe/RGB.NET
LGPL-2.1-only
Github
@@ -53,6 +54,7 @@
+