Advertisement
venkat_330

Timer in C

Aug 8th, 2013
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.00 KB | None | 0 0
  1. int StartTimer(dev_timer_t *timer)
  2. {
  3.     int status;
  4.     int seconds,nano;
  5.     struct sigaction sig_act;
  6.     sigset_t mask;
  7.     char debugBuf[256] = { '\0' };
  8.  
  9.     if(timer_dev[timer->timerno].status != STARTED)
  10.     {
  11.         sigemptyset(&mask);
  12.         sig_act.sa_handler = (void *)sig_handler;
  13.         sig_act.sa_flags = 0;
  14.         sigemptyset(&sig_act.sa_mask);
  15.  
  16.         seconds= timer->timeout / 1000;
  17.         nano= (timer->timeout % 1000) * 1000000;
  18.  
  19.         if(timer->timerno != APPTIMER1)
  20.         {  
  21.             timer_values[timer->timerno].timeout.it_interval.tv_sec = 1;
  22.             timer_values[timer->timerno].timeout.it_value.tv_sec = seconds;
  23.             timer_values[timer->timerno].timeout.it_interval.tv_nsec =1;
  24.             timer_values[timer->timerno].timeout.it_value.tv_nsec = nano;
  25.         }
  26.         else
  27.         {
  28.             timer_values[timer->timerno].timeout.it_value.tv_sec = seconds;
  29.             timer_values[timer->timerno].timeout.it_value.tv_nsec = nano;
  30.             timer_values[timer->timerno].timeout.it_interval.tv_sec = 0;
  31.             timer_values[timer->timerno].timeout.it_interval.tv_nsec = 0;
  32.         }
  33.  
  34.         status=timer_create(CLOCK_REALTIME, &timer_values[timer->timerno].evp, &timerid[timer->timerno]);
  35.         if (status == FAILURE)
  36.         {
  37.             debug_log("SYSTEM:timer_create failed",ERROR_LOG);
  38.             return FAILURE;
  39.         }
  40.         timer_settime(timerid[timer->timerno],timer_values[timer->timerno].type, &timer_values[timer->timerno].timeout, NULL);
  41.         sigaction(timer_values[timer->timerno].evp.sigev_signo, &sig_act, 0);
  42.         //timer_connect(timerid,my_handler,0);
  43.  
  44.         timer_dev[timer->timerno].status = STARTED;
  45.         //debug_log("SYSTEM:Timer  Started",DEBUG_LOG);
  46.  
  47.         memset(debugBuf,'\0',sizeof(debugBuf));
  48.         sprintf(debugBuf,"SYSTEM:_______________________________Timer %d started, timer_t = %d\n",timer->timerno + 1, (int)timerid[timer->timerno]);
  49.         debug_log(debugBuf,DEBUG_LOG);
  50.     }
  51.     else
  52.     {
  53.         memset(debugBuf,'\0',sizeof(debugBuf));
  54.         sprintf(debugBuf, "SYSTEM:__________________________OOPS... could not Start timer %d, Its already Started",timer->timerno+1);
  55.         debug_log(debugBuf,DEBUG_LOG);
  56.         return INUSE;  
  57.     }
  58.     return 0;
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement