Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members | Related Pages

boot/config.h

Go to the documentation of this file.
00001 
00006 /*
00007  *  The contents of this file are subject to the Mozilla Public License
00008  *  Version 1.0 (the "License"); you may not use this file except in
00009  *  compliance with the License. You may obtain a copy of the License at
00010  *  http://www.mozilla.org/MPL/
00011  *
00012  *  Software distributed under the License is distributed on an "AS IS"
00013  *  basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
00014  *  License for the specific language governing rights and limitations
00015  *  under the License.
00016  *
00017  *  The Original Code is legOS code, released October 17, 1999.
00018  *
00019  *  The Initial Developer of the Original Code is Markus L. Noga.
00020  *  Portions created by Markus L. Noga are Copyright (C) 1999
00021  *  Markus L. Noga. All Rights Reserved.
00022  *
00023  *  Contributor(s): Markus L. Noga <markus@noga.de>
00024  */
00025 
00026 #ifndef __config_h__
00027 #define __config_h__
00028 
00029 // compilation environment
00030 //
00031 // #define CONF_RCX_COMPILER              //!< a special RCX compiler is used.
00032 
00033 // core system services
00034 //
00035 #define CONF_TIME                       
00036 #define CONF_MM                         
00037 #define CONF_TM                         
00038 #define CONF_AUTOSHUTOFF                
00039 //#define CONF_TM_DEBUG                   
00040 #define CONF_SETJMP                     
00041 #define CONF_ATOMIC                     
00042 #define CONF_SEMAPHORES                 
00043 #define CONF_CRITICAL_SECTIONS          
00044 #define CONF_PROGRAM                    
00045 #define CONF_VIS                        
00046 //#define CONF_ROM_MEMCPY                 
00047 
00048 // networking services
00049 //
00050 #define CONF_LNP                        
00051 // #define CONF_LNP_FAST                  
00052 // Can override with compile-time option
00053 #if !defined(CONF_LNP_HOSTADDR)
00054 #define CONF_LNP_HOSTADDR 0             
00055 #endif
00056 
00057 // 16 nodes x 16 ports (affects size of lnp_addressing_handler[] table)
00058 #define CONF_LNP_HOSTMASK 0xf0          
00059 
00060 // remote control services
00061 //
00062 #define CONF_RCX_PROTOCOL               
00063 #define CONF_LR_HANDLER                 
00064 #define CONF_RCX_MESSAGE                
00065 
00066 // drivers
00067 //
00068 #define CONF_DKEY                       
00069 #define CONF_BATTERY_INDICATOR          
00070 #define CONF_LCD_REFRESH                
00071 #define CONF_CONIO                      
00072 #define CONF_ASCII                      
00073 #define CONF_DSOUND                     
00074 #define CONF_ON_OFF_SOUND               
00075 #define CONF_DMOTOR                     
00076 // #define CONF_DMOTOR_HOLD               
00077 #define CONF_DSENSOR                    
00078 #define CONF_DSENSOR_ROTATION           
00079 //#define CONF_DSENSOR_VELOCITY           
00080 //#define CONF_DSENSOR_MUX                
00081 //#define CONF_DSENSOR_SWMUX              
00082 
00083 // dependencies
00084 //
00085 #if defined(CONF_ASCII) && !defined(CONF_CONIO)
00086 #error "Ascii needs console IO"
00087 #endif
00088 
00089 #if defined(CONF_DKEY) && !defined(CONF_TIME)
00090 #error "Key debouncing needs system time."
00091 #endif
00092 
00093 #if defined(CONF_TM) && !defined(CONF_TIME)
00094 #error "Task management needs system time."
00095 #endif
00096 
00097 #if defined(CONF_TM) && !defined(CONF_MM)
00098 #error "Task management needs memory management."
00099 #endif
00100 
00101 #if defined(CONF_TM) && !defined(CONF_ATOMIC)
00102 #error "Task management needs atomic counters for kernel lock"
00103 #endif
00104 
00105 #if defined(CONF_LNP) && defined(CONF_TM) && !defined(CONF_SEMAPHORES)
00106 #error "Tasksafe networking needs semaphores."
00107 #endif
00108 
00109 #if defined(CONF_SEMAPHORES) && !defined(CONF_ATOMIC)
00110 #error "Semphores need atomic counters"
00111 #endif
00112 
00113 #if defined(CONF_CRITICAL_SECTIONS) && !defined(CONF_ATOMIC)
00114 #error "Critical sections need atomic counters"
00115 #endif
00116 
00117 #if defined(CONF_RCX_PROTOCOL) && !defined(CONF_LNP)
00118 #error "RCX protocol needs networking."
00119 #endif
00120 
00121 #if defined(CONF_LR_HANDLER) && !defined(CONF_RCX_PROTOCOL)
00122 #error "Remote control handler needs remote control protocol."
00123 #endif
00124 
00125 #if defined(CONF_RCX_MESSAGE) && !defined(CONF_LNP)
00126 #error "Standard firmware message needs networking."
00127 #endif
00128 
00129 #if defined(CONF_LR_HANDLER) && !defined(CONF_TM)
00130 #error "Remote support needs task managment"
00131 #endif
00132 
00133 #if defined(CONF_PROGRAM) && (!defined(CONF_TM) || !defined(CONF_LNP) || !defined(CONF_DKEY) || !defined(CONF_ASCII))
00134 #error "Program support needs task management, networking, key debouncing, and ASCII."
00135 #endif
00136 
00137 #if defined(CONF_DSENSOR_ROTATION) && !defined(CONF_DSENSOR)
00138 #error "Rotation sensor needs general sensor code."
00139 #endif
00140 
00141 #if defined(CONF_DSENSOR_VELOCITY) && !defined(CONF_DSENSOR_ROTATION)
00142 #error "Velocity sensor needs rotation sensor code."
00143 #endif
00144 
00146 #define __TEXT_HI__  __attribute__ ((__section__ (".text.hi")))
00147 
00148 #endif // __config_h__

brickOS is released under the Mozilla Public License.
Original code copyright 1998-2002 by the authors.

Generated on Mon Feb 16 21:02:10 2004 for brickOS Kernel Developer by doxygen 1.3.5