this should avoid lock issues al together
This commit is contained in:
@ -42,6 +42,11 @@ CoreController::CoreController(object_id_t objectId)
|
||||
if (not BLOCKING_SD_INIT) {
|
||||
sdcMan->setBlocking(false);
|
||||
}
|
||||
Stopwatch watch;
|
||||
sdcMan->updateSdCardStateFile(true);
|
||||
sdcMan->updateSdStatePair();
|
||||
SdCardManager::SdStatePair sdStates;
|
||||
sdcMan->getSdCardsStatus(sdStates);
|
||||
auto sdCard = sdcMan->getPreferredSdCard();
|
||||
if (not sdCard.has_value()) {
|
||||
sif::error << "CoreController::initializeAfterTaskCreation: "
|
||||
@ -50,7 +55,11 @@ CoreController::CoreController(object_id_t objectId)
|
||||
sdCard = sd::SdCard::SLOT_0;
|
||||
}
|
||||
sdInfo.active = sdCard.value();
|
||||
sdcMan->setActiveSdCard(sdInfo.active);
|
||||
if (sdStates.first == sd::SdState::MOUNTED) {
|
||||
sdcMan->setActiveSdCard(sd::SdCard::SLOT_0);
|
||||
} else if (sdStates.second == sd::SdState::MOUNTED) {
|
||||
sdcMan->setActiveSdCard(sd::SdCard::SLOT_1);
|
||||
}
|
||||
currMntPrefix = sdcMan->getCurrentMountPrefix();
|
||||
|
||||
getCurrentBootCopy(CURRENT_CHIP, CURRENT_COPY);
|
||||
@ -314,7 +323,7 @@ ReturnValue_t CoreController::checkModeCommand(Mode_t mode, Submode_t submode,
|
||||
|
||||
ReturnValue_t CoreController::initSdCardBlocking() {
|
||||
// Create update status file
|
||||
ReturnValue_t result = sdcMan->updateSdCardStateFile();
|
||||
ReturnValue_t result = sdcMan->updateSdCardStateFile(true);
|
||||
if (result != returnvalue::OK) {
|
||||
sif::warning << "CoreController::initialize: Updating SD card state file failed" << std::endl;
|
||||
}
|
||||
@ -334,7 +343,7 @@ ReturnValue_t CoreController::initSdCardBlocking() {
|
||||
<< static_cast<int>(sdInfo.active) << std::endl;
|
||||
result = sdColdRedundantBlockingInit();
|
||||
// Update status file
|
||||
sdcMan->updateSdCardStateFile();
|
||||
sdcMan->updateSdCardStateFile(true);
|
||||
return result;
|
||||
}
|
||||
if (sdInfo.cfgMode == SdCfgMode::HOT_REDUNDANT) {
|
||||
@ -342,7 +351,7 @@ ReturnValue_t CoreController::initSdCardBlocking() {
|
||||
sdCardSetup(sd::SdCard::SLOT_0, sd::SdState::MOUNTED, "0", false);
|
||||
sdCardSetup(sd::SdCard::SLOT_1, sd::SdState::MOUNTED, "1", false);
|
||||
// Update status file
|
||||
sdcMan->updateSdCardStateFile();
|
||||
sdcMan->updateSdCardStateFile(true);
|
||||
}
|
||||
return returnvalue::OK;
|
||||
}
|
||||
@ -395,7 +404,7 @@ ReturnValue_t CoreController::sdStateMachine() {
|
||||
if (sdFsmState == SdStates::GET_INFO) {
|
||||
if (not sdInfo.commandExecuted) {
|
||||
// Create updated status file
|
||||
result = sdcMan->updateSdCardStateFile();
|
||||
result = sdcMan->updateSdCardStateFile(false);
|
||||
if (result != returnvalue::OK) {
|
||||
sif::warning << "CoreController::sdStateMachine: Updating SD card state file failed"
|
||||
<< std::endl;
|
||||
@ -543,12 +552,8 @@ ReturnValue_t CoreController::sdStateMachine() {
|
||||
if (sdFsmState == SdStates::SKIP_CYCLE_BEFORE_INFO_UPDATE) {
|
||||
sdFsmState = SdStates::UPDATE_INFO;
|
||||
} else if (sdFsmState == SdStates::UPDATE_INFO) {
|
||||
// It is assumed that all tasks are running by the point this section is reached.
|
||||
// Therefore, perform this operation in blocking mode because it does not take long
|
||||
// and the ready state of the SD card is available sooner
|
||||
sdcMan->setBlocking(true);
|
||||
// Update status file
|
||||
result = sdcMan->updateSdCardStateFile();
|
||||
result = sdcMan->updateSdCardStateFile(true);
|
||||
if (result != returnvalue::OK) {
|
||||
sif::warning << "CoreController::initialize: Updating SD card state file failed" << std::endl;
|
||||
}
|
||||
|
Reference in New Issue
Block a user