и таки да - нам как эмбедерщиком нужно вот что еще! сегодня завтра
попробую всунуть потоковые версии read_stream & write_stream.
например примерно так же как в FatFS вызов forward - очень полезная идея. ну например.. если вы хотите всунуть в файл (заполнить его например нулями и размер его 10005000) байтов
file_write(..., buff, 10005000) ;// жоппа! буфер размером 10005000 в нашей эмбедерской галактике не встречпется.. :( писать по кускам - тривиально и медленно неинтересно и позорно.. а ведь если б он был бы - его еще и нулями мемкопить пришлось!
но зато можно будет так
size_t dev_zero_out_stream ( /* возвращает число записанных байтов из потока в буфер операции записи файла */
uint88_t *p, /* указатель на буфер в который file_write_stream(...) ждет байты из потока */
const size_t size /* >0: число запрашиваемых file_write_stream(...) батов для передачи из потока. 0: запрос на готовность потока к передаче */
)
{
size_t cnt = 0;
if (size == 0) /* запрос на готовность потока к передаче */
{
/* возвращаем состяние потока (0: занят, 1: готов к выдаче байтов) */
/* наш эмулятор устройства /dev/zero всегда гтов ккак пионЭр */
cnt = 1;
}
else
{ /* запрос на передачу */
do /* запись нулей в буффер file_write_stream(...) */
{
*p++ = 0 ;
cnt++;
} while (cnt < size );
}
return cnt;
}
....
file_write_stream(..., buff, 10005000, dev_zero_out_stream ) ;
....
dsf