ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
21 ноября
1457854 Топик полностью
klen (22.08.2024 12:12, просмотров: 426) ответил POV на )))))
и таки да - нам как эмбедерщиком нужно вот что еще! сегодня завтра попробую всунуть потоковые версии 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