diff --git a/RGB.NET.Devices.WS281X/Bitwizard/BitwizardWS2812USBDevice.cs b/RGB.NET.Devices.WS281X/Bitwizard/BitwizardWS2812USBDevice.cs
index b9e5cf6..51f6d56 100644
--- a/RGB.NET.Devices.WS281X/Bitwizard/BitwizardWS2812USBDevice.cs
+++ b/RGB.NET.Devices.WS281X/Bitwizard/BitwizardWS2812USBDevice.cs
@@ -16,6 +16,8 @@ namespace RGB.NET.Devices.WS281X.Bitwizard
{
#region Properties & Fields
+ private readonly int _ledOffset;
+
///
/// Gets the update queue performing updates for this device.
///
@@ -33,10 +35,12 @@ namespace RGB.NET.Devices.WS281X.Bitwizard
///
/// The update trigger used by this queue.
/// The update queue performing updates for this device.
- public BitwizardWS2812USBDevice(BitwizardWS2812USBDeviceInfo deviceInfo, BitwizardWS2812USBUpdateQueue updateQueue)
+ public BitwizardWS2812USBDevice(BitwizardWS2812USBDeviceInfo deviceInfo, BitwizardWS2812USBUpdateQueue updateQueue, int ledOffset)
{
this.DeviceInfo = deviceInfo;
this.UpdateQueue = updateQueue;
+
+ this._ledOffset = ledOffset;
}
#endregion
@@ -58,7 +62,7 @@ namespace RGB.NET.Devices.WS281X.Bitwizard
}
///
- protected override object CreateLedCustomData(LedId ledId) => (int)ledId - (int)LedId.LedStripe1;
+ protected override object CreateLedCustomData(LedId ledId) => _ledOffset + ((int)ledId - (int)LedId.LedStripe1);
///
protected override void UpdateLeds(IEnumerable ledsToUpdate) => UpdateQueue.SetData(ledsToUpdate.Where(x => x.Color.A > 0));
diff --git a/RGB.NET.Devices.WS281X/Bitwizard/BitwizardWS281XDeviceDefinition.cs b/RGB.NET.Devices.WS281X/Bitwizard/BitwizardWS281XDeviceDefinition.cs
index b7f61b3..f4f784c 100644
--- a/RGB.NET.Devices.WS281X/Bitwizard/BitwizardWS281XDeviceDefinition.cs
+++ b/RGB.NET.Devices.WS281X/Bitwizard/BitwizardWS281XDeviceDefinition.cs
@@ -36,11 +36,22 @@ namespace RGB.NET.Devices.WS281X.Bitwizard
///
public string Name { get; set; }
+ ///
+ /// Gets or sets the pin sed to control the leds.
+ ///
+ public int Pin { get; set; } = 0;
+
///
/// Gets or sets the amount of leds of this device.
///
public int StripLength { get; set; } = 384;
+ ///
+ /// Gets or sets the amount of leds controlled by one pin.
+ /// This only needs to be changed if the firmware on the controller is updated.
+ ///
+ public int MaxStripLength { get; set; } = 384;
+
#endregion
#region Constructors
@@ -73,7 +84,8 @@ namespace RGB.NET.Devices.WS281X.Bitwizard
{
BitwizardWS2812USBUpdateQueue queue = new BitwizardWS2812USBUpdateQueue(updateTrigger, SerialConnection);
string name = Name ?? $"Bitwizard WS2812 USB ({Port})";
- BitwizardWS2812USBDevice device = new BitwizardWS2812USBDevice(new BitwizardWS2812USBDeviceInfo(name), queue);
+ int ledOffset = Pin * MaxStripLength;
+ BitwizardWS2812USBDevice device = new BitwizardWS2812USBDevice(new BitwizardWS2812USBDeviceInfo(name), queue, ledOffset);
device.Initialize(StripLength);
yield return device;
}