Skip to content

Rev.A: replay orientation and static theme after post-resume serial errors - #5

Merged
MrSoichi merged 5 commits into
fix/usb-location-binding-resumefrom
fix/usb-resume-redraw-after-serial-errors
Nov 6, 2026
Merged

MrSoichi merged 5 commits into
fix/usb-location-binding-resumefrom
fix/usb-resume-redraw-after-serial-errors

Conversation

@MrSoichi

@MrSoichi MrSoichi commented Nov 6, 2026

Copy link
Copy Markdown

Реальный сбой (6 ноября 2026)

После ~6 часов гибернации Turing rev.A (физический USB(1)→COM16) показал живые CPU/GPU/RAM показатели, но экран перевернулся, а статический фон Cyberpunk исчез. В журнале 257 Too fast! Slow down! и SerialException, после которых COM16 был снова открыт, но повторной установки ориентации/статики не произошло. Configure → Save and run вернул всё. Tray icons вернул отдельный Explorer restart.

Причина, которую устраняем

LcdComm.WriteLine проглатывает SerialTimeoutException: потерянная команда не возвращается в очередь. При SerialException повторяет только текущую отправку, а не полную сцену. Наш прежний resume handler ставил orientation/static в очередь до окончательной стабилизации USB. Это существующее поведение upstream, не доказанный регресс CPU guard.

Что меняется

  • Счётчик потерянных serial write commands (timeout или exception) в драйвере.
  • Только для rev.A после Windows resume включается ограниченное наблюдение (90 сек) за ошибками и готовностью COM. Если появились ошибки: дождаться 2 сек без новых сбоев, открытого serial соединения и пустой очереди; затем повторно поставить в очередь ScreenOn, яркость, orientation, фон и статический текст.
  • При повторных сбоях повторить всю сцену, но не более 3 раз. Никакого аппаратного USB reset, переключения COM, дополнительных потоков или изменения темы.
  • Логировать попытки и случаи, когда порт так и не стабилизировался; не утверждать фактический успех LCD без подтверждения контроллера.
  • Тесты на clean resume, массовые serial timeouts, ожидание очереди, повторное восстановление, лимит, истечение окна, и счётчики ошибок при SerialTimeout/SerialException.

Ограничения

Не изменяем PawnIO, CPU telemetry, tray, настройки USB-привязки, конфигуратор. Физический экран необходимо проверить после сборки; автоматика с тайм-аутами безопаснее полной аппаратной перезагрузки, но UI-состояние на Rev.A нельзя подтвердить без обратного ACK.

Тестовые сборки только через частную Windows CI мастерскую, не сливать в upstream PR mathoudebine#1069.

@MrSoichi
MrSoichi merged commit 2610659 into fix/usb-location-binding-resume Nov 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant