- ASSERT(fd->fd.seek_pos + (kfile_off_t)size <= (kfile_off_t)fd->fd.size);
- size = MIN((uint32_t)size, fd->fd.size - fd->fd.seek_pos);
-
- LOG_INFO("Writing at pos[%u]\n", fd->fd.seek_pos);
- while (size)
- {
- page = fd->fd.seek_pos / SPM_PAGESIZE;
- page_addr = fd->fd.seek_pos % SPM_PAGESIZE;
-
- flash_avr_loadPage(fd, page);
-
- size_t wr_len = MIN(size, SPM_PAGESIZE - page_addr);
- memcpy(fd->page_buf + page_addr, buf, wr_len);
- fd->page_dirty = true;
-
- buf += wr_len;
- fd->fd.seek_pos += wr_len;
- size -= wr_len;
- total_write += wr_len;
- }
- LOG_INFO("written %u bytes\n", total_write);
- return total_write;
-}
-
-/**
- * Open flash file \a fd
- * \a name and \a mode are unused, cause flash memory is
- * threated like one file.
- */
-static void flash_avr_open(struct KFileFlashAvr *fd)