1
0
mirror of https://github.com/DarthAffe/RGB.NET.git synced 2025-12-12 17:48:31 +00:00

Merge pull request #286 from DarthAffe/ReadMe

ReadMe
This commit is contained in:
DarthAffe 2023-01-06 18:02:41 +01:00 committed by GitHub
commit b8b2343d6c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
43 changed files with 461 additions and 427 deletions

View File

@ -1,30 +1,87 @@
# RGB.NET
[![GitHub release (latest by date)](https://img.shields.io/github/v/release/DarthAffe/RGB.NET?style=for-the-badge)](https://github.com/DarthAffe/RGB.NET/releases)
[![Nuget](https://img.shields.io/nuget/v/RGB.NET.Core?style=for-the-badge)](https://www.nuget.org/packages?q=rgb.net)
[![GitHub](https://img.shields.io/github/license/DarthAffe/RGB.NET?style=for-the-badge)](https://github.com/DarthAffe/RGB.NET/blob/master/LICENSE)
[![GitHub Repo stars](https://img.shields.io/github/stars/DarthAffe/RGB.NET?style=for-the-badge)](https://github.com/DarthAffe/RGB.NET/stargazers)
[![Discord](https://img.shields.io/discord/366163308941934592?logo=discord&logoColor=white&style=for-the-badge)](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
[![Example video](https://img.youtube.com/vi/JLRa0Wv4qso/0.jpg)](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);
```

36
RGB.NET.Core/README.md Normal file
View File

@ -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);
```

View File

@ -15,9 +15,10 @@
<RootNamespace>RGB.NET.Core</RootNamespace>
<Description>Core-Module of RGB.NET</Description>
<Summary>Core-Module of RGB.NET, a C# (.NET) library for accessing various RGB-peripherals</Summary>
<Copyright>Copyright © Darth Affe 2022</Copyright>
<PackageCopyright>Copyright © Darth Affe 2022</PackageCopyright>
<Copyright>Copyright © Darth Affe 2023</Copyright>
<PackageCopyright>Copyright © Darth Affe 2023</PackageCopyright>
<PackageIcon>icon.png</PackageIcon>
<PackageReadmeFile>README.md</PackageReadmeFile>
<PackageProjectUrl>https://github.com/DarthAffe/RGB.NET</PackageProjectUrl>
<PackageLicenseExpression>LGPL-2.1-only</PackageLicenseExpression>
<RepositoryType>Github</RepositoryType>
@ -53,6 +54,7 @@
<ItemGroup>
<Content Include="..\Resources\icon.png" Link="icon.png" Pack="true" PackagePath="\" />
<None Include="README.md" Pack="true" PackagePath="\" />
</ItemGroup>
</Project>

View File

@ -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.

View File

@ -15,9 +15,10 @@
<RootNamespace>RGB.NET.Devices.Asus</RootNamespace>
<Description>Asus-Device-Implementations of RGB.NET</Description>
<Summary>Asus-Device-Implementations of RGB.NET, a C# (.NET) library for accessing various RGB-peripherals</Summary>
<Copyright>Copyright © Darth Affe 2022</Copyright>
<PackageCopyright>Copyright © Darth Affe 2022</PackageCopyright>
<Copyright>Copyright © Darth Affe 2023</Copyright>
<PackageCopyright>Copyright © Darth Affe 2023</PackageCopyright>
<PackageIcon>icon.png</PackageIcon>
<PackageReadmeFile>README.md</PackageReadmeFile>
<PackageProjectUrl>https://github.com/DarthAffe/RGB.NET</PackageProjectUrl>
<PackageLicenseExpression>LGPL-2.1-only</PackageLicenseExpression>
<RepositoryType>Github</RepositoryType>
@ -52,6 +53,7 @@
<ItemGroup>
<Content Include="..\Resources\icon.png" Link="icon.png" Pack="true" PackagePath="\" />
<None Include="README.md" Pack="true" PackagePath="\" />
</ItemGroup>
<ItemGroup>

View File

@ -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 `<application-directory>\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 `<application-directory>\x86\CMSDK.dll`
You can use other, custom paths by adding them to `CoolerMasterDeviceProvider.PossibleX86NativePaths`.

View File

@ -15,9 +15,10 @@
<RootNamespace>RGB.NET.Devices.CoolerMaster</RootNamespace>
<Description>Cooler Master-Device-Implementations of RGB.NET</Description>
<Summary>Cooler Master-Device-Implementations of RGB.NET, a C# (.NET) library for accessing various RGB-peripherals</Summary>
<Copyright>Copyright © Darth Affe 2022</Copyright>
<PackageCopyright>Copyright © Darth Affe 2022</PackageCopyright>
<Copyright>Copyright © Darth Affe 2023</Copyright>
<PackageCopyright>Copyright © Darth Affe 2023</PackageCopyright>
<PackageIcon>icon.png</PackageIcon>
<PackageReadmeFile>README.md</PackageReadmeFile>
<PackageProjectUrl>https://github.com/DarthAffe/RGB.NET</PackageProjectUrl>
<PackageLicenseExpression>LGPL-2.1-only</PackageLicenseExpression>
<RepositoryType>Github</RepositoryType>
@ -52,6 +53,7 @@
<ItemGroup>
<Content Include="..\Resources\icon.png" Link="icon.png" Pack="true" PackagePath="\" />
<None Include="README.md" Pack="true" PackagePath="\" />
</ItemGroup>
<ItemGroup>

View File

@ -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 `<application-directory>\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 `<application-directory>\x86\CUESDK_2019.dll` (or simply named `CUESDK.dll`)
You can use other, custom paths by adding them to `CorsairDeviceProvider.PossibleX86NativePaths`.

View File

@ -15,9 +15,10 @@
<RootNamespace>RGB.NET.Devices.Corsair</RootNamespace>
<Description>Corsair-Device-Implementations of RGB.NET</Description>
<Summary>Corsair-Device-Implementations of RGB.NET, a C# (.NET) library for accessing various RGB-peripherals</Summary>
<Copyright>Copyright © Darth Affe 2022</Copyright>
<PackageCopyright>Copyright © Darth Affe 2022</PackageCopyright>
<Copyright>Copyright © Darth Affe 2023</Copyright>
<PackageCopyright>Copyright © Darth Affe 2023</PackageCopyright>
<PackageIcon>icon.png</PackageIcon>
<PackageReadmeFile>README.md</PackageReadmeFile>
<PackageProjectUrl>https://github.com/DarthAffe/RGB.NET</PackageProjectUrl>
<PackageLicenseExpression>LGPL-2.1-only</PackageLicenseExpression>
<RepositoryType>Github</RepositoryType>
@ -53,6 +54,7 @@
<ItemGroup>
<Content Include="..\Resources\icon.png" Link="icon.png" Pack="true" PackagePath="\" />
<None Include="README.md" Pack="true" PackagePath="\" />
</ItemGroup>
<ItemGroup>

View File

@ -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("<hostname>"));
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.

View File

@ -15,9 +15,10 @@
<RootNamespace>RGB.NET.Devices.DMX</RootNamespace>
<Description>DMX-Device-Implementations of RGB.NET</Description>
<Summary>DMX-Device-Implementations of RGB.NET, a C# (.NET) library for accessing various RGB-peripherals</Summary>
<Copyright>Copyright © Darth Affe 2022</Copyright>
<PackageCopyright>Copyright © Darth Affe 2022</PackageCopyright>
<Copyright>Copyright © Darth Affe 2023</Copyright>
<PackageCopyright>Copyright © Darth Affe 2023</PackageCopyright>
<PackageIcon>icon.png</PackageIcon>
<PackageReadmeFile>README.md</PackageReadmeFile>
<PackageProjectUrl>https://github.com/DarthAffe/RGB.NET</PackageProjectUrl>
<PackageLicenseExpression>LGPL-2.1-only</PackageLicenseExpression>
<RepositoryType>Github</RepositoryType>
@ -52,6 +53,7 @@
<ItemGroup>
<Content Include="..\Resources\icon.png" Link="icon.png" Pack="true" PackagePath="\" />
<None Include="README.md" Pack="true" PackagePath="\" />
</ItemGroup>
<ItemGroup>

View File

@ -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("<Path to layout-file>"));
surface.Load(DebugDeviceProvider.Instance);
```
# Required SDK
This provider does not require an additional SDK.

View File

@ -15,9 +15,10 @@
<RootNamespace>RGB.NET.Devices.Debug</RootNamespace>
<Description>Debug-Device-Implementations of RGB.NET</Description>
<Summary>Debug-Device-Implementations of RGB.NET, a C# (.NET) library</Summary>
<Copyright>Copyright © Darth Affe 2022</Copyright>
<PackageCopyright>Copyright © Darth Affe 2022</PackageCopyright>
<Copyright>Copyright © Darth Affe 2023</Copyright>
<PackageCopyright>Copyright © Darth Affe 2023</PackageCopyright>
<PackageIcon>icon.png</PackageIcon>
<PackageReadmeFile>README.md</PackageReadmeFile>
<PackageProjectUrl>https://github.com/DarthAffe/RGB.NET</PackageProjectUrl>
<PackageLicenseExpression>LGPL-2.1-only</PackageLicenseExpression>
<RepositoryType>Github</RepositoryType>
@ -52,6 +53,7 @@
<ItemGroup>
<Content Include="..\Resources\icon.png" Link="icon.png" Pack="true" PackagePath="\" />
<None Include="README.md" Pack="true" PackagePath="\" />
</ItemGroup>
<ItemGroup>

View File

@ -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 `<application-directory>\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 `<application-directory>\x86\LogitechLedEnginesWrapper.dll`
You can use other, custom paths by adding them to `LogitechDeviceProvider.PossibleX86NativePaths`.

View File

@ -15,9 +15,10 @@
<RootNamespace>RGB.NET.Devices.Logitech</RootNamespace>
<Description>Logitech-Device-Implementations of RGB.NET</Description>
<Summary>Logitech-Device-Implementations of RGB.NET, a C# (.NET) library for accessing various RGB-peripherals</Summary>
<Copyright>Copyright © Darth Affe 2022</Copyright>
<PackageCopyright>Copyright © Darth Affe 2022</PackageCopyright>
<Copyright>Copyright © Darth Affe 2023</Copyright>
<PackageCopyright>Copyright © Darth Affe 2023</PackageCopyright>
<PackageIcon>icon.png</PackageIcon>
<PackageReadmeFile>README.md</PackageReadmeFile>
<PackageProjectUrl>https://github.com/DarthAffe/RGB.NET</PackageProjectUrl>
<PackageLicenseExpression>LGPL-2.1-only</PackageLicenseExpression>
<RepositoryType>Github</RepositoryType>
@ -53,6 +54,7 @@
<ItemGroup>
<Content Include="..\Resources\icon.png" Link="icon.png" Pack="true" PackagePath="\" />
<None Include="README.md" Pack="true" PackagePath="\" />
</ItemGroup>
<ItemGroup>

View File

@ -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 `<application-directory>\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 `<application-directory>\x86\MysticLight_SDK.dll`
You can use other, custom paths by adding them to `MsiDeviceProvider.PossibleX86NativePaths`.

View File

@ -15,9 +15,10 @@
<RootNamespace>RGB.NET.Devices.Msi</RootNamespace>
<Description>Msi-Device-Implementations of RGB.NET</Description>
<Summary>Msi-Device-Implementations of RGB.NET, a C# (.NET) library for accessing various RGB-peripherals</Summary>
<Copyright>Copyright © Darth Affe 2022</Copyright>
<PackageCopyright>Copyright © Darth Affe 2022</PackageCopyright>
<Copyright>Copyright © Darth Affe 2023</Copyright>
<PackageCopyright>Copyright © Darth Affe 2023</PackageCopyright>
<PackageIcon>icon.png</PackageIcon>
<PackageReadmeFile>README.md</PackageReadmeFile>
<PackageProjectUrl>https://github.com/DarthAffe/RGB.NET</PackageProjectUrl>
<PackageLicenseExpression>LGPL-2.1-only</PackageLicenseExpression>
<RepositoryType>Github</RepositoryType>
@ -52,6 +53,7 @@
<ItemGroup>
<Content Include="..\Resources\icon.png" Link="icon.png" Pack="true" PackagePath="\" />
<None Include="README.md" Pack="true" PackagePath="\" />
</ItemGroup>
<ItemGroup>

View File

@ -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.

View File

@ -15,9 +15,10 @@
<RootNamespace>RGB.NET.Devices.Novation</RootNamespace>
<Description>Novation-Device-Implementations of RGB.NET</Description>
<Summary>Novation-Device-Implementations of RGB.NET, a C# (.NET) library for accessing various RGB-peripherals</Summary>
<Copyright>Copyright © Darth Affe 2022</Copyright>
<PackageCopyright>Copyright © Darth Affe 2022</PackageCopyright>
<Copyright>Copyright © Darth Affe 2023</Copyright>
<PackageCopyright>Copyright © Darth Affe 2023</PackageCopyright>
<PackageIcon>icon.png</PackageIcon>
<PackageReadmeFile>README.md</PackageReadmeFile>
<PackageProjectUrl>https://github.com/DarthAffe/RGB.NET</PackageProjectUrl>
<PackageLicenseExpression>LGPL-2.1-only</PackageLicenseExpression>
<RepositoryType>Github</RepositoryType>
@ -52,6 +53,7 @@
<ItemGroup>
<Content Include="..\Resources\icon.png" Link="icon.png" Pack="true" PackagePath="\" />
<None Include="README.md" Pack="true" PackagePath="\" />
</ItemGroup>
<ItemGroup>

View File

@ -56,6 +56,14 @@ public class OpenRGBDeviceProvider : AbstractRGBDeviceProvider
#endregion
#region Methods
/// <summary>
/// Adds the specified <see cref="OpenRGBServerDefinition" /> to this device-provider.
/// </summary>
/// <param name="deviceDefinition">The <see cref="OpenRGBServerDefinition"/> to add.</param>
// ReSharper disable once UnusedMember.Global
public void AddDeviceDefinition(OpenRGBServerDefinition deviceDefinition) => DeviceDefinitions.Add(deviceDefinition);
/// <inheritdoc />
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;
}

View File

@ -8,17 +8,17 @@ public class OpenRGBServerDefinition
/// <summary>
/// The name of the client that will appear in the OpenRGB interface.
/// </summary>
public string? ClientName { get; set; }
public string? ClientName { get; set; } = "RGB.NET";
/// <summary>
/// The ip address of the server.
/// </summary>
public string? Ip { get; set; }
public string? Ip { get; set; } = "127.0.0.1";
/// <summary>
/// The port of the server.
/// </summary>
public int Port { get; set; }
public int Port { get; set; } = 6742;
/// <summary>
/// Whether the provider is connected to this server definition or not.

View File

@ -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.

View File

@ -15,9 +15,10 @@
<RootNamespace>RGB.NET.Devices.OpenRGB</RootNamespace>
<Description>OpenRGB-Device-Implementations of RGB.NET</Description>
<Summary>OpenRGB-Device-Implementations of RGB.NET, a C# (.NET) library for accessing various RGB-peripherals</Summary>
<Copyright>Copyright © Darth Affe 2022</Copyright>
<PackageCopyright>Copyright © Darth Affe 2022</PackageCopyright>
<Copyright>Copyright © Darth Affe 2023</Copyright>
<PackageCopyright>Copyright © Darth Affe 2023</PackageCopyright>
<PackageIcon>icon.png</PackageIcon>
<PackageReadmeFile>README.md</PackageReadmeFile>
<PackageProjectUrl>https://github.com/DarthAffe/RGB.NET</PackageProjectUrl>
<PackageLicenseExpression>LGPL-2.1-only</PackageLicenseExpression>
<RepositoryType>Github</RepositoryType>
@ -52,6 +53,7 @@
<ItemGroup>
<Content Include="..\Resources\icon.png" Link="icon.png" Pack="true" PackagePath="\" />
<None Include="README.md" Pack="true" PackagePath="\" />
</ItemGroup>
<ItemGroup>

View File

@ -15,9 +15,10 @@
<RootNamespace>RGB.NET.Devices.PicoPi</RootNamespace>
<Description>PicoPi-Device-Implementations of RGB.NET</Description>
<Summary>PicoPi-Device-Implementations of RGB.NET, a C# (.NET) library for accessing various RGB-peripherals</Summary>
<Copyright>Copyright © Darth Affe 2022</Copyright>
<PackageCopyright>Copyright © Darth Affe 2022</PackageCopyright>
<Copyright>Copyright © Darth Affe 2023</Copyright>
<PackageCopyright>Copyright © Darth Affe 2023</PackageCopyright>
<PackageIcon>icon.png</PackageIcon>
<PackageReadmeFile>README.md</PackageReadmeFile>
<PackageProjectUrl>https://github.com/DarthAffe/RGB.NET</PackageProjectUrl>
<PackageLicenseExpression>LGPL-2.1-only</PackageLicenseExpression>
<RepositoryType>Github</RepositoryType>
@ -52,6 +53,7 @@
<ItemGroup>
<Content Include="..\Resources\icon.png" Link="icon.png" Pack="true" PackagePath="\" />
<None Include="README.md" Pack="true" PackagePath="\" />
</ItemGroup>
<ItemGroup>

View File

@ -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.

View File

@ -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.

View File

@ -15,9 +15,10 @@
<RootNamespace>RGB.NET.Devices.Razer</RootNamespace>
<Description>Razer-Device-Implementations of RGB.NET</Description>
<Summary>Razer-Device-Implementations of RGB.NET, a C# (.NET) library for accessing various RGB-peripherals</Summary>
<Copyright>Copyright © Darth Affe 2022</Copyright>
<PackageCopyright>Copyright © Darth Affe 2022</PackageCopyright>
<Copyright>Copyright © Darth Affe 2023</Copyright>
<PackageCopyright>Copyright © Darth Affe 2023</PackageCopyright>
<PackageIcon>icon.png</PackageIcon>
<PackageReadmeFile>README.md</PackageReadmeFile>
<PackageProjectUrl>https://github.com/DarthAffe/RGB.NET</PackageProjectUrl>
<PackageLicenseExpression>LGPL-2.1-only</PackageLicenseExpression>
<RepositoryType>Github</RepositoryType>
@ -53,6 +54,7 @@
<ItemGroup>
<Content Include="..\Resources\icon.png" Link="icon.png" Pack="true" PackagePath="\" />
<None Include="README.md" Pack="true" PackagePath="\" />
</ItemGroup>
<ItemGroup>

View File

@ -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;
/// <summary>
/// Gets the loaded architecture (x64/x86).
/// </summary>
internal static string LoadedArchitecture { get; private set; }
/// <summary>
/// Reloads the SDK.
/// </summary>
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<string> 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
}
}

View File

@ -1,56 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net6.0</TargetFrameworks>
<LangVersion>latest</LangVersion>
<Nullable>enable</Nullable>
<Authors>Darth Affe</Authors>
<Company>Wyrez</Company>
<Language>en-US</Language>
<NeutralLanguage>en-US</NeutralLanguage>
<Title>RGB.NET.Devices.Roccat</Title>
<AssemblyName>RGB.NET.Devices.Roccat</AssemblyName>
<AssemblyTitle>RGB.NET.Devices.Roccat</AssemblyTitle>
<PackageId>RGB.NET.Devices.Roccat</PackageId>
<RootNamespace>RGB.NET.Devices.Roccat</RootNamespace>
<Description>Roccat-Device-Implementations of RGB.NET</Description>
<Summary>Roccat-Device-Implementations of RGB.NET, a C# (.NET) library for accessing various RGB-peripherals</Summary>
<Copyright>Copyright © Darth Affe 2020</Copyright>
<PackageCopyright>Copyright © Darth Affe 2020</PackageCopyright>
<PackageIconUrl>http://lib.arge.be/icon.png</PackageIconUrl>
<PackageProjectUrl>https://github.com/DarthAffe/RGB.NET</PackageProjectUrl>
<PackageLicenseUrl>https://raw.githubusercontent.com/DarthAffe/RGB.NET/master/LICENSE</PackageLicenseUrl>
<RepositoryType>Github</RepositoryType>
<RepositoryUrl>https://github.com/DarthAffe/RGB.NET</RepositoryUrl>
<GeneratePackageOnBuild>False</GeneratePackageOnBuild>
<PackageReleaseNotes></PackageReleaseNotes>
<Version>0.0.1</Version>
<AssemblyVersion>0.0.1</AssemblyVersion>
<FileVersion>0.0.1</FileVersion>
<OutputPath>..\bin\</OutputPath>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<IncludeSource>True</IncludeSource>
<IncludeSymbols>True</IncludeSymbols>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Debug'">
<DefineConstants>$(DefineConstants);TRACE;DEBUG</DefineConstants>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)' == 'Release'">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<NoWarn>$(NoWarn);CS1591;CS1572;CS1573</NoWarn>
<DefineConstants>$(DefineConstants);RELEASE</DefineConstants>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\RGB.NET.Core\RGB.NET.Core.csproj" />
</ItemGroup>
</Project>

View File

@ -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
{
/// <inheritdoc />
/// <summary>
/// Represents a device provider responsible for roccat (TalkFX)devices.
/// </summary>
public class RoccatDeviceProvider : IRGBDeviceProvider
{
#region Properties & Fields
private static RoccatDeviceProvider _instance;
/// <summary>
/// Gets the singleton <see cref="RoccatDeviceProvider"/> instance.
/// </summary>
public static RoccatDeviceProvider Instance => _instance ?? new RoccatDeviceProvider();
/// <summary>
/// Gets a modifiable list of paths used to find the native SDK-dlls for x86 applications.
/// The first match will be used.
/// </summary>
public static List<string> PossibleX86NativePaths { get; } = new List<string> { "x86/RoccatTalkSDKWrapper.dll" };
/// <summary>
/// Gets a modifiable list of paths used to find the native SDK-dlls for x64 applications.
/// The first match will be used.
/// </summary>
public static List<string> PossibleX64NativePaths { get; } = new List<string> { "x64/RoccatTalkSDKWrapper.dll" };
/// <inheritdoc />
/// <summary>
/// Indicates if the SDK is initialized and ready to use.
/// </summary>
public bool IsInitialized { get; private set; }
/// <summary>
/// Gets the loaded architecture (x64/x86).
/// </summary>
public string LoadedArchitecture => _RoccatSDK.LoadedArchitecture;
/// <inheritdoc />
/// <summary>
/// Gets whether the application has exclusive access to the SDK or not.
/// </summary>
public bool HasExclusiveAccess { get; private set; }
/// <inheritdoc />
public IEnumerable<IRGBDevice> Devices { get; private set; }
private IntPtr _sdkHandle;
#endregion
#region Constructors
/// <summary>
/// Initializes a new instance of the <see cref="RoccatDeviceProvider"/> class.
/// </summary>
/// <exception cref="InvalidOperationException">Thrown if this constructor is called even if there is already an instance of this class.</exception>
public RoccatDeviceProvider()
{
if (_instance != null) throw new InvalidOperationException($"There can be only one instance of type {nameof(RoccatDeviceProvider)}");
_instance = this;
}
#endregion
#region Methods
/// <inheritdoc />
/// <exception cref="RGBDeviceException">Thrown if the SDK is already initialized or if the SDK is not compatible to CUE.</exception>
public bool Initialize(RGBDeviceType loadFilter = RGBDeviceType.All, bool exclusiveAccessIfPossible = false, bool throwExceptions = false)
{
IsInitialized = false;
try
{
_sdkHandle = _RoccatSDK.InitSDK();
IList<IRGBDevice> devices = new List<IRGBDevice>();
Devices = new ReadOnlyCollection<IRGBDevice>(devices);
IsInitialized = true;
}
catch
{
if (throwExceptions) throw;
return false;
}
return true;
}
/// <inheritdoc />
public void ResetDevices()
{ }
/// <inheritdoc />
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
}
}

View File

@ -1,24 +0,0 @@
using RGB.NET.Core;
namespace RGB.NET.Devices.Roccat
{
/// <summary>
/// Represents a device provider loaded used to dynamically load roccat devices into an application.
/// </summary>
public class RoccatDeviceProviderLoader : IRGBDeviceProviderLoader
{
#region Properties & Fields
/// <inheritdoc />
public bool RequiresInitialization => false;
#endregion
#region Methods
/// <inheritdoc />
public IRGBDeviceProvider GetDeviceProvider() => RoccatDeviceProvider.Instance;
#endregion
}
}

View File

@ -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.

View File

@ -15,9 +15,10 @@
<RootNamespace>RGB.NET.Devices.SteelSeries</RootNamespace>
<Description>SteelSeries-Device-Implementations of RGB.NET</Description>
<Summary>SteelSeries-Device-Implementations of RGB.NET, a C# (.NET) library for accessing various RGB-peripherals</Summary>
<Copyright>Copyright © Darth Affe 2022</Copyright>
<PackageCopyright>Copyright © Darth Affe 2022</PackageCopyright>
<Copyright>Copyright © Darth Affe 2023</Copyright>
<PackageCopyright>Copyright © Darth Affe 2023</PackageCopyright>
<PackageIcon>icon.png</PackageIcon>
<PackageReadmeFile>README.md</PackageReadmeFile>
<PackageProjectUrl>https://github.com/DarthAffe/RGB.NET</PackageProjectUrl>
<PackageLicenseExpression>LGPL-2.1-only</PackageLicenseExpression>
<RepositoryType>Github</RepositoryType>
@ -52,6 +53,7 @@
<ItemGroup>
<Content Include="..\Resources\icon.png" Link="icon.png" Pack="true" PackagePath="\" />
<None Include="README.md" Pack="true" PackagePath="\" />
</ItemGroup>
<ItemGroup>

View File

@ -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.

View File

@ -15,9 +15,10 @@
<RootNamespace>RGB.NET.Devices.WS281X</RootNamespace>
<Description>WS281X-Device-Implementations of RGB.NET</Description>
<Summary>WS281X-Device-Implementations of RGB.NET, a C# (.NET) library for accessing various RGB-peripherals</Summary>
<Copyright>Copyright © Darth Affe 2022</Copyright>
<PackageCopyright>Copyright © Darth Affe 2022</PackageCopyright>
<Copyright>Copyright © Darth Affe 2023</Copyright>
<PackageCopyright>Copyright © Darth Affe 2023</PackageCopyright>
<PackageIcon>icon.png</PackageIcon>
<PackageReadmeFile>README.md</PackageReadmeFile>
<PackageProjectUrl>https://github.com/DarthAffe/RGB.NET</PackageProjectUrl>
<PackageLicenseExpression>LGPL-2.1-only</PackageLicenseExpression>
<RepositoryType>Github</RepositoryType>
@ -52,6 +53,7 @@
<ItemGroup>
<Content Include="..\Resources\icon.png" Link="icon.png" Pack="true" PackagePath="\" />
<None Include="README.md" Pack="true" PackagePath="\" />
</ItemGroup>
<ItemGroup>

View File

@ -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 `<application-directory>\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 `<application-directory>\x86\wooting-rgb-sdk.dll`
You can use other, custom paths by adding them to `WootingDeviceProvider.PossibleX86NativePaths`.

View File

@ -15,9 +15,10 @@
<RootNamespace>RGB.NET.Devices.Wooting</RootNamespace>
<Description>Wooting-Device-Implementations of RGB.NET</Description>
<Summary>Wooting-Device-Implementations of RGB.NET, a C# (.NET) library for accessing various RGB-peripherals</Summary>
<Copyright>Copyright © Darth Affe 2022</Copyright>
<PackageCopyright>Copyright © Darth Affe 2022</PackageCopyright>
<Copyright>Copyright © Darth Affe 2023</Copyright>
<PackageCopyright>Copyright © Darth Affe 2023</PackageCopyright>
<PackageIcon>icon.png</PackageIcon>
<PackageReadmeFile>README.md</PackageReadmeFile>
<PackageProjectUrl>https://github.com/DarthAffe/RGB.NET</PackageProjectUrl>
<PackageLicenseExpression>LGPL-2.1-only</PackageLicenseExpression>
<RepositoryType>Github</RepositoryType>
@ -53,6 +54,7 @@
<ItemGroup>
<Content Include="..\Resources\icon.png" Link="icon.png" Pack="true" PackagePath="\" />
<None Include="README.md" Pack="true" PackagePath="\" />
</ItemGroup>
<ItemGroup>

3
RGB.NET.HID/README.md Normal file
View File

@ -0,0 +1,3 @@
[RGB.NET](https://github.com/DarthAffe/RGB.NET) HID-Package.
Abstraction for device-providers that require HID-functionality.

View File

@ -15,9 +15,10 @@
<RootNamespace>RGB.NET.HID</RootNamespace>
<Description>HID-Module of RGB.NET</Description>
<Summary>HID-Module of RGB.NET, a C# (.NET) library for accessing various RGB-peripherals</Summary>
<Copyright>Copyright © Darth Affe 2022</Copyright>
<PackageCopyright>Copyright © Darth Affe 2022</PackageCopyright>
<Copyright>Copyright © Darth Affe 2023</Copyright>
<PackageCopyright>Copyright © Darth Affe 2023</PackageCopyright>
<PackageIcon>icon.png</PackageIcon>
<PackageReadmeFile>README.md</PackageReadmeFile>
<PackageProjectUrl>https://github.com/DarthAffe/RGB.NET</PackageProjectUrl>
<PackageLicenseExpression>LGPL-2.1-only</PackageLicenseExpression>
<RepositoryType>Github</RepositoryType>
@ -52,6 +53,7 @@
<ItemGroup>
<Content Include="..\Resources\icon.png" Link="icon.png" Pack="true" PackagePath="\" />
<None Include="README.md" Pack="true" PackagePath="\" />
</ItemGroup>
<ItemGroup>

3
RGB.NET.Layout/README.md Normal file
View File

@ -0,0 +1,3 @@
[RGB.NET](https://github.com/DarthAffe/RGB.NET) Layout-Package.
Required to use the RGB.NET-Layout-System.

View File

@ -15,9 +15,10 @@
<RootNamespace>RGB.NET.Layout</RootNamespace>
<Description>Layout-Module of RGB.NET</Description>
<Summary>Layout-Module of RGB.NET, a C# (.NET) library for accessing various RGB-peripherals</Summary>
<Copyright>Copyright © Darth Affe 2022</Copyright>
<PackageCopyright>Copyright © Darth Affe 2022</PackageCopyright>
<Copyright>Copyright © Darth Affe 2023</Copyright>
<PackageCopyright>Copyright © Darth Affe 2023</PackageCopyright>
<PackageIcon>icon.png</PackageIcon>
<PackageReadmeFile>README.md</PackageReadmeFile>
<PackageProjectUrl>https://github.com/DarthAffe/RGB.NET</PackageProjectUrl>
<PackageLicenseExpression>LGPL-2.1-only</PackageLicenseExpression>
<RepositoryType>Github</RepositoryType>
@ -52,6 +53,7 @@
<ItemGroup>
<Content Include="..\Resources\icon.png" Link="icon.png" Pack="true" PackagePath="\" />
<None Include="README.md" Pack="true" PackagePath="\" />
</ItemGroup>
<ItemGroup>

View File

@ -0,0 +1,3 @@
[RGB.NET](https://github.com/DarthAffe/RGB.NET) Presets-Package.
Contains a mix of Groups, Textures, Decorators and more.

View File

@ -15,9 +15,10 @@
<RootNamespace>RGB.NET.Presets</RootNamespace>
<Description>Presets-Presets of RGB.NET</Description>
<Summary>Presets for RGB.NET, a C# (.NET) library for accessing various RGB-peripherals</Summary>
<Copyright>Copyright © Darth Affe 2022</Copyright>
<PackageCopyright>Copyright © Darth Affe 2022</PackageCopyright>
<Copyright>Copyright © Darth Affe 2023</Copyright>
<PackageCopyright>Copyright © Darth Affe 2023</PackageCopyright>
<PackageIcon>icon.png</PackageIcon>
<PackageReadmeFile>README.md</PackageReadmeFile>
<PackageProjectUrl>https://github.com/DarthAffe/RGB.NET</PackageProjectUrl>
<PackageLicenseExpression>LGPL-2.1-only</PackageLicenseExpression>
<RepositoryType>Github</RepositoryType>
@ -53,6 +54,7 @@
<ItemGroup>
<Content Include="..\Resources\icon.png" Link="icon.png" Pack="true" PackagePath="\" />
<None Include="README.md" Pack="true" PackagePath="\" />
</ItemGroup>
<ItemGroup>