static size_t avr_flash_readDirect(struct KBlock *blk, block_idx_t idx, void *buf, size_t offset, size_t size)
{
- ASSERT(offset == 0);
- ASSERT(size == blk->blk_size);
-
- memcpy_P(buf, (const void *)(uint16_t)(idx * blk->blk_size), size);
+ memcpy_P(buf, (const void *)(uint16_t)(idx * blk->blk_size + offset), size);
return blk->blk_size;
}
}
-void flash_hw_init(Flash *fls)
+void flash_hw_init(Flash *fls, int flags)
{
common_init(fls);
fls->blk.priv.vt = &flash_avr_buffered_vt;
- fls->blk.priv.flags |= KB_BUFFERED | KB_PARTIAL_WRITE;
+ fls->blk.priv.flags |= KB_BUFFERED | KB_PARTIAL_WRITE | flags;
fls->blk.priv.buf = flash_buf;
}
-void flash_hw_initUnbuffered(Flash *fls)
+void flash_hw_initUnbuffered(Flash *fls, int flags)
{
common_init(fls);
fls->blk.priv.vt = &flash_avr_unbuffered_vt;
+ fls->blk.priv.flags |= flags;
}