Test of C++ Sockets API with Ethernet

Dependencies:   mbed EthernetInterface

Committer:
donatien
Date:
Fri Jun 22 16:28:13 2012 +0000
Revision:
2:77ba190e8258
Parent:
0:81648c034b7a
EthernetInterface up

Who changed what in which revision?

UserRevisionLine numberNew contents of line
donatien 0:81648c034b7a 1 /*----------------------------------------------------------------------------
donatien 0:81648c034b7a 2 * RL-ARM - RTX
donatien 0:81648c034b7a 3 *----------------------------------------------------------------------------
donatien 0:81648c034b7a 4 * Name: RTX_Conf_CM.C
donatien 0:81648c034b7a 5 * Purpose: Configuration of CMSIS RTX Kernel for Cortex-M
donatien 0:81648c034b7a 6 * Rev.: V4.20
donatien 0:81648c034b7a 7 *----------------------------------------------------------------------------
donatien 0:81648c034b7a 8 *
donatien 0:81648c034b7a 9 * Copyright (c) 1999-2009 KEIL, 2009-2012 ARM Germany GmbH
donatien 0:81648c034b7a 10 * All rights reserved.
donatien 0:81648c034b7a 11 * Redistribution and use in source and binary forms, with or without
donatien 0:81648c034b7a 12 * modification, are permitted provided that the following conditions are met:
donatien 0:81648c034b7a 13 * - Redistributions of source code must retain the above copyright
donatien 0:81648c034b7a 14 * notice, this list of conditions and the following disclaimer.
donatien 0:81648c034b7a 15 * - Redistributions in binary form must reproduce the above copyright
donatien 0:81648c034b7a 16 * notice, this list of conditions and the following disclaimer in the
donatien 0:81648c034b7a 17 * documentation and/or other materials provided with the distribution.
donatien 0:81648c034b7a 18 * - Neither the name of ARM nor the names of its contributors may be used
donatien 0:81648c034b7a 19 * to endorse or promote products derived from this software without
donatien 0:81648c034b7a 20 * specific prior written permission.
donatien 0:81648c034b7a 21 *
donatien 0:81648c034b7a 22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
donatien 0:81648c034b7a 23 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
donatien 0:81648c034b7a 24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
donatien 0:81648c034b7a 25 * ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
donatien 0:81648c034b7a 26 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
donatien 0:81648c034b7a 27 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
donatien 0:81648c034b7a 28 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
donatien 0:81648c034b7a 29 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
donatien 0:81648c034b7a 30 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
donatien 0:81648c034b7a 31 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
donatien 0:81648c034b7a 32 * POSSIBILITY OF SUCH DAMAGE.
donatien 0:81648c034b7a 33 *---------------------------------------------------------------------------*/
donatien 0:81648c034b7a 34
donatien 0:81648c034b7a 35 #include "cmsis_os.h"
donatien 0:81648c034b7a 36
donatien 0:81648c034b7a 37 #ifdef __cplusplus
donatien 0:81648c034b7a 38 extern "C" {
donatien 0:81648c034b7a 39 #endif
donatien 0:81648c034b7a 40
donatien 0:81648c034b7a 41 /*----------------------------------------------------------------------------
donatien 0:81648c034b7a 42 * RTX User configuration part BEGIN
donatien 0:81648c034b7a 43 *---------------------------------------------------------------------------*/
donatien 0:81648c034b7a 44
donatien 0:81648c034b7a 45 //-------- <<< Use Configuration Wizard in Context Menu >>> -----------------
donatien 0:81648c034b7a 46 //
donatien 0:81648c034b7a 47 // <h>Thread Configuration
donatien 0:81648c034b7a 48 // =======================
donatien 0:81648c034b7a 49 // <o>Number of concurrent running threads <0-250>
donatien 0:81648c034b7a 50 // <i> Defines max. number of threads that will run at the same time.
donatien 0:81648c034b7a 51 // counting "main", but not counting "osTimerThread"
donatien 0:81648c034b7a 52 // <i> Default: 6
donatien 0:81648c034b7a 53 #ifndef OS_TASKCNT
donatien 0:81648c034b7a 54 # if defined(TARGET_LPC1768) || defined(TARGET_LPC2368)
donatien 0:81648c034b7a 55 # define OS_TASKCNT 7
donatien 0:81648c034b7a 56 # elif defined(TARGET_LPC11U24)
donatien 0:81648c034b7a 57 # define OS_TASKCNT 3
donatien 0:81648c034b7a 58 # endif
donatien 0:81648c034b7a 59 #endif
donatien 0:81648c034b7a 60
donatien 0:81648c034b7a 61 // <o>Number of threads with user-provided stack size <0-250>
donatien 0:81648c034b7a 62 // The stack of "main" and "osTimerThread" are calculated separately
donatien 0:81648c034b7a 63 // <i> Defines the number of threads with user-provided stack size.
donatien 0:81648c034b7a 64 // <i> Default: 0
donatien 0:81648c034b7a 65 #ifndef OS_PRIVCNT
donatien 0:81648c034b7a 66 #define OS_PRIVCNT (OS_TASKCNT - 1)
donatien 0:81648c034b7a 67 #endif
donatien 0:81648c034b7a 68
donatien 0:81648c034b7a 69 // <o>Default Thread stack size [bytes] <64-4096:8><#/4>
donatien 0:81648c034b7a 70 // <i> Defines default stack size for threads.
donatien 0:81648c034b7a 71 // <i> Default: 200
donatien 0:81648c034b7a 72 #ifndef OS_STKSIZE
donatien 0:81648c034b7a 73 #define OS_STKSIZE WORDS_STACK_SIZE
donatien 0:81648c034b7a 74 #endif
donatien 0:81648c034b7a 75
donatien 0:81648c034b7a 76 // <o>Main Thread stack size [bytes] <64-4096:8><#/4>
donatien 0:81648c034b7a 77 // <i> Defines stack size for main thread.
donatien 0:81648c034b7a 78 // <i> Default: 200
donatien 0:81648c034b7a 79 #ifndef OS_MAINSTKSIZE
donatien 0:81648c034b7a 80 //Donatien: default allocated stack size is a bit too low
donatien 0:81648c034b7a 81 #define OS_MAINSTKSIZE 512
donatien 0:81648c034b7a 82 #endif
donatien 0:81648c034b7a 83
donatien 0:81648c034b7a 84 // <o>Total stack size [bytes] for threads with user-provided stack size <0-4096:8><#/4>
donatien 0:81648c034b7a 85 // <i> Defines the combined stack size for threads with user-provided stack size.
donatien 0:81648c034b7a 86 // <i> Default: 0
donatien 0:81648c034b7a 87 #ifndef OS_PRIVSTKSIZE
donatien 0:81648c034b7a 88 //Donatien: default allocated stack size is a bit too low
donatien 0:81648c034b7a 89 # if defined(TARGET_LPC1768) || defined(TARGET_LPC2368)
donatien 0:81648c034b7a 90 # define OS_PRIVSTKSIZE 3000
donatien 0:81648c034b7a 91 # elif defined(TARGET_LPC11U24)
donatien 0:81648c034b7a 92 # define OS_PRIVSTKSIZE 512
donatien 0:81648c034b7a 93 # endif
donatien 0:81648c034b7a 94 #endif
donatien 0:81648c034b7a 95
donatien 0:81648c034b7a 96 // <q>Check for stack overflow
donatien 0:81648c034b7a 97 // ===========================
donatien 0:81648c034b7a 98 // <i> Includes the stack checking code for stack overflow.
donatien 0:81648c034b7a 99 // <i> Note that additional code reduces the Kernel performance.
donatien 0:81648c034b7a 100 #ifndef OS_STKCHECK
donatien 0:81648c034b7a 101 #define OS_STKCHECK 1
donatien 0:81648c034b7a 102 #endif
donatien 0:81648c034b7a 103
donatien 0:81648c034b7a 104 // <q>Run in privileged mode
donatien 0:81648c034b7a 105 // =========================
donatien 0:81648c034b7a 106 // <i> Runs all Threads in privileged mode.
donatien 0:81648c034b7a 107 // <i> Default: Unprivileged
donatien 0:81648c034b7a 108 #ifndef OS_RUNPRIV
donatien 0:81648c034b7a 109 #define OS_RUNPRIV 1
donatien 0:81648c034b7a 110 #endif
donatien 0:81648c034b7a 111
donatien 0:81648c034b7a 112 // </h>
donatien 0:81648c034b7a 113 // <h>SysTick Timer Configuration
donatien 0:81648c034b7a 114 // ==============================
donatien 0:81648c034b7a 115 //
donatien 0:81648c034b7a 116 // <o>Timer clock value [Hz] <1-1000000000>
donatien 0:81648c034b7a 117 // <i> Defines the timer clock value.
donatien 0:81648c034b7a 118 // <i> Default: 6000000 (6MHz)
donatien 0:81648c034b7a 119 #ifndef OS_CLOCK
donatien 0:81648c034b7a 120 # if defined(TARGET_LPC1768) || defined(TARGET_LPC2368)
donatien 0:81648c034b7a 121 # define OS_CLOCK 96000000
donatien 0:81648c034b7a 122 # elif defined(TARGET_LPC11U24)
donatien 0:81648c034b7a 123 # define OS_CLOCK 48000000
donatien 0:81648c034b7a 124 # endif
donatien 0:81648c034b7a 125 #endif
donatien 0:81648c034b7a 126
donatien 0:81648c034b7a 127 // <o>Timer tick value [us] <1-1000000>
donatien 0:81648c034b7a 128 // <i> Defines the timer tick value.
donatien 0:81648c034b7a 129 // <i> Default: 1000 (1ms)
donatien 0:81648c034b7a 130 #ifndef OS_TICK
donatien 0:81648c034b7a 131 #define OS_TICK 1000
donatien 0:81648c034b7a 132 #endif
donatien 0:81648c034b7a 133
donatien 0:81648c034b7a 134 // </h>
donatien 0:81648c034b7a 135
donatien 0:81648c034b7a 136 // <h>System Configuration
donatien 0:81648c034b7a 137 // =======================
donatien 0:81648c034b7a 138 //
donatien 0:81648c034b7a 139 // <e>Round-Robin Thread switching
donatien 0:81648c034b7a 140 // ===============================
donatien 0:81648c034b7a 141 //
donatien 0:81648c034b7a 142 // <i> Enables Round-Robin Thread switching.
donatien 0:81648c034b7a 143 #ifndef OS_ROBIN
donatien 0:81648c034b7a 144 #define OS_ROBIN 1
donatien 0:81648c034b7a 145 #endif
donatien 0:81648c034b7a 146
donatien 0:81648c034b7a 147 // <o>Round-Robin Timeout [ticks] <1-1000>
donatien 0:81648c034b7a 148 // <i> Defines how long a thread will execute before a thread switch.
donatien 0:81648c034b7a 149 // <i> Default: 5
donatien 0:81648c034b7a 150 #ifndef OS_ROBINTOUT
donatien 0:81648c034b7a 151 #define OS_ROBINTOUT 5
donatien 0:81648c034b7a 152 #endif
donatien 0:81648c034b7a 153
donatien 0:81648c034b7a 154 // </e>
donatien 0:81648c034b7a 155
donatien 0:81648c034b7a 156 // <e>User Timers
donatien 0:81648c034b7a 157 // ==============
donatien 0:81648c034b7a 158 // <i> Enables user Timers
donatien 0:81648c034b7a 159 #ifndef OS_TIMERS
donatien 0:81648c034b7a 160 #define OS_TIMERS 1
donatien 0:81648c034b7a 161 #endif
donatien 0:81648c034b7a 162
donatien 0:81648c034b7a 163 // <o>Timer Thread Priority
donatien 0:81648c034b7a 164 // <1=> Low
donatien 0:81648c034b7a 165 // <2=> Below Normal <3=> Normal
donatien 0:81648c034b7a 166 // <4=> Above Normal
donatien 0:81648c034b7a 167 // <5=> High
donatien 0:81648c034b7a 168 // <6=> Realtime
donatien 0:81648c034b7a 169 // <i> Defines priority for Timer Thread
donatien 0:81648c034b7a 170 // <i> Default: High
donatien 0:81648c034b7a 171 #ifndef OS_TIMERPRIO
donatien 0:81648c034b7a 172 #define OS_TIMERPRIO 5
donatien 0:81648c034b7a 173 #endif
donatien 0:81648c034b7a 174
donatien 0:81648c034b7a 175 // <o>Timer Thread stack size [bytes] <64-4096:8><#/4>
donatien 0:81648c034b7a 176 // <i> Defines stack size for Timer thread.
donatien 0:81648c034b7a 177 // <i> Default: 200
donatien 0:81648c034b7a 178 #ifndef OS_TIMERSTKSZ
donatien 0:81648c034b7a 179 #define OS_TIMERSTKSZ WORDS_STACK_SIZE
donatien 0:81648c034b7a 180 #endif
donatien 0:81648c034b7a 181
donatien 0:81648c034b7a 182 // <o>Timer Callback Queue size <1-32>
donatien 0:81648c034b7a 183 // <i> Defines number of concurrent callbacks that will be queued.
donatien 0:81648c034b7a 184 // <i> Default: 4
donatien 0:81648c034b7a 185 #ifndef OS_TIMERCBQSZ
donatien 0:81648c034b7a 186 #define OS_TIMERCBQS 4
donatien 0:81648c034b7a 187 #endif
donatien 0:81648c034b7a 188
donatien 0:81648c034b7a 189 // </e>
donatien 0:81648c034b7a 190
donatien 0:81648c034b7a 191 // <o>ISR FIFO Queue size<4=> 4 entries <8=> 8 entries
donatien 0:81648c034b7a 192 // <12=> 12 entries <16=> 16 entries
donatien 0:81648c034b7a 193 // <24=> 24 entries <32=> 32 entries
donatien 0:81648c034b7a 194 // <48=> 48 entries <64=> 64 entries
donatien 0:81648c034b7a 195 // <96=> 96 entries
donatien 0:81648c034b7a 196 // <i> ISR functions store requests to this buffer,
donatien 0:81648c034b7a 197 // <i> when they are called from the iterrupt handler.
donatien 0:81648c034b7a 198 // <i> Default: 16 entries
donatien 0:81648c034b7a 199 #ifndef OS_FIFOSZ
donatien 0:81648c034b7a 200 #define OS_FIFOSZ 16
donatien 0:81648c034b7a 201 #endif
donatien 0:81648c034b7a 202
donatien 0:81648c034b7a 203 // </h>
donatien 0:81648c034b7a 204
donatien 0:81648c034b7a 205 //------------- <<< end of configuration section >>> -----------------------
donatien 0:81648c034b7a 206
donatien 0:81648c034b7a 207 // Standard library system mutexes
donatien 0:81648c034b7a 208 // ===============================
donatien 0:81648c034b7a 209 // Define max. number system mutexes that are used to protect
donatien 0:81648c034b7a 210 // the arm standard runtime library. For microlib they are not used.
donatien 0:81648c034b7a 211 #ifndef OS_MUTEXCNT
donatien 0:81648c034b7a 212 #define OS_MUTEXCNT 8
donatien 0:81648c034b7a 213 #endif
donatien 0:81648c034b7a 214
donatien 0:81648c034b7a 215 /*----------------------------------------------------------------------------
donatien 0:81648c034b7a 216 * RTX User configuration part END
donatien 0:81648c034b7a 217 *---------------------------------------------------------------------------*/
donatien 0:81648c034b7a 218 #define OS_TRV ((uint32_t)(((double)OS_CLOCK*(double)OS_TICK)/1E6)-1)
donatien 0:81648c034b7a 219
donatien 0:81648c034b7a 220
donatien 0:81648c034b7a 221 /*----------------------------------------------------------------------------
donatien 0:81648c034b7a 222 * OS Idle daemon
donatien 0:81648c034b7a 223 *---------------------------------------------------------------------------*/
donatien 0:81648c034b7a 224 void os_idle_demon (void) {
donatien 0:81648c034b7a 225 /* The idle demon is a system thread, running when no other thread is */
donatien 0:81648c034b7a 226 /* ready to run. */
donatien 0:81648c034b7a 227
donatien 0:81648c034b7a 228 /* Sleep: ideally, we should put the chip to sleep.
donatien 0:81648c034b7a 229 Unfortunately, this usually requires disconnecting the interface chip (debugger).
donatien 0:81648c034b7a 230 This can be done, but it would break the local file system.
donatien 0:81648c034b7a 231 */
donatien 0:81648c034b7a 232 for (;;) {
donatien 0:81648c034b7a 233 // sleep();
donatien 0:81648c034b7a 234 }
donatien 0:81648c034b7a 235 }
donatien 0:81648c034b7a 236
donatien 0:81648c034b7a 237 /*----------------------------------------------------------------------------
donatien 0:81648c034b7a 238 * RTX Errors
donatien 0:81648c034b7a 239 *---------------------------------------------------------------------------*/
donatien 0:81648c034b7a 240 extern void mbed_die(void);
donatien 0:81648c034b7a 241
donatien 0:81648c034b7a 242 void os_error (uint32_t err_code) {
donatien 0:81648c034b7a 243 /* This function is called when a runtime error is detected. Parameter */
donatien 0:81648c034b7a 244 /* 'err_code' holds the runtime error code (defined in RTX_Config.h). */
donatien 0:81648c034b7a 245 mbed_die();
donatien 0:81648c034b7a 246 }
donatien 0:81648c034b7a 247
donatien 0:81648c034b7a 248 void sysThreadError(osStatus status) {
donatien 0:81648c034b7a 249 if (status != osOK) {
donatien 0:81648c034b7a 250 mbed_die();
donatien 0:81648c034b7a 251 }
donatien 0:81648c034b7a 252 }
donatien 0:81648c034b7a 253
donatien 0:81648c034b7a 254 /*----------------------------------------------------------------------------
donatien 0:81648c034b7a 255 * RTX Configuration Functions
donatien 0:81648c034b7a 256 *---------------------------------------------------------------------------*/
donatien 0:81648c034b7a 257
donatien 0:81648c034b7a 258 #include "RTX_CM_lib.h"
donatien 0:81648c034b7a 259
donatien 0:81648c034b7a 260 #ifdef __cplusplus
donatien 0:81648c034b7a 261 }
donatien 0:81648c034b7a 262 #endif
donatien 0:81648c034b7a 263
donatien 0:81648c034b7a 264 /*----------------------------------------------------------------------------
donatien 0:81648c034b7a 265 * end of file
donatien 0:81648c034b7a 266 *---------------------------------------------------------------------------*/