FreeCalypso > hg > fc-magnetite
comparison src/cs/system/Main/create_RVtasks.c @ 98:134c5fe13e44
src/cs/system/Main: recompilable C sources added from leo2moko-debug
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Mon, 03 Oct 2016 23:42:19 +0000 |
parents | |
children | 3e16c8832c0e |
comparison
equal
deleted
inserted
replaced
97:ffa25a27fa27 | 98:134c5fe13e44 |
---|---|
1 /************************************************************************************* | |
2 * * | |
3 * Name create_RVtasks.c * | |
4 * * | |
5 * Function this file contains functions allowing tasks creation in * | |
6 * the Riviera environment * | |
7 * * | |
8 * Version 0.1 * | |
9 * * | |
10 * Date Modification * | |
11 * ------------------------------------ * | |
12 * 03 August 2000 Create * | |
13 * * | |
14 * Author Pascal Puel * | |
15 * * | |
16 * (C) Copyright 2000 by Texas Instruments Incorporated, All Rights Reserved * | |
17 * * | |
18 * --------------------------------------------------------------------------------- * | |
19 * * | |
20 * History: * | |
21 * * | |
22 * 10/18/2001 - Updated for R2D by Christophe Favergeon * | |
23 * 08/28/2002 - Clean-Up by Gerard Cauvy * | |
24 * * | |
25 ************************************************************************************/ | |
26 | |
27 #ifndef _WINDOWS | |
28 #include "rv.cfg" | |
29 #endif | |
30 | |
31 #include "rv/rv_general.h" | |
32 #include "rvf/rvf_api.h" | |
33 #include "rvm/rvm_api.h" | |
34 #include "rvm/rvm_use_id_list.h" | |
35 #include "rvt/rvt_gen.h" | |
36 //sys_types.h is necessary for function prototypes in buzzer.h | |
37 #include "sys_types.h" | |
38 #include "buzzer/buzzer.h" | |
39 #include "rv/rv_defined_swe.h" | |
40 #include "chipset.cfg" | |
41 | |
42 #ifndef _WINDOWS | |
43 # include "power/power.h" | |
44 #endif | |
45 | |
46 #include <stdio.h> | |
47 #include <string.h> | |
48 | |
49 | |
50 #define START_TASK_ID (MAX_RVF_TASKS-1) | |
51 #define RV_START_TASK_PRIO (249) | |
52 | |
53 T_RVT_USER_ID rv_trace_user_id = 0xff; | |
54 T_RVT_USER_ID etm_trace_user_id; | |
55 | |
56 extern void etm_receive(unsigned char *inbuf, unsigned short size); | |
57 | |
58 #ifdef MIXED_TRACE | |
59 T_RVT_USER_ID l23_trace_user_id; | |
60 extern void ext_processExtInput (T_RVT_BUFFER, UINT16); | |
61 #endif | |
62 | |
63 #ifdef RVM_RNET_BR_SWE | |
64 T_RVT_USER_ID rnet_trace_user_id; | |
65 extern void rnet_receive (UINT8 *inbuf, UINT16 size); | |
66 #endif | |
67 | |
68 #if (TEST==1) | |
69 | |
70 // The name that uniquely identifies the Memory Bank MUST be | |
71 // 'TEST1', whereas it might be used by some other software | |
72 // entity for testing purpose. | |
73 #define RVTEST_MENU_MB_NAME ("TEST1") | |
74 | |
75 // Memory requirements. | |
76 #define RVTEST_MENU_MB_SIZE (5000) | |
77 #define RVTEST_MENU_MB_WATERMARK (4000) | |
78 | |
79 extern void rv_test (UINT32 p); | |
80 #endif | |
81 | |
82 | |
83 /******************************************************************************* | |
84 ** | |
85 ** Function rvt_init_trace | |
86 ** | |
87 ** Description This function is called by the RV_START task to register | |
88 ** the Riviera Frame in the trace module | |
89 ** | |
90 ** Returns void | |
91 ** | |
92 *******************************************************************************/ | |
93 void rvt_init_trace (void) | |
94 { | |
95 rvt_register_id ("RV", &rv_trace_user_id, rvt_set_trace_level); | |
96 } | |
97 | |
98 #ifdef RVM_ETM_SWE | |
99 /******************************************************************************* | |
100 ** | |
101 ** Function etm_init_trace | |
102 ** | |
103 ** Description This function is called by the RV_START task to register | |
104 ** the ETM in the trace module | |
105 ** | |
106 ** Returns void | |
107 ** | |
108 *******************************************************************************/ | |
109 void etm_init_trace (void) | |
110 { | |
111 extern T_RVT_USER_ID tm_trace_user_id; | |
112 | |
113 rvt_register_id("TM", &etm_trace_user_id, etm_receive); | |
114 | |
115 #if (PSP_STANDALONE != 1) | |
116 tm_trace_user_id = etm_trace_user_id; // TML1 use the tm_trace_user_id | |
117 #endif | |
118 } | |
119 #endif | |
120 | |
121 #ifdef MIXED_TRACE | |
122 /******************************************************************************* | |
123 ** | |
124 ** Function l23_init_trace | |
125 ** | |
126 ** Description This function is called by the RV_START task to register | |
127 ** the Protocol Stack (Layers 2 & 3) in the trace module | |
128 ** | |
129 ** Returns void | |
130 ** | |
131 *******************************************************************************/ | |
132 void l23_init_trace (void) | |
133 { | |
134 rvt_register_id ("L23", &l23_trace_user_id, ext_processExtInput); | |
135 } | |
136 #endif | |
137 | |
138 #ifdef RVM_RNET_BR_SWE | |
139 /******************************************************************************* | |
140 ** | |
141 ** Function rnet_init_trace | |
142 ** | |
143 ** Description This function is called by the RV_START task to register | |
144 ** RNET in the trace module | |
145 ** | |
146 ** Returns void | |
147 ** | |
148 *******************************************************************************/ | |
149 void rnet_init_trace (void) | |
150 { | |
151 rvt_register_id ("RNET", &rnet_trace_user_id, rnet_receive); | |
152 } | |
153 #endif | |
154 | |
155 | |
156 /******************************************************************************* | |
157 ** | |
158 ** Function rv_start_swe_and_check | |
159 ** | |
160 ** Description This internal function is called by the stater task to | |
161 ** start the basic SWEs in the system and to check if | |
162 ** they started successfully or not. | |
163 ** | |
164 ** Returns void | |
165 ** | |
166 *******************************************************************************/ | |
167 #if (CHIPSET!=15) || (REMU==0) | |
168 BOOLEAN rv_start_swe_and_check (T_RVM_USE_ID swe_use_id, T_RVM_NAME swe_name) | |
169 { | |
170 T_RV_RETURN return_path = {0}; | |
171 T_RV_HDR *msg_ptr = NULL; | |
172 UINT16 rec_evt = 0; | |
173 char error_msg[150] = ""; | |
174 | |
175 /* temporary initialization of addr_id */ | |
176 return_path.addr_id = START_TASK_ID; | |
177 return_path.callback_func = NULL; | |
178 | |
179 /* attempt to initialize the required SWE */ | |
180 if (rvm_start_swe (swe_use_id, return_path) != RVM_OK) | |
181 { | |
182 sprintf (error_msg, | |
183 "create_RVtasks: Unable to start %s (0x%.8x). Error in rvm_start_swe", | |
184 (char *)swe_name, | |
185 swe_use_id); | |
186 rvf_send_trace ((char *)error_msg, | |
187 strlen((char *)error_msg), | |
188 NULL_PARAM, | |
189 RV_TRACE_LEVEL_WARNING, RVM_USE_ID); | |
190 return FALSE; | |
191 } | |
192 | |
193 /* | |
194 * wait for the SWE to be actually started. | |
195 * note that the 'RVM_EVT_TO_APPLI' notification is sent back | |
196 * once xxx_start () is invoked. | |
197 */ | |
198 while (rec_evt = rvf_evt_wait (START_TASK_ID, \ | |
199 0xFFFF, \ | |
200 0xFFFFFFFFL)) | |
201 { | |
202 if (rec_evt & ~RVF_TASK_MBOX_0_EVT_MASK) | |
203 { | |
204 sprintf (error_msg, | |
205 "create_RVtasks: Starting %s (0x%.8x). Event ", | |
206 (char *)swe_name, | |
207 swe_use_id); | |
208 rvf_send_trace ((char *)error_msg, | |
209 strlen((char *)error_msg), | |
210 (UINT32)rec_evt, | |
211 RV_TRACE_LEVEL_WARNING, | |
212 RVM_USE_ID); | |
213 } | |
214 if (rec_evt & RVF_TASK_MBOX_0_EVT_MASK) | |
215 { | |
216 if ((msg_ptr = (T_RV_HDR *) rvf_read_addr_mbox (START_TASK_ID, \ | |
217 RVF_TASK_MBOX_0)) == NULL) | |
218 { | |
219 sprintf (error_msg, | |
220 "create_RVtasks: Starting %s (0x%.8x). Message NULL", | |
221 (char *)swe_name, | |
222 swe_use_id); | |
223 rvf_send_trace ((char *)error_msg, | |
224 strlen((char *)error_msg), | |
225 NULL_PARAM, | |
226 RV_TRACE_LEVEL_WARNING, | |
227 RVM_USE_ID); | |
228 continue; | |
229 } | |
230 if (msg_ptr->msg_id != RVM_EVT_TO_APPLI) | |
231 { | |
232 sprintf (error_msg, | |
233 "create_RVtasks: Starting %s (0x%.8x). Message ID ", | |
234 (char *)swe_name, | |
235 swe_use_id); | |
236 rvf_send_trace ((char *)error_msg, | |
237 strlen((char *)error_msg), | |
238 msg_ptr->msg_id, | |
239 RV_TRACE_LEVEL_WARNING, | |
240 RVM_USE_ID); | |
241 rvf_free_buf (msg_ptr); | |
242 continue; | |
243 } | |
244 break; | |
245 } | |
246 } | |
247 switch (((T_RVM_APPLI_RESULT *)msg_ptr)->result) | |
248 { | |
249 case RVM_OK: | |
250 { | |
251 sprintf (error_msg, | |
252 "create_RVtasks: %s (0x%.8x) started", | |
253 (char *)swe_name, | |
254 swe_use_id); | |
255 rvf_send_trace ((char *)error_msg, | |
256 strlen ((char *)error_msg), | |
257 NULL_PARAM, | |
258 RV_TRACE_LEVEL_DEBUG_HIGH, | |
259 RVM_USE_ID); | |
260 rvf_free_buf (msg_ptr); | |
261 return TRUE; | |
262 } | |
263 case RVM_NOT_READY: | |
264 { | |
265 sprintf (error_msg, | |
266 "create_RVtasks: %s (0x%.8x) already started", | |
267 (char *)swe_name, | |
268 swe_use_id); | |
269 rvf_send_trace ((char *)error_msg, | |
270 strlen ((char *)error_msg), | |
271 NULL_PARAM, | |
272 RV_TRACE_LEVEL_DEBUG_MEDIUM, | |
273 RVM_USE_ID); | |
274 rvf_free_buf (msg_ptr); | |
275 return TRUE; | |
276 } | |
277 default: | |
278 { | |
279 break; | |
280 } | |
281 } | |
282 sprintf (error_msg, | |
283 "create_RVtasks: Unable to start %s (0x%.8x). Error ", | |
284 (char *)swe_name, | |
285 swe_use_id); | |
286 rvf_send_trace ((char *)error_msg, | |
287 strlen ((char *)error_msg), | |
288 ((T_RVM_APPLI_RESULT *)msg_ptr)->result, | |
289 RV_TRACE_LEVEL_WARNING, | |
290 RVM_USE_ID); | |
291 rvf_free_buf (msg_ptr); | |
292 return FALSE; | |
293 } | |
294 | |
295 #endif | |
296 /******************************************************************************* | |
297 ** | |
298 ** Function rv_start | |
299 ** | |
300 ** Description This function is called by the RV_START task. It starts the | |
301 ** Riviera environment and the TRACE task. This start must be | |
302 ** done after Application_initialize(). | |
303 ** | |
304 ** Returns void | |
305 ** | |
306 *******************************************************************************/ | |
307 void rv_start (void) | |
308 { | |
309 #if (TEST==1) | |
310 T_RVF_MB_ID mb_id = RVF_INVALID_MB_ID; | |
311 T_RVF_MB_PARAM mb_requirements = {0}; | |
312 volatile UINT16 result = 0; | |
313 #endif | |
314 | |
315 /* initialize the RVM and the RVF at the same time */ | |
316 #if (CHIPSET!=15) || (REMU==0) | |
317 rvm_start_environment (); | |
318 #endif | |
319 /* | |
320 ** Init trace module | |
321 */ | |
322 rvt_init_trace (); | |
323 #ifdef RVM_ETM_SWE | |
324 etm_init_trace (); | |
325 #endif | |
326 | |
327 #if (_GSM==1) | |
328 #ifdef MIXED_TRACE | |
329 l23_init_trace (); | |
330 #endif | |
331 #endif // if (_GSM==1) | |
332 | |
333 #ifdef RVM_RNET_BR_SWE | |
334 rnet_init_trace (); | |
335 #endif | |
336 | |
337 #if (REMU==1) | |
338 #ifdef RVM_LLS_SWE | |
339 /* initialize LLS SWE */ | |
340 lls_init(); | |
341 #endif | |
342 | |
343 #ifdef RVM_RNG_SWE | |
344 /* initialize RNG SWE */ | |
345 rng_init (); | |
346 #endif | |
347 #endif | |
348 | |
349 #if (CHIPSET!=15) || (REMU==0) | |
350 #ifdef RVM_RVT_SWE | |
351 /* initialize TRACE SWE */ | |
352 rv_start_swe_and_check (RVT_USE_ID, "RVT"); | |
353 #endif | |
354 | |
355 #ifdef RVM_I2C_SWE | |
356 rv_start_swe_and_check (I2C_USE_ID, "I2C"); | |
357 #endif | |
358 | |
359 #ifdef RVM_DMA_SWE | |
360 rv_start_swe_and_check (DMA_USE_ID, "DMA"); | |
361 #endif | |
362 | |
363 #ifdef RVM_DMG_SWE | |
364 rv_start_swe_and_check (DMG_USE_ID, "DMG"); | |
365 #endif | |
366 | |
367 #ifdef RVM_NAN_SWE | |
368 rv_start_swe_and_check (NAN_USE_ID, "NAN"); | |
369 #endif | |
370 | |
371 #ifdef RVM_MC_SWE | |
372 rv_start_swe_and_check (MC_USE_ID, "MC"); | |
373 #endif | |
374 | |
375 #ifdef RVM_FFS_SWE | |
376 /* initialize FFS SWE */ | |
377 rv_start_swe_and_check (FFS_USE_ID, "FFS"); | |
378 #endif | |
379 | |
380 #ifdef RVM_SPI_SWE | |
381 /* initialize SPI SWE */ | |
382 rv_start_swe_and_check (SPI_USE_ID, "SPI"); | |
383 #endif | |
384 | |
385 #ifdef RVM_PWR_SWE | |
386 /* initialize PWR SWE */ | |
387 rv_start_swe_and_check (PWR_USE_ID, "PWR"); | |
388 #endif | |
389 | |
390 #ifdef RVM_LCC_SWE | |
391 /* initialize LCC(PWR) SWE */ | |
392 rv_start_swe_and_check (LCC_USE_ID, "LCC"); | |
393 #endif | |
394 | |
395 #ifdef RVM_KPD_SWE | |
396 /* initialize KPD SWE */ | |
397 rv_start_swe_and_check (KPD_USE_ID, "KPD"); | |
398 #endif | |
399 | |
400 #ifdef RVM_DAR_SWE | |
401 /* initialize DAR SWE */ | |
402 rv_start_swe_and_check (DAR_USE_ID, "DAR"); | |
403 #endif | |
404 | |
405 #ifdef RVM_R2D_SWE | |
406 /* initialize R2D SWE */ | |
407 rv_start_swe_and_check (R2D_USE_ID, "R2D"); | |
408 #endif | |
409 | |
410 #ifdef RVM_LCD_SWE | |
411 /* initialize LCD SWE */ | |
412 rv_start_swe_and_check (LCD_USE_ID, "LCD"); | |
413 #endif | |
414 | |
415 | |
416 #ifdef RVM_ETM_SWE | |
417 /* initialize ETM SWE */ | |
418 rv_start_swe_and_check (ETM_USE_ID, "ETM"); | |
419 #endif | |
420 | |
421 #ifdef RVM_TTY_SWE | |
422 /* initialize TTY SWE */ | |
423 rv_start_swe_and_check (TTY_USE_ID, "TTY"); | |
424 #endif | |
425 | |
426 | |
427 #ifdef RVM_AUDIO_MAIN_SWE | |
428 /* initialize AUDIO SWE */ | |
429 rv_start_swe_and_check (AUDIO_USE_ID, "AUDIO"); | |
430 #endif | |
431 | |
432 #if (PSP_STANDALONE==0) | |
433 #ifdef RVM_AUDIO_BGD_SWE | |
434 /* initialize AUDIO BACKGROUND SWE */ | |
435 rv_start_swe_and_check (AUDIO_BGD_USE_ID, "AUDIO_BGD"); | |
436 #endif | |
437 #endif | |
438 | |
439 #if (PSP_STANDALONE==0) | |
440 #ifdef RVM_BAE_SWE | |
441 /* initialize BAE SWE */ | |
442 rv_start_swe_and_check (BAE_USE_ID, "BAE"); | |
443 #endif | |
444 #endif | |
445 | |
446 #ifdef RVM_AS_SWE | |
447 /* initialize AS (Audio Services) SWE */ | |
448 rv_start_swe_and_check (AS_USE_ID, "AS"); | |
449 #endif | |
450 | |
451 #if (PSP_STANDALONE==0) | |
452 #ifdef RVM_BPR_SWE | |
453 /* initialize sample BPR SWE */ | |
454 rv_start_swe_and_check (BPR_USE_ID, "BPR"); | |
455 #endif | |
456 | |
457 #endif /* PSP_STANDALONE */ | |
458 | |
459 #ifdef RVM_RTC_SWE | |
460 /* initialize RTC SWE */ | |
461 rv_start_swe_and_check (RTC_USE_ID, "RTC"); | |
462 #endif | |
463 | |
464 #ifdef RVM_LLS_SWE | |
465 /* initialize LLS SWE */ | |
466 rv_start_swe_and_check (LLS_USE_ID, "LLS"); | |
467 #endif | |
468 | |
469 #ifdef RVM_TUT_SWE | |
470 /* initialize TUT SWE */ | |
471 // rv_start_swe_and_check (TUT_USE_ID, "TUT"); | |
472 #endif | |
473 | |
474 #ifdef RVM_RGUI_SWE | |
475 /* initialize RGUI SWE */ | |
476 rv_start_swe_and_check (RGUI_USE_ID, "RGUI"); | |
477 #endif | |
478 | |
479 #ifdef RVM_ATP_SWE | |
480 /* initialize ATP SWE */ | |
481 rv_start_swe_and_check (ATP_USE_ID, "ATP"); | |
482 #endif | |
483 | |
484 /* | |
485 * FreeCalypso: the main.lib:Create_RVtasks.obj binary blob we got with our | |
486 * TCS211 semi-src does not start MKS, even though the SWE itself is enabled | |
487 * in the build system and pulled into the link. | |
488 */ | |
489 #if 0 | |
490 #ifdef RVM_MKS_SWE | |
491 rv_start_swe_and_check (MKS_USE_ID, "MKS"); | |
492 #endif | |
493 #endif | |
494 | |
495 #ifdef RVM_IMG_SWE | |
496 rv_start_swe_and_check (IMG_USE_ID, "IMG"); | |
497 #endif | |
498 | |
499 #ifdef RVM_GBI_SWE | |
500 rv_start_swe_and_check (GBI_USE_ID, "GBI"); | |
501 #endif | |
502 | |
503 #ifdef RVM_CAMD_SWE | |
504 rv_start_swe_and_check (CAMD_USE_ID, "CAMD"); | |
505 #endif | |
506 | |
507 #ifdef RVM_USB_SWE | |
508 /* initialize USB SWE */ | |
509 rv_start_swe_and_check (USB_USE_ID, "USB"); | |
510 #endif | |
511 | |
512 #ifdef RVM_CAMA_SWE | |
513 rv_start_swe_and_check (CAMA_USE_ID, "CAMA"); | |
514 #endif | |
515 | |
516 #ifdef RVM_MFW_SWE | |
517 /* initialize MFW SWE */ | |
518 rv_start_swe_and_check (MFW_USE_ID, "MFW"); | |
519 #endif | |
520 | |
521 #ifdef RVM_SMBS_SWE | |
522 /* initialize SMBS SWE */ | |
523 rv_start_swe_and_check (SMBS_USE_ID, "SMBS"); | |
524 #endif | |
525 | |
526 #ifdef RVM_USBFAX_SWE | |
527 /* initialize USB SWE */ | |
528 rv_start_swe_and_check (USBFAX_USE_ID, "USBFAX"); | |
529 #endif | |
530 | |
531 #ifdef RVM_USBTRC_SWE | |
532 /* initialize USBTRC SWE */ | |
533 rv_start_swe_and_check (USBTRC_USE_ID, "USBTRC"); | |
534 #endif | |
535 | |
536 #ifdef RVM_USBMS_SWE | |
537 /* initialize USBMS SWE */ | |
538 rv_start_swe_and_check (USBMS_USE_ID, "USBMS"); | |
539 #endif | |
540 | |
541 #ifdef RVM_RFS_SWE | |
542 /* initialize RFS SWE */ | |
543 rv_start_swe_and_check (RFS_USE_ID, "RFS"); | |
544 #endif | |
545 | |
546 | |
547 #ifdef RVM_CCI_SWE | |
548 /* initialize CCI SWE */ | |
549 rv_start_swe_and_check (CCI_USE_ID, "CCI"); | |
550 #endif | |
551 | |
552 #ifdef RVM_BTUI_SWE | |
553 /* initialize sample BTUI SWE */ | |
554 rv_start_swe_and_check (BTUI_USE_ID, "BTUI"); | |
555 #endif | |
556 #ifdef RVM_JPEG_SWE | |
557 /* initialize sample JPEG SWE */ | |
558 rv_start_swe_and_check (JPEG_USE_ID, "JPEG"); | |
559 #endif | |
560 #ifdef RVM_JPEG_SWE | |
561 /* initialize sample JPEG SWE */ | |
562 rv_start_swe_and_check (JPEG_USE_ID, "JPEG"); | |
563 #endif | |
564 #endif | |
565 // WARNING WARNING ---------------------------------------------------- | |
566 // Do not perform any SWE initialization after this line ! | |
567 // WARNING WARNING ---------------------------------------------------- | |
568 | |
569 #if (REMU==0) /* moved this to kpd start function. rv_start function for REMU. rv_start is called from Application Initialize | |
570 context. Since this is a blocking call, we cannot afford to block in Application_Initialization. */ | |
571 #ifndef _WINDOWS | |
572 // Perform switch ON processing. | |
573 Switch_ON(); | |
574 #endif | |
575 | |
576 #if (_GSM==1) | |
577 BZ_KeyBeep_ON (); // Audio feedback if ON/OFF pushed | |
578 #endif // if (_GSM==1) | |
579 | |
580 #endif | |
581 #if (CHIPSET!=15) || (REMU==0) | |
582 /* dump the Riviera memory state */ | |
583 rvf_delay (RVF_MS_TO_TICKS (300)) ; | |
584 rvf_dump_mem (); | |
585 rvf_dump_pool(); | |
586 rvf_dump_tasks(); | |
587 #endif | |
588 #if (TEST==1) | |
589 #if (PSP_STANDALONE == 1) | |
590 /* Just For Testing Reset of UICC */ | |
591 // bspUicc_reset(1,0); | |
592 | |
593 /* Just For Testing GEA */ | |
594 // bspTest_Gea3_ciph_req(1); | |
595 | |
596 #endif | |
597 #if (CHIPSET!=15) || (REMU==0) | |
598 // create a Memory Bank for the 'Test Selection Menu'. | |
599 mb_requirements.size = RVTEST_MENU_MB_SIZE; | |
600 mb_requirements.watermark = RVTEST_MENU_MB_WATERMARK; | |
601 mb_requirements.pool_id = RVF_POOL_EXTERNAL_MEM; | |
602 if (rvf_create_mb (RVTEST_MENU_MB_NAME, | |
603 mb_requirements, | |
604 &mb_id) != RVF_OK) | |
605 { | |
606 // error case. | |
607 result++; | |
608 } | |
609 | |
610 #if (PSP_STANDALONE == 1) | |
611 /* Just For Testing Reset of UICC */ | |
612 bspUicc_reset(1,0); /* Just For Testing GEA */ | |
613 bspTest_Gea3_ciph_req(1); | |
614 #endif | |
615 | |
616 // Go to the 'Test Selection Menu' (using rv_test ()). | |
617 rv_test (0); | |
618 #endif | |
619 #endif // (TEST==1) | |
620 | |
621 #if (CHIPSET!=15) || (REMU==0) | |
622 // infinite wait | |
623 rvf_evt_wait (START_TASK_ID, | |
624 0xFFFF, | |
625 0xFFFFFFFFL); | |
626 #endif | |
627 } | |
628 | |
629 #if (TEST==1) | |
630 #define RV_START_TASK_STACK (4096) | |
631 #else | |
632 #define RV_START_TASK_STACK (1024) | |
633 #endif | |
634 #if (CHIPSET!=15) || (REMU==0) | |
635 UINT8 stack_start[RV_START_TASK_STACK]; | |
636 | |
637 | |
638 /******************************************************************************* | |
639 ** | |
640 ** Function create_tasks | |
641 ** | |
642 ** Description This function is called once at startup to allow task | |
643 ** creation thanks to Riviera environment. | |
644 ** | |
645 ** Returns void | |
646 ** | |
647 *******************************************************************************/ | |
648 void create_tasks (void) | |
649 { | |
650 | |
651 // Tasks creation | |
652 rvf_create_legacy_task ((TASKPTR) rv_start, START_TASK_ID, | |
653 "RV_START", stack_start, | |
654 RV_START_TASK_STACK, RV_START_TASK_PRIO, 0, RUNNING); | |
655 | |
656 } | |
657 #endif | |
658 | |
659 | |
660 |