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