#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; }