xref: /nrf52832-nimble/rt-thread/examples/kernel/thread_delay.c (revision 104654410c56c573564690304ae786df310c91fc)
1*10465441SEvalZero #include <rtthread.h>
2*10465441SEvalZero #include "tc_comm.h"
3*10465441SEvalZero 
4*10465441SEvalZero /*
5*10465441SEvalZero  * This is an example for delay thread
6*10465441SEvalZero  */
7*10465441SEvalZero static struct rt_thread thread;
8*10465441SEvalZero static char thread_stack[THREAD_STACK_SIZE];
thread_entry(void * parameter)9*10465441SEvalZero static void thread_entry(void* parameter)
10*10465441SEvalZero {
11*10465441SEvalZero     rt_tick_t tick;
12*10465441SEvalZero     rt_kprintf("thread inited ok\n");
13*10465441SEvalZero 
14*10465441SEvalZero     rt_kprintf("thread delay 10 tick\n");
15*10465441SEvalZero     tick = rt_tick_get();
16*10465441SEvalZero     rt_thread_delay(10);
17*10465441SEvalZero     if (rt_tick_get() - tick > 11)
18*10465441SEvalZero     {
19*10465441SEvalZero         tc_done(TC_STAT_FAILED);
20*10465441SEvalZero         return;
21*10465441SEvalZero     }
22*10465441SEvalZero 
23*10465441SEvalZero     rt_kprintf("thread delay 15 tick\n");
24*10465441SEvalZero     tick = rt_tick_get();
25*10465441SEvalZero     rt_thread_delay(15);
26*10465441SEvalZero     if (rt_tick_get() - tick > 16)
27*10465441SEvalZero     {
28*10465441SEvalZero         tc_done(TC_STAT_FAILED);
29*10465441SEvalZero         return;
30*10465441SEvalZero     }
31*10465441SEvalZero 
32*10465441SEvalZero     rt_kprintf("thread exit\n");
33*10465441SEvalZero 
34*10465441SEvalZero     tc_done(TC_STAT_PASSED);
35*10465441SEvalZero }
36*10465441SEvalZero 
thread_delay_init()37*10465441SEvalZero rt_err_t thread_delay_init()
38*10465441SEvalZero {
39*10465441SEvalZero     rt_err_t result;
40*10465441SEvalZero 
41*10465441SEvalZero     result = rt_thread_init(&thread,
42*10465441SEvalZero         "test",
43*10465441SEvalZero         thread_entry, RT_NULL,
44*10465441SEvalZero         &thread_stack[0], sizeof(thread_stack),
45*10465441SEvalZero         THREAD_PRIORITY, 10);
46*10465441SEvalZero 
47*10465441SEvalZero     if (result == RT_EOK)
48*10465441SEvalZero         rt_thread_startup(&thread);
49*10465441SEvalZero     else
50*10465441SEvalZero         tc_stat(TC_STAT_END | TC_STAT_FAILED);
51*10465441SEvalZero 
52*10465441SEvalZero     return result;
53*10465441SEvalZero }
54*10465441SEvalZero 
55*10465441SEvalZero #ifdef RT_USING_TC
_tc_thread_delay()56*10465441SEvalZero int _tc_thread_delay()
57*10465441SEvalZero {
58*10465441SEvalZero     thread_delay_init();
59*10465441SEvalZero 
60*10465441SEvalZero     return 30;
61*10465441SEvalZero }
62*10465441SEvalZero FINSH_FUNCTION_EXPORT(_tc_thread_delay, a thread delay test);
63*10465441SEvalZero #else
rt_application_init()64*10465441SEvalZero int rt_application_init()
65*10465441SEvalZero {
66*10465441SEvalZero     thread_delay_init();
67*10465441SEvalZero 
68*10465441SEvalZero     return 0;
69*10465441SEvalZero }
70*10465441SEvalZero #endif
71