diff --git a/CPU_temp/README.md b/CPU_temp/README.md index 9f4498c..429c82f 100644 --- a/CPU_temp/README.md +++ b/CPU_temp/README.md @@ -335,7 +335,7 @@ $sp.Close() | `tools/i2c_scan/` | одноразовый скетч поиска пинов дисплея | | `agent/cpu_temp_agent.ps1` | агент для ПК | | `agent/README.md` | подробности по агенту | -| `docs/` | спецификация и план реализации | +| `docs/` | спецификация, план реализации и [бэклог](docs/BACKLOG.md) | Разделение простое: `link` ничего не знает об экране, `ui` не знает, откуда взялись данные, а логика состояний живёт в скетче. diff --git a/CPU_temp/docs/BACKLOG.md b/CPU_temp/docs/BACKLOG.md new file mode 100644 index 0000000..4f2cff7 --- /dev/null +++ b/CPU_temp/docs/BACKLOG.md @@ -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, так что выигрыш только для будущих клонов. + +Решено оставить как есть.