docs: завести бэклог проекта
Первый пункт - другие показатели (GPU, память, диски) и листалка экранов кнопкой BOOT. Протокол к этому уже готов: незнакомые ключи прошивка игнорирует, так что агент может начать слать новые поля, не ломая уже прошитые платы. Там же записаны открытые хвосты: обрезание строки при 100 градусах и 100% загрузки, непроверенный перезагрузкой автозапуск, ручной цикл заливки и вес обзорного изображения. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
135278ba18
commit
1047ae1452
2 files changed
+91
-1
No files matched your search
+1
-1
@@ -335,7 +335,7 @@ $sp.Close()
|
|||||||
| `tools/i2c_scan/` | одноразовый скетч поиска пинов дисплея |
|
| `tools/i2c_scan/` | одноразовый скетч поиска пинов дисплея |
|
||||||
| `agent/cpu_temp_agent.ps1` | агент для ПК |
|
| `agent/cpu_temp_agent.ps1` | агент для ПК |
|
||||||
| `agent/README.md` | подробности по агенту |
|
| `agent/README.md` | подробности по агенту |
|
||||||
| `docs/` | спецификация и план реализации |
|
| `docs/` | спецификация, план реализации и [бэклог](docs/BACKLOG.md) |
|
||||||
|
|
||||||
Разделение простое: `link` ничего не знает об экране, `ui` не знает, откуда
|
Разделение простое: `link` ничего не знает об экране, `ui` не знает, откуда
|
||||||
взялись данные, а логика состояний живёт в скетче.
|
взялись данные, а логика состояний живёт в скетче.
|
||||||
|
|||||||
@@ -0,0 +1,90 @@
|
|||||||
|
# Бэклог
|
||||||
|
|
||||||
|
Идеи и незакрытые хвосты по проекту. Не план работ: сюда складывается то, что
|
||||||
|
решено не делать сейчас, чтобы не потерялось.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Другие показатели и листалка по кнопке BOOT
|
||||||
|
|
||||||
|
**Что хочется.** Показывать не только процессор: видеокарту, оперативную память,
|
||||||
|
диски. Переключать экраны кнопкой **BOOT** на плате — нажал, увидел следующий
|
||||||
|
набор данных.
|
||||||
|
|
||||||
|
**Почему это дёшево со стороны протокола.** Формат `T=67.0;L=34` изначально
|
||||||
|
сделан расширяемым: прошивка молча игнорирует незнакомые ключи. Агент может
|
||||||
|
начать слать `G=61;GL=88;M=73` (видеокарта, её загрузка, память), и уже прошитые
|
||||||
|
платы от этого не сломаются — просто не покажут новое.
|
||||||
|
|
||||||
|
**Что придётся решить при реализации:**
|
||||||
|
|
||||||
|
- **Кнопка BOOT сидит на GPIO9.** Это пин начальной загрузки: при сбросе он
|
||||||
|
должен быть в высоком уровне, иначе плата уйдёт в режим прошивки. Читать его
|
||||||
|
как `INPUT_PULLUP` в работе безопасно, но проверить фактически.
|
||||||
|
- **Дребезг контактов.** Нужна программная защита, иначе одно нажатие пролистает
|
||||||
|
три экрана.
|
||||||
|
- **Свой макет под каждый экран.** На 72×40 не получится «то же самое, только
|
||||||
|
другие цифры»: у памяти уместнее проценты и гигабайты, у диска — температура
|
||||||
|
без графика. Каждый экран проектировать отдельно.
|
||||||
|
- **Отдельная история на каждый показатель.** Сейчас кольцевой буфер один и
|
||||||
|
хранит температуру CPU. На каждый график нужен свой буфер: 72 байта на штуку,
|
||||||
|
памяти достаточно.
|
||||||
|
- **Что показывать, если данных нет.** Например, в системе нет дискретной
|
||||||
|
видеокарты — экран GPU надо либо пропускать при листании, либо честно писать,
|
||||||
|
что источника нет.
|
||||||
|
- **Запоминать ли выбранный экран** между перезагрузками. Если да, понадобится
|
||||||
|
энергонезависимое хранилище, которого у прошивки сейчас нет вовсе.
|
||||||
|
- **Тревога при листании.** Сейчас перегрев виден всегда, потому что экран один.
|
||||||
|
С листалкой можно стоять на экране памяти и не увидеть, что горит процессор.
|
||||||
|
Нужно решить: принудительно перекидывать на экран CPU, показывать тревогу
|
||||||
|
поверх любого экрана или мигать только светодиодом.
|
||||||
|
|
||||||
|
Последний пункт — самый важный: он затрагивает смысл устройства, а не удобство.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. Обрезание строки при 100° и 100%
|
||||||
|
|
||||||
|
При трёхзначной температуре и трёхзначной загрузке верхняя строка занимает 79
|
||||||
|
пикселей из 72: `100` — 49 px, зазор 2, `100%` — 28 px. Лишние 7 пикселей
|
||||||
|
уходят за правый край, и загрузка обрезается.
|
||||||
|
|
||||||
|
Дефект существовал с самого начала, проявляется только под предельной нагрузкой.
|
||||||
|
Для i5-11400H это не гипотеза: предельная температура около 100 °C.
|
||||||
|
|
||||||
|
Решение на выбор: при трёхзначной температуре переходить на более мелкий шрифт
|
||||||
|
загрузки либо убирать знак процента. Оценка — около получаса вместе с проверкой.
|
||||||
|
|
||||||
|
Решено оставить как есть: в такой момент экран всё равно мигает тревогой.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. Автозапуск не проверен перезагрузкой
|
||||||
|
|
||||||
|
Задание Планировщика `CPU Temp Agent` зарегистрировано с триггером «при входе в
|
||||||
|
систему», запускается вручную и работает. Живой перезагрузкой триггер не
|
||||||
|
испытан.
|
||||||
|
|
||||||
|
Проверится само при следующей перезагрузке: экран должен ожить без участия
|
||||||
|
пользователя в течение примерно полуминуты.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. Скрипт заливки
|
||||||
|
|
||||||
|
Цикл «остановить агента → залить прошивку → запустить агента» делается тремя
|
||||||
|
командами вручную. Пока правок мало, это терпимо; если работа по экрану
|
||||||
|
продолжится, стоит свести в `flash.ps1`.
|
||||||
|
|
||||||
|
Причина, по которой шаг вообще нужен: плата прошивается через тот же COM-порт,
|
||||||
|
по которому идут данные, и занятый порт валит заливку с `PermissionError`.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. Вес обзорного изображения
|
||||||
|
|
||||||
|
`docs/promo.png` весит 2,1 МБ при исходниках примерно на 30 КБ. Сжатие до
|
||||||
|
300–500 КБ не ухудшило бы читаемость, но старый файл всё равно останется в
|
||||||
|
истории git, так что выигрыш только для будущих клонов.
|
||||||
|
|
||||||
|
Решено оставить как есть.
|
||||||
Reference in new issue
Block a user