Storage::Device Class Referenceabstract

Represents a storage device (e.g. flash memory) More...

#include <Device.h>

Inheritance diagram for Storage::Device:
Collaboration diagram for Storage::Device:

Public Types

enum class  Type : uint8_t { partitionType = uint8_t(Partition::Type::storage) , XX }
 Storage type. More...
 
using List = LinkedObjectListTemplate< Device >
 
using OwnedList = OwnedLinkedObjectListTemplate< Device >
 
- Public Types inherited from LinkedObjectTemplate< Device >
using Iterator = IteratorTemplate< Device, Device *, Device & >
 
using ConstIterator = IteratorTemplate< const Device, const Device *, const Device & >
 

Public Member Functions

 Device ()
 
 ~Device ()
 
bool operator== (const String &name) const
 
const PartitionTablepartitions () const
 Provide read-only access to partition table. More...
 
PartitionTableeditablePartitions ()
 Provide full access to partition table. More...
 
bool loadPartitions (uint32_t tableOffset)
 Load partition table entries @tableOffset Location of partition table to read. More...
 
bool loadPartitions (Device &source, uint32_t tableOffset)
 Load partition table entries from another table. More...
 
virtual String getName () const =0
 Obtain unique device name. More...
 
virtual uint32_t getId () const
 Obtain device ID. More...
 
virtual size_t getBlockSize () const =0
 Obtain smallest allocation unit for erase operations. More...
 
virtual storage_size_t getSize () const =0
 Obtain addressable size of this device. More...
 
virtual Type getType () const =0
 Obtain device type. More...
 
virtual bool read (storage_size_t address, void *dst, size_t size)=0
 Read data from the storage device. More...
 
virtual bool write (storage_size_t address, const void *src, size_t size)=0
 Write data to the storage device. More...
 
virtual bool erase_range (storage_size_t address, storage_size_t size)=0
 Erase a region of storage in preparation for writing. More...
 
virtual uint16_t getSectorSize () const
 Get sector size, the unit of allocation for block-access devices. More...
 
virtual storage_size_t getSectorCount () const
 Obtain total number of sectors on this device. More...
 
virtual bool sync ()
 Flush any pending writes to the physical media. More...
 
- Public Member Functions inherited from LinkedObjectTemplate< Device >
Device * getNext () const
 
bool insertAfter (Device *object)
 
Iterator begin () const
 
Iterator end () const
 
Iterator cbegin () const
 
Iterator cend () const
 
- Public Member Functions inherited from LinkedObject
virtual ~LinkedObject ()
 
virtual LinkedObjectnext () const
 
bool insertAfter (LinkedObject *object)
 
bool operator== (const LinkedObject &other) const
 
bool operator!= (const LinkedObject &other) const
 

Default sector size for block-based devices

static constexpr uint16_t defaultSectorSize {512}
 
PartitionTable mPartitions
 
size_t printTo (Print &p) const
 

Detailed Description

Represents a storage device (e.g. flash memory)

Member Typedef Documentation

◆ List

◆ OwnedList

Member Enumeration Documentation

◆ Type

enum Storage::Device::Type : uint8_t
strong

Storage type.

Enumerator
partitionType 
XX 

Constructor & Destructor Documentation

◆ Device()

Storage::Device::Device ( )
inline

◆ ~Device()

Storage::Device::~Device ( )

Member Function Documentation

◆ editablePartitions()

PartitionTable& Storage::Device::editablePartitions ( )
inline

Provide full access to partition table.

◆ erase_range()

virtual bool Storage::Device::erase_range ( storage_size_t  address,
storage_size_t  size 
)
pure virtual

Erase a region of storage in preparation for writing.

Parameters
addressWhere to start erasing
sizeSize of region to erase, in bytes
Return values
booltrue on success, false on error

Implemented in Storage::Disk::BlockDevice, Storage::SpiFlash, Storage::ProgMem, Storage::SysMem, Storage::StreamDevice, and Storage::FileDevice.

◆ getBlockSize()

virtual size_t Storage::Device::getBlockSize ( ) const
pure virtual

Obtain smallest allocation unit for erase operations.

Implemented in Storage::SD::Card, Storage::Disk::BlockDevice, Storage::SysMem, Storage::SpiFlash, Storage::ProgMem, and Storage::FileDevice.

◆ getId()

virtual uint32_t Storage::Device::getId ( ) const
inlinevirtual

Obtain device ID.

Return values
uint32_ttypically flash chip ID

Reimplemented in USB::MSC::LogicalUnit, Storage::SpiFlash, and Storage::SD::Card.

◆ getName()

virtual String Storage::Device::getName ( ) const
pure virtual

◆ getSectorCount()

virtual storage_size_t Storage::Device::getSectorCount ( ) const
inlinevirtual

Obtain total number of sectors on this device.

Reimplemented in Storage::Disk::BlockDevice.

◆ getSectorSize()

virtual uint16_t Storage::Device::getSectorSize ( ) const
inlinevirtual

Get sector size, the unit of allocation for block-access devices.

Override this method only if the device does not support standard 512-byte sector access. For example, 'Advanced-Format' drives use 4096-byte sectors.

◆ getSize()

virtual storage_size_t Storage::Device::getSize ( ) const
pure virtual

Obtain addressable size of this device.

Return values
storage_size_tMust be at least as large as the value declared in the hardware configuration

Implemented in Storage::Disk::BlockDevice, Storage::SysMem, Storage::SpiFlash, Storage::ProgMem, and Storage::FileDevice.

◆ getType()

virtual Type Storage::Device::getType ( ) const
pure virtual

◆ loadPartitions() [1/2]

bool Storage::Device::loadPartitions ( Device source,
uint32_t  tableOffset 
)

Load partition table entries from another table.

Parameters
sourceDevice to load entries from @tableOffset Location of partition table to read
Return values
booltrue on success, false on failure

◆ loadPartitions() [2/2]

bool Storage::Device::loadPartitions ( uint32_t  tableOffset)
inline

Load partition table entries @tableOffset Location of partition table to read.

Return values
booltrue on success, false on failure

◆ operator==()

bool Storage::Device::operator== ( const String name) const
inline

◆ partitions()

const PartitionTable& Storage::Device::partitions ( ) const
inline

Provide read-only access to partition table.

◆ printTo()

size_t Storage::Device::printTo ( Print p) const

◆ read()

virtual bool Storage::Device::read ( storage_size_t  address,
void *  dst,
size_t  size 
)
pure virtual

Read data from the storage device.

Parameters
addressWhere to start reading
dstBuffer to store data
sizeSize of data to be read, in bytes.
Return values
booltrue on success, false on error

Implemented in Storage::Disk::BlockDevice, Storage::SpiFlash, Storage::ProgMem, Storage::SysMem, Storage::StreamDevice, and Storage::FileDevice.

◆ sync()

virtual bool Storage::Device::sync ( )
inlinevirtual

Flush any pending writes to the physical media.

Return values
boolReturn false if sync operation failed.

Devices with intermediate buffering should implement this method.

Reimplemented in Storage::Disk::BlockDevice.

◆ write()

virtual bool Storage::Device::write ( storage_size_t  address,
const void *  src,
size_t  size 
)
pure virtual

Write data to the storage device.

Parameters
addressWhere to start writing
srcData to write
sizeSize of data to be written, in bytes.
Return values
booltrue on success, false on error

Implemented in Storage::Disk::BlockDevice, Storage::SpiFlash, Storage::ProgMem, Storage::SysMem, Storage::StreamDevice, and Storage::FileDevice.

Member Data Documentation

◆ defaultSectorSize

constexpr uint16_t Storage::Device::defaultSectorSize {512}
staticconstexpr

◆ mPartitions

PartitionTable Storage::Device::mPartitions
protected

The documentation for this class was generated from the following file: