12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- #include <stdio.h> /*標準輸入輸出定義*/
- #include <stdlib.h> /*標準函數庫定義*/
- #include <string.h>
- #include <stdint.h>
- #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_error("System watch dog initial fail.\r\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");
- }
- }
- void TryCloseWatchdog(void)
- {
- if(wtdFd > 0)
- {
- write(wtdFd, "V", 1);
- close(wtdFd);
- }
- }
- void TryFeedWatchdog(void)
- {
- if(wtdFd > 0)
- {
- write(wtdFd, "a", 1);
- }
- }
|