well that was fast
This commit is contained in:
39
bsp_q7s/core/XiphosWdtHandler.cpp
Normal file
39
bsp_q7s/core/XiphosWdtHandler.cpp
Normal file
@ -0,0 +1,39 @@
|
||||
#include "XiphosWdtHandler.h"
|
||||
|
||||
XiphosWdtHandler::XiphosWdtHandler(object_id_t objectId) : SystemObject(objectId) {}
|
||||
|
||||
ReturnValue_t XiphosWdtHandler::initialize() {
|
||||
int result = xsc_watchdog_init(&wdtHandle);
|
||||
if (result != 0) {
|
||||
sif::error << "XiphosWdtHandler: Initiating watchdog failed with code " << result << ": "
|
||||
<< strerror(result) << std::endl;
|
||||
return ObjectManagerIF::CHILD_INIT_FAILED;
|
||||
}
|
||||
if (wdtHandle == nullptr) {
|
||||
sif::error << "XiphosWdtHandler: WDT handle is nullptr!" << std::endl;
|
||||
return ObjectManagerIF::CHILD_INIT_FAILED;
|
||||
}
|
||||
result = xsc_watchdog_set_timeout(wdtHandle, timeoutSeconds);
|
||||
if (result != 0) {
|
||||
sif::error << "XiphosWdtHandler: Setting WDT timeout of " << timeoutSeconds
|
||||
<< " seconds failed with code " << result << ": " << strerror(result) << std::endl;
|
||||
return ObjectManagerIF::CHILD_INIT_FAILED;
|
||||
}
|
||||
result = xsc_watchdog_enable(wdtHandle);
|
||||
if (result != 0) {
|
||||
sif::error << "XiphosWdtHandler: Enabling WDT failed with code " << result << ": "
|
||||
<< strerror(result) << std::endl;
|
||||
return ObjectManagerIF::CHILD_INIT_FAILED;
|
||||
}
|
||||
return returnvalue::OK;
|
||||
}
|
||||
|
||||
ReturnValue_t XiphosWdtHandler::performOperation(uint8_t opCode) {
|
||||
int result = xsc_watchdog_keepalive(wdtHandle);
|
||||
if (result != 0) {
|
||||
sif::warning << "XiphosWdtHandler: Feeding WDT failed with code " << result << ": "
|
||||
<< strerror(result) << std::endl;
|
||||
return returnvalue::FAILED;
|
||||
}
|
||||
return returnvalue::OK;
|
||||
}
|
Reference in New Issue
Block a user