From 87655aba5d6bb4b84f7d510a0540cf9838829443 Mon Sep 17 00:00:00 2001 From: Darth Affe Date: Thu, 24 Dec 2020 22:52:52 +0100 Subject: [PATCH] Added pin-selection nfor Bitwizard devices --- .../Bitwizard/BitwizardWS2812USBDevice.cs | 8 ++++++-- .../Bitwizard/BitwizardWS281XDeviceDefinition.cs | 14 +++++++++++++- 2 files changed, 19 insertions(+), 3 deletions(-) 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; }