roo_io
API Documentation for roo_io
Loading...
Searching...
No Matches
sdmmc.cpp
Go to the documentation of this file.
2
3#if (defined ESP32 && defined ARDUINO)
4
5#include "soc/soc_caps.h"
6
7#if SOC_SDMMC_HOST_SUPPORTED
8
9#if !defined(MLOG_roo_io_fs)
10#define MLOG_roo_io_fs 0
11#endif
12
13namespace roo_io {
14
15ArduinoSdMmcFs::ArduinoSdMmcFs()
18
19void ArduinoSdMmcFs::setPins(uint8_t pin_clk, uint8_t pin_cmd, uint8_t pin_d0) {
20 ::SD_MMC.setPins(pin_clk, pin_cmd, pin_d0);
21 mode_1bit_ = true;
22}
23
24void ArduinoSdMmcFs::setPins(uint8_t pin_clk, uint8_t pin_cmd, uint8_t pin_d0,
25 uint8_t pin_d1, uint8_t pin_d2, uint8_t pin_d3) {
26 ::SD_MMC.setPins(pin_clk, pin_cmd, pin_d0, pin_d1, pin_d2, pin_d3);
27 mode_1bit_ = false;
28}
29
30MountImpl::MountResult ArduinoSdMmcFs::mountImpl(
31 std::function<void()> unmount_fn) {
32 MLOG(roo_io_fs) << "Mounting SD card";
33#if defined(ROO_TESTING)
34 mount_base_path_ = FakeEsp32().fs_root();
35#else
36 mount_base_path_.clear();
37#endif
38 mount_base_path_.append(mountPoint());
39 bool result =
40 ::SD_MMC.begin(mount_base_path_.c_str(), mode_1bit_,
41 formatIfMountFailed(), frequency(), maxOpenFiles());
42 if (!result) {
43 return MountImpl::MountError(kGenericMountError);
44 }
45 return MountImpl::Mounted(std::unique_ptr<MountImpl>(
46 new PosixMountImpl(mount_base_path_.c_str(), readOnly(), unmount_fn)));
47}
48
49void ArduinoSdMmcFs::unmountImpl() {
50 MLOG(roo_io_fs) << "Unmounting SD card";
51 ::SD_MMC.end();
52 mount_base_path_.clear();
53}
54
55Filesystem::MediaPresence ArduinoSdMmcFs::checkMediaPresence() {
56 return ::SD_MMC.totalBytes() > 0 ? Filesystem::kMediaPresent
57 : Filesystem::kMediaAbsent;
58}
59
60ArduinoSdMmcFs CreateArduinoSdMmcFs() { return ArduinoSdMmcFs(); }
61
62ArduinoSdMmcFs SD_MMC = CreateArduinoSdMmcFs();
63
64} // namespace roo_io
65
66#endif
67#endif
Definition byte.h:6
roo::basic_string_view< CharT, Traits > basic_string_view
Definition string_view.h:8