31 lines
2.6 KiB
Markdown
31 lines
2.6 KiB
Markdown
# 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.
|