diff --git a/bsp_q7s/core/CoreController.cpp b/bsp_q7s/core/CoreController.cpp index 57f307d2..51ab2bbb 100644 --- a/bsp_q7s/core/CoreController.cpp +++ b/bsp_q7s/core/CoreController.cpp @@ -217,14 +217,16 @@ ReturnValue_t CoreController::executeAction(ActionId_t actionId, MessageQueueId_ return executeSwUpdate(SwUpdateSources::TMP_DIR, data, size); } case (SWITCH_TO_SD_0): { - if (not startSdStateMachine(sd::SdCard::SLOT_0, SdCfgMode::COLD_REDUNDANT)) { + if (not startSdStateMachine(sd::SdCard::SLOT_0, SdCfgMode::COLD_REDUNDANT, commandedBy, + actionId)) { return HasActionsIF::IS_BUSY; } // Completion will be reported by SD card state machine return returnvalue::OK; } case (SWITCH_TO_SD_1): { - if (not startSdStateMachine(sd::SdCard::SLOT_1, SdCfgMode::COLD_REDUNDANT)) { + if (not startSdStateMachine(sd::SdCard::SLOT_1, SdCfgMode::COLD_REDUNDANT, commandedBy, + actionId)) { return HasActionsIF::IS_BUSY; } // Completion will be reported by SD card state machine @@ -240,7 +242,7 @@ ReturnValue_t CoreController::executeAction(ActionId_t actionId, MessageQueueId_ return HasActionsIF::INVALID_PARAMETERS; } auto active = static_cast(data[0]); - if (not startSdStateMachine(active, SdCfgMode::HOT_REDUNDANT)) { + if (not startSdStateMachine(active, SdCfgMode::HOT_REDUNDANT, commandedBy, actionId)) { return HasActionsIF::IS_BUSY; } // Completion will be reported by SD card state machine @@ -393,7 +395,7 @@ ReturnValue_t CoreController::sdStateMachine() { sif::warning << "Getting SD card activity status failed" << std::endl; } if (sdInfo.cfgMode == SdCfgMode::COLD_REDUNDANT) { - sif::info << "Cold redundant SD card configuration, preferred SD card: " + sif::info << "Cold redundant SD card configuration, target SD card: " << static_cast(sdInfo.active) << std::endl; } if (sdInfo.activeState == sd::SdState::MOUNTED) { @@ -1958,13 +1960,16 @@ ReturnValue_t CoreController::executeSwUpdate(SwUpdateSources sourceDir, const u return HasActionsIF::EXECUTION_FINISHED; } -bool CoreController::startSdStateMachine(sd::SdCard targetActiveSd, SdCfgMode mode) { +bool CoreController::startSdStateMachine(sd::SdCard targetActiveSd, SdCfgMode mode, + MessageQueueId_t commander, DeviceCommandId_t actionId) { if (sdFsmState != SdStates::IDLE or sdCommandingInfo.cmdPending) { return false; } sdFsmState = SdStates::START; sdInfo.active = targetActiveSd; sdInfo.cfgMode = mode; + sdCommandingInfo.actionId = actionId; + sdCommandingInfo.commander = commander; sdCommandingInfo.cmdPending = true; return true; } diff --git a/bsp_q7s/core/CoreController.h b/bsp_q7s/core/CoreController.h index 2f96e033..206a93c9 100644 --- a/bsp_q7s/core/CoreController.h +++ b/bsp_q7s/core/CoreController.h @@ -233,7 +233,8 @@ class CoreController : public ExtendedControllerBase { ReturnValue_t initBootCopy(); ReturnValue_t initWatchdogFifo(); ReturnValue_t initSdCardBlocking(); - bool startSdStateMachine(sd::SdCard targetActiveSd, SdCfgMode mode); + bool startSdStateMachine(sd::SdCard targetActiveSd, SdCfgMode mode, MessageQueueId_t commander, + DeviceCommandId_t actionId); void initPrint(); ReturnValue_t sdStateMachine();