*/
static uint8_t page_buf[SPM_PAGESIZE];
*/
static uint8_t page_buf[SPM_PAGESIZE];
-/**
- * Flag for checking if current page is modified.
- */
-bool page_modified;
*/
static void flash_avr_flush(KFileFlashAvr *fd)
{
*/
static void flash_avr_flush(KFileFlashAvr *fd)
{
{
kprintf("Flushing page %d\n", fd->curr_page);
{
kprintf("Flushing page %d\n", fd->curr_page);
*/
ATOMIC(boot_rww_enable());
*/
ATOMIC(boot_rww_enable());
+ fd->page_modified = false;
size_t wr_len = MIN(size, SPM_PAGESIZE - page_addr);
memcpy(page_buf + page_addr, buf, wr_len);
size_t wr_len = MIN(size, SPM_PAGESIZE - page_addr);
memcpy(page_buf + page_addr, buf, wr_len);
+ fd->page_modified = true;
buf += wr_len;
fd->fd.seek_pos += wr_len;
buf += wr_len;
fd->fd.seek_pos += wr_len;
fd->fd.seek_pos = 0;
fd->fd.size = (uint16_t)(FLASHEND - CONFIG_FLASH_AVR_BOOTSIZE + 1);
fd->fd.seek_pos = 0;
fd->fd.size = (uint16_t)(FLASHEND - CONFIG_FLASH_AVR_BOOTSIZE + 1);
+ fd->page_modified = false;
kprintf("Flash file opened\n");
}
kprintf("Flash file opened\n");
}
*/
typedef struct KFileFlashAvr
{
*/
typedef struct KFileFlashAvr
{
- KFile fd; ///< File descriptor.
+ /**
+ * File descriptor.
+ */
+ KFile fd;
/**
* Current buffered page.
*/
avr_page_t curr_page;
/**
* Current buffered page.
*/
avr_page_t curr_page;
+ /**
+ * Flag for checking if current page is modified.
+ */
+ bool page_modified;