Core Controller Remount SD Handling #253

Merged
muellerr merged 12 commits from mueller/core-controller-remount-sd-handling into develop 2022-05-25 10:27:10 +02:00
3 changed files with 13 additions and 10 deletions
Showing only changes of commit 1519b13b78 - Show all commits

View File

@ -141,6 +141,7 @@ ReturnValue_t CoreController::initializeAfterTaskCreation() {
ReturnValue_t result = HasReturnvaluesIF::RETURN_OK; ReturnValue_t result = HasReturnvaluesIF::RETURN_OK;
sdInfo.pref = sdcMan->getPreferredSdCard(); sdInfo.pref = sdcMan->getPreferredSdCard();
sdcMan->setActiveSdCard(sdInfo.pref); sdcMan->setActiveSdCard(sdInfo.pref);
currMntPrefix = sdcMan->getCurrentMountPrefix();
if (BLOCKING_SD_INIT) { if (BLOCKING_SD_INIT) {
ReturnValue_t result = initSdCardBlocking(); ReturnValue_t result = initSdCardBlocking();
if (result != HasReturnvaluesIF::RETURN_OK and result != SdCardManager::ALREADY_MOUNTED) { if (result != HasReturnvaluesIF::RETURN_OK and result != SdCardManager::ALREADY_MOUNTED) {
@ -1222,7 +1223,7 @@ void CoreController::performWatchdogControlOperation() {
} }
void CoreController::performMountedSdCardOperations() { void CoreController::performMountedSdCardOperations() {
auto mountedSdCardOp = [&](bool& mntSwitch, sd::SdCard sdCard, std::string mntPoint) { auto mountedSdCardOp = [&](bool &mntSwitch, sd::SdCard sdCard, std::string mntPoint) {
if (mntSwitch) { if (mntSwitch) {
bool sdCardMounted = sdcMan->isSdCardMounted(sdCard); bool sdCardMounted = sdcMan->isSdCardMounted(sdCard);
if (sdCardMounted and not performOneShotSdCardOpsSwitch) { if (sdCardMounted and not performOneShotSdCardOpsSwitch) {
@ -1239,7 +1240,7 @@ void CoreController::performMountedSdCardOperations() {
mntSwitch = false; mntSwitch = false;
} }
}; };
if(sdInfo.pref == sd::SdCard::SLOT_1) { if (sdInfo.pref == sd::SdCard::SLOT_1) {
mountedSdCardOp(sdInfo.mountSwitch.second, sd::SdCard::SLOT_1, SdCardManager::SD_1_MOUNT_POINT); mountedSdCardOp(sdInfo.mountSwitch.second, sd::SdCard::SLOT_1, SdCardManager::SD_1_MOUNT_POINT);
mountedSdCardOp(sdInfo.mountSwitch.first, sd::SdCard::SLOT_0, SdCardManager::SD_0_MOUNT_POINT); mountedSdCardOp(sdInfo.mountSwitch.first, sd::SdCard::SLOT_0, SdCardManager::SD_0_MOUNT_POINT);
} else { } else {

View File

@ -487,9 +487,9 @@ bool SdCardManager::isSdCardMounted(sd::SdCard sdCard) {
ReturnValue_t SdCardManager::isSdCardMountedReadOnly(sd::SdCard sdcard, bool& readOnly) { ReturnValue_t SdCardManager::isSdCardMountedReadOnly(sd::SdCard sdcard, bool& readOnly) {
std::ostringstream command; std::ostringstream command;
if (sdcard == sd::SdCard::SLOT_0) { if (sdcard == sd::SdCard::SLOT_0) {
command << "grep -q \"" << SD_0_DEV_NAME << " vfat ro, \" /proc/mounts"; command << "grep -q '" << SD_0_MOUNT_POINT << " vfat ro,' /proc/mounts";
} else { } else {
command << "grep -q \"" << SD_1_DEV_NAME << " vfat ro, \" /proc/mounts"; command << "grep -q '" << SD_1_MOUNT_POINT << " vfat ro,' /proc/mounts";
} }
ReturnValue_t result = cmdExecutor.load(command.str(), true, false); ReturnValue_t result = cmdExecutor.load(command.str(), true, false);
if (result != HasReturnvaluesIF::RETURN_OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
@ -497,6 +497,11 @@ ReturnValue_t SdCardManager::isSdCardMountedReadOnly(sd::SdCard sdcard, bool& re
} }
result = cmdExecutor.execute(); result = cmdExecutor.execute();
if (result != HasReturnvaluesIF::RETURN_OK) { if (result != HasReturnvaluesIF::RETURN_OK) {
int exitStatus = cmdExecutor.getLastError();
if (exitStatus == 1) {
readOnly = false;
return RETURN_OK;
}
return result; return result;
} }
auto& readVec = cmdExecutor.getReadVector(); auto& readVec = cmdExecutor.getReadVector();
@ -540,10 +545,6 @@ ReturnValue_t SdCardManager::performFsck(sd::SdCard sdcard, bool printOutput, in
return result; return result;
} }
void SdCardManager::setActiveSdCard(sd::SdCard sdCard) { void SdCardManager::setActiveSdCard(sd::SdCard sdCard) { sdInfo.active = sdCard; }
sdInfo.active = sdCard;
}
sd::SdCard SdCardManager::getActiveSdCard() const { sd::SdCard SdCardManager::getActiveSdCard() const { return sdInfo.active; }
return sdInfo.active;
}

View File

@ -13,6 +13,7 @@ class SdCardMountedIF {
virtual sd::SdCard getPreferredSdCard() const = 0; virtual sd::SdCard getPreferredSdCard() const = 0;
virtual void setActiveSdCard(sd::SdCard sdCard) = 0; virtual void setActiveSdCard(sd::SdCard sdCard) = 0;
virtual sd::SdCard getActiveSdCard() const = 0; virtual sd::SdCard getActiveSdCard() const = 0;
private: private:
}; };