OSDN Git Service

0e5e7a1b8d649bc36c2da8c191cd160fa0c234a0
[nxt-jsp/etrobo-atk.git] / nxtOSEK / samples / resourcetest / resourcetest.c
1 /* resourcetest.c */\r
2 #include "kernel.h"\r
3 #include "kernel_id.h"\r
4 #include "ecrobot_interface.h"\r
5 \r
6 /* OSEK declarations */\r
7 DeclareCounter( SysTimerCnt );\r
8 DeclareResource(resource1);\r
9 DeclareEvent(event1);\r
10 DeclareTask(LowTask);\r
11 DeclareTask(HighTask);\r
12 \r
13 /* LEJOS OSEK hook to be invoked from an ISR in category 2 */\r
14 void user_1ms_isr_type2(void)\r
15 {\r
16         StatusType ercd;\r
17 \r
18         ercd = SignalCounter(SysTimerCnt); /* Increment OSEK Alarm Counter */\r
19         if(ercd != E_OK)\r
20         {\r
21                 ShutdownOS(ercd);\r
22         }\r
23 }\r
24 \r
25 /* Definitions */\r
26 #define COUNT 5000000\r
27 int digits;\r
28 int lowtaskcount;\r
29 int hightaskcount;\r
30 \r
31 TASK(LowTask)\r
32 {\r
33     int rcount;\r
34 \r
35         ecrobot_debug1(digits, 1111, 0);\r
36         for (rcount = 0; rcount < COUNT; rcount++); \r
37         ecrobot_debug1(digits, 1119, 0);\r
38 \r
39         GetResource(resource1);\r
40         for(rcount = 0; rcount < COUNT; rcount++) digits++;\r
41         SetEvent(HighTask, event1);\r
42         ecrobot_debug1(digits, 1199, 0);\r
43         for(rcount=0; rcount < COUNT; rcount++) digits--;\r
44         ReleaseResource(resource1);\r
45 \r
46         ecrobot_debug1(digits, 1999, 0);\r
47 \r
48         TerminateTask();\r
49 }\r
50 \r
51 TASK(HighTask)\r
52 {\r
53         int rcount;\r
54 \r
55         ecrobot_debug2(digits, 2222, 1);\r
56         for(rcount=0; rcount < COUNT; rcount++) digits++;\r
57         ecrobot_debug2(digits, 2228, 1);\r
58         for(rcount=0; rcount < COUNT; rcount++) digits++;\r
59 \r
60         WaitEvent(event1);\r
61         ClearEvent(event1);\r
62         ecrobot_debug2(digits, 2288, 1);\r
63         for(rcount=0; rcount < COUNT; rcount++) digits++;\r
64 \r
65         GetResource(resource1);\r
66         ecrobot_debug2(digits, 2888, 1);\r
67         for (rcount = 0; rcount < COUNT; rcount++);\r
68         ReleaseResource(resource1);\r
69 \r
70         ecrobot_debug2(digits,8888 , 1);\r
71 \r
72         TerminateTask();\r
73 }\r