12 #ifndef INCLUDE_DISTORTOS_DEVICES_MEMORY_SDCARDSPIBASED_HPP_ 13 #define INCLUDE_DISTORTOS_DEVICES_MEMORY_SDCARDSPIBASED_HPP_ 52 const uint32_t clockFrequency = 25000000) :
53 mutex_{Mutex::Type::recursive, Mutex::Protocol::priorityInheritance},
109 int erase(uint64_t address, uint64_t size)
override;
121 uint64_t
getSize()
const override;
138 void lock()
override;
175 int read(uint64_t address,
void* buffer,
size_t size)
override;
222 int write(uint64_t address,
const void* buffer,
size_t size)
override;
290 #endif // INCLUDE_DISTORTOS_DEVICES_MEMORY_SDCARDSPIBASED_HPP_ void unlock() override
Unlocks the device which was previously locked by current thread.
Definition: SdCardSpiBased.cpp:1357
size_t getBlockSize() const override
Definition: SdCardSpiBased.cpp:1242
uint32_t auSize_
size of AU, bytes
Definition: SdCardSpiBased.hpp:259
BlockDevice class header.
static constexpr size_t blockSize
size of block, bytes
Definition: SdCardSpiBased.hpp:41
int erase(uint64_t address, uint64_t size) override
Erases blocks on a SD card connected via SPI.
Definition: SdCardSpiBased.cpp:1178
Definition: OutputPin.hpp:29
bool blockAddressing_
selects whether card uses byte (false) or block (true) addressing
Definition: SdCardSpiBased.hpp:280
void deinitialize()
Deinitializes SD card connected via SPI.
Definition: SdCardSpiBased.cpp:1439
~SdCardSpiBased() override
SdCardSpiBased's destructor.
Definition: SdCardSpiBased.cpp:1157
OutputPin & slaveSelectPin_
reference to slave select pin of this SD card
Definition: SdCardSpiBased.hpp:265
int initialize()
Initializes SD card connected via SPI.
Definition: SdCardSpiBased.cpp:1449
int open() override
Opens SD card connected via SPI.
Definition: SdCardSpiBased.cpp:1258
int read(uint64_t address, void *buffer, size_t size) override
Reads data from SD card connected via SPI.
Definition: SdCardSpiBased.cpp:1296
size_t blocksCount_
number of blocks available on SD card
Definition: SdCardSpiBased.hpp:256
uint16_t eraseTimeoutMs_
timeout of erase operation of single AU, milliseconds
Definition: SdCardSpiBased.hpp:271
constexpr SdCardSpiBased(SpiMaster &spiMaster, OutputPin &slaveSelectPin, const uint32_t clockFrequency=25000000)
SdCardSpiBased's constructor.
Definition: SdCardSpiBased.hpp:51
uint16_t readTimeoutMs_
timeout of read operation, milliseconds
Definition: SdCardSpiBased.hpp:274
Definition: SdCardSpiBased.hpp:36
Top-level namespace of distortos project.
Definition: buttons.hpp:33
Mutex is the basic synchronization primitive.
Definition: Mutex.hpp:30
uint64_t getSize() const override
Definition: SdCardSpiBased.cpp:1247
Mutex mutex_
mutex used to serialize access to this object
Definition: SdCardSpiBased.hpp:253
Definition: BlockDevice.hpp:30
int synchronize() override
Synchronizes state of SD card connected via SPI, ensuring all cached writes are finished.
Definition: SdCardSpiBased.cpp:1350
uint8_t openCount_
number of times this device was opened but not yet closed
Definition: SdCardSpiBased.hpp:283
uint16_t writeTimeoutMs_
timeout of write operation, milliseconds
Definition: SdCardSpiBased.hpp:277
Definition: SpiMaster.hpp:37
SpiMaster & spiMaster_
reference to SPI master to which this SD card is connected
Definition: SdCardSpiBased.hpp:268
void lock() override
Locks the device for exclusive use by current thread.
Definition: SdCardSpiBased.cpp:1252
uint32_t clockFrequency_
desired clock frequency of SD card, Hz
Definition: SdCardSpiBased.hpp:262
int close() override
Closes SD card connected via SPI.
Definition: SdCardSpiBased.cpp:1162
int write(uint64_t address, const void *buffer, size_t size) override
Writes data to SD card connected via SPI.
Definition: SdCardSpiBased.cpp:1363