source: rtos_arduino/trunk/lib/rca_lib.h@ 238

Last change on this file since 238 was 238, checked in by ertl-honda, 8 years ago

ラウンドロビンのマクロの見直し

File size: 3.7 KB
Line 
1#include "rca_app.h"
2
3/*
4 * Max number of task
5 */
6#define RCA_NUM_TASK_MAX 5
7
8/*
9 * Check number of task
10 */
11#if RCA_NUM_TASK > RCA_NUM_TASK_MAX
12#error The number of Task is over!
13#endif /* RCA_NUM_TASK > RCA_NUM_TASK_MAX */
14
15/*
16 * Idle task loop count per 10ms at idle state
17 */
18#define IDLE_TASK_IDLE_LOOP_10MS 42178
19
20/*
21 * Default Macro
22 */
23
24/*
25 * Priotiry
26 */
27#ifndef RCA_MAINTASK_SETUP_PRI
28#define RCA_MAINTASK_SETUP_PRI 5
29#endif /* RCA_MAINTASK_SETUP_PRI */
30
31#ifndef RCA_MAINTASK_LOOP_PRI
32#define RCA_MAINTASK_LOOP_PRI 5
33#endif /* RCA_MAINTASK_SETUP_PRI */
34
35#ifndef RCA_TASK1_SETUP_PRI
36#define RCA_TASK1_SETUP_PRI 5
37#endif /* RCA_TASK1_SETUP_PRI */
38
39#ifndef RCA_TASK1_LOOP_PRI
40#define RCA_TASK1_LOOP_PRI 5
41#endif /* RCA_TASK1_SETUP_PRI */
42
43#ifndef RCA_TASK2_SETUP_PRI
44#define RCA_TASK2_SETUP_PRI 5
45#endif /* RCA_TASK2_SETUP_PRI */
46
47#ifndef RCA_TASK2_LOOP_PRI
48#define RCA_TASK2_LOOP_PRI 5
49#endif /* RCA_TASK2_SETUP_PRI */
50
51#ifndef RCA_TASK3_SETUP_PRI
52#define RCA_TASK3_SETUP_PRI 5
53#endif /* RCA_TASK3_SETUP_PRI */
54
55#ifndef RCA_TASK3_LOOP_PRI
56#define RCA_TASK3_LOOP_PRI 5
57#endif /* RCA_TASK3_SETUP_PRI */
58
59#ifndef RCA_TASK4_SETUP_PRI
60#define RCA_TASK4_SETUP_PRI 5
61#endif /* RCA_TASK4_SETUP_PRI */
62
63#ifndef RCA_TASK4_LOOP_PRI
64#define RCA_TASK4_LOOP_PRI 5
65#endif /* RCA_TASK4_SETUP_PRI */
66
67#ifndef RCA_TASK5_SETUP_PRI
68#define RCA_TASK5_SETUP_PRI 5
69#endif /* RCA_TASK5_SETUP_PRI */
70
71#ifndef RCA_TASK5_LOOP_PRI
72#define RCA_TASK5_LOOP_PRI 5
73#endif /* RCA_TASK3_SETUP_PRI */
74
75/*
76 * Stack Size
77 */
78#ifndef RCA_MAINTASK_STACK_SIZE
79#define RCA_MAINTASK_STACK_SIZE 2048
80#endif /* RCA_MAINTASK_STACK_SIZE */
81
82#ifndef RCA_TASK1_STACK_SIZE
83#define RCA_TASK1_STACK_SIZE 1024
84#endif /* RCA_TASK1_STACK_SIZE */
85
86#ifndef RCA_TASK2_STACK_SIZE
87#define RCA_TASK2_STACK_SIZE 1024
88#endif /* RCA_TASK2_STACK_SIZE */
89
90#ifndef RCA_TASK3_STACK_SIZE
91#define RCA_TASK3_STACK_SIZE 1024
92#endif /* RCA_TASK3_STACK_SIZE */
93
94#ifndef RCA_TASK4_STACK_SIZE
95#define RCA_TASK4_STACK_SIZE 1024
96#endif /* RCA_TASK4_STACK_SIZE */
97
98#ifndef RCA_TASK5_STACK_SIZE
99#define RCA_TASK5_STACK_SIZE 1024
100#endif /* RCA_TASK5_STACK_SIZE */
101
102
103/*
104 * Round Robin Scheduling cycle
105 */
106#ifndef RCA_RR_SCHEDULE_CYCLE
107#define RCA_RR_SCHEDULE_CYCLE 1
108#endif /* RCA_RR_SCHEDULE_CYCLE */
109
110#ifdef __cplusplus
111extern "C" {
112#endif
113
114extern void rca_init(intptr_t exinf);
115extern void rca_maintask(intptr_t exinf);
116extern void rca_task1(intptr_t exinf);
117extern void rca_task2(intptr_t exinf);
118extern void rca_task3(intptr_t exinf);
119extern void rca_task4(intptr_t exinf);
120extern void rca_task5(intptr_t exinf);
121extern void rca_CycHandler(intptr_t exinf);
122
123extern void rca_USB_Handler(void);
124extern void rca_SERCOM0_Handler(void);
125extern void rca_SERCOM2_Handler(void);
126extern void rca_SERCOM3_Handler(void);
127extern void rca_SERCOM4_Handler(void);
128extern void rca_SERCOM5_Handler(void);
129extern void rca_EIC_Handler(void);
130extern void rca_TC5_Handler(void);
131extern void rca_RTC_Handler(void);
132
133#ifdef RCA_ENABLE_PROFILING
134extern void rca_idle_task(intptr_t exinf);
135extern volatile uint32_t rca_idle_result;
136extern volatile uint32_t rca_isr_result;
137extern volatile uint32_t rca_dispatch_result;
138extern volatile uint32_t rca_timer_isr_result;
139extern volatile uint32_t rca_usb_isr_result;
140extern volatile uint32_t rca_sercom0_isr_result;
141extern volatile uint32_t rca_sercom4_isr_result;
142extern volatile uint32_t rca_sercom5_isr_result;
143extern volatile uint32_t rca_eic_isr_result;
144extern volatile uint32_t rca_tc5_isr_result;
145extern volatile uint32_t rca_rtc_isr_result;
146
147#ifdef RCA_USE_SERIAL3
148extern volatile uint32_t rca_sercom3_isr_result;
149#endif /* RCA_USE_SERIAL3 */
150
151#endif /* RCA_ENABLE_PROFILING */
152
153#define WIRE_ENTER_CRITICAL wai_sem(WIRE_SEM);
154#define WIRE_LEAVE_CRITICAL sig_sem(WIRE_SEM);
155
156#ifdef __cplusplus
157}
158#endif
Note: See TracBrowser for help on using the repository browser.