TimerTask.c 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. /*
  2. * Brief: Micellaneous Ticks increment every 1 second.
  3. Record system power on times.
  4. * Author: Jimbo_Zhang@outlook.com
  5. * Date: 2019-9-16
  6. */
  7. #include "TimerTask.h"
  8. #include "time.h"
  9. #include <stdint.h>
  10. #include "main.h"
  11. #include <signal.h>
  12. static void ProcessTimerReq (void);
  13. //g_BMCInfo.CurTimerTick increment in port.c/xPortSysTickHandler().
  14. // void *TimerTask( void *pvParameters )
  15. // {
  16. // uint32_t preTimerTick = g_BMCInfo.CurTimerTick;
  17. // printf("TimerTask start...\n");
  18. // while(1)
  19. // {
  20. // preTimerTick = g_BMCInfo.CurTimerTick;
  21. // g_BMCInfo.SELTimeSecond++;
  22. // if(g_BMCInfo.SensorSharedMem.SensorTick < 0xffffffff)
  23. // g_BMCInfo.SensorSharedMem.SensorTick++;
  24. // if(g_BMCInfo.SenConfig.PowerOnTick < 0xffffffff)
  25. // g_BMCInfo.SenConfig.PowerOnTick++;
  26. // if(g_BMCInfo.SenConfig.SysResetTick < 0xffffffff)
  27. // g_BMCInfo.SenConfig.SysResetTick++;
  28. // g_BMCInfo.CurTimerSecond++;
  29. // if(g_BMCInfo.PowerGoodFlag && (g_BMCInfo.CurTimerSecond%60 == 0)) // 1minute
  30. // {
  31. // g_BMCInfo.BootValidMinutes++;
  32. // g_BMCInfo.TotalBootValidMinutes++;
  33. // }
  34. // ProcessTimerReq();
  35. // sleep(1);
  36. // }
  37. // }
  38. void TimerTask( int signo ) //signal handler
  39. {
  40. //printf("TimerTask start...\n");
  41. switch(signo)
  42. {
  43. case SIGALRM:
  44. //preTimerTick = g_BMCInfo.CurTimerTick;
  45. //g_BMCInfo.SELTimeSecond++;
  46. if(g_BMCInfo.SensorSharedMem.SensorTick < 0xffffffff)
  47. g_BMCInfo.SensorSharedMem.SensorTick++;
  48. if(g_BMCInfo.SenConfig.PowerOnTick < 0xffffffff)
  49. g_BMCInfo.SenConfig.PowerOnTick++;
  50. if(g_BMCInfo.SenConfig.SysResetTick < 0xffffffff)
  51. g_BMCInfo.SenConfig.SysResetTick++;
  52. g_BMCInfo.CurTimerSecond++;
  53. if(g_BMCInfo.PowerGoodFlag && (g_BMCInfo.CurTimerSecond%60 == 0)) // 1minute
  54. {
  55. g_BMCInfo.BootValidMinutes++;
  56. g_BMCInfo.TotalBootValidMinutes++;
  57. }
  58. ProcessTimerReq();
  59. break;
  60. }
  61. }
  62. /**
  63. *@fn ProcessTimerReq
  64. *@brief Executes Timer task function for every one second
  65. *@return none
  66. */
  67. static void ProcessTimerReq (void)
  68. {
  69. int i;
  70. for (i = 0; i < g_BMCInfo.TimerTaskTblSize; i++)
  71. {
  72. if (0 == (g_BMCInfo.CurTimerTick % g_BMCInfo.TimerTaskTbl [i].NumSecs))
  73. {
  74. g_BMCInfo.TimerTaskTbl [i].TimerFn ();
  75. }
  76. }
  77. return;
  78. }