drivers/timers_xeno/timers_xeno.c
changeset 32 8afa33692372
parent 0 4472ee7c6c3e
child 33 c767eabbaaac
equal deleted inserted replaced
31:a82b70738e5c 32:8afa33692372
    24 void cleanup_all(void)
    24 void cleanup_all(void)
    25 {
    25 {
    26 	rt_task_delete(&timerloop_task);
    26 	rt_task_delete(&timerloop_task);
    27 	rt_alarm_delete(&timerloop_alarm);
    27 	rt_alarm_delete(&timerloop_alarm);
    28 }
    28 }
    29 void stopTimer(void)
    29 void StopTimerLoop(void)
    30 {
    30 {
    31 	stop_timer = 1;
    31 	stop_timer = 1;
    32 	rt_task_unblock(&timerloop_task);
    32 	rt_task_unblock(&timerloop_task);
    33 }
    33 }
    34 
    34 
    55 		}while ((ret =  rt_task_sleep_until(last_alarm_set)) == 0);
    55 		}while ((ret =  rt_task_sleep_until(last_alarm_set)) == 0);
    56 	}while (ret == -EINTR && !stop_timer );
    56 	}while (ret == -EINTR && !stop_timer );
    57 	printf("End of TimerLoop, code %d\n",ret);
    57 	printf("End of TimerLoop, code %d\n",ret);
    58 }
    58 }
    59 
    59 
    60 void TimerLoop(TimerCallback_t init_callback)
    60 void StartTimerLoop(TimerCallback_t init_callback)
    61 {
    61 {
    62 	int ret;
    62 	int ret;
    63 	stop_timer = 0;
    63 	stop_timer = 0;
    64 
    64 
    65 	ret = rt_alarm_create( &timerloop_alarm, NULL);
    65 	ret = rt_alarm_create( &timerloop_alarm, NULL);
    84 	if (ret) {
    84 	if (ret) {
    85 		printf("Failed to start timerloop_task, code %d\n",errno);
    85 		printf("Failed to start timerloop_task, code %d\n",errno);
    86 		goto error;
    86 		goto error;
    87 	}
    87 	}
    88 	
    88 	
    89 	// At first, TimeDispatch will call init_callback.
       
    90 	pause();
       
    91 
    89 
    92 error:
    90 error:
    93 	cleanup_all();
    91 	cleanup_all();
    94 }
    92 }
    95 
    93