Обновить документацию системы команд платы
This commit is contained in:
parent
611131b830
commit
e4213e203b
@ -5,6 +5,7 @@ by: Паша Николаевич
|
||||
>[!info] Информация
|
||||
>Это раздел с информацией о плате периферийного контроллера.
|
||||
>Информацию о плате для витрины призов смотреть в [[Витрина призов]]
|
||||
>Текущая описанная прошивка: `ver_2.3.6_no_auth_prizes`.
|
||||
|
||||
>[!info] Общие сведения
|
||||
> - Плата подключается к компьютеру по переходу USB - COM порт.
|
||||
@ -21,6 +22,7 @@ by: Паша Николаевич
|
||||
1. [[#Служебные команды]]
|
||||
2. [[#Программы адресных диодов]]
|
||||
1. [[#Специфичные программы]]
|
||||
1. [[#Отдельный раздел для Бродяги морей]]
|
||||
2. [[#Список команд]]
|
||||
3. [[#Обновление]]
|
||||
|
||||
@ -28,27 +30,30 @@ by: Паша Николаевич
|
||||
|
||||
- Общение - строка, заканчивающаяся кодами (0xD)+(0xA), достаточно любого из них для окончания строки
|
||||
- Минимально – ДВА (2, two) символа. 00+\<Enter\> – команда, а 0+\<Enter\> – уже нет
|
||||
- Таймаут - 100 милисекунд, если строка за это время не окончилась - идет игнорирование команды
|
||||
- Максимальная длина входной строки - 199 символов
|
||||
- Таймаут - 100 миллисекунд, если строка за это время не окончилась - идет игнорирование команды
|
||||
|
||||
Команды получаемые от компьютера помещаются в очередь и выполняются последовательно, кроме команд "сброс" (00) и "очистка очереди".
|
||||
Размер очереди команд - 100 строк. Команды `00` и `90` обрабатываются сразу.
|
||||
|
||||
Шифрование обмена: двойное рукопожатие при помощи AES256 c фиксированным ключом.
|
||||
|
||||
#### Кнопка SERVICE на плате:
|
||||
- Если ее зажать и удержать при включении – выполнится сброс EEPROM
|
||||
- Если ее зажать и удержать при включении – выполнится сброс настроек контроллера
|
||||
- При работе – посылает команду «SERVICE – предлагая компьютеру перейти в режим настройки игровой программы
|
||||
|
||||
>[!warning] Внимание!
|
||||
>Имеются два режима работы: SILENT (тихий режим) и DEVELOPER (режим разработки, с полными логами).
|
||||
>
|
||||
>Переключение режимов:
|
||||
>Если соединить ногу GPIO_15 с землей через резистор <10кОм включается ТИХИЙ режим, и контроллер не выдает логи, а только необходимые ответы и команды.
|
||||
>Также режим можно переключать командой «01» (временно, в релизе будет удалено)
|
||||
>Команда `01` временно переключает режим логирования. В релизной версии команда может быть удалена.
|
||||
|
||||
### Авторизация
|
||||
|
||||
После загрузки контроллер не принимает никаких команд, кроме запросов на авторизацию.
|
||||
|
||||
В текущей сборке `ver_2.3.6_no_auth_prizes` флаг авторизации по умолчанию выставлен в `true`, поэтому контроллер фактически стартует уже разрешенным. Если `auth_ok=false`, логика остается прежней: интерпретатор принимает только команды `07` и `08` до успешной авторизации.
|
||||
|
||||
Запрос – требование зашифровать строку шестнадцатеричных символов с помощью AES256 алгоритма, используя известный ключ.
|
||||
|
||||
Компьютер генерирует случайную последовательность из 16 байт и отправляет ее контроллеру на шифрование. Тот ее шифрует и отвечает. Компьютер расшифровывает и проверяет на совпадение.
|
||||
@ -70,6 +75,7 @@ by: Паша Николаевич
|
||||
4. **Контроллер ответит на первый запрос компа**:
|
||||
**RAES\<symbols\> (16 байт или 32 HEX-символа)**
|
||||
***Пример:*** **RAES***99ED731648AB8C1709CC4C3C8C3BB0E1*
|
||||
5. При успехе контроллер отправляет `AUTH_PC_OK` и статус. При ошибке - `AUTH_PC_FAIL`.
|
||||
|
||||
# Команды
|
||||
|
||||
@ -77,98 +83,298 @@ by: Паша Николаевич
|
||||
|
||||
### Служебные команды
|
||||
|
||||
`02…09` – команды относятся к служебным (обновление прошивки и двойное рукопожопие)
|
||||
`02…09` – команды относятся к служебным (обновление прошивки и двойное рукопожатие)
|
||||
|
||||
>[!warning] Внимание!
|
||||
>Перешивается только основная программа, не трогается таблица разделов и буты.
|
||||
>Поэтому контроллер должен шиться изначально в файловую систему «OTA0-1M+OTA1-1M+SpiFFS-1.7M».
|
||||
>При прошивке зашивается ключ шифрования и AES ключ авторизации.
|
||||
>Прошивка для обновления идет бин-файлом, уже криптованным.
|
||||
>Обновляется только основная программа контроллера.
|
||||
>Файл обновления передается как подготовленный `bin`.
|
||||
>Ключи шифрования и авторизации должны соответствовать версии прошивки.
|
||||
|
||||
### Программы адресных диодов
|
||||
|
||||
`8XYY` - выбор программы адресных диодов
|
||||
|
||||
Всего 4 канала
|
||||
|
||||
- `81YY…84YY` - переключить программу на канале
|
||||
***Например:*** `8204` – на второй канал вывести четвертую, "зеленую" программу
|
||||
- `80YY` – переключает программу на всех каналах сразу.
|
||||
`80NNYY[PARAMS]` - выбор программы адресных диодов, где NN - номер канала в формате ДВУХ (2, two) цифр, а YY - номер параметра базового эффекта.
|
||||
|
||||
Программа зависит от автомата и не может быть унифицирована. Именно для этого требуется обновление прошивки контроллера.
|
||||
|
||||
Кроме, пожалуй, этих (считать тестовыми. Остальное – добавлять по вкусу):
|
||||
- 0 – ничего не выводить в канал
|
||||
- 1 – повторный периодический вывод буфера
|
||||
- 2 – погасить (выводить нолики на всю длину)
|
||||
- 3 – красный
|
||||
- 4 – зеленый
|
||||
- 5 - синий
|
||||
- 6 - серый (100, 100, 100)
|
||||
- 7 - белый
|
||||
- 9 - выводить ЛГБТ переливы
|
||||
***Список базовых эффектов:***
|
||||
- 00 – ничего не выводить в канал
|
||||
- 01 – повторный периодический вывод последнего состояния
|
||||
- 02 – погасить (выводить нолики на всю длину)
|
||||
- 03 – красный
|
||||
- 04 – зеленый
|
||||
- 05 - синий с яркостью `B=100`
|
||||
- 06 - белый (100, 100, 100)
|
||||
- 07 - белый (255, 255, 255)
|
||||
- 08 - пользовательский цвет `RRRGGGBBB`, где каждая компонента `000..255`
|
||||
- 09 - радужный сдвиг на весь канал
|
||||
- 10 - морская волна для шапки морского боя
|
||||
- 11 - автоперебор медленных эффектов шапки морского боя
|
||||
- 20 - idle-анимация призовой стойки
|
||||
- 21 - подсветить полку призовой стойки, параметры `BCF`: ячейка `1..5`, цвет, мигание `0/1`
|
||||
- 22 - красная мигающая тревога
|
||||
- 23 - радужный сдвиг на весь канал
|
||||
- 90 - выводить состояние, которое заполняет виртуальная панель
|
||||
|
||||
*10 и далее – пользовательские функции*
|
||||
***Примеры:***
|
||||
- `800003` - все каналы красные
|
||||
- `800103` - канал 1 красный
|
||||
- `800002` - все каналы черные
|
||||
- `800208255000128` - канал 2, цвет RGB `255,000,128`
|
||||
- `800121311` - канал 1, полка 3, красный, мигает
|
||||
|
||||
##### Настройки адресной подсветки
|
||||
|
||||
`89CKP`:
|
||||
- `C` - канал: `0` для всех каналов подсветки, `1..4` для конкретного канала;
|
||||
- `K` - настройка: `0` порядок цветов, `1` яркость, `2` гамма-коррекция;
|
||||
- `P` - значение настройки. Может состоять из нескольких цифр, например `255` для яркости. Если отправить только `89CK` без `P`, параметр будет принят как `0`, поэтому лучше передавать `P` явно.
|
||||
|
||||
`K=0` сохраняет порядок цветов, `K=1` меняет яркость до перезагрузки, `K=2` включает/выключает гамма-коррекцию до перезагрузки.
|
||||
|
||||
Порядки цвета для `K=0`:
|
||||
|
||||
| `P` | Порядок |
|
||||
|---|---|
|
||||
| `0` | RGB |
|
||||
| `1` | RBG |
|
||||
| `2` | BRG |
|
||||
| `3` | BGR |
|
||||
| `4` | GRB |
|
||||
| `5` | GBR |
|
||||
|
||||
***Примеры:***
|
||||
- `89004` - установить порядок `GRB` для всех каналов
|
||||
- `89104` - установить порядок `GRB` для 1-го канала
|
||||
- `89404` - установить порядок `GRB` для 4-го канала
|
||||
- `8901255` - установить яркость `255` для всех каналов
|
||||
- `8901128` - установить яркость `128` для всех каналов
|
||||
- `89020` - выключить гамма-коррекцию на всех каналах
|
||||
- `89421` - включить гамма-коррекцию для 4-го канала
|
||||
|
||||
#### Специфичные программы
|
||||
|
||||
##### Отдельный раздел для Бродяги морей
|
||||
|
||||
`81XX[NN]` управляет двумя отдельными direct-объектами Бродяги морей. Эта группа похожа на direct-шкалы `8530..8534`, но не является частью команды `85` и используется отдельно от панелей `85`, `86` и `87`.
|
||||
|
||||
- `XX` - подкоманда объекта;
|
||||
- `NN` - уровень заполнения объекта;
|
||||
- короткие команды `81311..81313` - эффекты для объекта 1;
|
||||
- короткие команды `81321..81323` - эффекты для объекта 2;
|
||||
- если нужен ручной уровень `1..3`, передавайте уровень с ведущим нулем: `813101..813103` или `813201..813203`;
|
||||
- эффекты `81311..81313` и `81321..81323` ускорены примерно в 3 раза, цветовые переходы сглажены.
|
||||
|
||||
| Команда | Назначение | Максимальный уровень |
|
||||
|---|---|---|
|
||||
| `8130` | Очистить оба объекта | - |
|
||||
| `8131NN` | Объект 1. Заполнить шкалу градиентом красный -> фиолетовый -> синий | `21` |
|
||||
| `81311` | Эффект 1 объекта 1: плавный перелив синий -> фиолетовый -> фиолетово-красный | - |
|
||||
| `81312` | Эффект 2 объекта 1: плавный перелив фиолетовый -> синий -> сине-голубой | - |
|
||||
| `81313` | Эффект 3 объекта 1: мягкое мигание белым | - |
|
||||
| `8132NN` | Объект 2. Заполнить шкалу градиентом красный -> зеленый | `44` |
|
||||
| `81321` | Эффект 1 объекта 2: плавный перелив синий -> фиолетовый -> фиолетово-красный | - |
|
||||
| `81322` | Эффект 2 объекта 2: плавный перелив фиолетовый -> синий -> сине-голубой | - |
|
||||
| `81323` | Эффект 3 объекта 2: мягкое мигание белым | - |
|
||||
|
||||
Если `NN` больше длины объекта, значение ограничивается полной длиной объекта. Если `NN=0`, объект гаснет. Команды `8130`, `8131NN` и `8132NN` останавливают эффект соответствующего объекта.
|
||||
|
||||
***Примеры:***
|
||||
- `8130` - очистить оба объекта
|
||||
- `813105` - установить уровень `5` для первого объекта
|
||||
- `81311` - запустить эффект 1 первого объекта
|
||||
- `81312` - запустить эффект 2 первого объекта
|
||||
- `81313` - запустить эффект 3 первого объекта
|
||||
- `81321` - запустить эффект 1 второго объекта
|
||||
- `81322` - запустить эффект 2 второго объекта
|
||||
- `81323` - запустить эффект 3 второго объекта
|
||||
- `813101` - вручную установить уровень `1` для первого объекта, не запускать эффект
|
||||
- `813201` - вручную установить уровень `1` для второго объекта, не запускать эффект
|
||||
- `813121` - полностью зажечь первый объект
|
||||
- `813244` - полностью зажечь второй объект
|
||||
|
||||
##### Отдельный раздел для морского боя VR
|
||||
|
||||
`85XXYY`:
|
||||
- XX – команда;
|
||||
- YY – время в секундах.
|
||||
`85XX[SSS]` управляет виртуальной панелью морского боя (`s_b`). Это отдельная группа анимаций, которая работает независимо от обычных программ подсветки.
|
||||
|
||||
***Пример:*** `854505` – включить спецэффект ЗАРЯДКА на 5 секунд
|
||||
- `XX` – код управления или эффекта, две цифры после `85`;
|
||||
- `SSS` – необязательная длительность в секундах, все оставшиеся цифры после `XX`;
|
||||
- для direct-шкал `XX=30..34` хвост команды трактуется как уровень `0..22`, а не как время;
|
||||
- для тестов `XX=25` хвост команды разбирается как `TVVV`.
|
||||
|
||||
`85` – без параметра отключает процесс рендеринга эффектов (чтобы освободить оперативную память).
|
||||
***Примеры разбора:***
|
||||
|
||||
###### Список эффектов
|
||||
| Команда | Как разбирается |
|
||||
|---|---|
|
||||
| `85` | Остановить анимации `s_b` |
|
||||
| `8500` | Автокарусель выключена, очистить экран, перейти в ожидание |
|
||||
| `8501` | Автокарусель включена |
|
||||
| `8510` | Горизонтальная волна с длительностью по умолчанию |
|
||||
| `851005` | Горизонтальная волна на 5 секунд |
|
||||
| `853105` | Первая direct-шкала на уровень `5` |
|
||||
| `854506` | `CHARGE` на 6 секунд |
|
||||
| `858006` | Красная тестовая заливка на 6 секунд |
|
||||
|
||||
| Команда (`XX`) | Название эффекта |
|
||||
| :-------------: | :------------------: |
|
||||
| **Базовые** | **эффекты** |
|
||||
| 00 | Горизонтальная волна |
|
||||
| 01 | Вертикальная волна |
|
||||
| 02 | Диагональная волна |
|
||||
| 03 | Плазма |
|
||||
| 04 | Ночь |
|
||||
| 05 | Радуга |
|
||||
| 06 | Огонь-Лёд |
|
||||
| 07 | Вода |
|
||||
| 08 | Звёзды |
|
||||
| 09 | Сканер |
|
||||
| 10 | Поток |
|
||||
| 11 | Буря |
|
||||
| 12 | Лёд |
|
||||
| **Специальные** | **эффекты** |
|
||||
| 40 | СТАРТ |
|
||||
| 41 | КОНЕЦ |
|
||||
| 42 | ПОПАДАНИЕ |
|
||||
| 43 | ВЫСТРЕЛ |
|
||||
| 44 | ПРОМАХ |
|
||||
| 45 | ЗАРЯДКА |
|
||||
| 46 | СОНАР |
|
||||
| 47 | КРАСНАЯ ВОЛНА |
|
||||
| 48 | ТРЕВОГА |
|
||||
| 49 | ПУЛЬСАЦИЯ |
|
||||
| 80 | красный |
|
||||
| 81 | зеленый |
|
||||
| 82 | синий |
|
||||
`85` без параметра отключает анимации `s_b`. В debug-режиме контроллер может отправить `85 - rendering OFF`.
|
||||
|
||||
Любая непустая команда `85...` запускает анимации `s_b`, если они еще не запущены. Direct-группы `813x` и `8530..8534` управляются отдельными командами и не смешиваются с обычными эффектами `85`.
|
||||
|
||||
Анимации рассчитываются как виртуальная 2D-панель. Для внешней программы важны только коды эффектов, длительность и правила возврата к предыдущему состоянию.
|
||||
|
||||
###### Управляющие коды `85`
|
||||
|
||||
| `XX` | Назначение | Длительность по умолчанию |
|
||||
|---|---|---|
|
||||
| `00` | Автокарусель выключена, очистить экран, перейти в ожидание | - |
|
||||
| `01` | Автокарусель включена | 10 сек на эффект |
|
||||
|
||||
###### Поведение после окончания эффекта
|
||||
|
||||
- Если запущен базовый эффект `10..22` и автокарусель выключена, после истечения времени экран очищается и `s_b` переходит в ожидание.
|
||||
- Если автокарусель включена, базовые эффекты переключаются по кругу `10 -> 11 -> ... -> 22 -> 10`.
|
||||
- Если запущен спецэффект `40..49` или `80..82`, после завершения контроллер возвращается к последнему базовому эффекту.
|
||||
- Если автокарусель выключена, после спецэффекта экран очищается и уходит в ожидание.
|
||||
|
||||
###### Direct-шкалы `8530..8534`
|
||||
|
||||
Эти команды управляют отдельными шкалами `s_b`. Параметр после `XX` - уровень шкалы `0..22`. Значения больше `22` ограничиваются до полной шкалы.
|
||||
|
||||
Шкалы живут независимо от эффектов и не обнуляются при `8500`, `8501`, `8510..8522`, `8540..`, перезапуске анимаций или автопереходе карусели. Обновляются командами `8531..8534`; `8530` вручную очищает шкалы.
|
||||
|
||||
| Команда | Назначение | Параметр |
|
||||
|---|---|---|
|
||||
| `8530` | Очистить все direct-шкалы | не используется |
|
||||
| `8531NN` | Шкала 1: красный -> фиолетовый -> синий | уровень `0..22` |
|
||||
| `8532NN` | Шкала 2: красный -> зеленый | уровень `0..22` |
|
||||
| `8533NN` | Шкала 3: красный -> фиолетовый -> синий | уровень `0..22` |
|
||||
| `8534NN` | Шкала 4: красный -> зеленый | уровень `0..22` |
|
||||
|
||||
***Примеры:***
|
||||
- `8530` - очистить все direct-шкалы
|
||||
- `853105` - установить уровень `5` для первой шкалы
|
||||
- `853222` - полностью зажечь вторую шкалу
|
||||
- `853300` - погасить третью шкалу
|
||||
- `853422` - полностью зажечь четвертую шкалу
|
||||
|
||||
###### Тесты морского боя VR `8525TVVV`
|
||||
|
||||
При запуске теста обычные анимации `s_b` останавливаются, и панель переходит в тестовый режим.
|
||||
|
||||
| Команда | Назначение |
|
||||
|---|---|
|
||||
| `85250` | Стоп теста, очистить тестовый режим |
|
||||
| `85251` | Общий тест подсветки VR: бегущая змейка, цвета меняются |
|
||||
| `85252NN` | Тест строки панели VR, `NN` - номер строки |
|
||||
| `85253NN` | Тест столбца панели VR, `NN` - номер столбца |
|
||||
| `85254NNN` | Тест адресного элемента `NNN` |
|
||||
|
||||
***Примеры:***
|
||||
- `85251` - змейка VR
|
||||
- `8525212` - строка `12` VR
|
||||
- `852533` - столбец `3` VR
|
||||
- `85254105` - адресный элемент `105`
|
||||
|
||||
###### Базовые эффекты `8510..8522`
|
||||
|
||||
| `XX` | Имя в коде | Визуальный смысл | Длительность по умолчанию |
|
||||
|---|---|---|---|
|
||||
| `10` | `hor wave` | Горизонтальная волна: синяя и красная волны идут навстречу | 10 сек |
|
||||
| `11` | `vert wave` | Вертикальная морская волна снизу вверх/вниз, ping-pong | 10 сек |
|
||||
| `12` | `diag wave` | Диагональная волна с темно-синим/оранжевым характером | 10 сек |
|
||||
| `13` | `plazma` | Плазма: смешение синий/красный/зеленый | 10 сек |
|
||||
| `14` | `night` | Ночной градиент: голубой, фиолетовый, розовый | 10 сек |
|
||||
| `15` | `rainbow` | Радуга, полный HSV-спектр | 10 сек |
|
||||
| `16` | `fire-ice` | Огонь-лед, красный к голубому | 10 сек |
|
||||
| `17` | `wave` | Вода, диагональная темно-синяя/голубая волна | 10 сек |
|
||||
| `18` | `stars` | Звезды, розово-зеленая диагональная динамика | 10 сек |
|
||||
| `19` | `scaner` | Зеленый сканер с затуханием | 10 сек |
|
||||
| `20` | `flame` | Поток / 2D RGB-градиент | 10 сек |
|
||||
| `21` | `shtorm` | Быстрая радужная буря | 10 сек |
|
||||
| `22` | `ice` | Лед, холодный вариант красный/голубой | 10 сек |
|
||||
|
||||
###### Спецэффекты `8540..8549`
|
||||
|
||||
Спецэффекты предназначены для событий игры. Они имеют приоритет над базовой анимацией, очищают состояние панели перед показом и после завершения возвращают систему к предыдущему базовому состоянию или в ожидание.
|
||||
|
||||
| `XX` | Имя в коде | Назначение | Длительность по умолчанию |
|
||||
|---|---|---|---|
|
||||
| `40` | `START` | Старт: волны темно-синий -> бирюзовый снизу вверх | 3 сек |
|
||||
| `41` | `FINISH` | Финиш / завершение | 3 сек |
|
||||
| `42` | `ONE_SHOT` | Попадание / торпеда | 2 сек |
|
||||
| `43` | `SHOT` | Выстрел / boom: красно-оранжево-желтые полосы от центра | 1 сек |
|
||||
| `44` | `MISS` | Промах: зелено-голубая волна снизу вверх | 1 сек |
|
||||
| `45` | `CHARGE` | Зарядка: сине-красный фон и индикатор заряда | 2 сек |
|
||||
| `46` | `SONAR` | Сонар: расширяющиеся концентрические круги | 3 сек |
|
||||
| `47` | `RED WAVE` | Красная волна сверху вниз | 3 сек |
|
||||
| `48` | `ALARM` | Тревога: мигание красным | 3 сек |
|
||||
| `49` | `PULSE` | Оранжевая пульсация | 2 сек |
|
||||
|
||||
###### Тестовые заливки `8580..8582`
|
||||
|
||||
Эти коды идут через тот же механизм спецэффектов:
|
||||
|
||||
| `XX` | Назначение | Длительность по умолчанию |
|
||||
|---|---|---|
|
||||
| `80` | Залить всю виртуальную панель красным | 3 сек |
|
||||
| `81` | Залить всю виртуальную панель зеленым | 3 сек |
|
||||
| `82` | Залить всю виртуальную панель синим | 3 сек |
|
||||
|
||||
###### Диагностика `85`
|
||||
|
||||
В debug-режиме возможны сообщения:
|
||||
|
||||
| Сообщение | Значение |
|
||||
|---|---|
|
||||
| `85 - rendering ON` | Рендер `s_b` запущен |
|
||||
| `85 - rendering OFF` | Рендер остановлен командой `85` |
|
||||
| `[S_B_] autoCarousel ON` | Автокарусель включена |
|
||||
| `[S_B_] autoCarousel OFF` | Автокарусель выключена, экран очищен |
|
||||
| `[S_B_] effect: 85XX (...)` | Запущен базовый эффект |
|
||||
| `[S_B_] gauge: 85XX, level=N` | Обновлена direct-шкала `30..34` |
|
||||
| `[S_B_] spec: XX (...)` | Запущен спецэффект |
|
||||
| `[S_B_] effect done, waiting...` | Эффект завершен, экран очищен, режим ожидания |
|
||||
|
||||
Ограничения текущего кода:
|
||||
- параметры после `85` должны быть цифрами, но строгой проверки каждого символа сейчас нет;
|
||||
- для спецэффектов в текущем коде принимается любой `XX >= 40`, но безопасно описаны только `40..49` и `80..82`;
|
||||
- полный останов анимаций выполняется пустой командой `85`.
|
||||
|
||||
##### Отдельный раздел для Данро
|
||||
|
||||
`85XXYY`:
|
||||
`86XX[SSS]`:
|
||||
- XX – команда;
|
||||
- YY – время в секундах.
|
||||
- SSS – время в секундах.
|
||||
|
||||
***Пример:*** `854505` – включить спецэффект ЗАРЯДКА на 5 секунд
|
||||
***Пример:*** `864906` – включить эффект "Падающие ряды" на 6 секунд
|
||||
|
||||
`85` – без параметра отключает процесс рендеринга эффектов (чтобы освободить оперативную память).
|
||||
`86` – без параметра отключает анимации Данро.
|
||||
|
||||
Команды `86XX[SSS]` управляют только панелью Данро и не меняют direct-объекты других аппаратов.
|
||||
|
||||
###### Тесты панели Данро `8625TVVV`
|
||||
|
||||
При запуске теста обычные анимации Данро останавливаются, и панель переходит в тестовый режим.
|
||||
|
||||
| Команда | Назначение |
|
||||
| ---------- | ---------------------------------------------------------- |
|
||||
| `86250` | Стоп теста, очистить тестовый режим |
|
||||
| `86251` | Общий тест подсветки Данро: бегущая змейка, цвета меняются |
|
||||
| `86252NN` | Тест строки панели Данро, `NN` - номер строки |
|
||||
| `86253NN` | Тест столбца панели Данро, `NN` - номер столбца |
|
||||
| `86254NNN` | Тест адресного элемента `NNN` |
|
||||
|
||||
***Примеры:***
|
||||
- `86251` - змейка Данро
|
||||
- `8625212` - строка `12` Данро
|
||||
- `862533` - столбец `3` Данро
|
||||
- `86254105` - адресный элемент `105`
|
||||
|
||||
###### Список эффектов
|
||||
|
||||
| Команда (`XX`) | Название эффекта |
|
||||
| :------------: | :----------------------: |
|
||||
| 00 | Autoplay OFF, очистить экран |
|
||||
| 01 | Autoplay ON |
|
||||
| 25 | Тесты подсветки панели |
|
||||
| 40 | Горизонтальная волна |
|
||||
| 41 | Вертикальная волна |
|
||||
| 42 | Диагональная волна |
|
||||
@ -183,51 +389,86 @@ by: Паша Николаевич
|
||||
| 51 | Морская волна |
|
||||
| 52 | Диагональная волна 3 |
|
||||
|
||||
##### Отдельный раздел для RZ
|
||||
|
||||
`87XX[SSS]` - резервная виртуальная панель. Формат и эффекты совпадают с `86`.
|
||||
|
||||
Команды `87XX[SSS]` управляют только резервной панелью RZ и не меняют direct-объекты других аппаратов.
|
||||
|
||||
###### Тесты панели RZ `8725TVVV`
|
||||
|
||||
При запуске теста обычные анимации RZ останавливаются, и панель переходит в тестовый режим.
|
||||
|
||||
| Команда | Назначение |
|
||||
|---|---|
|
||||
| `87250` | Стоп теста, очистить тестовый режим |
|
||||
| `87251` | Общий тест подсветки RZ: бегущая змейка, цвета меняются |
|
||||
| `87252NN` | Тест строки панели RZ, `NN` - номер строки |
|
||||
| `87253NN` | Тест столбца панели RZ, `NN` - номер столбца |
|
||||
| `87254NNN` | Тест адресного элемента `NNN` |
|
||||
|
||||
***Примеры:***
|
||||
- `8701` - включить автоперебор резервной панели
|
||||
- `8743` - rainbow с длительностью по умолчанию
|
||||
- `872533` - тест столбца `3`
|
||||
- `87254105` - адресный элемент `105`
|
||||
- `87` - остановить анимации
|
||||
|
||||
## Список команд
|
||||
|
||||
| Команда | Назначение, примеры, ответы |
|
||||
| ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| 00 | Перезагрузить контроллер (RESET) |
|
||||
| 01 | Отладочная. включает-выключает подробные логи. В релизе будет отключена |
|
||||
| 02 | Подготовиться к приему файла. освободить место, отформатировать встроенную файловую, проверить хватит ли места. <br>_**Например**_, `02356987` - заявка на файл обновления размером 356987 байт.<br>Выполняется около 15 секунд, после чего весь прием данных в порту заносится в файл "update.bin".<br>Ответ при приеме файла - каждый блок (4096) - размер принятого.<br>По окончании - переход снова в режим команд (подробнее – [Обновление](#Обновление)). |
|
||||
| 03 | Показать содержимое SPIFFS |
|
||||
| 04 | Запустить ОТА обновление с ранее записанным файлом SPIFFS: `/update.bin` |
|
||||
| 05 | Показать версию прошивки (указана в дефолтах) |
|
||||
| 06 | Показать MAC-адрес (без двоеточий, как в оригинале), уникальный, можно считать серийным номером |
|
||||
| 07 | Безопасность (запрос авторизации от компа. На этот запрос создается рандомный запрос навстречу. См. [[#Алгоритм авторизации]]) |
|
||||
| 08 | Безопасность (прием ответа от компьютера на запрос `07`. См. [[#Алгоритм авторизации]]) |
|
||||
| 09 | Сброс EEPROM (параметром - MAC без двоеточий, иначе не сбросится) |
|
||||
| 10 | Подтверждение принятия сигнала COIN, иначе этот сигнал будет посылаться снова с периодичностью `200 мс` (сколько приняли койнов, столько и подтверждений быть должно) |
|
||||
| 20X | Установить состояние выходов - всего выходов 8, давать их двоичное состояние.<br>_**Например**_, `203` - вывести 1 и 2 выходы по единичке, остальные - нолики. Соответственно, выход на разъеме будет "прижат" к земле. |
|
||||
| 21XY | Установить состояние выхода номер Х в -> Y \[0,1,2(инверсия)\].<br>_**Примеры:**_<br>`2131` - Включить 3 по индексу выход<br>`2170` - Выключить 7 по индексу выход |
|
||||
| 30X | Хоппер 1.<br>`301` - Включить мотор хоппера<br>`300` - Выключить мотор хоппера<br>`309` - Выдать приз (в авторежиме[^1]) |
|
||||
| 40X | Хоппер 2.<br>Аналогично |
|
||||
| 8XY | Выбор программы адресных диодов Y по каналу X (См. [[#Программы адресных диодов]]) |
|
||||
| 85XXYY | См. [[#Специфичные программы]] |
|
||||
| 85 | Без параметра отключает процесс рендеринга эффектов (чтобы освободить оперативную память) |
|
||||
| 89\[X\] | Переключить цветовое чередование.<br>***Примеры:***<br>- `89` или `890` – RGB<br>- `891` – RBG<br>- `892` – BRG<br>- `893` – BGR<br>- `894` - GRB<br>- `895` - GBR |
|
||||
| 90 | Очистить очередь команд |
|
||||
| 91 | Запрос состояния цифровых входов, их всего 24(+2 входа хоппера), ответ в двоичном коде.<br>Для уменьшения объема передаваемой информации, преобразуется в десятичное число<br>_**Примеры:**_<br>`INPUT67108863` (`11111111111111111111111111`) - все кнопки не нажаты<br>`INPUT67108861` (`11111111111111111111111101`) - нажата вторая кнопка |
|
||||
| 91X | _Дополнительно_: задать время антидребезга платы (`10..100`; по умолчанию установлено на 50 мс)<br>_**Например**_, 9110 - Установить антидребезг на 10 мс |
|
||||
| 92 | Запрос значения аналоговых входов **(отключает автовывод)** - ответ в формате `ADC0,0,0,0`.<br>Всего 4 аналоговых входа |
|
||||
| 92X | Периодический автовывод значений аналоговых входов.<br>_**Например**_, `92100` - каждые 100 милисекунд выдавать значения ADC (`50..5000`) |
|
||||
| 93 | Запрос `global_summa` (число коинов, нестираемо) |
|
||||
| 96 | Cохранение в памяти платы пользовательского значения.<br>***Например,*** «роли» контроллера (левый-правый в морском бое, или шкаф…)<br>***Пример команды:*** `96right` |
|
||||
| 97 | Вывод пользовательского значения<br>***Формат вывода:*** `ROLE : <значение>` (до 20 символов) |
|
||||
| 98 | Запрос загруженности ядер, оперативки, свободного места в памяти |
|
||||
| 99 | Запрос статуса |
|
||||
| Команда | Назначение, примеры, ответы |
|
||||
| ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| 00 | Перезагрузить контроллер (RESET) |
|
||||
| 01 | Отладочная. включает-выключает подробные логи. В релизе будет отключена |
|
||||
| 02 | Подготовиться к приему файла обновления.<br>_**Например**_, `02356987` - заявка на файл размером 356987 байт.<br>После подготовки все данные из порта записываются в файл обновления.<br>Ответ при приеме файла - размер принятого блока.<br>По окончании - переход снова в режим команд (подробнее – [Обновление](#Обновление)). |
|
||||
| 03 | Показать список файлов обновления и служебных файлов |
|
||||
| 04 | Запустить обновление с ранее переданным файлом |
|
||||
| 05 | Показать версию прошивки (указана в дефолтах) |
|
||||
| 06 | Показать MAC-адрес (без двоеточий, как в оригинале), уникальный, можно считать серийным номером |
|
||||
| 07 | Безопасность (запрос авторизации от компа. На этот запрос создается рандомный запрос навстречу. См. [[#Алгоритм авторизации]]) |
|
||||
| 08 | Безопасность (прием ответа от компьютера на запрос `07`. См. [[#Алгоритм авторизации]]) |
|
||||
| 09 | Сброс настроек контроллера. Параметр - MAC без двоеточий, иначе команда не выполнится. Накопительные счетчики сохраняются |
|
||||
| 10 | Подтверждение принятия сигнала COIN, иначе этот сигнал будет посылаться снова с периодичностью `200 мс` (сколько приняли койнов, столько и подтверждений быть должно) |
|
||||
| 20X | Установить состояние 8 выходов двоичной маской.<br>_**Например**_, `203` - включить выходы 1 и 2, остальные выключить. |
|
||||
| 21XY | Установить состояние выхода номер Х в -> Y \[0,1,2(инверсия)\].<br>_**Примеры:**_<br>`2131` - Включить 3 по индексу выход<br>`2170` - Выключить 7 по индексу выход |
|
||||
| 25CCB | Команды призового шкафа.<br>`25` - состояние всех ячеек<br>`2501B` - выдать приз из ячейки `B` (`1..5`)<br>`2511B` - открыть ячейку без списания<br>`25991` / `25990` - включить / выключить автозапуск призовой стойки с перезагрузкой |
|
||||
| 30X | Хоппер 1.<br>`301` - Включить мотор хоппера<br>`300` - Выключить мотор хоппера<br>`309` - Выдать приз (в авторежиме[^1]) |
|
||||
| 40X | Хоппер 2.<br>Аналогично |
|
||||
| 50CCP | Дополнительные выходы.<br>`50` - показать режимы и уровни<br>`5001P` - настроить режимы дополнительных выходов<br>`5005P` - показать краткое состояние `ADD:..`<br>`5010P` - установить уровни выходов |
|
||||
| 80NNYY | Выбор программы адресных диодов `YY` по каналу `NN`: `00` - все каналы, `01..04` - канал 1..4 (См. [[#Программы адресных диодов]]) |
|
||||
| 81XXNN | Бродяги морей: direct-объекты (См. [[#Отдельный раздел для Бродяги морей]]).<br>`8130` - очистить<br>`8131NN` / `8132NN` - уровни объектов<br>`81311..81313` и `81321..81323` - эффекты объектов |
|
||||
| 82..84 | Свободно / зарезервировано под новую логику |
|
||||
| 85XXSSS | Виртуальная панель морского боя `s_b` (См. [[#Отдельный раздел для морского боя VR]]) |
|
||||
| 85 | Без параметра отключает анимации `s_b` |
|
||||
| 86XXSSS | Виртуальная панель Данро (См. [[#Отдельный раздел для Данро]]) |
|
||||
| 86 | Без параметра отключает анимации Данро |
|
||||
| 87XXSSS | Резервная виртуальная панель RZ (См. [[#Отдельный раздел для RZ]]) |
|
||||
| 87 | Без параметра отключает анимации RZ |
|
||||
| 89CKP | Настройки адресной подсветки. Старый короткий вариант `89[X]` переключает цветовое чередование.<br>***Примеры чередования:***<br>- `89` или `8900` – RGB<br>- `8901` – RBG<br>- `8902` – BRG<br>- `8903` – BGR<br>- `8904` - GRB<br>- `8905` - GBR |
|
||||
| 90 | Очистить очередь команд |
|
||||
| 91 | Запрос состояния цифровых входов, их всего 24(+2 входа хоппера), ответ в двоичном коде.<br>Для уменьшения объема передаваемой информации, преобразуется в десятичное число<br>_**Примеры:**_<br>`INPUT67108863` (`11111111111111111111111111`) - все кнопки не нажаты<br>`INPUT67108861` (`11111111111111111111111101`) - нажата вторая кнопка |
|
||||
| 91X | _Дополнительно_: задать время антидребезга входов (`10..100`; по умолчанию установлено на 50 мс)<br>_**Например**_, 9110 - установить антидребезг на 10 мс |
|
||||
| 92 | Запрос значения аналоговых входов **(отключает автовывод)** - ответ в формате `ADC0,0,0,0`.<br>Всего 4 аналоговых входа |
|
||||
| 92X | Периодический автовывод значений аналоговых входов.<br>_**Например**_, `92100` - каждые 100 миллисекунд выдавать значения ADC (`50..5000`) |
|
||||
| 93 | Запрос `global_summa` (число коинов, нестираемо). Ответ: `SUMMA:<value>` |
|
||||
| 96 | Cохранение в памяти платы пользовательского значения.<br>***Например,*** «роли» контроллера (левый-правый в морском бое, или шкаф…)<br>***Пример команды:*** `96right` |
|
||||
| 97 | Вывод пользовательского значения<br>***Формат вывода:*** `ROLE : <значение>` (до 20 символов) |
|
||||
| 98 | Запрос технического статуса контроллера: загрузка, память, свободное место |
|
||||
| 99 | Запрос статуса: имя контроллера, версия, `READY!` при `auth_ok=true` |
|
||||
|
||||
[^1]: Авторежим: если датчик в закрытом состоянии - на полсекунды включить мотор, ждать сработки датчика либо таймаута. Если таймаут - выдать сообщение "HOPPER1 ERROR" и наглухо повесить процесс хоппера до перезагрузки. Иначе - сообщение "HOPPER1 OK"
|
||||
|
||||
# Обновление
|
||||
|
||||
Файл обновления принимается командой `02<size>`. После полного приема контроллер отвечает текущим количеством записанных байт и итоговым `file size=<size> OK`, затем обновление запускается командой `04`.
|
||||
|
||||
Для обновления платы на новую версию прошивки надо:
|
||||
1. Волшебным образом заполучить флешку с новой прошивкой
|
||||
2. Проверить, что прошивка на плате точно старше при помощи команды `05`
|
||||
3. Выбрать файл новой прошивки с флешки
|
||||
4. Вполнить появившуюся команду
|
||||
5. После успешного выполнения команды, проверить состояние SPIFFS
|
||||
4. Выполнить появившуюся команду
|
||||
5. После успешного выполнения команды, проверить состояние файла обновления
|
||||
6. При наличии выделенного места, обновить прошивку при помощи команды `04`, дождаться завершения обновления
|
||||
7. Проверить, что прошивка на плату встала при помощи команды `05`
|
||||
8. ...
|
||||
9. PROFIT!
|
||||
9. PROFIT!
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user