OSDN Git Service

First commitment for the BlackTank LPC1769.
[blacktank/blacktank.git] / task_display.h
1 /**
2  * @file task_display.h
3  * @author Shinichiro Nakamura
4  * @brief ディスプレイタスクの定義(task_display)
5  * @details
6  * ディスプレイタスクは有機ELディスプレイを制御するタスクである。
7  * ディスプレイの制御はマクロを使って行うことができる。
8  */
9
10 /**
11  * @example
12  * ディスプレイへの表示は以下のマクロを使って行うことができる。
13  *
14  * @code
15  * TSKAPI_DISPLAY_CLEAR(r, g, b);
16  * TSKAPI_DISPLAY_LINE(x1, y1, x2, y2, r, g, b);
17  * TSKAPI_DISPLAY_BOX(x1, y1, x2, y2, r, g, b);
18  * TSKAPI_DISPLAY_FILLBOX(x1, y1, x2, y2, r1, g1, b1, r2, g2, b2);
19  * TSKAPI_DISPLAY_TEXT(x, y, r, g, b, "text");
20  * TSKAPI_DISPLAY_BMPFILE("filename");
21  * @endcode
22  *
23  * このマクロは、タスクコンテキスト内のどこからでも呼ぶことができる。
24  */
25
26 #ifndef _TASK_DISPLAY_H_
27 #define _TASK_DISPLAY_H_
28
29 #include "target_test.h"
30
31 /**
32  * @brief タスクプライオリティ。(ディスプレイタスク)
33  */
34 #define TSKPRI_DISPLAY    11
35 #define TSKSTK_DISPLAY    STACK_SIZE
36
37 #define DISPLAY_CMD_CLEAR 0
38 #define DISPLAY_CMD_LINE 1
39 #define DISPLAY_CMD_BOX 2
40 #define DISPLAY_CMD_FILLBOX 3
41 #define DISPLAY_CMD_TEXT 4
42 #define DISPLAY_CMD_BMPFILE 5
43 #define DISPLAY_CMD_AUDIO_LEVELMETER 6
44
45 typedef struct {
46     T_MSG header;
47     uint8_t cmd;
48     uint8_t param[64];
49 } display_msg_t;
50
51 typedef struct {
52     uint8_t r;
53     uint8_t g;
54     uint8_t b;
55 } display_clear_t;
56
57 typedef struct {
58     uint8_t x1;
59     uint8_t y1;
60     uint8_t x2;
61     uint8_t y2;
62     uint8_t r;
63     uint8_t g;
64     uint8_t b;
65 } display_line_t;
66
67 typedef struct {
68     uint8_t x1;
69     uint8_t y1;
70     uint8_t x2;
71     uint8_t y2;
72     uint8_t r;
73     uint8_t g;
74     uint8_t b;
75 } display_box_t;
76
77 typedef struct {
78     uint8_t x1;
79     uint8_t y1;
80     uint8_t x2;
81     uint8_t y2;
82     uint8_t r1;
83     uint8_t g1;
84     uint8_t b1;
85     uint8_t r2;
86     uint8_t g2;
87     uint8_t b2;
88 } display_fillbox_t;
89
90 typedef struct {
91     uint8_t x;
92     uint8_t y;
93     uint8_t r;
94     uint8_t g;
95     uint8_t b;
96     char text[32];
97 } display_text_t;
98
99 typedef struct {
100     char filename[32];
101 } display_bmpfile_t;
102
103 typedef struct {
104     int left;
105     int right;
106 } display_audio_levelmeter_t;
107
108 /**
109  * @defgroup BLACKTANK_LPC1769_TASK_DISPLAY_CLIENT
110  * @ingroup BLACKTANK_LPC1769_TASK_DISPLAY
111  * @{
112  */
113
114 void disp_clear(const uint8_t r, const uint8_t g, const uint8_t b);
115 void disp_line(
116         const uint8_t x1,
117         const uint8_t y1,
118         const uint8_t x2,
119         const uint8_t y2,
120         const uint8_t r,
121         const uint8_t g,
122         const uint8_t b);
123 void disp_box(
124         const uint8_t x1,
125         const uint8_t y1,
126         const uint8_t x2,
127         const uint8_t y2,
128         const uint8_t r,
129         const uint8_t g,
130         const uint8_t b);
131 void disp_fillbox(
132         const uint8_t x1,
133         const uint8_t y1,
134         const uint8_t x2,
135         const uint8_t y2,
136         const uint8_t r1,
137         const uint8_t g1,
138         const uint8_t b1,
139         const uint8_t r2,
140         const uint8_t g2,
141         const uint8_t b2);
142 void disp_text(
143         const uint8_t x,
144         const uint8_t y,
145         const uint8_t r,
146         const uint8_t g,
147         const uint8_t b,
148         const char *text);
149 void disp_bmpfile(const char *filename);
150 void disp_audio_levelmeter(const int left, const int right);
151
152 #define TSKAPI_DISPLAY_CLEAR(R,G,B) \
153     disp_clear((R),(G),(B))
154 #define TSKAPI_DISPLAY_LINE(X1,Y1,X2,Y2,R,G,B) \
155     disp_line((X1),(Y1),(X2),(Y2),(R),(G),(B))
156 #define TSKAPI_DISPLAY_BOX(X1,Y1,X2,Y2,R,G,B) \
157     disp_box((X1),(Y1),(X2),(Y2),(R),(G),(B))
158 #define TSKAPI_DISPLAY_FILLBOX(X1,Y1,X2,Y2,R1,G1,B1,R2,G2,B2) \
159     disp_fillbox((X1),(Y1),(X2),(Y2),(R1),(G1),(B1),(R2),(G2),(B2))
160 #define TSKAPI_DISPLAY_TEXT(X,Y,R,G,B,TEXT) \
161     disp_text((X),(Y),(R),(G),(B),(TEXT))
162 #define TSKAPI_DISPLAY_BMPFILE(FN) \
163     disp_bmpfile((FN))
164 #define TSKAPI_DISPLAY_AUDIO_LEVELMETER(L,R) \
165     disp_audio_levelmeter((L),(R))
166
167 /**
168  * @}
169  */
170
171 #ifndef TOPPERS_MACRO_ONLY
172
173 /**
174  * @defgroup BLACKTANK_LPC1769_TASK_DISPLAY
175  * @ingroup BLACKTANK_LPC1769_TASK
176  * @{
177  */
178
179 void task_display(intptr_t exinf);
180
181 /**
182  * @}
183  */
184
185 #endif
186
187 #endif
188