diff --git a/mission/tmtc/CcsdsIpCoreHandler.cpp b/mission/tmtc/CcsdsIpCoreHandler.cpp index c46c64d3..9a2195eb 100644 --- a/mission/tmtc/CcsdsIpCoreHandler.cpp +++ b/mission/tmtc/CcsdsIpCoreHandler.cpp @@ -82,6 +82,11 @@ ReturnValue_t CcsdsIpCoreHandler::initialize() { return result; } + result = modeHelper.initialize(); + if (result != returnvalue::OK) { + return result; + } + VirtualChannelMapIter iter; for (iter = virtualChannelMap.begin(); iter != virtualChannelMap.end(); iter++) { result = iter->second->initialize(); @@ -364,9 +369,11 @@ ReturnValue_t CcsdsIpCoreHandler::checkModeCommand(Mode_t mode, Submode_t submod submode != static_cast(Submode::DATARATE_LOW)) { return HasModesIF::INVALID_SUBMODE; } + } else if (mode != HasModesIF::MODE_OFF) { + return returnvalue::FAILED; } *msToReachTheMode = 2000; - return returnvalue::FAILED; + return returnvalue::OK; } void CcsdsIpCoreHandler::startTransition(Mode_t mode, Submode_t submode) { @@ -387,6 +394,7 @@ void CcsdsIpCoreHandler::startTransition(Mode_t mode, Submode_t submode) { disableTransmit(); mode = HasModesIF::MODE_OFF; } + modeHelper.modeChanged(mode, submode); } void CcsdsIpCoreHandler::announceMode(bool recursive) { triggerEvent(MODE_INFO, mode, submode); } diff --git a/tmtc b/tmtc index 49ccb4be..c36c7ca5 160000 --- a/tmtc +++ b/tmtc @@ -1 +1 @@ -Subproject commit 49ccb4be8d42d6916be00ff9d8462a1f65481a6c +Subproject commit c36c7ca5bbe12b74f096414383eedfc16576a9d2