Перейти к содержанию

Подсветка

Режим подсветки передаётся одним 64-байтным payload'ом в обычной транзакции. Байт [0] задаёт режим, байты [1..3] — цвет, [9] — яркость, [10] — скорость, [11] — направление анимации.

Формат payload

Байт Назначение Значения
[0] режим 0x01–0x13 — режимы 1–19, 0x80 — таблица раскраски, 0x00 — выкл
[1..3] цвет R G B 0x00–0xff; прошивка умножает цвет на яркость
[4..7] не используются 0x00
[8] моно/спектр 0x00 — цвет из [1..3], 0x01 — спектр
[9] яркость 0x01–0x0f
[10] скорость 0x01–0x0f; для static всегда 0x0a
[11] направление 0x00–0x03, зависит от режима
[12..13] не используются 0x00
[14..15] признак payload aa 55
[16..63] не используются 0x00

Максимум канала в живом кадре — 0xee (238), а не 0xff: прошивка умножает цвет на яркость показа. При яркости 15 канал доходит до ee, при яркости 1 — до 0f.

Неиспользуемые байты [4..7], [12..13] и [16..63] вендор всегда отправляет нулями. Перебор значений в них на анимацию не влиял.

Моно и спектр

Байт [8] переключает режим отображения.

Значение Поведение
0x00 режим рисует цвет из байтов [1..3]
0x01 режим рисует спектр; у static это круговой градиент

Проверено живым кадром для всех 19 режимов. Исключения:

  • flower и spectrum рисуют спектр при любом значении;
  • breathing при 0x00 дышит заданным цветом.

Вендорский дефолт: 0x00 для режимов 1 и 4, 0x01 для остальных. Поэтому для одноцветного дыхания или водопада нужен --no-spectrum. У fade, star, waterfall и прочих режимов цвет тоже работает только при [8]=00.

Направление

Байт [11] понимают только режимы с направлением. Значения делятся на две группы: 00 и 03 дают одно направление, 01 и 02 — обратное. Для остальных режимов вендор всегда шлёт 00.

Режим 00 / 03 01 / 02 Вендор CLI
10 waterfall вниз вверх 03 / 02 down=03, up=02
11 flow вправо влево — right=00, left=01
12 rotate против часовой по часовой — right=00, left=01
16 marquee (0x10) вправо влево 00 / 01 right=00, left=01
18 wind вправо (и 01) влево — только 02 — right=00, left=02

У waterfall и rotate спектральные варианты направление игнорируют: анимация одинакова при любом [11]. У flow и marquee направление работает и в моно, и в спектре.

У wind группы другие: 00, 01 и 03 дают ветер вправо, а влево он дует только при 02. Наклон полос при 02 не зеркалится — нижние ряды по-прежнему правее, — а период чуть длиннее: 0,83 с против 0,70 с на скорости 2.

CLI при --direction для спектральных waterfall и rotate печатает предупреждение, а приложение блокирует кнопки направления.

Режимы

№ Алиас Режим Цвет Дополнительно
1 static Постоянный свет моно/спектр яркость
2 keypress Подсветка нажатых моно/спектр яркость, скорость
3 fade Затухание нажатых моно/спектр яркость, скорость
4 star Звёздный моно/спектр яркость, скорость
5 snow Снежный моно/спектр яркость, скорость
6 flower Цветочный спектр яркость, скорость
7 breathing Дыхание моно/спектр яркость, скорость
8 spectrum Полный спектр спектр яркость, скорость
9 ripple Круги моно/спектр яркость, скорость
10 waterfall Водопад моно/спектр яркость, скорость, ↑/↓
11 flow Течение моно/спектр яркость, скорость, ←/→
12 rotate Вращение моно/спектр яркость, скорость, ↻/↺
13 horizontal Горизонталь моно/спектр яркость, скорость
14 vertical Вертикаль моно/спектр яркость, скорость
15 splash Рябь по воде моно/спектр яркость, скорость
16 marquee Бегущая строка моно/спектр яркость, скорость, ←/→
17 mountains Горы моно/спектр яркость, скорость
18 wind Ветер моно/спектр яркость, скорость, ←/→
19 shuttle Шаттл моно/спектр яркость, скорость
— off Выключена — —

Номер режима — это байт [0] payload'а. Алиасы определены в katana.py (MODES) и принимаются командами mode и scan.

Выключение и сброс

  • off — payload из нулей и признака aa55;
  • default — вендорский payload режима 0x80 с пустой таблицей;
  • 0x80 — отображение таблицы раскраски, записанной каналом 04 23.

У static слайдер скорости в вендорской утилите неактивен: прошивке всегда уходит 0x0a. Если задать другое значение явно, CLI печатает предупреждение и всё равно отправляет 0x0a.

Как эти команды выглядят в CLI, описано в разделе Режимы подсветки и в справке команд.