OSDN Git Service

First commitment for the BlackTank LPC1769.
[blacktank/blacktank.git] / task_init.c
1 /**
2  * @file task_init.c
3  * @author Shinichiro Nakamura
4  * @brief 初期化タスクの実装(task_init)
5  * @details
6  * よくあるスプラッシュ画面を表示するタスク。
7  * このタスクは自身の処理が完了後に、本当に必要なタスクを起動する。
8  * 本当に必要なタスクを起動した後は、システムの動作をユーザに通知する
9  * だけのタスクとして動作する。
10  */
11
12 #include <LPC17xx.h>
13 #include <kernel.h>
14 #include <t_syslog.h>
15 #include <t_stdlib.h>
16
17 #include "task_init.h"
18 #include "kernel_cfg.h"
19 #include "task_display.h"
20 #include "config.h"
21
22 #define TASK_START(TSKID,TSKNAME) \
23     act_tsk(TSKID); \
24     tslp_tsk(100); \
25     syslog(LOG_NOTICE, "[%d:%s]", TSKID,TSKNAME)
26
27 void task_init(intptr_t exinf)
28 {
29     if (TASK_AUDIO_ENABLED()) {
30         TASK_START(TASK_AUDIO, "audio");
31     }
32     TASK_START(TASK_DISPLAY, "display");
33     TASK_START(TASK_LED, "led");
34     TASK_START(TASK_MENU, "menu");
35     TASK_START(TASK_USERINPUT, "userinput");
36     TASK_START(TASK_NTSHELL, "ntshell");
37
38     int cnt = 0;
39     while (1) {
40         /*
41          * 動作を示すマーキング.
42          */
43         TSKAPI_DISPLAY_FILLBOX(90, 0, 95, 6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00);
44         switch (cnt % 4) {
45             case 0:
46                 TSKAPI_DISPLAY_TEXT(90, 0, 0xFF, 0xFF, 0xFF, "-");
47                 break;
48             case 1:
49                 TSKAPI_DISPLAY_TEXT(90, 0, 0xFF, 0xFF, 0xFF, "\\");
50                 break;
51             case 2:
52                 TSKAPI_DISPLAY_TEXT(90, 0, 0xFF, 0xFF, 0xFF, "|");
53                 break;
54             case 3:
55                 TSKAPI_DISPLAY_TEXT(90, 0, 0xFF, 0xFF, 0xFF, "/");
56                 break;
57         }
58         cnt++;
59         tslp_tsk(100);
60     }
61 }
62