19#ifndef MBED_CHAINING_BLOCK_DEVICE_H
20#define MBED_CHAINING_BLOCK_DEVICE_H
22#include "BlockDevice.h"
23#include "platform/mbed_assert.h"
65 template <
size_t Size>
67 : _bds(bds), _bd_count(sizeof(bds) / sizeof(bds[0]))
68 , _read_size(0), _program_size(0), _erase_size(0), _size(0), _init_ref_count(0)
185 uint32_t _init_ref_count;
186 bool _is_initialized;
194#ifndef MBED_NO_GLOBAL_USING_DIRECTIVE
A hardware device capable of writing and reading blocks.
Block device for chaining multiple block devices with the similar block sizes at sequential addresses...
virtual const char * get_type() const
Get the BlockDevice class type.
ChainingBlockDevice(BlockDevice **bds, size_t bd_count)
Lifetime of the memory block device.
virtual int erase(bd_addr_t addr, bd_size_t size)
Erase blocks on a block device.
virtual bd_size_t get_program_size() const
Get the size of a programmable block.
virtual ~ChainingBlockDevice()
Lifetime of the memory block device.
virtual int program(const void *buffer, bd_addr_t addr, bd_size_t size)
Program blocks to a block device.
virtual int sync()
Ensure data on storage is in sync with the driver.
virtual bd_size_t get_erase_size() const
Get the size of an eraseable block.
virtual int deinit()
Deinitialize a block device.
virtual bd_size_t get_read_size() const
Get the size of a readable block.
virtual bd_size_t size() const
Get the total size of the underlying device.
virtual int read(void *buffer, bd_addr_t addr, bd_size_t size)
Read blocks from a block device.
virtual int init()
Initialize a block device.
ChainingBlockDevice(BlockDevice *(&bds)[Size])
Lifetime of the memory block device.
virtual int get_erase_value() const
Get the value of storage when erased.
virtual bd_size_t get_erase_size(bd_addr_t addr) const
Get the size of an erasable block given address.
uint64_t bd_size_t
Type representing a quantity of 8-bit bytes.
uint64_t bd_addr_t
Type representing the address of a specific block.