chokchai Hantanong
/
RtosTest
LED Fork
Fork of RtosTest by
scmRTOS/Common/scmRTOS_defs.h
- Committer:
- mbed714
- Date:
- 2010-09-21
- Revision:
- 0:331db0b44b67
File content as of revision 0:331db0b44b67:
//****************************************************************************** //* //* FULLNAME: Single-Chip Microcontroller Real-Time Operating System //* //* NICKNAME: scmRTOS //* //* PURPOSE: Macros And Common Definitions //* //* Version: 3.10 //* //* $Revision: 256 $ //* $Date:: 2010-01-22 #$ //* //* Copyright (c) 2003-2010, Harry E. Zhurov //* //* Permission is hereby granted, free of charge, to any person //* obtaining a copy of this software and associated documentation //* files (the "Software"), to deal in the Software without restriction, //* including without limitation the rights to use, copy, modify, merge, //* publish, distribute, sublicense, and/or sell copies of the Software, //* and to permit persons to whom the Software is furnished to do so, //* subject to the following conditions: //* //* The above copyright notice and this permission notice shall be included //* in all copies or substantial portions of the Software. //* //* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, //* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF //* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. //* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY //* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, //* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH //* THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. //* //* ================================================================= //* See http://scmrtos.sourceforge.net for documentation, latest //* information, license and contact details. //* ================================================================= //* //****************************************************************************** #ifndef scmRTOS_DEFS_H #define scmRTOS_DEFS_H #include <commdefs.h> //------------------------------------------------------------------------------ //----------------------------------------------------------------------------- // // /// Macro for Channel Type definition // // #define DefineChannel(Name, Capacity) \ class Name : public OS::TChannel \ { \ public: \ Name() : OS::TChannel(buf, sizeof(buf)) { } \ \ private: \ byte buf[Capacity]; \ \ } //----------------------------------------------------------------------------- // // Check CONFIG Macro Definitions // // //----------------- scmRTOS_SYSTIMER_NEST_INTS_ENABLE ------------------------- #ifndef scmRTOS_SYSTIMER_NEST_INTS_ENABLE #error "Error: Config macro scmRTOS_SYSTIMER_NEST_INTS_ENABLE must be defined!" #endif #if (scmRTOS_SYSTIMER_NEST_INTS_ENABLE < 0) || (scmRTOS_SYSTIMER_NEST_INTS_ENABLE > 1) #error "Error: scmRTOS_SYSTIMER_NEST_INTS_ENABLE must have values 0 or 1 only!" #endif //----------------- scmRTOS_SYSTEM_TICKS_ENABLE ------------------------------- #ifndef scmRTOS_SYSTEM_TICKS_ENABLE #error "Error: Config macro scmRTOS_SYSTEM_TICKS_ENABLE must be defined!" #endif #if (scmRTOS_SYSTEM_TICKS_ENABLE < 0) || (scmRTOS_SYSTEM_TICKS_ENABLE > 1) #error "Error: scmRTOS_SYSTEM_TICKS_ENABLE must have values 0 or 1 only!" #endif //----------------- scmRTOS_SYSTIMER_HOOK_ENABLE ------------------------------ #ifndef scmRTOS_SYSTIMER_HOOK_ENABLE #error "Error: Config macro scmRTOS_SYSTIMER_HOOK_ENABLE must be defined!" #endif #if (scmRTOS_SYSTIMER_HOOK_ENABLE < 0) || (scmRTOS_SYSTIMER_HOOK_ENABLE > 1) #error "Error: scmRTOS_SYSTIMER_HOOK_ENABLE must have values 0 or 1 only!" #endif //-------------- scmRTOS_CONTEXT_SWITCH_USER_HOOK_ENABLE ---------------------- #ifndef scmRTOS_CONTEXT_SWITCH_USER_HOOK_ENABLE #error "Error: Config macro scmRTOS_CONTEXT_SWITCH_USER_HOOK_ENABLE must be defined!" #endif #if (scmRTOS_CONTEXT_SWITCH_USER_HOOK_ENABLE < 0) || (scmRTOS_CONTEXT_SWITCH_USER_HOOK_ENABLE > 1) #error "Error: scmRTOS_CONTEXT_SWITCH_USER_HOOK_ENABLE must have values 0 or 1 only!" #endif //----------------- scmRTOS_IDLE_HOOK_ENABLE ---------------------------------- #ifndef scmRTOS_IDLE_HOOK_ENABLE #error "Error: Config macro scmRTOS_IDLE_HOOK_ENABLE must be defined!" #endif #if (scmRTOS_IDLE_HOOK_ENABLE < 0) || (scmRTOS_IDLE_HOOK_ENABLE > 1) #error "Error: scmRTOS_IDLE_HOOK_ENABLE must have values 0 or 1 only!" #endif //----------------- scmRTOS_CONTEXT_SWITCH_SCHEME ----------------------------- #ifndef scmRTOS_CONTEXT_SWITCH_SCHEME #error "Error: Config macro scmRTOS_CONTEXT_SWITCH_SCHEME must be defined!" #endif #if (scmRTOS_CONTEXT_SWITCH_SCHEME < 0) || (scmRTOS_CONTEXT_SWITCH_SCHEME > 1) #error "Error: scmRTOS_CONTEXT_SWITCH_SCHEME must have values 0 or 1 only!" #endif //----------------- scmRTOS_PRIORITY_ORDER ------------------------------------ #ifndef scmRTOS_PRIORITY_ORDER #error "Error: Config macro scmRTOS_PRIORITY_ORDER must be defined!" #endif #if (scmRTOS_PRIORITY_ORDER < 0) || (scmRTOS_PRIORITY_ORDER > 1) #error "Error: scmRTOS_PRIORITY_ORDER must have values 0 or 1 only!" #endif //----------------- User Hooks inlining ------------------------------------ #ifndef INLINE_SYS_TIMER_HOOK #define INLINE_SYS_TIMER_HOOK #endif #ifndef INLINE_CONTEXT_SWITCH_HOOK #define INLINE_CONTEXT_SWITCH_HOOK #endif //----------------------------------------------------------------------------- // /// Priority and process map type definitions // // namespace OS { #if scmRTOS_PROCESS_COUNT < 8 typedef byte TProcessMap; #elif scmRTOS_PROCESS_COUNT < 16 typedef word TProcessMap; #else typedef dword TProcessMap; #endif //------------------------------------------------------ #if scmRTOS_PRIORITY_ORDER == 0 enum TPriority { #if scmRTOS_PROCESS_COUNT > 0 pr0, #endif #if scmRTOS_PROCESS_COUNT > 1 pr1, #endif #if scmRTOS_PROCESS_COUNT > 2 pr2, #endif #if scmRTOS_PROCESS_COUNT > 3 pr3, #endif #if scmRTOS_PROCESS_COUNT > 4 pr4, #endif #if scmRTOS_PROCESS_COUNT > 5 pr5, #endif #if scmRTOS_PROCESS_COUNT > 6 pr6, #endif #if scmRTOS_PROCESS_COUNT > 7 pr7, #endif #if scmRTOS_PROCESS_COUNT > 8 pr8, #endif #if scmRTOS_PROCESS_COUNT > 9 pr9, #endif #if scmRTOS_PROCESS_COUNT > 10 pr10, #endif #if scmRTOS_PROCESS_COUNT > 11 pr11, #endif #if scmRTOS_PROCESS_COUNT > 12 pr12, #endif #if scmRTOS_PROCESS_COUNT > 13 pr13, #endif #if scmRTOS_PROCESS_COUNT > 14 pr14, #endif #if scmRTOS_PROCESS_COUNT > 15 pr15, #endif #if scmRTOS_PROCESS_COUNT > 16 pr16, #endif #if scmRTOS_PROCESS_COUNT > 17 pr17, #endif #if scmRTOS_PROCESS_COUNT > 18 pr18, #endif #if scmRTOS_PROCESS_COUNT > 19 pr19, #endif #if scmRTOS_PROCESS_COUNT > 20 pr20, #endif #if scmRTOS_PROCESS_COUNT > 21 pr21, #endif #if scmRTOS_PROCESS_COUNT > 22 pr22, #endif #if scmRTOS_PROCESS_COUNT > 23 pr23, #endif #if scmRTOS_PROCESS_COUNT > 24 pr24, #endif #if scmRTOS_PROCESS_COUNT > 25 pr25, #endif #if scmRTOS_PROCESS_COUNT > 26 pr26, #endif #if scmRTOS_PROCESS_COUNT > 27 pr27, #endif #if scmRTOS_PROCESS_COUNT > 28 pr28, #endif #if scmRTOS_PROCESS_COUNT > 29 pr29, #endif #if scmRTOS_PROCESS_COUNT > 30 pr30, #endif #if (scmRTOS_PROCESS_COUNT > 31) || (scmRTOS_PROCESS_COUNT < 1) #error "Invalid Process Count specification! Must be from 1 to 31." #endif prIDLE }; #else // scmRTOS_PRIORITY_ORDER == 1 enum TPriority { prIDLE, #if scmRTOS_PROCESS_COUNT > 30 pr30, #endif #if scmRTOS_PROCESS_COUNT > 29 pr29, #endif #if scmRTOS_PROCESS_COUNT > 28 pr28, #endif #if scmRTOS_PROCESS_COUNT > 27 pr27, #endif #if scmRTOS_PROCESS_COUNT > 26 pr26, #endif #if scmRTOS_PROCESS_COUNT > 25 pr25, #endif #if scmRTOS_PROCESS_COUNT > 24 pr24, #endif #if scmRTOS_PROCESS_COUNT > 23 pr23, #endif #if scmRTOS_PROCESS_COUNT > 22 pr22, #endif #if scmRTOS_PROCESS_COUNT > 21 pr21, #endif #if scmRTOS_PROCESS_COUNT > 20 pr20, #endif #if scmRTOS_PROCESS_COUNT > 19 pr19, #endif #if scmRTOS_PROCESS_COUNT > 18 pr18, #endif #if scmRTOS_PROCESS_COUNT > 17 pr17, #endif #if scmRTOS_PROCESS_COUNT > 16 pr16, #endif #if scmRTOS_PROCESS_COUNT > 15 pr15, #endif #if scmRTOS_PROCESS_COUNT > 14 pr14, #endif #if scmRTOS_PROCESS_COUNT > 13 pr13, #endif #if scmRTOS_PROCESS_COUNT > 12 pr12, #endif #if scmRTOS_PROCESS_COUNT > 11 pr11, #endif #if scmRTOS_PROCESS_COUNT > 10 pr10, #endif #if scmRTOS_PROCESS_COUNT > 9 pr9, #endif #if scmRTOS_PROCESS_COUNT > 8 pr8, #endif #if scmRTOS_PROCESS_COUNT > 7 pr7, #endif #if scmRTOS_PROCESS_COUNT > 6 pr6, #endif #if scmRTOS_PROCESS_COUNT > 5 pr5, #endif #if scmRTOS_PROCESS_COUNT > 4 pr4, #endif #if scmRTOS_PROCESS_COUNT > 3 pr3, #endif #if scmRTOS_PROCESS_COUNT > 2 pr2, #endif #if scmRTOS_PROCESS_COUNT > 1 pr1, #endif #if scmRTOS_PROCESS_COUNT > 0 pr0 #endif #if (scmRTOS_PROCESS_COUNT > 31) || (scmRTOS_PROCESS_COUNT < 1) #error "Invalid Process Count specification! Must be from 1 to 31." #endif }; #endif //scmRTOS_PRIORITY_ORDER } //----------------------------------------------------------------------------- // // Process's constructor inlining control: default behaviour // #ifndef INLINE_PROCESS_CTOR #define INLINE_PROCESS_CTOR #endif //----------------------------------------------------------------------------- #endif // scmRTOS_DEFS_H