- if (page != curr_page)
- {
- flash_avr_flush();
- // Load page
- memcpy_P(page_buf, (const char *)(page * SPM_PAGESIZE), SPM_PAGESIZE);
- curr_page = page;
- kprintf("Loaded page %d\n", curr_page);
- }
-}
-
-/**
- * Write program memory.
- * Write \a size bytes from buffer \a _buf to file \a fd
- * \note Write operations are buffered.
- */
-static size_t flash_avr_write(struct KFile *fd, const void *_buf, size_t size)
-{
- KFILE_ASSERT_GENERIC(fd);
- const uint8_t *buf =(const uint8_t *)_buf;
-
- avr_page_t page;
- avr_page_addr_t page_addr;
- size_t total_write = 0;
-
- ASSERT(fd->seek_pos + size <= fd->size);
- size = MIN((uint32_t)size, fd->size - fd->seek_pos);
+ .readDirect = avr_flash_readDirect,
+ .writeDirect = avr_flash_writeDirect,