TimerTask.c 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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. static void ProcessTimerReq (void);
  12. //g_BMCInfo.CurTimerTick increment in port.c/xPortSysTickHandler().
  13. void *TimerTask( void *pvParameters )
  14. {
  15. uint32_t preTimerTick = g_BMCInfo.CurTimerTick;
  16. printf("TimerTask start...\n");
  17. while(1)
  18. {
  19. preTimerTick = g_BMCInfo.CurTimerTick;
  20. g_BMCInfo.SELTimeSecond++;
  21. if(g_BMCInfo.SensorSharedMem.SensorTick < 0xffffffff)
  22. g_BMCInfo.SensorSharedMem.SensorTick++;
  23. if(g_BMCInfo.SenConfig.PowerOnTick < 0xffffffff)
  24. g_BMCInfo.SenConfig.PowerOnTick++;
  25. if(g_BMCInfo.SenConfig.SysResetTick < 0xffffffff)
  26. g_BMCInfo.SenConfig.SysResetTick++;
  27. g_BMCInfo.CurTimerSecond++;
  28. if(g_BMCInfo.PowerGoodFlag && (g_BMCInfo.CurTimerSecond%60 == 0)) // 1minute
  29. {
  30. g_BMCInfo.BootValidMinutes++;
  31. g_BMCInfo.TotalBootValidMinutes++;
  32. }
  33. ProcessTimerReq();
  34. sleep(1);
  35. }
  36. }
  37. /**
  38. *@fn ProcessTimerReq
  39. *@brief Executes Timer task function for every one second
  40. *@return none
  41. */
  42. static void ProcessTimerReq (void)
  43. {
  44. int i;
  45. for (i = 0; i < g_BMCInfo.TimerTaskTblSize; i++)
  46. {
  47. if (0 == (g_BMCInfo.CurTimerTick % g_BMCInfo.TimerTaskTbl [i].NumSecs))
  48. {
  49. g_BMCInfo.TimerTaskTbl [i].TimerFn ();
  50. }
  51. }
  52. return;
  53. }