public void CheckLedChange()
        {
            Stopwatch sw              = Stopwatch.StartNew();
            var       client          = new OpenRGBClient(name: "OpenRGB.NET Test: CheckLedChange");
            var       controllerCount = client.GetControllerCount();
            var       devices         = new Device[controllerCount];

            for (int i = 0; i < controllerCount; i++)
            {
                devices[i] = client.GetControllerData(i);
            }

            for (int i = 0; i < controllerCount; i++)
            {
                var device = devices[i];

                var originalColors = Color.GetHueRainbow(device.Leds.Length);

                client.UpdateLeds(i, originalColors.ToArray());
                var updatedColors = client.GetControllerData(i).Colors;

                Assert.True(updatedColors.SequenceEqual(originalColors));
            }
            client.Dispose();
            sw.Stop();
            Output.WriteLine($"Time elapsed: {(double)sw.ElapsedTicks / Stopwatch.Frequency * 1000} ms.");
        }
        public void UpdateZoneTypes()
        {
            //This delay is needed due to a threading bug in OpenRGB
            //https://gitlab.com/CalcProgrammer1/OpenRGB/-/issues/376
            //https://gitlab.com/CalcProgrammer1/OpenRGB/-/issues/350
            Thread.Sleep(150);
            Stopwatch sw              = Stopwatch.StartNew();
            var       client          = new OpenRGBClient(name: "OpenRGB.NET Test: UpdateZoneTypes");
            var       controllerCount = client.GetControllerCount();
            var       devices         = new Device[controllerCount];

            for (int i = 0; i < controllerCount; i++)
            {
                devices[i] = client.GetControllerData(i);
            }

            for (int i = 0; i < controllerCount; i++)
            {
                var device = devices[i];

                for (int j = 0; j < device.Zones.Length; j++)
                {
                    var zone = device.Zones[j];
                    switch (zone.Type)
                    {
                    case Enums.ZoneType.Linear:
                        var colors = Color.GetHueRainbow((int)zone.LedCount);
                        client.UpdateZone(i, j, colors.ToArray());
                        break;

                    case Enums.ZoneType.Single:
                        client.UpdateZone(i, j, new[] { new Color(255, 0, 0) });
                        break;

                    case Enums.ZoneType.Matrix:
                        var yeet    = 2 * Math.PI / zone.MatrixMap.Width;
                        var rainbow = Color.GetHueRainbow((int)zone.MatrixMap.Width).ToArray();
                        //var rainbow = Color.GetSinRainbow((int)zone.MatrixMap.Width).ToArray();

                        var matrix = Enumerable.Range(0, (int)zone.LedCount).Select(_ => new Color()).ToArray();
                        for (int k = 0; k < zone.MatrixMap.Width; k++)
                        {
                            for (int l = 0; l < zone.MatrixMap.Height; l++)
                            {
                                var index = zone.MatrixMap.Matrix[l, k];
                                if (index != uint.MaxValue)
                                {
                                    matrix[index] = rainbow[k].Clone();
                                }
                            }
                        }
                        client.UpdateZone(i, j, matrix);
                        break;
                    }
                }
            }
            client.Dispose();
            sw.Stop();
            Output.WriteLine($"Time elapsed: {(double)sw.ElapsedTicks / Stopwatch.Frequency * 1000} ms.");
        }
        public void ClientConnectToServer()
        {
            Stopwatch     sw     = Stopwatch.StartNew();
            OpenRGBClient client = new OpenRGBClient(name: "OpenRGB.NET Test: ClientConnectToServer");

            client.Connect();
            client.Dispose();
            sw.Stop();
            Output.WriteLine($"Time elapsed: {(double)sw.ElapsedTicks / Stopwatch.Frequency * 1000} ms.");
        }
        public void UseAfterDispose()
        {
            Stopwatch sw     = Stopwatch.StartNew();
            var       client = new OpenRGBClient();

            client.Dispose();

            Assert.Throws <ObjectDisposedException>(() => client.GetControllerCount());
            Output.WriteLine($"Time elapsed: {(double)sw.ElapsedTicks / Stopwatch.Frequency * 1000} ms.");
        }
        public void ListController()
        {
            Stopwatch     sw     = Stopwatch.StartNew();
            OpenRGBClient client = new OpenRGBClient(name: "OpenRGB.NET Test: ListController");

            int nbController = client.GetControllerCount();

            for (int i = 0; i < nbController; i++)
            {
                Device controller = client.GetControllerData(i);
                Assert.True(!string.IsNullOrWhiteSpace(controller.Name));
            }

            client.Dispose();
            sw.Stop();
            Output.WriteLine($"Time elapsed: {(double)sw.ElapsedTicks / Stopwatch.Frequency * 1000} ms.");
        }
Example #6
0
        public override void Shutdown()
        {
            if (!IsInitialized)
            {
                return;
            }

            foreach (var d in _devices)
            {
                try
                {
                    _openRgb.UpdateLeds(d.Index, d.OrgbDevice.Colors);
                }
                catch
                {
                    //we tried.
                }
            }

            _openRgb?.Dispose();
            _openRgb      = null;
            IsInitialized = false;
        }
Example #7
0
 public void Dispose()
 {
     _client?.Dispose();
     GC.SuppressFinalize(this);
 }