1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- #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_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);
- }
- }
|