reboot feature finished
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
All checks were successful
EIVE/eive-obsw/pipeline/head This commit looks good
This commit is contained in:
parent
9edd6fc3be
commit
f8f0032d1e
@ -159,8 +159,7 @@ ReturnValue_t CoreController::executeAction(ActionId_t actionId, MessageQueueId_
|
|||||||
return actionListDirectoryIntoFile(actionId, commandedBy, data, size);
|
return actionListDirectoryIntoFile(actionId, commandedBy, data, size);
|
||||||
}
|
}
|
||||||
case(REBOOT_OBC): {
|
case(REBOOT_OBC): {
|
||||||
return HasReturnvaluesIF::RETURN_OK;
|
return actionPerformReboot(data, size);
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
default: {
|
default: {
|
||||||
return HasActionsIF::INVALID_ACTION_ID;
|
return HasActionsIF::INVALID_ACTION_ID;
|
||||||
@ -457,6 +456,33 @@ void CoreController::initPrint() {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ReturnValue_t CoreController::actionPerformReboot(const uint8_t *data, size_t size) {
|
||||||
|
if(size < 1) {
|
||||||
|
return HasActionsIF::INVALID_PARAMETERS;
|
||||||
|
}
|
||||||
|
bool rebootSameBootCopy = data[0];
|
||||||
|
if(rebootSameBootCopy) {
|
||||||
|
int result = std::system("xsc_boot_copy -r");
|
||||||
|
if(result != 0) {
|
||||||
|
utility::handleSystemError(result, "CoreController::executeAction");
|
||||||
|
return HasReturnvaluesIF::RETURN_FAILED;
|
||||||
|
}
|
||||||
|
return HasActionsIF::EXECUTION_FINISHED;
|
||||||
|
}
|
||||||
|
if(size < 3) {
|
||||||
|
return HasActionsIF::INVALID_PARAMETERS;
|
||||||
|
}
|
||||||
|
// The second byte in data is the target chip, the third byte is the target copy
|
||||||
|
std::string cmdString = "xsc_boot_copy " + std::to_string(data[1]) +
|
||||||
|
std::to_string(data[2]);
|
||||||
|
int result = std::system(cmdString.c_str());
|
||||||
|
if(result != 0) {
|
||||||
|
utility::handleSystemError(result, "CoreController::executeAction");
|
||||||
|
return HasReturnvaluesIF::RETURN_FAILED;
|
||||||
|
}
|
||||||
|
return HasActionsIF::EXECUTION_FINISHED;
|
||||||
|
}
|
||||||
|
|
||||||
void CoreController::performWatchdogControlOperation() {
|
void CoreController::performWatchdogControlOperation() {
|
||||||
// Only perform each fifth iteration
|
// Only perform each fifth iteration
|
||||||
if(watchdogFifoFd != 0 and opDivider.checkAndIncrement()) {
|
if(watchdogFifoFd != 0 and opDivider.checkAndIncrement()) {
|
||||||
|
@ -24,7 +24,7 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
static constexpr ActionId_t LIST_DIRECTORY_INTO_FILE = 0;
|
static constexpr ActionId_t LIST_DIRECTORY_INTO_FILE = 0;
|
||||||
static constexpr ActionId_t REBOOT_OBC = 1;
|
static constexpr ActionId_t REBOOT_OBC = 32;
|
||||||
|
|
||||||
static constexpr uint8_t SUBSYSTEM_ID = SUBSYSTEM_ID::CORE;
|
static constexpr uint8_t SUBSYSTEM_ID = SUBSYSTEM_ID::CORE;
|
||||||
|
|
||||||
@ -68,6 +68,7 @@ private:
|
|||||||
|
|
||||||
ReturnValue_t actionListDirectoryIntoFile(ActionId_t actionId, MessageQueueId_t commandedBy,
|
ReturnValue_t actionListDirectoryIntoFile(ActionId_t actionId, MessageQueueId_t commandedBy,
|
||||||
const uint8_t *data, size_t size);
|
const uint8_t *data, size_t size);
|
||||||
|
ReturnValue_t actionPerformReboot(const uint8_t *data, size_t size);
|
||||||
|
|
||||||
void initPrint();
|
void initPrint();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user