123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- /*
- * Brief: Micellaneous Ticks increment every 1 second.
- Record system power on times.
- * Author: Jimbo_Zhang@outlook.com
- * Date: 2019-9-16
- */
- #include "TimerTask.h"
- #include "time.h"
- #include <stdint.h>
- #include "main.h"
- #include <signal.h>
- static void ProcessTimerReq (void);
- //g_BMCInfo.CurTimerTick increment in port.c/xPortSysTickHandler().
- // void *TimerTask( void *pvParameters )
- // {
- // uint32_t preTimerTick = g_BMCInfo.CurTimerTick;
- // printf("TimerTask start...\n");
- // while(1)
- // {
- // preTimerTick = g_BMCInfo.CurTimerTick;
- // g_BMCInfo.SELTimeSecond++;
-
- // if(g_BMCInfo.SensorSharedMem.SensorTick < 0xffffffff)
- // g_BMCInfo.SensorSharedMem.SensorTick++;
-
- // if(g_BMCInfo.SenConfig.PowerOnTick < 0xffffffff)
- // g_BMCInfo.SenConfig.PowerOnTick++;
-
- // if(g_BMCInfo.SenConfig.SysResetTick < 0xffffffff)
- // g_BMCInfo.SenConfig.SysResetTick++;
-
- // g_BMCInfo.CurTimerSecond++;
- // if(g_BMCInfo.PowerGoodFlag && (g_BMCInfo.CurTimerSecond%60 == 0)) // 1minute
- // {
- // g_BMCInfo.BootValidMinutes++;
- // g_BMCInfo.TotalBootValidMinutes++;
- // }
- // ProcessTimerReq();
- // sleep(1);
- // }
- // }
- void TimerTask( int signo ) //signal handler
- {
- //printf("TimerTask start...\n");
- switch(signo)
- {
- case SIGALRM:
- //preTimerTick = g_BMCInfo.CurTimerTick;
- //g_BMCInfo.SELTimeSecond++;
-
- if(g_BMCInfo.SensorSharedMem.SensorTick < 0xffffffff)
- g_BMCInfo.SensorSharedMem.SensorTick++;
-
- if(g_BMCInfo.SenConfig.PowerOnTick < 0xffffffff)
- g_BMCInfo.SenConfig.PowerOnTick++;
-
- if(g_BMCInfo.SenConfig.SysResetTick < 0xffffffff)
- g_BMCInfo.SenConfig.SysResetTick++;
-
- g_BMCInfo.CurTimerSecond++;
- g_BMCInfo.CurTimerTick++;
- if(g_BMCInfo.PowerGoodFlag && (g_BMCInfo.CurTimerSecond%60 == 0)) // 1minute
- {
- g_BMCInfo.BootValidMinutes++;
- g_BMCInfo.BootValidMinutesCount++;
- if((g_BMCInfo.BootValidMinutesCount%POH_MINS_PER_COUNT) == 0)
- {
- g_BMCInfo.BootValidMinutesCount = 0;
- g_BMCInfo.IpmiConfig.totalRunTimeCount++;
- FlushIPMIToFlash();
- }
- }
- //printf("CurTimerSecond %d\n", g_BMCInfo.CurTimerSecond);
- ProcessTimerReq();
- break;
- }
- }
- /**
- *@fn ProcessTimerReq
- *@brief Executes Timer task function for every one second
- *@return none
- */
- static void ProcessTimerReq (void)
- {
- int i;
- for (i = 0; i < g_BMCInfo.TimerTaskTblSize; i++)
- {
- if (0 == (g_BMCInfo.CurTimerTick % g_BMCInfo.TimerTaskTbl [i].NumSecs))
- {
- g_BMCInfo.TimerTaskTbl [i].TimerFn ();
- }
- }
- return;
- }
|