#include /*標準輸入輸出定義*/ #include /*標準函數庫定義*/ #include #include #include "../Config.h" #include "../Log/log.h" #include "../Define/define.h" #include "../ShareMemory/shmMem.h" int wtdFd = -1; struct StatusCodeData *ShmStatusCodeData; void CreateWatchdog(void); void TryCloseWatchdog(void); void TryFeedWatchdog(void); int InitWatchDog() { int fd; int timeout = 180; system("/usr/bin/fuser -k /dev/watchdog"); sleep(1); system("echo V > /dev/watchdog"); sleep(1); fd=open("/dev/watchdog", O_RDWR); if(fd<=0) { log_info("Open watchdog fd:%d",fd); log_error("System watch dog initial fail.\n"); } ioctl(fd, _IOWR('W', 6, int), &timeout); return fd; } void CreateWatchdog(void) { wtdFd = InitWatchDog(); ShmStatusCodeData = (struct StatusCodeData*)GetShmStatusCodeData(); if(wtdFd < 0) { log_info("Watchdog Initial Fail"); ShmStatusCodeData->AlarmCode.AlarmEvents.bits.CsuInitFailed = 1; } else { log_info("Watchdog Initial Success (%d)",wtdFd); } } void TryCloseWatchdog(void) { if(wtdFd > 0) { write(wtdFd, "V", 1); close(wtdFd); } } void TryFeedWatchdog(void) { if(wtdFd > 0) { write(wtdFd, "a", 1); } }