source: svn/newcon3bcm2_21bu/dst/dmw/src/grp/DMG_Menu.h @ 22

Last change on this file since 22 was 22, checked in by phkim, 11 years ago
  1. phkim
  2. newcon3sk 를 kctv 로 브랜치 함
  • Property svn:executable set to *
File size: 12.2 KB
Line 
1
2#ifndef __GRP_MENU_H__
3#define __GRP_MENU_H__
4
5
6
7/* config */
8
9#define MAX_NUM_MENU 32
10        /* ÃÖ´ë·Î ¸¸µé ¼ö ÀÖ´Â menu °¹¼ö : 1-32 »ç¿ë °¡´É, 0¹øÀº Ưº°ÇÑ ¿ëµµ·Î »ç¿ëµÊ  */
11
12#define MAX_NUM_TIMER 64
13        /*  »ç¿ë °¡´ÉÇÑ timerÀÇ °¹¼ö */
14
15#define MAX_NUM_FRAME 64
16        /* menu ´ç »ý¼ºÇÒ ¼ö ÀÖ´Â frameÀÇ °¹¼ö */
17
18
19
20#define DMG_TIME_FOREVER ((UINT32)-1)
21#define DMG_TIME_DEFAULT ((UINT32)-2)
22#define DMG_MENU_ID_NONE ((tDMG_MenuId)-1)
23#define DMG_MENU_ID_DEFAULT ((tDMG_MenuId)-2)
24
25#define DMG_FRAME_ID_NONE ((tDMG_FrameId)-1)
26#define DMG_FRAME_ID_DEFAULT ((tDMG_FrameId)-2)
27
28#define DMG_KEY_NONE ((UINT32)-1)
29
30#define DMG_HIWORD(w) ((w)>>16)
31#define DMG_LOWORD(w) ((w)&0xffff)
32
33#define DMG_MAKEWORD(n1,n2) (((n1)&0xffff)<<16|((n2)&0xffff))
34
35typedef UINT8 tDMG_MenuId;
36typedef UINT32 tDMG_FrameId;
37
38typedef UINT32 tDMG_MenuList;
39
40
41/*
42
43
44user procÀÇ °¢ command º° param ¿ëµµ
45               
46        -id                            -param1                     -param2               opt
47        eDMG_CMD_ON_MENU_ENTER         current menu pointer        NULL
48        eDMG_CMD_ON_MENU_ACTIVE        current menu pointer        inactived menu id
49        eDMG_CMD_ON_MENU_INACTIVE      current menu pointer        to be actived menu id
50        eDMG_CMD_ON_MENU_INVISIBLE     current menu pointer        to be actived menu id
51        eDMG_CMD_ON_MENU_EXIT          current menu pointer        to be actived menu id
52        eDMG_CMD_ON_MENU_UPDATE        current menu pointer        user param
53       
54        eDMG_CMD_ON_FRAME_ACTIVE       current frame pointer       inactived frame id
55        eDMG_CMD_ON_FRAME_INACTIVE     current frame pointer       actived frame id
56        eDMG_CMD_ON_FRAME_INVISIBLE    current frame pointer       actived frame id
57        eDMG_CMD_ON_FRAME_EXIT         current frame pointer       NULL
58       
59        eDMG_CMD_ON_REDRAW             ÇØ´ç menu pointer           ÇØ´ç frame pointer
60       
61        eDMG_CMD_ON_TIME               timer id                    elapsed time
62       
63        eDMG_CMD_ON_TIMEOUT            elapsed time                NULL
64       
65        eDMG_CMD_ON_KEY                ÇØ´ç menu pointer           key code
66       
67        eDMG_CMD_ON_USER_DEFINE        ÇØ´ç param1 °ª              ÇØ´ç param2 °ª         user define id
68
69
70
71
72set commandÀÇ param º° ¿ëµµ(³»ºÎ¿ë)
73
74        -id                            -param1                     -param2                 -opt
75        eDMG_CMD_SET_KEY               key code                    NULL                    pseudo key ¿©ºÎ
76       
77        eDMG_CMD_SET_TIMER             timer id                    duration(ms)            option
78       
79        eDMG_CMD_SET_MENU_START        menu id                     opt                     NULL
80        eDMG_CMD_SET_MENU_EXIT         menu id                     NULL                    NULL
81       
82        eDMG_CMD_SET_FRAME_ACTIVE      frame id                    NULL                    NULL
83        eDMG_CMD_SET_FRAME_INACTIVE    frame id                    NULL                    NULL
84       
85        eDMG_CMD_SET_SYNC              NULL                        NULL                    NULL
86       
87        eDMG_CMD_SET_REDRAW            NULL                        NULL                    NULL
88       
89        eDMG_CMD_SET_USER_DEFINE       param1                      param2                  user define id
90
91        eDMG_CMD_SET_MENU_PARAM1       menu id                     tDMG_Menu:param1
92        eDMG_CMD_SET_MENU_PARAM2       menu id                     tDMG_Menu:param1
93*/
94
95typedef enum {
96       
97        eDMG_CMD_NONE, //¾Æ¹«·± ÀÇ¹Ì ¾ø´Â command
98       
99        /* ¸Þ´º USER PROC¿¡¸¸ Àü´ÞµÊ. param1¿¡ ÇØ´ç Menu¿¡ ´ëÇÑ Æ÷ÀÎÅͰ¡ Àü´ÞµÊ
100           ¸¸ÀÏ USER PROC¿¡¼­ ¸®ÅϰªÀ¸·Î FALSE¸¦ ³Ñ±â¸é ±âº» 󸮰¡ ÁøÇàµÇ°í
101           TRUE¸¦ ¸®ÅϰªÀ¸·Î ³Ñ±â¸é ¾Æ¹« 󸮸¦ ÇÏÁö ¾ÊÀ½
102        */
103        eDMG_CMD_ON_MENU_ENTER,
104        eDMG_CMD_ON_MENU_ACTIVE,
105        eDMG_CMD_ON_MENU_INACTIVE,
106        eDMG_CMD_ON_MENU_INVISIBLE,     
107        eDMG_CMD_ON_MENU_EXIT,
108        eDMG_CMD_ON_MENU_UPDATE,
109       
110        /* ÇÁ·¹ÀÓ USER PROC¿¡¸¸ Àü´ÞµÊ. param1 : menu Æ÷ÀÎÅÍ , param2 : frame Æ÷ÀÎÅÍ
111        */
112        eDMG_CMD_ON_FRAME_ACTIVE, /* frame activeµÉ ¶§*/
113        eDMG_CMD_ON_FRAME_INACTIVE, /* frame inactiveµÉ ¶§*/
114        eDMG_CMD_ON_FRAME_INVISIBLE, /* frame invisibleµÉ ¶§*/
115        eDMG_CMD_ON_FRAME_EXIT, /* ¸Þ´º°¡ exitµÉ ¶§*/
116       
117        /* È­¸éÀ» »õ·Ó°Ô ±×¸².
118           ¸ÕÀú Menu User ProcÀ» È£ÃâÇϰí, ¸®ÅϰªÀÌ falseÀÏ °æ¿ì,
119           È°¼ºÈ­µÈ frameÀÇ user procÀ» È£ÃâÇÔ.
120           param1¿¡´Â menu Æ÷ÀÎÅÍ, param2¿¡´Â frame Æ÷ÀÎÅÍ °ªÀÌ µé¾î°¨
121         */     
122        eDMG_CMD_ON_REDRAW,
123               
124        /* ¸ÕÀú menu¿¡ Àü´ÞµÇ°í, 󸮵ÇÁö ¾ÊÀ¸¸é 󸮵ɶ§±îÁö ¸Þ´º ¾ÈÀÇ ¸ðµç frame¿¡ Àü´ÞµÊ
125           param1 : timer id, param2 : elapsed time
126        */
127        eDMG_CMD_ON_TIME,
128       
129        /* ¸ÕÀú menu¿¡ Àü´ÞµÇ°í, 󸮵ÇÁö ¾ÊÀ¸¸é Ȱ¼ºÈ­µÈ frame¿¡ Àü´ÞµÊ
130           param1 : elapsed time
131        */
132        eDMG_CMD_ON_TIMEOUT,
133       
134        /* ¸ÕÀú menu¿¡ Àü´ÞµÇ°í, 󸮵ÇÁö ¾ÊÀ¸¸é Ȱ¼ºÈ­µÈ frame¿¡ Àü´ÞµÊ
135           param1 : menu Æ÷ÀÎÅÍ, param2 : key code
136        */
137        eDMG_CMD_ON_KEY,
138       
139        eDMG_CMD_ON_USER_DEFINED,
140       
141       
142       
143       
144        /* param1 : key code */
145        eDMG_CMD_SET_KEY=0x40,
146
147        /* param1 : id, opt : opt, param2 : duration */
148        eDMG_CMD_SET_TIMER=0x80,
149       
150        /* param1 : id */
151        eDMG_CMD_SET_MENU_START,
152        eDMG_CMD_SET_MENU_EXIT,
153       
154        /* param1 : menu id, param2 : frame id */
155        eDMG_CMD_SET_FRAME_ACTIVE,
156        eDMG_CMD_SET_FRAME_INACTIVE,
157       
158        eDMG_CMD_SET_SYNC,
159       
160        eDMG_CMD_SET_REDRAW,
161       
162        eDMG_CMD_SET_USER_DEFINE, /* »ç¿ëÀÚ Á¤ÀÇ */
163
164        eDMG_CMD_SET_MENU_PARAM1,
165        eDMG_CMD_SET_MENU_PARAM2,
166       
167               
168} tDMG_CMD;
169
170
171/*
172        ¾Æ·¡ ÄÚµåÀÇ Å©±â°¡ ³Ê¹« Ä¿Áö¹Ç·Î macro°¡ ¾Æ´Ñ functionÀ¸·Î »ç¿ëµÇ´Â °ÍÀÌ ¹Ù¶÷Á÷ÇÔ.
173*/
174#ifdef __DEFINE_DMG_STR__
175#define __DMG_CMD_STR(cmd) \
176        cmd==eDMG_CMD_ON_MENU_ENTER?"on menu enter":\
177        cmd==eDMG_CMD_ON_MENU_ACTIVE?"on menu active":\
178        cmd==eDMG_CMD_ON_MENU_INACTIVE?"on menu inactive":\
179        cmd==eDMG_CMD_ON_MENU_INVISIBLE?"on menu invisible":\
180        cmd==eDMG_CMD_ON_MENU_EXIT?"on menu exit":\
181        cmd==eDMG_CMD_ON_MENU_UPDATE?"on menu update":\
182        cmd==eDMG_CMD_ON_FRAME_ACTIVE?"on frame active":\
183        cmd==eDMG_CMD_ON_FRAME_INACTIVE?"on frame inactive":\
184        cmd==eDMG_CMD_ON_FRAME_INVISIBLE?"on frame invisible":\
185        cmd==eDMG_CMD_ON_FRAME_EXIT?"on frame exit":\
186        cmd==eDMG_CMD_ON_REDRAW?"on redraw":\
187        cmd==eDMG_CMD_ON_TIME?"on time":\
188        cmd==eDMG_CMD_ON_TIMEOUT?"on timeout":\
189        cmd==eDMG_CMD_ON_KEY?"on key":\
190        cmd==eDMG_CMD_ON_USER_DEFINED?"on user define":\
191        cmd==eDMG_CMD_SET_KEY?"set key":\
192        cmd==eDMG_CMD_SET_TIMER?"set timer":\
193        cmd==eDMG_CMD_SET_MENU_START?"set menu start":\
194        cmd==eDMG_CMD_SET_MENU_EXIT?"set menu exit":\
195        cmd==eDMG_CMD_SET_FRAME_ACTIVE?"set frame active":\
196        cmd==eDMG_CMD_SET_FRAME_INACTIVE?"set frame inactive":\
197        cmd==eDMG_CMD_SET_SYNC?"set sync":\
198        cmd==eDMG_CMD_SET_REDRAW?"set redraw":\
199        cmd==eDMG_CMD_SET_USER_DEFINE?"set user define":\
200        cmd==eDMG_CMD_SET_MENU_PARAM1?"set menu param1":\
201        cmd==eDMG_CMD_SET_MENU_PARAM2?"set menu param2":\
202        "unknown"
203        /* function definition */
204        const char *DMG_CMD_STR(tDMG_CMD cmd)
205        {  return __DMG_CMD_STR(cmd); }
206
207#else
208        /* function declaration only */
209        const char *DMG_CMD_STR(tDMG_CMD cmd);
210#endif
211
212
213/* command optionÀº »óÀ§ 2byte¸¦ »ç¿ëÇÔ. ÇÏÀ§ 2byte´Â user optionµéÀÓ */
214typedef enum {
215        eDMG_CMD_OPT_TIMER_ONESHOT=0x10000,
216        eDMG_CMD_OPT_TIMER_LOCAL1=0x20000, /* menu¿¡¼­¸¸ »ç¿ëÇÔ, menuÀÌ ¹Ù²î¸é ÀÚµ¿ reset*/
217        eDMG_CMD_OPT_TIMER_LOCAL2=0x40000, /* frame¿¡¼­¸¸ »ç¿ëÇÔ, menu°¡ ¹Ù²î¸é ÀÚµ¿ reset*/
218        eDMG_CMD_OPT_SYNC=0x100000,
219        eDMG_CMD_OPT_USER_KEY=0x200000, /* RCU°¡ ¾Æ´Ï¶ó, »ç¿ëÀÚ¿¡ ÀÇÇØ »ý¼ºµÈ Ű.*/
220        eDMG_CMD_OPT_MENU_UPDATE=0x400000, /* menu start¿¡¼­ »ç¿ëµÇ´Â opt·Î update ¸ðµå·Î µ¿ÀÛÇÔ */
221        eDMG_CMD_OPT_URGENT=0x800000 /* urgent, inner msgq¿¡¼­ ó¸®µÊ */
222} tDMG_CmdOpt; 
223
224
225typedef enum {
226        eDMG_STATUS_EXIT=0, /* ¸Þ´ºÀÇ Ãʱ⠻óÅÂ, MenuStart¸¦ È£ÃâÇϸé INITED »óÅ·ΠÀüÀÌµÊ */
227        eDMG_STATUS_ACTIVE, /* ¸Þ´º°¡ ÃÖ»óÀ§¿¡ ¶° ÀÖÀ½ */
228        eDMG_STATUS_INACTIVE, /* ¸Þ´º°¡ ¶° ÀÖ±ä ÇÏÁö¸¸, »óÀ§ ¸Þ´º¿¡ ÀÇÇØ °¡·ÁÁü */
229        eDMG_STATUS_INVISIBLE /* »óÀ§ ¸Þ´º ¶§¹®¿¡ ¸Þ´º°¡ ¾Æ¹« °Íµµ º¸ÀÌÁö ¾ÊÀ½ */
230} tDMG_Status;
231
232
233typedef enum {
234       
235        /* menu manage - start */
236        eDMG_MENU_MANAGE_DENY=0, /* »õ·Î¿î ¸Þ´º¸¦ ¶ç¿ìÁö ¾ÊÀ½ */
237       
238        eDMG_MENU_MANAGE_DENY_BUT_INACTIVE, /* »õ·Î¿î ¸Þ´º¸¦ ¶ç¿ìÁö ¾ÊÀ¸³ª, INACTIVE »óÅ·ΠÀüÀÌÇÔ */
239        eDMG_MENU_MANAGE_DENY_BUT_HIDE, /* »õ·Î¿î ¸Þ´º¸¦ ¶ç¿ìÁö ¾ÊÀ¸³ª, INVISIBLE »óÅ·ΠÀüÀÌÇÔ */
240       
241        eDMG_MENU_MANAGE_INACTIVE_AND_DRAW, /* ±âÁ¸ ¸Þ´º¸¦ ±×´ë·Î µÎ°í ±× À§¿¡ »õ·Î¿î ¸Þ´º¸¦ ±×¸² */
242        eDMG_MENU_MANAGE_HIDE_PREV_AND_DRAW, /* ±âÁ¸ ¸Þ´º¸¦ HIDEÇÏ°í »õ·Î¿î ¸Þ´º¸¦ ±×¸² */
243        eDMG_MENU_MANAGE_HIDE_ALL_AND_DRAW,
244        eDMG_MENU_MANAGE_EXIT_PREV_AND_DRAW, /* ±âÁ¸ ÃÖ»óÀ§ ¸Þ´º EXIT ÈÄ »õ·Î¿î ¸Þ´º¸¦ ±×¸² */
245        eDMG_MENU_MANAGE_EXIT_ALL_AND_DRAW, /* ±âÁ¸ ¸Þ´º EXIT ÈÄ »õ·Î¿î ¸Þ´º¸¦ ±×¸² */
246       
247       
248        /* menu manange - exit */
249        eDMG_MENU_MANAGE_EXIT, /* ÀϹÝÀûÀÎ Á¾·á */
250        eDMG_MENU_MANAGE_EXIT_SILENT, /* ÇØ´ç ¸Þ´º¿¡ EXIT¸¦ º¸³»Áö ¾Ê°í Á¾·áÇÔ */
251       
252} tDMG_MenuManange;
253
254
255typedef struct {
256       
257        BOOL is_start;
258       
259        tDMG_MenuId active_id;
260               
261        tDMG_MenuId action_id; /* is_start°¡ trueÀÏ °æ¿ì new active id, falseÀÏ °æ¿ì delete menu id */
262        tDMG_MenuId new_active_id; /* ¸¸ÀÏ is_start°¡ false¶ó¸é new_active_id¿¡ menu¸¦ ³Ö¾îÁÜ */
263       
264        tDMG_MenuList inactive_list;
265        tDMG_MenuList invisible_list;
266       
267} tDMG_MenuManageParam;
268
269
270typedef BOOL (*tDMG_UserProc)(tDMG_CMD cmd, UINT32 opt, UINT32 param1, UINT32 param2);
271        /* TRUEÀ̸é 󸮵Ê, FALSEÀ̸é menu¿¡¼­ ó¸®ÇÔ. */
272
273typedef tDMG_MenuManange (*tDMG_MenuManageProc)(tDMG_MenuManageParam *pmanage_param);
274
275       
276       
277typedef struct {
278        tDMG_FrameId id;
279        char *name;
280       
281        UINT16 cur_item_id; /*ÇöÀç ¼±ÅÃµÈ item id.*/
282        UINT16 num_item; /* itemÀÇ °¹¼ö */
283        UINT32 param1; /* »ç¿ëÀÚ°¡ Á¤ÀÇÇØ¼­ »ç¿ëÇÔ */
284        UINT32 param2; /* »ç¿ëÀÚ°¡ Á¤ÀÇÇØ¼­ »ç¿ëÇÔ */
285       
286        UINT32 timeout_ms;
287       
288        tDMG_UserProc user_proc;
289} tDMG_Frame;
290
291
292typedef struct _tDMG_Menu {
293        tDMG_MenuId id; 
294                /* menu id 0Àº »ç¿ë ºÒ°¡ -> Ưº°ÇÑ ¿ëµµ·Î »ç¿ëÇÔ,
295                   MID´Â menu°¡ invisible »óÅ¿¡ ÀÖÀ» ¶§ ÀÏÁ¾ÀÇ priority ¿ªÇÒÀ» ÇÔ
296                   Áï priority°¡ ³ôÀº °Í(0¿¡ °¡±î¿î °Í)ÀÌ ¿ì¼± ¼øÀ§¸¦ °¡Áü
297                   1-31»çÀÌÀÇ °ªÀ» »ç¿ëÇÒ °Í
298                */
299        char *name;
300       
301        tDMG_Status status;
302       
303        UINT32 priority;
304       
305        DHL_OS_TASK_ID task_id;
306               
307        tDMG_Frame *pcur_frame;
308       
309        tDMG_Frame *pframe_list[MAX_NUM_FRAME];
310       
311        UINT32 timeout_ms;
312       
313        struct _tDMG_Menu *pbelow;
314       
315        UINT32 param1; /* »ç¿ëÀÚ°¡ Á¤ÀÇÇØ¼­ »ç¿ëÇÔ */
316        UINT32 param2;
317       
318        tDMG_UserProc user_proc;
319       
320} tDMG_Menu;
321
322
323typedef struct {
324        tDMG_CMD cmd;
325        UINT32 opt;
326        UINT32 param1;
327        UINT32 param2;
328} tDMG_Message;
329
330
331typedef struct {
332        tDMG_Menu *pcur_menu;
333        tDMG_Menu *pprev_menu;
334       
335        tDMG_Frame *pcur_frame;
336        tDMG_Frame *pprev_frame;
337       
338        UINT32 ms_last_key; /* ¸¶Áö¸·À¸·Î ۰¡ ´­·ÁÁø ¶§ */
339        tDMG_CMD last_cmd; /* not used */
340       
341       
342} tDMG_MenuInfo;
343       
344
345BOOL DMG_GetMenuStatus(tDMG_MenuId menu_id);
346
347void DMG_SendMessage(tDMG_CMD cmd, UINT32 opt, UINT32 param1, UINT32 param2);
348
349tDMG_Menu *DMG_CreateMenu(tDMG_MenuId id, char *name, UINT32 timeout_ms, tDMG_UserProc user_proc);
350
351tDMG_Frame *DMG_CreateFrame(tDMG_Menu *pmenu, tDMG_FrameId id, char *name, 
352                            UINT32 num_item, tDMG_UserProc user_proc);
353                           
354tDMG_Frame *DMG_AttachFrame(tDMG_Menu *pmenu, tDMG_Frame *pframe);
355
356tDMG_Menu *DMG_GetMenu(tDMG_MenuId menu_id);
357tDMG_Frame *DMG_GetFrame(tDMG_MenuId menu_id, tDMG_FrameId frame_id);
358
359tDMG_Menu *DMG_GetCurMenu(void);
360tDMG_Frame *DMG_GetCurFrame(void);
361
362void DMG_SetFrame(tDMG_CMD cmd, tDMG_MenuId menu_id, tDMG_FrameId frame_id, BOOL buse_msgq);
363
364void DMG_SetRedraw(BOOL buse_msgq);
365
366void DMG_SetTimer(UINT32 timer_id, UINT32 duration, UINT32 opt);
367
368void DMG_KillTimer(UINT32 timer_id);
369
370void DMG_SetKeyInput(UINT32 key_code);
371
372/* RCU¿¡ ÀÇÇÑ Å° ¹ß»ýÀÌ ¾Æ´Ï¶ó ³»ºÎÀûÀΠŰ ¹ß»ý ½Ã »ç¿ë */
373void DMG_SetUserKeyInput(UINT32 key_code); 
374
375void DMG_SetUserDefined(UINT32 id, UINT32 param1, UINT32 param2);
376
377void DMG_SetMenuTimeout(tDMG_MenuId id, UINT32 timeout);
378void DMG_SetFrameTimeout(tDMG_MenuId menu_id, tDMG_FrameId id, UINT32 timeout);
379
380void DMG_SetMenuParam1(tDMG_MenuId id, UINT32 param);
381void DMG_SetMenuParam2(tDMG_MenuId id, UINT32 param);
382
383void DMG_SetFrameParam1(tDMG_MenuId menu_id, tDMG_FrameId frame_id, UINT32 param);
384void DMG_SetFrameParam2(tDMG_MenuId menu_id, tDMG_FrameId frame_id, UINT32 param);
385
386UINT32 DMG_GetKeyInput(UINT32 time_ms);
387
388void DMG_GetMenuInfo(tDMG_MenuInfo *pinfo);
389
390BOOL DMG_IsMenuOn(tDMG_MenuId menu_id);
391
392void DMG_MenuStart(tDMG_MenuId menu_id);
393void DMG_MenuUpdate(tDMG_MenuId menu_id, UINT32 param);
394
395void DMG_MenuExit(tDMG_MenuId menu_id);
396void DMG_MenuExit_ActiveAll(void);
397
398void DMG_MenuInit(tDMG_MenuManageProc menu_manage_proc);
399
400
401
402
403
404#endif /* __GRP_MENU_H__ */
Note: See TracBrowser for help on using the repository browser.