more bugfixes

This commit is contained in:
2021-07-12 15:19:06 +02:00
parent bd505f35e2
commit 5fc8b650f9
4 changed files with 60 additions and 31 deletions

View File

@ -37,14 +37,16 @@ ReturnValue_t CoreController::sdCardInit() {
sif::info << "No SD card initialization will be performed" << std::endl;
return HasReturnvaluesIF::RETURN_OK;
#else
// Creator or update status file
ReturnValue_t result = SdCardManager::instance()->updateSdCardStateFile();
SdCardManager* sdcMan = SdCardManager::instance();
// Create update status file
ReturnValue_t result = sdcMan->updateSdCardStateFile();
if(result != HasReturnvaluesIF::RETURN_OK) {
sif::warning << "CoreController::initialize: Updating SD card state file failed"
<< std::endl;
}
SdCardManager* sdcMan = SdCardManager::instance();
auto sdStatus = std::pair<sd::SdStatus, sd::SdStatus>(sd::SdStatus::OFF, sd::SdStatus::OFF);
result = sdcMan->getSdCardActiveStatus(sdStatus);
if(result != HasReturnvaluesIF::RETURN_OK) {
@ -113,15 +115,17 @@ ReturnValue_t CoreController::sdCardInit() {
if(result != HasReturnvaluesIF::RETURN_OK) {
sif::warning << "Switching off SD card " << otherString << " failed" << std::endl;
}
// Update status file
sdcMan->updateSdCardStateFile();
return HasReturnvaluesIF::RETURN_OK;
#elif Q7S_SD_CARD_CONFIG == Q7S_SD_HOT_REDUNDANT
sif::info << "Hot redundant SD card configuration" << std::endl;
// Use a lambda to avoid duplicate code
auto setUpSdCard = [sdcMan](sd::SdCard sdCard, sd::SdStatus status, std::string sdString) {
auto setUpSdCard = [&](sd::SdCard sdCard, sd::SdStatus status, std::string sdString) {
if(status == sd::SdStatus::OFF) {
sif::info << "Switching on and mounting SD card " << sdString << std::endl;
sdcMan->switchOnSdCard(sdCard, true);
sdcMan->switchOnSdCard(sdCard, true, &sdStatus);
}
else if(status == sd::SdStatus::ON) {
sif::info << "Mounting SD card " << sdString << std::endl;
@ -134,6 +138,8 @@ ReturnValue_t CoreController::sdCardInit() {
setUpSdCard(sd::SdCard::SLOT_0, sdStatus.first, "0");
setUpSdCard(sd::SdCard::SLOT_1, sdStatus.second, "1");
// Update status file
sdcMan->updateSdCardStateFile();
return HasReturnvaluesIF::RETURN_OK;
#endif