12 #ifndef INCLUDE_DISTORTOS_DEVICES_MEMORY_SDCARD_HPP_ 13 #define INCLUDE_DISTORTOS_DEVICES_MEMORY_SDCARD_HPP_ 26 class SdMmcCardLowLevel;
52 const uint32_t maxClockFrequency = 25000000) :
54 mutex_{Mutex::Type::recursive, Mutex::Protocol::priorityInheritance},
116 int erase(uint64_t address, uint64_t size)
override;
128 uint64_t
getSize()
const override;
145 void lock()
override;
182 int read(uint64_t address,
void* buffer,
size_t size)
override;
228 int write(uint64_t address,
const void* buffer,
size_t size)
override;
302 #endif // INCLUDE_DISTORTOS_DEVICES_MEMORY_SDCARD_HPP_ constexpr SdCard(SdMmcCardLowLevel &sdMmcCard, const bool _4BitBusMode=true, const uint32_t maxClockFrequency=25000000)
SdCard's constructor.
Definition: SdCard.hpp:51
Mutex mutex_
mutex used to serialize access to this object
Definition: SdCard.hpp:262
uint32_t maxClockFrequency_
max allowed clock frequency of SD card, Hz
Definition: SdCard.hpp:274
int read(uint64_t address, void *buffer, size_t size) override
Reads data from SD card.
Definition: SdCard.cpp:1491
void unlock() override
Unlocks the device which was previously locked by current thread.
Definition: SdCard.cpp:1552
uint64_t getSize() const override
Definition: SdCard.cpp:1442
int close() override
Closes SD card.
Definition: SdCard.cpp:1350
uint8_t openCount_
number of times this device was opened but not yet closed
Definition: SdCard.hpp:295
SynchronousSdMmcCardLowLevel is a synchronous wrapper for SdMmcCardLowLevel which implements SdMmcCar...
Definition: SynchronousSdMmcCardLowLevel.hpp:29
size_t blocksCount_
number of blocks available on SD card
Definition: SdCard.hpp:271
BlockDevice class header.
void deinitialize()
Deinitializes SD card.
Definition: SdCard.cpp:1624
uint16_t rca_
relative card address
Definition: SdCard.hpp:280
std::chrono::time_point< TickClock > time_point
basic time_point type of clock
Definition: TickClock.hpp:42
int write(uint64_t address, const void *buffer, size_t size) override
Writes data to SD card.
Definition: SdCard.cpp:1558
uint16_t readTimeoutMs_
timeout of read operation, milliseconds
Definition: SdCard.hpp:283
size_t getBlockSize() const override
Definition: SdCard.cpp:1437
Definition: SdCard.hpp:36
SynchronousSdMmcCardLowLevel sdCard_
synchronous wrapper for low-level implementation of SdMmcCardLowLevel interface
Definition: SdCard.hpp:265
Definition: SdMmcCardLowLevel.hpp:31
static constexpr size_t blockSize
size of block, bytes
Definition: SdCard.hpp:41
int erase(uint64_t address, uint64_t size) override
Erases blocks on a SD card.
Definition: SdCard.cpp:1368
uint16_t writeTimeoutMs_
timeout of write operation, milliseconds
Definition: SdCard.hpp:286
bool _4BitBusMode_
selects whether 1-bit (false) or 4-bit (true) bus mode will be used
Definition: SdCard.hpp:289
~SdCard() override
SdCard's destructor.
Definition: SdCard.cpp:1345
void lock() override
Locks the device for exclusive use by current thread.
Definition: SdCard.cpp:1447
Top-level namespace of distortos project.
Definition: buttons.hpp:33
Mutex is the basic synchronization primitive.
Definition: Mutex.hpp:30
uint32_t auSize_
size of AU, bytes
Definition: SdCard.hpp:268
uint16_t eraseTimeoutMs_
timeout of erase operation of single AU, milliseconds
Definition: SdCard.hpp:277
Definition: BlockDevice.hpp:30
int synchronize() override
Synchronizes state of SD card, ensuring all cached writes are finished.
Definition: SdCard.cpp:1543
int initialize()
Initializes SD card.
Definition: SdCard.cpp:1636
SynchronousSdMmcCardLowLevel class header.
bool blockAddressing_
selects whether card uses byte (false) or block (true) addressing
Definition: SdCard.hpp:292
int open() override
Opens SD card.
Definition: SdCard.cpp:1453
TickClock::time_point busyDeadline_
current deadline of waiting while card is busy
Definition: SdCard.hpp:259