SD File Browser
Небольшое переносимое read-only ядро для постраничного просмотра каталогов.
Оно не зависит от STM32 HAL, FatFs, Modbus или GUI. Платформа передаёт callback
list_page; ядро проверяет путь, предел страницы и очищает ответ перед вызовом.
Логический путь всегда начинается с /. Запрещены .., ., пустые части,
обратная косая черта, двоеточие, управляющие символы, путь от ОС и компоненты
длиннее 48 ASCII-байт. Максимум — три элемента на страницу и 95 байт пути.
FatFs-порт сканирует позднюю страницу пошагово: один вызов service выполняет не
более шестнадцати readdir. Поэтому любой uint16 offset доступен без длинного
блокирующего вызова main loop. Между страницами DIR закрыт. Если логгер или
backup получает работу во время сканирования, приложение отменяет viewer,
освобождает DIR и возвращает logger busy; writer всегда имеет приоритет.
Для переноса реализуйте SdFileBrowserListPageFn, обеспечьте read-only открытие
каталога, конечные тайм-ауты носителя и закройте cursor при извлечении карты.
Порт также предоставляет SdFileBrowserFatFs_ReadLogChunk: он разрешает только
legacy /TEMPLOG.MD и temperature_*.md внутри /niceOne/mounth, читает не
более 64 байт и закрывает FIL до возврата. Первый ответ публикует размер и FAT
date/time; каждый следующий запрос обязан повторить их. Замена, обрезание или
изменение файла возвращает SD_FILE_BROWSER_FILE_CHANGED. В API нет функций
записи, удаления, rename, выполнения Markdown или чтения служебных каталогов.
Shared source
Canonical source: templates/c/sd-file-browser. Used by home/climate; its old paths are compatibility includes. Board-specific ports remain in the application. Change this library, not the forwarding files.