From e52ee2094c8a8a0b5ed0e2d7764221404bf1be07 Mon Sep 17 00:00:00 2001 From: Serge <5920850+seerge@users.noreply.github.com> Date: Fri, 26 Apr 2024 13:46:47 +0200 Subject: [PATCH] Custom payloads for Slash Lighting --- app/AnimeMatrix/AniMatrixControl.cs | 9 ++++++++- app/AnimeMatrix/SlashDevice.cs | 9 +++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/app/AnimeMatrix/AniMatrixControl.cs b/app/AnimeMatrix/AniMatrixControl.cs index 5e87933d..7262f2bb 100644 --- a/app/AnimeMatrix/AniMatrixControl.cs +++ b/app/AnimeMatrix/AniMatrixControl.cs @@ -103,7 +103,14 @@ namespace GHelper.AnimeMatrix switch ((SlashMode)running) { case SlashMode.Static: - deviceSlash.SetStatic(brightness); + var custom = AppConfig.GetString("slash_custom"); + if (custom is not null && custom.Length > 0) + { + deviceSlash.SetCustom(AppConfig.StringToBytes(custom)); + } else + { + deviceSlash.SetStatic(brightness); + } break; default: deviceSlash.SetMode((SlashMode)running); diff --git a/app/AnimeMatrix/SlashDevice.cs b/app/AnimeMatrix/SlashDevice.cs index f2027260..4adb065c 100644 --- a/app/AnimeMatrix/SlashDevice.cs +++ b/app/AnimeMatrix/SlashDevice.cs @@ -119,13 +119,18 @@ namespace GHelper.AnimeMatrix public void SetStatic(int brightness = 0) { - byte brightnessByte = (byte)(brightness * 85.333); + SetCustom(Enumerable.Repeat((byte)(brightness * 85.333), 7).ToArray()); + } + + public void SetCustom(byte[] data) + { Set(Packet(0xD2, 0x02, 0x01, 0x08, 0xAC), "Static"); Set(Packet(0xD3, 0x03, 0x01, 0x08, 0xAC, 0xFF, 0xFF, 0x01, 0x05, 0xFF, 0xFF), "StaticSettings"); Set(Packet(0xD4, 0x00, 0x00, 0x01, 0xAC), "StaticSave"); - Set(Packet(0xD3, 0x00, 0x00, 0x07, brightnessByte, brightnessByte, brightnessByte, brightnessByte, brightnessByte, brightnessByte, brightnessByte), "Static White"); + byte[] payload = new byte[] { 0xD3, 0x00, 0x00, 0x07 }; + Set(Packet(payload.Concat(data.Take(7)).ToArray()), "Static Data"); } public void SetOptions(bool status, int brightness = 0, int interval = 0)