From 37feaa0a549c1d3da21ba57dcc513e2edbb0e592 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Mon, 12 Jul 2021 13:26:02 +0200 Subject: [PATCH] sd card is now mounted as well --- bsp_q7s/core/CoreController.cpp | 7 +++++-- bsp_q7s/memory/SdCardManager.cpp | 13 +++++++++++-- bsp_q7s/memory/SdCardManager.h | 19 ++++++++++++------- 3 files changed, 28 insertions(+), 11 deletions(-) diff --git a/bsp_q7s/core/CoreController.cpp b/bsp_q7s/core/CoreController.cpp index ced75056..421a96d9 100644 --- a/bsp_q7s/core/CoreController.cpp +++ b/bsp_q7s/core/CoreController.cpp @@ -41,7 +41,10 @@ ReturnValue_t CoreController::initialize() { sif::info << "Switching on SD card " << printoutString << ".." << std::endl; result = SdCardManager::instance()->switchOnSdCard(preferredSdCard, true); - if(result == SdCardManager::ALREADY_ON) { + if(result == SdCardManager::ALREADY_MOUNTED) { + sif::info << "SD card " << printoutString << " is already on and mounted" << std::endl; + } + else if(result == SdCardManager::ALREADY_ON) { sif::info << "SD card " << printoutString << " is already on" << std::endl; } else if(result != HasReturnvaluesIF::RETURN_OK) { @@ -49,7 +52,7 @@ ReturnValue_t CoreController::initialize() { << std::endl; } else { - sif::info << "SD card " << printoutString << " was switched on" << std::endl; + sif::info << "SD card " << printoutString << " was switched on and mounted" << std::endl; } return HasReturnvaluesIF::RETURN_OK; } diff --git a/bsp_q7s/memory/SdCardManager.cpp b/bsp_q7s/memory/SdCardManager.cpp index 9c47f0de..232000a3 100644 --- a/bsp_q7s/memory/SdCardManager.cpp +++ b/bsp_q7s/memory/SdCardManager.cpp @@ -39,9 +39,18 @@ ReturnValue_t SdCardManager::switchOnSdCard(sd::SdCard sdCard, bool doMountSdCar return result; } if(sdCard == sd::SdCard::SLOT_0) { - if(active.first == sd::SdStatus::ON or active.first == sd::SdStatus::MOUNTED) { - return ALREADY_ON; + if(active.first == sd::SdStatus::MOUNTED) { + return ALREADY_MOUNTED; } + else if(active.first == sd::SdStatus::ON) { + if(not doMountSdCard) { + return ALREADY_ON; + } + else { + return mountSdCard(sdCard); + } + } + } else if(sdCard == sd::SdCard::SLOT_1) { if(active.second == sd::SdStatus::ON or active.second == sd::SdStatus::MOUNTED) { diff --git a/bsp_q7s/memory/SdCardManager.h b/bsp_q7s/memory/SdCardManager.h index 810536fe..b3a33d42 100644 --- a/bsp_q7s/memory/SdCardManager.h +++ b/bsp_q7s/memory/SdCardManager.h @@ -21,17 +21,22 @@ class SdCardManager { public: static constexpr uint8_t INTERFACE_ID = CLASS_ID::SD_CARD_MANAGER; - static constexpr ReturnValue_t ALREADY_ON = HasReturnvaluesIF::makeReturnCode(INTERFACE_ID, 0); - static constexpr ReturnValue_t ALREADY_OFF = HasReturnvaluesIF::makeReturnCode(INTERFACE_ID, 1); - static constexpr ReturnValue_t STATUS_FILE_NEXISTS = + static constexpr ReturnValue_t ALREADY_ON = + HasReturnvaluesIF::makeReturnCode(INTERFACE_ID, 0); + static constexpr ReturnValue_t ALREADY_MOUNTED = + HasReturnvaluesIF::makeReturnCode(INTERFACE_ID, 1); + static constexpr ReturnValue_t ALREADY_OFF = HasReturnvaluesIF::makeReturnCode(INTERFACE_ID, 2); + static constexpr ReturnValue_t STATUS_FILE_NEXISTS = + HasReturnvaluesIF::makeReturnCode(INTERFACE_ID, 10); static constexpr ReturnValue_t STATUS_FILE_FORMAT_INVALID = - HasReturnvaluesIF::makeReturnCode(INTERFACE_ID, 3); - static constexpr ReturnValue_t MOUNT_ERROR = HasReturnvaluesIF::makeReturnCode(INTERFACE_ID, 4); + HasReturnvaluesIF::makeReturnCode(INTERFACE_ID, 11); + static constexpr ReturnValue_t MOUNT_ERROR = + HasReturnvaluesIF::makeReturnCode(INTERFACE_ID, 12); static constexpr ReturnValue_t UNMOUNT_ERROR = - HasReturnvaluesIF::makeReturnCode(INTERFACE_ID, 5); + HasReturnvaluesIF::makeReturnCode(INTERFACE_ID, 13); static constexpr ReturnValue_t SYSTEM_CALL_ERROR = - HasReturnvaluesIF::makeReturnCode(INTERFACE_ID, 6); + HasReturnvaluesIF::makeReturnCode(INTERFACE_ID, 14); // C++17 does not support constexpr std::string yet static constexpr char SD_0_DEV_NAME[] = "/dev/mmcblk0p1";