WatchDog.c.old 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #include <stdio.h> /*標準輸入輸出定義*/
  2. #include <stdlib.h> /*標準函數庫定義*/
  3. #include <string.h>
  4. #include <stdint.h>
  5. #include "../Config.h"
  6. #include "../Log/log.h"
  7. #include "../Define/define.h"
  8. #include "../ShareMemory/shmMem.h"
  9. //------------------------------------------------------------------------------
  10. static int gWatchDogfd = -1;
  11. //------------------------------------------------------------------------------
  12. void WriteWatchDogState(char *value)
  13. {
  14. write(gWatchDogfd, value, 1);
  15. }
  16. static int initWatchDog(void)
  17. {
  18. int fd;
  19. system("/usr/bin/fuser -k /dev/watchdog");
  20. sleep(1);
  21. system("echo V > /dev/watchdog");
  22. sleep(1);
  23. fd = open("/dev/watchdog", O_RDWR);
  24. if (fd <= 0) {
  25. log_error("System watch dog initial fail.\r\n");
  26. }
  27. return fd;
  28. }
  29. void CreateWatchdog(void)
  30. {
  31. struct SysConfigData *pSysConfig = (struct SysConfigData *)GetShmSysConfigData();
  32. struct AlarmCodeData *pAlarmCode = (struct AlarmCodeData *)GetShmAlarmCodeData();
  33. if (pSysConfig->SwitchDebugFlag == NO) {
  34. gWatchDogfd = initWatchDog();
  35. if (gWatchDogfd < 0) {
  36. pAlarmCode->AlarmEvents.bits.CsuInitFailed = 1;
  37. }
  38. }
  39. }