Main Page | Alphabetical List | Data Structures | File List | Data Fields | Globals | Related Pages

scheduler.h

Go to the documentation of this file.
00001 00002 00003 00004 00005 00006 00007 00008 00009 00010 00011 00012 00013 00014 00015 00016 00017 00018 00019 00020 00021 #ifndef _SCHEDULER_H_ 00022 #define _SCHEDULER_H_ 00023 00025 #ifdef KEIL 00026 #include <intrins.h> 00027 #define Wait_semaphore(a) while(!_testbit_(a)) 00028 #else 00029 #define Wait_semaphore(a) while(!(a)) (a) = FALSE 00030 #endif 00031 00038 #define TASK_DUMMY 0x00 // This define is mandatory 00039 #define TASK_0 0x01 00040 #define TASK_1 0x02 00041 #define TASK_2 0x04 00042 #define TASK_3 0x08 00043 #define TASK_4 0x10 00044 #define TASK_5 0x20 00045 #define TASK_6 0x40 00046 #define TASK_7 0x80 00047 00048 // This define is mandatory 00049 #define ALL_TASK (TASK_0|TASK_1|TASK_2|TASK_3|TASK_4|TASK_5|TASK_6|TASK_7) 00050 00051 00053 #define SCHEDULER_CUSTOM 0 00054 #define SCHEDULER_TIMED 1 00055 #define SCHEDULER_TASK 2 00056 #define SCHEDULER_FREE 3 00057 00058 00059 00060 #ifdef Scheduler_time_init 00061 extern void Scheduler_time_init (void); 00062 #endif 00063 00064 #ifdef Scheduler_task_1_init 00065 extern void Scheduler_task_1_init (void); 00066 #else 00067 // if you do not want init at all, do: 00068 // #define Scheduler_task_1_init scheduler_empty_fct 00069 #error Scheduler_task_1_init must be defined in congif.h file 00070 #endif 00071 #ifdef Scheduler_task_2_init 00072 extern void Scheduler_task_2_init (void); 00073 #endif 00074 #ifdef Scheduler_task_3_init 00075 extern void Scheduler_task_3_init (void); 00076 #endif 00077 #ifdef Scheduler_task_4_init 00078 extern void Scheduler_task_4_init (void); 00079 #endif 00080 #ifdef Scheduler_task_5_init 00081 extern void Scheduler_task_5_init (void); 00082 #endif 00083 #ifdef Scheduler_task_6_init 00084 extern void Scheduler_task_6_init (void); 00085 #endif 00086 #ifdef Scheduler_task_7_init 00087 extern void Scheduler_task_7_init (void); 00088 #endif 00089 #ifdef Scheduler_task_8_init 00090 extern void Scheduler_task_8_init (void); 00091 #endif 00092 #ifdef Scheduler_task_9_init 00093 extern void Scheduler_task_9_init (void); 00094 #endif 00095 #ifdef Scheduler_task_10_init 00096 extern void Scheduler_task_10_init (void); 00097 #endif 00098 #ifdef Scheduler_task_11_init 00099 extern void Scheduler_task_11_init (void); 00100 #endif 00101 00102 00103 #ifdef Scheduler_task_1 00104 extern void Scheduler_task_1 (void); 00105 #else 00106 // if you do not want task at all, do: 00107 // #define Scheduler_task_1 scheduler_empty_fct 00108 #error Scheduler_task_1 must be defined in congif.h file 00109 #endif 00110 #ifdef Scheduler_task_2 00111 extern void Scheduler_task_2 (void); 00112 #endif 00113 #ifdef Scheduler_task_3 00114 extern void Scheduler_task_3 (void); 00115 #endif 00116 #ifdef Scheduler_task_4 00117 extern void Scheduler_task_4 (void); 00118 #endif 00119 #ifdef Scheduler_task_5 00120 extern void Scheduler_task_5 (void); 00121 #endif 00122 #ifdef Scheduler_task_6 00123 extern void Scheduler_task_6 (void); 00124 #endif 00125 #ifdef Scheduler_task_7 00126 extern void Scheduler_task_7 (void); 00127 #endif 00128 #ifdef Scheduler_task_8 00129 extern void Scheduler_task_8 (void); 00130 #endif 00131 #ifdef Scheduler_task_9 00132 extern void Scheduler_task_9 (void); 00133 #endif 00134 #ifdef Scheduler_task_10 00135 extern void Scheduler_task_10 (void); 00136 #endif 00137 #ifdef Scheduler_task_11 00138 extern void Scheduler_task_11 (void); 00139 #endif 00140 00142 #if SCHEDULER_TYPE != SCHEDULER_FREE 00143 extern bit scheduler_tick_flag; 00144 #endif 00145 00146 #ifdef TOKEN_MODE 00147 extern Uchar token; 00148 #define TOKEN_FREE 0 00149 #endif 00150 00152 void scheduler_init (void); 00153 void scheduler_tasks (void); 00154 void scheduler (void); 00155 void scheduler_empty_fct (void); 00156 00157 #ifndef SCHEDULER_TYPE 00158 #error You must define SCHEDULER_TYPE in config.h file 00159 #elif SCHEDULER_TYPE == SCHEDULER_FREE 00160 #define Scheduler_set_tick_flag() 00161 #define Scheduler_reset_tick_flag() 00162 #elif SCHEDULER_TYPE == SCHEDULER_TIMED 00163 #define Scheduler_new_schedule() Wait_semaphore(scheduler_tick_flag) 00164 #define Scheduler_set_tick_flag() (scheduler_tick_flag = TRUE) 00165 #define Scheduler_reset_tick_flag() (scheduler_tick_flag = FALSE) 00166 #elif SCHEDULER_TYPE == SCHEDULER_TASK 00167 #define Scheduler_call_next_task() Wait_semaphore(scheduler_tick_flag) 00168 #define Scheduler_set_tick_flag() (scheduler_tick_flag = TRUE) 00169 #define Scheduler_reset_tick_flag() (scheduler_tick_flag = FALSE) 00170 #elif SCHEDULER_TYPE == SCHEDULER_CUSTOM 00171 #error Make sure you have setup macro/fct Scheduler_new_schedule & Scheduler_call_next_task 00172 #define Scheduler_set_tick_flag() (scheduler_tick_flag = TRUE) 00173 #define Scheduler_reset_tick_flag() (scheduler_tick_flag = FALSE) 00174 #endif 00175 00176 #ifndef Scheduler_call_next_task 00177 #define Scheduler_call_next_task() 00178 #endif 00179 #ifndef Scheduler_new_schedule 00180 #define Scheduler_new_schedule() 00181 #endif 00182 #ifndef Scheduler_call_next_init 00183 #define Scheduler_call_next_init() 00184 #endif 00185 00186 #endif 00187

Generated on Mon Apr 10 17:23:30 2006 for Atmel by doxygen 1.3.7