source: svn/newcon3bcm2_21bu/dst/app/src/kview/Proc/App_Proc_Banner.c

Last change on this file was 76, checked in by megakiss, 10 years ago

1W 대기전력을 만족시키기 위하여 POWEROFF시 튜너를 Standby 상태로 함

  • Property svn:executable set to *
File size: 38.8 KB
Line 
1/****************************************************************************
2* NAME: App_Proc_Banner.c
3*----------------------------------------------------------------------------
4* Copyright (c) DIGITAL STREAM Technology Inc.
5*----------------------------------------------------------------------------
6* CREATED_BY: Chan Hun Jeon
7* CREATION_DATE: 2009/12/21
8* $Author: chjeon $
9* $Revision: 1.0 $
10* $Date: 2009/12/21 20:01:32 $
11*----------------------------------------------------------------------------
12* PURPOSE:
13* - HTML MMI GUI
14*****************************************************************************/
15
16/*_____ I N C L U D E __________________________________________*/
17
18
19
20#include "App_Main.h"
21
22#include "App_OSD_Common.h"
23#include "App_OSD_Banner.h"
24#include "App_OSD_Main.h"
25
26#include "App_Fnc_Common.h"
27#include "App_Fnc_Ucm.h"
28#include "App_Fnc_Video.h"
29#include "App_Fnc_Audio.h"
30#include "App_Fnc_DigitKeyProc.h"
31#include "App_Fnc_SignalMonitor.h"
32#include "App_Fnc_Time.h"
33#include "App_Fnc_Power.h"
34#include "App_Fnc_CC.h"
35#include "App_Fnc_Sdds.h"
36
37#include "App_Fnc_SignalMonitor.h"
38#include "App_Fnc_ChTune.h"
39
40#include "cc_api.h"
41
42
43#include "App_Proc.h"
44#include "App_Res_Resources.h"
45
46
47
48
49
50
51/*_____ D E F I N I T I O N ____________________________________*/
52
53#if COMMENT
54____DbgPrint____(){}
55#endif
56
57DHL_MODULE("@p_ban", 0);
58
59
60
61
62
63#if COMMENT
64____Config____(){}
65#endif
66
67
68
69
70
71#if COMMENT
72____Types____(){}
73#endif
74
75
76
77
78
79#if COMMENT
80____Variables____(){}
81#endif
82
83
84
85/*_____ F U N C T I O N ________________________________________*/
86
87#if COMMENT
88__Local_Func__() {}
89#endif
90
91
92
93static char *p_make_ch_str(int major, int minor, char *temp)
94{
95        if(major==0) {
96                temp[0]='\0';
97        }
98        else if(minor==0 || minor == ONE_PART_CHANNEL_INDICATOR) {
99                sprintf(temp, "%d", major);
100        }
101        else {
102                sprintf(temp, "%d-%d", major, minor);
103        }
104        temp[strlen(temp)] = '\0';
105       
106        return temp;
107}
108
109
110
111
112
113#if COMMENT
114__PROC_CH__() {}
115#endif
116
117
118
119
120BOOL App_Proc_Ch_Banner(tDMG_CMD cmd, UINT32 opt, UINT32 param1, UINT32 param2)
121{
122        BOOL bret=TRUE;
123        tDMG_Menu *pmenu;
124        static BOOL is_tune_started=FALSE;
125       
126        dprint(1, "%s proc : cmd(%x %s), opt(%x), param1(%x), param2(%x)\n", __FUNCTION__, cmd, DMG_CMD_STR(cmd), opt, param1, param2);
127       
128        switch(cmd) {
129                               
130                /*
131                        ÀÌ¹Ì banner°¡ ¶° ÀÖ´Â (active) »óÅ¿¡¼­ ´Ù½Ã MenuStart¸¦ ÇÏ´Â °æ¿ì
132                        eDMG_CMD_ON_MENU_UPDATE °¡ ºÒ¸®µµ·Ï °³¼±µÇ¾ú´Ù.
133                        ÀÌ·± °æ¿ì´Â È­¸éÀ» ´Ù½Ã Áö¿ìÁö ¾Ê°íµµ °£´ÜÇÏ°Ô ³»¿ë¸¸ update°¡ °¡´ÉÇÏ´Ù.
134                        Âü°í·Î ÀϹÝÀûÀÎ ¼ø¼­´Â eDMG_CMD_ON_MENU_ENTER, eDMG_CMD_ON_MENU_ACTIVE ¼ø¼­·Î ºÒ¸°´Ù.
135                */
136                case eDMG_CMD_ON_MENU_UPDATE :
137                        //dprint(1, "---------- menu update\n");
138                        /* go through without 'break'*/
139
140                case eDMG_CMD_ON_MENU_ACTIVE :
141                       
142                        DMG_SetFont(eDMG_FONT_BMF);
143                       
144                        pmenu=(tDMG_Menu *)param1;
145                        is_tune_started=FALSE;
146                       
147                        if(DMG_HIWORD(pmenu->param1)==MPARAM_CH_BANNER_DIGIT) { /* digit input ¸ðµå */
148                                int digit_key=DMG_LOWORD(pmenu->param1);
149                               
150                                // cafrii 100218 bug fix
151                                // ¼ýÀÚ ÀÔ·Â Áß¿¡ ´Ù¸¥ ¸Þ´º¿¡ ÀÇÇØ cancel µÉ °æ¿ì digitkey ¸ðµâ¿¡ Á¤º¸°¡ ³²¾Æ ÀÖ°Ô µÊ.
152                                // ¹«Á¶°Ç clear ÇÏ°í ½ÃÀÛÇÑ´Ù.
153
154                                App_DigitKeyProcess(APP_DIGITKEY_CLEAR);
155
156                                if(digit_key>=APP_VK_0 && digit_key<=APP_VK_9) 
157                                        App_DigitKeyProcess((APP_DIGITKEY_CODE)(APP_DIGITKEY_0+digit_key-APP_VK_0));
158                                else if(digit_key==APP_VK_DOT) App_DigitKeyProcess(APP_DIGITKEY_DOT);
159                               
160                                App_OSD_DrawDigitBanner();
161                               
162                                DMG_SetTimer(TIMER_ID_CH_BANNER, TIMER_ID_DIGIT_KEY_DUR, eDMG_CMD_OPT_TIMER_ONESHOT);
163                        }
164                        else if(DMG_HIWORD(pmenu->param1)==MPARAM_CH_BANNER_CUSTOM) {
165                                char *msg = NULL;
166                                // string »ó¼ö¸¦ ¿©±â¼­ Á¤ÇÏ´Â °ÍÀÌ ¹Ù¶÷Á÷ ÇÏÁø ¾ÊÀ½. OSD ¸ðµâ¿¡¼­ GetString °ú °°Àº API¸¦ ¸¸µéÀÚ.
167                                if(DMG_LOWORD(pmenu->param1)==CUSTOM_CHB_MSG_NOT_FOUND)
168                                        msg = "Not Found";
169                                else if(DMG_LOWORD(pmenu->param1)==CUSTOM_CHB_MSG_WRONG_NUMBER)
170                                        msg = "Wrong Number";
171
172                                if (msg) {
173                                        App_OSD_DrawChBanner2(NULL, msg);
174                                        DMG_SetTimer(TIMER_ID_CH_BANNER, TIMER_CH_BANNER_MSG_DUR, eDMG_CMD_OPT_TIMER_ONESHOT);
175                                }
176                        }
177                        else { /* normal */
178                                tApp_UcmShortInfo info;
179                               
180                                if(App_GetCurUcmShortInfo(&info)==statusOK) {
181                                char temp[30]={'\0'};
182                                        is_tune_started=TRUE;
183                                        App_OSD_DrawChBanner(info.major, info.minor, p_make_ch_str(info.major, info.minor, temp), info.short_name);
184                                        DMG_SetTimer(TIMER_ID_CH_BANNER, TIMER_CH_BANNER_DUR, eDMG_CMD_OPT_TIMER_ONESHOT);
185                                }
186                        }
187                       
188                        break;
189                       
190                case eDMG_CMD_ON_TIME :
191                        /* kill */
192                        if(param1==TIMER_ID_CH_BANNER) {
193                                pmenu=DMG_GetCurMenu();
194                               
195                                if(DMG_HIWORD(pmenu->param1)==MPARAM_CH_BANNER_DIGIT) {
196                                        // ƯÁ¤ ¸ðµå¿¡¼­´Â ÀÌ ch banner°¡ manual scan mode·Î ÀüȯµÈ´Ù.
197                                        is_tune_started=TRUE;
198                                       
199                                        App_DigitKeyTuneStart();
200                                                // ÀÌ callÀº uid tuneÀ¸·Î À̾îÁú ¼öµµ ÀÖ°í manual scanÀ¸·Î À̾îÁú ¼öµµ ÀÖ´Ù.
201                                                // uid tuneÀÇ °æ¿ì Æ©´× ÈÄ¿¡ UD_ID_TUNE_COMPLETED °¡ Àü´ÞµÇ°í,
202                                                // manual scanÀÌ µÈ´Ù¸é ÁÖ±âÀûÀ¸·Î scan progress banner°¡ Ç¥½ÃµÈ´Ù.
203                                        DMG_SetTimer(TIMER_ID_CH_BANNER, TIMER_CH_BANNER_DUR-TIMER_ID_DIGIT_KEY_DUR, 
204                                                eDMG_CMD_OPT_TIMER_ONESHOT);
205                                        pmenu->param1=0;
206                                }
207                                else {
208                                        DMG_MenuExit(pmenu->id);
209                                }
210                        }
211                        else
212                                bret=FALSE;
213                        break;
214                       
215                case eDMG_CMD_ON_USER_DEFINED :
216
217                        if(opt==UD_ID_TUNE_COMPLETED || opt==UD_ID_EPG_EXIT_ALARM)
218                        {
219                                if((int)param1>=0) {
220                                        tApp_UcmShortInfo info;
221                                       
222                                        if(App_GetUcmShortInfo(param1, &info)==statusOK) {
223                                                char temp[30]={'\0'};
224                                                App_OSD_DrawChBanner(info.major, info.minor, p_make_ch_str(info.major, info.minor, temp), info.short_name);
225                                               
226                                                if(opt==UD_ID_EPG_EXIT_ALARM) // EPG exit ÈÄ Ch BannerÀÇ durationÀº ª°Ô Çϵµ·Ï ÇÑ´Ù.
227                                                        DMG_SetTimer(TIMER_ID_CH_BANNER, 700, eDMG_CMD_OPT_TIMER_ONESHOT);
228                                                else
229                                                        DMG_SetTimer(TIMER_ID_CH_BANNER, TIMER_CH_BANNER_DUR, eDMG_CMD_OPT_TIMER_ONESHOT);
230                                        }
231                                }
232                        }
233                        else
234                                bret=FALSE;
235                       
236                        break;
237               
238                case eDMG_CMD_ON_MENU_EXIT :
239                        DMG_SetFont(eDMG_FONT_BMF);
240                        DMG_KillTimer(TIMER_ID_CH_BANNER);
241                        App_OSD_EraseChBanner();
242                        APP_OSD_EraseWarningBanner();
243                        DMG_MenuExit(MID_CH_BANNER);
244                        // cafrii 100219 bugfix! digitkey ¸ðµâ ÂÊÀÇ ÀÔ·Â Á¤º¸ clear ÇÊ¿äÇÔ..
245                        App_DigitKeyProcess(APP_DIGITKEY_CLEAR);
246                        break;
247                       
248                case eDMG_CMD_ON_KEY :
249                       
250                        switch(param2) {
251                                case APP_VK_0 :
252                                case APP_VK_1 :
253                                case APP_VK_2 :
254                                case APP_VK_3 :
255                                case APP_VK_4 :
256                                case APP_VK_5 :
257                                case APP_VK_6 :
258                                case APP_VK_7 :
259                                case APP_VK_8 :
260                                case APP_VK_9 :
261                                case APP_VK_DOT :
262                                case APP_VK_SELECT :
263                                       
264                                        if(is_tune_started && (param2>=APP_VK_0 && param2<=APP_VK_9)) 
265                                                is_tune_started=FALSE;
266                                       
267                                        if(is_tune_started && param2==APP_VK_SELECT) {
268                                                DMG_MenuExit(MID_CH_BANNER);
269                                                break;
270                                        }
271                                       
272                                        pmenu=(tDMG_Menu *)param1;
273                                       
274                                        // ÇöÀç ¸ðµå°¡ NORMAL À̵ç (short info) digit ÀÌµç °£¿¡
275                                        // ¼ýÀÚ°¡ ÀԷµǾúÀ¸¹Ç·Î digit mode·Î Àüȯ µÊ.
276                                        pmenu->param1=DMG_MAKEWORD(MPARAM_CH_BANNER_DIGIT, 0);
277                                       
278                                        if(param2>=APP_VK_0 && param2<=APP_VK_9) 
279                                                App_DigitKeyProcess((APP_DIGITKEY_CODE)(APP_DIGITKEY_0+param2-APP_VK_0));
280                                        else if(param2==APP_VK_DOT) App_DigitKeyProcess(APP_DIGITKEY_DOT);
281                                        else if(param2==APP_VK_SELECT) App_DigitKeyProcess(APP_DIGITKEY_OK);
282                                       
283                                        APP_OSD_EraseWarningBanner();
284                                        App_OSD_DrawDigitBanner();
285                                       
286                                        // ÀÔ·ÂµÈ key Á¤º¸·Î ¹øÈ£°¡ ¿Ï¼º µÈ °æ¿ì ±â´Ù¸®Áö ¸»°í ¹Ù·Î Æ©´×À» ½ÃÀÛÇϵµ·Ï ÇÔ.
287                                        // Ű Á¶ÇÕÀÌ ¿Ï¼º µÇ¾ú°Å³ª, OK ۸¦ ´©¸¥ °æ¿ì¶ó¸é ¹Ù·Î ½ÇÇà.
288                                        {
289                                                App_DigitKeyParam dkp;
290                                                App_DigitKeyGetInfo(&dkp);
291                                               
292                                                if (dkp.is_ready || param2==APP_VK_SELECT)
293                                                        DMG_SetTimer(TIMER_ID_CH_BANNER, 0, eDMG_CMD_OPT_TIMER_ONESHOT);
294                                                else
295                                                        DMG_SetTimer(TIMER_ID_CH_BANNER, TIMER_ID_DIGIT_KEY_DUR, eDMG_CMD_OPT_TIMER_ONESHOT);
296                                        }
297                                       
298                                        break;
299                               
300                                default :
301                                        bret=FALSE;
302                        }
303                       
304                        break;
305                       
306                default :
307                        bret=FALSE;
308                        break;
309       
310        }
311       
312        if(!bret) 
313                bret=App_Proc_Idle(cmd, opt, param1, param2);
314       
315        DMG_AutoRefresh();
316       
317        return bret;
318}
319
320
321void App_Menu_StartChBanner(int major, int minor, UINT16 *pch_name)
322{
323        DMG_MenuStart(MID_CH_BANNER);
324}
325
326void App_Menu_StopChBanner()
327{
328        DMG_MenuExit(MID_CH_BANNER);
329}
330
331
332
333void App_Menu_CreateChBanner()
334{
335        if(DMG_GetMenu(MID_CH_BANNER)) {
336                return;
337        }
338       
339        DMG_CreateMenu(MID_CH_BANNER_CFG);
340}
341
342
343#if COMMENT
344__PROC_SCAN__() {}
345#endif
346
347
348void App_Menu_StartScanBanner(int rf)
349{
350        DMG_SetMenuParam1(MID_SCAN_BANNER, rf);
351        DMG_MenuStart(MID_SCAN_BANNER);
352}
353
354void App_Menu_StopScanBanner()
355{
356        DMG_MenuExit(MID_SCAN_BANNER);
357}
358
359
360BOOL App_Proc_Scan_Banner(tDMG_CMD cmd, UINT32 opt, UINT32 param1, UINT32 param2)
361{
362        BOOL bret=TRUE;
363        tDMG_Menu *pmenu;
364       
365        if (cmd != eDMG_CMD_ON_TIME)
366                dprint(0, "scan_banner proc : cmd(%x, %s), opt(%x), param1(%x), param2(%x)\n", 
367                        cmd, DMG_CMD_STR(cmd), opt, param1, param2);
368       
369        switch(cmd) {
370                case eDMG_CMD_ON_MENU_ENTER :
371                        pmenu=(tDMG_Menu *)param1;
372                        dprint(0, "===== scan banner enter \n");
373                        break;
374                       
375                case eDMG_CMD_ON_MENU_ACTIVE :
376                        pmenu=(tDMG_Menu *)param1;
377                        dprint(0, "===== scan banner active, inactive id 0x%x, user param %d\n", param2, pmenu->param1);
378                        pmenu->param2 = 0;
379                        App_OSD_DrawManualScanBanner(pmenu->param1, pmenu->param2);
380                        // ¾Ö´Ï¸ÞÀÌ¼Ç È¿°ú¸¦ À§ÇØ ÂªÀº interval·Î °è¼Ó ¹Ýº¹ È£Ã⠵ǹǷÎ, ±æ°Ô timeout ÇÒ ÇÊ¿ä ¾øÀ½.
381                        DMG_SetTimer(TIMER_ID_SCAN_BANNER_UPDATE, 300, 0); // continuous timer
382                        break;
383
384                case eDMG_CMD_ON_MENU_INVISIBLE:
385                        dprint(0, "===== scan banner invisible \n");
386                        DMG_MenuExit(MID_SCAN_BANNER);
387                        break;
388
389                case eDMG_CMD_ON_MENU_EXIT :
390                        pmenu=(tDMG_Menu *)param1;
391                        dprint(0, "===== scan banner exit\n");
392                        DMG_KillTimer(TIMER_ID_SCAN_BANNER_UPDATE);
393                        DMG_KillTimer(TIMER_ID_SCAN_BANNER_EXIT);
394                        App_OSD_EraseManualScanBanner();
395                        pmenu->param2 = 0;
396                        break;
397               
398                case eDMG_CMD_ON_TIME :
399                        pmenu=DMG_GetCurMenu();
400                        if(param1==TIMER_ID_SCAN_BANNER_UPDATE) {
401                                dprint(0, "===== scan banner update timer, %d %d\n", pmenu->param1, pmenu->param2);
402                                pmenu->param2++;
403                                App_OSD_DrawManualScanBanner(pmenu->param1, pmenu->param2);
404                        }
405                        else if(param1==TIMER_ID_SCAN_BANNER_EXIT) {
406                                dprint(0, "===== scan banner exit timer\n");
407                                DMG_MenuExit(MID_SCAN_BANNER);
408                        }
409                        else
410                                bret=FALSE;
411                        break;
412
413                case eDMG_CMD_ON_USER_DEFINED :
414                        // parameter¸¦ Àü´ÞÇÏ´Â ´Ù¸¥ Å×Å©´Ð.
415                        // StartMenu ´Â ÆÄ¶ó¹ÌÅÍ Àü´Þ ¹æ½ÄÀÌ ¾ÈÀüÇÏÁö ¸øÇϹǷΠ(race condition °¡´É¼º..)
416                        // º¸³»¾ß ÇÒ parameter°¡ ÀÖ´Ù¸é user id¸¦ ÀÌ¿ëÇÏ¸é µÈ´Ù.
417                        if(opt==UD_ID_SCAN_BANNER) {
418                                pmenu=DMG_GetCurMenu();
419                                pmenu->param1 = param1; // rf to scan.. -1 if scan failed.
420                                pmenu->param2 = 0; // counter..
421                                App_OSD_DrawManualScanBanner(pmenu->param1, pmenu->param2);
422                        }
423                        else if(opt==UD_ID_SCAN_BANNER_OPERATION) {
424                                if(pmenu->param1==UD_ID_SCAN_BANNER_OPERATION_START) {
425                                        App_Menu_StartScanBanner((int)pmenu->param2);
426                                }
427                                else if(pmenu->param1==UD_ID_SCAN_BANNER_OPERATION_STOP) {
428                                        App_Menu_StopScanBanner();
429                                }
430                        }
431                        else
432                                bret=FALSE;
433                        break;
434                       
435                case eDMG_CMD_ON_KEY :
436                        // ÀÌ ¸Þ´º°¡ ¶° ÀÖ´Â µ¿¾È ¸·¾Æ¾ß ÇÏ´Â ÀÏ¹Ý Å°¸¦ ¿©±â¼­ screening.
437                        pmenu=(tDMG_Menu *)param1;
438                        switch(param2) {
439                                case APP_VK_MENU :
440                                case APP_VK_BACK :
441                                case APP_VK_EXIT :
442                                        dprint(0, "!! BACK key. cancel scan banner..\n");
443                                        DMG_KillTimer(TIMER_ID_SCAN_BANNER_UPDATE);
444                                        App_OSD_DrawManualScanBanner(-2, pmenu->param2);
445                                        // À§ ¸Þ½ÃÁö°¡ È­¸é¿¡ º¸ÀÌ´Â ½Ã°£À» °í·ÁÇÏ¿© ÀÏÁ¤ Áö¿¬ ÈÄ¿¡ exit.
446                                        DMG_SetTimer(TIMER_ID_SCAN_BANNER_EXIT, 500, eDMG_CMD_OPT_TIMER_ONESHOT);
447                                        break;
448
449                                // manual scan ÁøÇà Áß¿¡´Â ´Ù¸¥ Ű ÀÔ·Â ¸·À½.
450                                case APP_VK_INFO :
451                                case APP_VK_PREV_CH:
452                                case APP_VK_FAV:
453                                case APP_VK_CH_UP :
454                                case APP_VK_CH_DOWN :
455                                        dprint(0, "!! key %x ignored while manual scan..\n", param2);
456                                        break;
457
458                                case APP_VK_0 :
459                                case APP_VK_1 :
460                                case APP_VK_2 :
461                                case APP_VK_3 :
462                                case APP_VK_4 :
463                                case APP_VK_5 :
464                                case APP_VK_6 :
465                                case APP_VK_7 :
466                                case APP_VK_8 :
467                                case APP_VK_9 :
468                                case APP_VK_DOT :
469                                case APP_VK_SELECT :
470                                        dprint(0, "!! digit key %x ignored while manual scan..\n", param2);
471                                        break;
472                                       
473                                default :
474                                        bret=FALSE;
475                        }
476                        break;
477                       
478                default :
479                        bret=FALSE;
480                        break;
481       
482        }
483       
484        if(!bret) 
485                bret=App_Proc_Idle(cmd, opt, param1, param2);
486       
487        DMG_AutoRefresh();
488       
489        return bret;
490}
491
492
493
494
495
496void App_Menu_CreateScanBanner()
497{
498        if(DMG_GetMenu(MID_SCAN_BANNER)) {
499                return;
500        }
501       
502        DMG_CreateMenu(MID_SCAN_BANNER_CFG);
503}
504
505
506
507
508#if COMMENT
509__PROC_VOL__() {}
510#endif
511
512BOOL App_Proc_Vol_Banner(tDMG_CMD cmd, UINT32 opt, UINT32 param1, UINT32 param2)
513{
514        BOOL bret=TRUE;
515        tDMG_Menu *pmenu;
516       
517        dprint(1, "%s proc : cmd(%x), param1(%x), param2(%x)\n", __FUNCTION__, cmd, param1, param2);
518       
519        switch(cmd) {
520                               
521                case eDMG_CMD_ON_MENU_ACTIVE :                 
522                        pmenu=(tDMG_Menu *)param1;
523
524                        App_OSD_DrawVolumeBG();
525                        App_OSD_DrawVolume(App_AudioGetVolume());
526                        App_AudioMute(FALSE, APP_AUDIO_MUTE_USER);
527
528                        DMG_SetTimer(TIMER_ID_VOL_BANNER, TIMER_VOL_BANNER_DUR, eDMG_CMD_OPT_TIMER_ONESHOT);
529                        break;
530                       
531                case eDMG_CMD_ON_TIME :
532                        /* kill */
533                        if(param1==TIMER_ID_VOL_BANNER) {
534                                pmenu=DMG_GetCurMenu();
535                               
536                                DMG_MenuExit(pmenu->id);
537                        }
538                        else
539                                bret=FALSE;
540                        break;
541                       
542                case eDMG_CMD_ON_KEY :
543                       
544                        switch(param2) {
545                                case APP_VK_VOL_DOWN:
546                                        App_AudioVolumeDown();
547
548                                        // Draw
549                                        App_OSD_EraseVolBanner();
550                                        App_OSD_DrawVolumeBG();
551                                        App_OSD_DrawVolume(App_AudioGetVolume());
552                                       
553                                        DMG_SetTimer(TIMER_ID_VOL_BANNER, TIMER_VOL_BANNER_DUR, eDMG_CMD_OPT_TIMER_ONESHOT);                                   
554                                        break;
555                                       
556                                case APP_VK_VOL_UP :
557                                        App_AudioVolumeUp();
558                                       
559                                        // Draw
560                                        App_OSD_EraseVolBanner();
561                                        App_OSD_DrawVolumeBG();
562                                        App_OSD_DrawVolume(App_AudioGetVolume());
563                                       
564                                        DMG_SetTimer(TIMER_ID_VOL_BANNER, TIMER_VOL_BANNER_DUR, eDMG_CMD_OPT_TIMER_ONESHOT);                                   
565                                        break;
566                               
567                                case APP_VK_CH_UP :
568                                case APP_VK_CH_DOWN :
569                                case APP_VK_FAV :
570                                        DMG_MenuExit(MID_VOL_BANNER);
571                                        bret=FALSE;
572                                        break;
573                                                                       
574                                default :
575                                        bret=FALSE;
576                        }
577                       
578                        break;
579
580                case eDMG_CMD_ON_MENU_EXIT :
581                        DMG_KillTimer(TIMER_ID_VOL_BANNER);
582                        App_OSD_EraseVolBanner();
583                        break;
584                                       
585                default :
586                        bret=FALSE;
587                        break;
588       
589        }
590       
591        if(!bret) 
592                bret=App_Proc_Idle(cmd, opt, param1, param2);
593       
594        DMG_AutoRefresh();
595       
596        return bret;
597}
598
599
600void App_Menu_StartVolBanner(int vol)
601{
602        DMG_MenuStart(MID_VOL_BANNER);
603}
604
605void App_Menu_StopVolBanner()
606{
607        DMG_MenuExit(MID_VOL_BANNER);
608}
609
610void App_Menu_CreateVolBanner(void)
611{
612        if(DMG_GetMenu(MID_VOL_BANNER)) {
613                return;
614        }
615       
616        DMG_CreateMenu(MID_VOL_BANNER_CFG);
617}
618
619
620
621
622
623#if COMMENT
624__PROC_INFO__() {}
625#endif
626
627#define INFO_VER_MAGIC 7762
628#define APP_SDDS_PID 0x1200
629
630BOOL App_Proc_Info_Banner(tDMG_CMD cmd, UINT32 opt, UINT32 param1, UINT32 param2)
631{
632        BOOL bret=TRUE;
633        static UINT32 s_magic = 0;
634       
635        dprint(1, "%s proc : cmd(%x), param1(%x), param2(%x)\n", __FUNCTION__, cmd, param1, param2);
636       
637        switch(cmd) {
638               
639                case eDMG_CMD_ON_MENU_INVISIBLE :
640                case eDMG_CMD_ON_MENU_INACTIVE :
641                        break;
642                       
643                case eDMG_CMD_ON_MENU_ACTIVE :                 
644                       
645                        DMG_SetMenuTimeout(MID_INFO_BANNER, 10000);
646                        // Draw
647                        App_OSD_DrawInfoBannerBG();                               // entire
648                        App_OSD_DrawInfoBannerCurChinfo(FALSE);                   // Chinfo
649                        App_OSD_DrawInfoBannerSignal(SigMon_GetStrength(), FALSE);// signal
650                        App_OSD_DrawInfoBannerICON(FALSE);                        // resolution
651                        App_OSD_DrawInfoTime(FALSE);                              // time/date
652                       
653                        // Set Timer
654                        DMG_SetTimer(TIMER_ID_INFO_BANNER, 1500, 0);
655                       
656                        s_magic = 0;
657                        break;
658                       
659                case eDMG_CMD_ON_TIME :
660                        if(param1==TIMER_ID_INFO_BANNER) { // refresh item
661                                App_OSD_DrawInfoBannerCurChinfo(TRUE);                   // Chinfo
662                                App_OSD_DrawInfoBannerSignal(SigMon_GetStrength(), TRUE);// signal
663                                App_OSD_DrawInfoBannerICON(TRUE);                        // resolution
664                                App_OSD_DrawInfoTime(TRUE);                              // time/date
665                        }
666                        else if(param1==TIMER_ID_L1) {
667                                DMG_SetTimer(TIMER_ID_L1, 1000, eDMG_CMD_OPT_TIMER_LOCAL1);
668                                App_OSD_DrawInfoBannerMagic(2);
669                        }
670                        else if(param1==TIMER_ID_INFO_BANNER_HM) {
671                                dprint(2, "clear info banner magic\n");
672                                s_magic = 0;
673                        }
674                        else {
675                                bret=FALSE;
676                        }
677                        break;
678               
679                case eDMG_CMD_ON_TIMEOUT :
680                        DMG_MenuExit(MID_INFO_BANNER);
681                        break;
682               
683                case eDMG_CMD_ON_KEY :
684                       
685                        switch(param2) {
686                                case APP_VK_MENU:
687                                case APP_VK_INFO:
688                                case APP_VK_SELECT:                                     
689                                        DMG_MenuExit(MID_INFO_BANNER);
690                                        break;
691
692                                case APP_VK_CH_UP:
693                                        App_OSD_UpdateInfoBanner(0, FALSE); // erase infobanner entire
694                                        App_ChTuneMinorUp();
695                                        break;
696
697                                case APP_VK_CH_DOWN:
698                                        App_OSD_UpdateInfoBanner(0, FALSE); // erase infobanner entire
699                                        App_ChTuneMinorDown();
700                                        break;
701                                       
702                                // info banner »ó¿¡¼­ ´Ù¾çÇÑ ´Ù¸¥ hidden ±â´ÉÀ» Áö¿øÇϱâ À§ÇØ ¼ýÀÚ Å°´Â reserve.
703                                case APP_VK_0 :
704                                case APP_VK_1 :
705                                case APP_VK_2 :
706                                case APP_VK_3 :
707                                case APP_VK_4 :
708                                case APP_VK_5 :
709                                case APP_VK_6 :
710                                case APP_VK_7 :
711                                case APP_VK_8 :
712                                case APP_VK_9 :
713                                       
714                                        if(s_magic != INFO_VER_MAGIC) {
715                                                s_magic = s_magic*10 + (param2-APP_VK_0);
716                                                dprint(2, "info banner magic composited: %u\n", s_magic);
717                                                if (s_magic == INFO_VER_MAGIC) {
718                                                        DMG_KillTimer(TIMER_ID_INFO_BANNER);
719                                                        DMG_KillTimer(TIMER_ID_INFO_BANNER_HM);
720                                                        App_OSD_DrawInfoBannerMagic(0);
721                                                }
722                                                // 1ÃÊ À̳»¿¡ ´ÙÀ½ ¹®ÀÚ¸¦ ÀÔ·ÂÇÏÁö ¾ÊÀ» °æ¿ì key ¹öÆÛ clear.
723                                                DMG_SetTimer(TIMER_ID_INFO_BANNER_HM, 1000, eDMG_CMD_OPT_TIMER_ONESHOT);
724                                        }
725                                        else {
726                                                // 1. enable cable
727                                                if(param2==APP_VK_1) {
728                                                        extern void enable_cable(BOOL is_enable);
729                                                        BOOL isForcedEnableAirCable = App_IsForceEnableAirCable()?FALSE:TRUE;
730                                                        enable_cable(isForcedEnableAirCable);           // main menu frame Ȱ¼º/ºñȰ¼º.
731                                                        App_ForceEnableAirCable(isForcedEnableAirCable);        // nvramÀÇ Á¤º¸ °»½Å.
732                                                        App_OSD_DrawInfoBannerMagic(0);
733                                                }
734                                                else if(param2==APP_VK_2) {
735                                                        App_SetEnableCableQam(App_GetEnableCableQam()?FALSE:TRUE);
736                                                        App_OSD_DrawInfoBannerMagic(0);
737                                                }
738                                                else if(param2==APP_VK_3) {
739                                                        App_SddsStart(APP_SDDS_PID, 1);
740                                                        DMG_SetTimer(TIMER_ID_L1, 3000, eDMG_CMD_OPT_TIMER_LOCAL1);
741                                                        DMG_SetMenuTimeout(MID_INFO_BANNER, DMG_TIME_FOREVER);
742                                                        App_OSD_DrawInfoBannerMagic(1);
743                                                }
744                                               
745                                        }
746                                       
747                                        break;
748                                       
749                                default :
750                                        bret=FALSE;
751                        }
752                       
753                        break;
754                       
755                case eDMG_CMD_ON_MENU_EXIT :                   
756                        DMG_KillTimer(TIMER_ID_INFO_BANNER);
757                        App_OSD_UpdateInfoBanner(0, TRUE); // erase infobanner entire
758                        DMG_MenuExit(MID_INFO_BANNER);
759                         // 2010.04.20. foxhunt : info bannerÀÇ update ¿µ¿ªÀÌ ¸ÞÀθ޴º¿¡ ³ªÅ¸³ªÁö ¾Êµµ·Ï ÇÑ´Ù.
760                        break;
761                                       
762                default :
763                        bret=FALSE;
764                        break;
765       
766        }
767       
768        if(!bret) 
769                bret=App_Proc_Idle(cmd, opt, param1, param2);
770       
771        DMG_AutoRefresh();
772       
773        return bret;
774}
775
776
777void App_Menu_StartInfoBanner(int vol)
778{
779        DMG_MenuStart(MID_INFO_BANNER);
780}
781
782void App_Menu_StopInfoBanner()
783{
784        DMG_MenuExit(MID_INFO_BANNER);
785}
786
787void App_Menu_CreateInfoBanner(void)
788{
789        if(DMG_GetMenu(MID_INFO_BANNER)) {
790                return;
791        }
792       
793        DMG_CreateMenu(MID_INFO_BANNER_CFG);
794}
795
796
797
798
799
800#if COMMENT
801__PROC_POPUP__() {}
802#endif
803
804
805
806static BOOL p_is_on_sleep_timer = FALSE;
807static int p_sleep_timer_mode = 0;
808static int p_sleep_timer_start_time = 0;
809
810
811
812#if 0
813#define APP_NEXT_CC(t) ( \
814                (t)==eDCC_S_NONE  ? eDCC_S_CS1 : \
815                (t)==eDCC_S_CS1  ? eDCC_S_CS2 : \
816                (t)==eDCC_S_CS2  ? eDCC_S_CS3 : \
817                (t)==eDCC_S_CS3  ? eDCC_S_CS4 : \
818                (t)==eDCC_S_CS4  ? eDCC_S_CS5 : \
819                (t)==eDCC_S_CS5  ? eDCC_S_CS6 : \
820                (t)==eDCC_S_CS6  ? eDCC_S_NONE : eDCC_S_NONE)
821#else
822#define APP_NEXT_CC(t) ( \
823                (t)==eDCC_S_NONE  ? eDCC_S_CS1 : \
824                (t)==eDCC_S_CS1  ? eDCC_S_CS2 : \
825                (t)==eDCC_S_CS2  ? eDCC_S_CS3 : \
826                (t)==eDCC_S_CS3  ? eDCC_S_CS4 : \
827                (t)==eDCC_S_CS4  ? eDCC_S_CS5 : \
828                (t)==eDCC_S_CS5  ? eDCC_S_CS6 : \
829                (t)==eDCC_S_CS6  ? eDCC_S_CC1 : \
830                (t)==eDCC_S_CC1  ? eDCC_S_CC2 : \
831                (t)==eDCC_S_CC2  ? eDCC_S_T1 : \
832                (t)==eDCC_S_T1  ? eDCC_S_T2 : \
833                (t)==eDCC_S_T2  ? eDCC_S_NONE : eDCC_S_NONE)
834#endif
835
836
837UINT8 App_Menu_SetNextCCservice(UINT8 now_service)
838{
839        UINT8 next_service;
840
841        next_service = APP_NEXT_CC(now_service);
842       
843        if(next_service == eDCC_S_NONE)
844        {
845                DCC_Exit();
846                DMG_MenuExit(MID_CC);
847                //DCC_SetService(eDCC_S_CS1); //¸¸ÀÏ CC°¡ offµÇ¸é CS´Â default°ªÀ» ÅÃÇÔ.
848        }
849        else
850        {
851                DCC_Ready();
852                DMG_MenuStart(MID_CC);
853               
854                DCC_SetService(next_service);
855        }
856
857        App_CC_SaveVar();
858
859        return next_service;
860}
861
862
863void App_Menu_StartPopupBanner(int vol)
864{
865        DMG_MenuStart(MID_POPUP_BANNER);
866}
867
868void App_Menu_StopPopupBanner(void)
869{
870        DMG_MenuExit(MID_POPUP_BANNER);
871}
872
873
874BOOL App_Proc_Popup_Banner(tDMG_CMD cmd, UINT32 opt, UINT32 param1, UINT32 param2)
875{
876        BOOL bret=TRUE;
877        tDMG_Menu *pmenu;
878        int key=0;
879        BOOL bmute;
880        char str[40]={0,}, *s;
881        int nParam;
882        BOOL bChange = FALSE;
883        static int prev_key;
884        UINT32 nTimeLeft = 0;
885        UINT8 nMultiMin[5] = {0,15,30,60,120};
886        UINT8 cc_service=0;
887        char *MtsBannerBuf;     //arzhna, 100203
888       
889        dprint(1, "%s proc : cmd(%x), param1(%x), param2(%x)\n", __FUNCTION__, cmd, param1, param2);
890       
891        switch(cmd) {
892                               
893                case eDMG_CMD_ON_MENU_ACTIVE :                 
894                        pmenu=(tDMG_Menu *)param1;
895                       
896                        key = DMG_LOWORD(pmenu->param1);
897                        prev_key = key;
898                       
899                        switch(key) // ÀúÀåµÈ ÇöÀçÀÇ »óŸ¦ È­¸é¿¡ ¸ÕÀú º¸¿©ÁÖ±â À§ÇÑ switch ¹®
900                        {
901                                case APP_VK_MUTE:
902                                        bmute = App_AudioToggleUserMute();
903                                       
904                                        if(bmute) {GET_STR2(str, POPUP_AUDIO_MUTE_ON);}
905                                        else      {GET_STR2(str, POPUP_AUDIO_MUTE_OFF);}
906                                        break;
907                                       
908                                case APP_VK_ALANG:
909                                        // arzhna, 100203
910                                        // sprintf ÀÎÀÚ·Î NULL °ªÀÌ µé¾î°¡¸é hangupµÈ´Ù.
911                                        // ¹Ýµå½Ã NULL üũ¸¦ ÇØ¾ßÇÑ´Ù.
912                                        // ÇöÀç ¿Àµð¿À Á¤º¸ Ç¥½Ã
913                                        MtsBannerBuf = (char *)App_AudioShowOrChangeMTS(FALSE);
914                                       
915                                        if(MtsBannerBuf!=NULL) {strcpy(str, POPUP_AUDIO_CONV_KOR(MtsBannerBuf));}
916                                        else                   {GET_STR2(str, POPUP_AUDIO_NO_MTS);}
917                                        break;
918                                       
919                                case APP_VK_CC:
920                                        if(DCC_IsReady() == FALSE)
921                                        { // CC off »óÅÂ
922                                               
923                                                if(App_NVM_GetMenuLang()==0)
924                                                        strcpy(str, POPUP_CC_SERVICE_STR_ENG(eDCC_S_NONE));
925                                                else if(App_NVM_GetMenuLang()==1)
926                                                        strcpy(str, POPUP_CC_SERVICE_STR_SPA(eDCC_S_NONE));
927                                                else
928                                                        strcpy(str, POPUP_CC_SERVICE_STR_KOR(eDCC_S_NONE));
929                                                break;
930                                        }
931                                        cc_service = DCC_GetService();
932                                       
933                                        if(App_NVM_GetMenuLang()==0)
934                                                strcpy(str, POPUP_CC_SERVICE_STR_ENG(cc_service));
935                                        else if(App_NVM_GetMenuLang()==1)
936                                                strcpy(str, POPUP_CC_SERVICE_STR_SPA(cc_service));
937                                        else
938                                                strcpy(str, POPUP_CC_SERVICE_STR_KOR(cc_service));
939                                       
940                                        break;
941
942                                case APP_VK_DMODE:
943                                        nParam = App_VideoShowOrChangeDisplayMode(FALSE);
944                                        if(App_NVM_GetMenuLang()==0)
945                                                strcpy(str, POPUP_VIDEO_MODE_STR_ENG(nParam));
946                                        else if(App_NVM_GetMenuLang()==1)
947                                                strcpy(str, POPUP_VIDEO_MODE_STR_SPA(nParam));
948                                        else
949                                                strcpy(str, POPUP_VIDEO_MODE_STR_KOR(nParam));
950                                        break;         
951       
952                                case APP_VK_SLEEP:
953                                        if(p_is_on_sleep_timer)
954                                        { // Sleep Timer°¡ ¼³Á¤µÇ¾î ÀÖ´Â °æ¿ì
955                                                nTimeLeft = nMultiMin[p_sleep_timer_mode]*60 - (DHL_OS_GetMsCount()-p_sleep_timer_start_time)/1000;
956                                               
957                                                if(nTimeLeft > 60) {
958                                                        GET_STR(s , TIMER_WARN_OVER_1MIN);
959                                                        sprintf(str, s, nTimeLeft/60);
960                                                }
961                                                else
962                                                {
963                                                        DMG_KillTimer(TIMER_ID_SLEEP_LAST1MIN);
964                                                        DMG_KillTimer(TIMER_ID_POPUP); // popup¹è³Ê°¡ »ç¶óÁ®¹ö¸®¸é sleep timer °ªÀÌ ¾û¸ÁÀÌ µÇ¹Ç·Î killÇÏÀÚ.
965                                                        GET_STR(s, TIMER_WARN_LESS_1MIN);
966                                                        sprintf(str, s, nTimeLeft);
967                                                }
968                                        }
969                                        else {// Sleep Timer°¡ ¼³Á¤µÇ¾î ÀÖÁö ¾ÊÀº °æ¿ì(OFF)
970                                                GET_STR2(str, TIMER_WARN_TIMER_OFF);
971                                        }
972                                               
973                                        dprint(1, "[1]p_sleep_timer_mode : %d // Set Time : %d minutes\n", p_sleep_timer_mode, nTimeLeft/60);
974                                        break;
975                               
976                                case APP_VK_RESOLUTION:
977                                        {
978                                                APP_VIDEO_FORMAT r=App_VideoGetOutputResolution();
979                                                strcpy(str, r==APP_VIDEO_FORMAT_1080I?"1080i":
980                                                                  r==APP_VIDEO_FORMAT_1080P?"1080p":
981                                                                  r==APP_VIDEO_FORMAT_720P?"720p":
982                                                                  r==APP_VIDEO_FORMAT_480P?"480p":"480i");
983                                        }
984                                       
985                                        break;
986
987                                default :
988                                        bret=FALSE;
989                                        break;
990                               
991                        }
992                        App_OSD_DrawPopupBG(str);
993                        DMG_SetTimer(TIMER_ID_POPUP, TIMER_POPUP_BANNER_DUR, eDMG_CMD_OPT_TIMER_ONESHOT);
994                       
995                        break;
996                       
997                case eDMG_CMD_ON_TIME :
998                        /* kill */
999                        if(param1==TIMER_ID_POPUP) {
1000                                pmenu=DMG_GetCurMenu();
1001                               
1002                                DMG_MenuExit(pmenu->id);
1003                        }
1004                        else
1005                                bret=FALSE;
1006                        break;
1007                       
1008                case eDMG_CMD_ON_KEY :
1009                        pmenu=DMG_GetCurMenu();
1010
1011                        switch(param2)
1012                        {
1013                                case APP_VK_MUTE:
1014                                        bmute = App_AudioToggleUserMute();
1015                                        if(bmute) {GET_STR2(str, POPUP_AUDIO_MUTE_ON);}
1016                                        else      {GET_STR2(str, POPUP_AUDIO_MUTE_OFF);}
1017                                        break;
1018       
1019                                case APP_VK_ALANG:
1020                                        if(prev_key == APP_VK_ALANG) bChange = TRUE;
1021                                        else                         bChange = FALSE;
1022                                       
1023                                        // arzhna, 100203
1024                                        // sprintf ÀÎÀÚ·Î NULL °ªÀÌ µé¾î°¡¸é hangupµÈ´Ù.
1025                                        // ¹Ýµå½Ã NULL üũ¸¦ ÇØ¾ßÇÑ´Ù.
1026                                        MtsBannerBuf = (char *)App_AudioShowOrChangeMTS(bChange);
1027                                       
1028                                        if(MtsBannerBuf!=NULL) {
1029                                                strcpy(str, POPUP_AUDIO_CONV_KOR(MtsBannerBuf));
1030                                        }
1031                                        else {
1032                                                GET_STR2(str, POPUP_AUDIO_NO_MTS);
1033                                        }
1034                                        break;
1035                               
1036                        case APP_VK_CC:
1037                                if(prev_key == APP_VK_CC)
1038                                        bChange = TRUE;
1039                                else 
1040                                        bChange = FALSE;
1041
1042                                if(bChange == TRUE)
1043                                {
1044                                        if(DCC_IsReady() == FALSE)
1045                                        {
1046                                                cc_service = eDCC_S_NONE;
1047                                        }
1048                                        else
1049                                        {
1050                                                cc_service = DCC_GetService();
1051                                        }                               
1052                                        cc_service = App_Menu_SetNextCCservice(cc_service);
1053                                       
1054                                        if(App_NVM_GetMenuLang()==0)
1055                                                strcpy(str, POPUP_CC_SERVICE_STR_ENG(cc_service));
1056                                        else if(App_NVM_GetMenuLang()==1)
1057                                                strcpy(str, POPUP_CC_SERVICE_STR_SPA(cc_service));
1058                                        else
1059                                                strcpy(str, POPUP_CC_SERVICE_STR_KOR(cc_service));
1060                                }
1061                                else 
1062                                {
1063                                        if(DCC_IsReady() == FALSE)
1064                                        {
1065                                                // CC off »óÅÂ
1066                                                if(App_NVM_GetMenuLang()==0)
1067                                                        strcpy(str, POPUP_CC_SERVICE_STR_ENG(eDCC_S_NONE));
1068                                                else if(App_NVM_GetMenuLang()==1)
1069                                                        strcpy(str, POPUP_CC_SERVICE_STR_SPA(eDCC_S_NONE));
1070                                                else
1071                                                        strcpy(str, POPUP_CC_SERVICE_STR_KOR(eDCC_S_NONE));
1072                                                break;
1073                                        }                       
1074                                        cc_service = DCC_GetService();
1075                                       
1076                                        if(App_NVM_GetMenuLang()==0)
1077                                                strcpy(str, POPUP_CC_SERVICE_STR_ENG(cc_service));
1078                                        else if(App_NVM_GetMenuLang()==1)
1079                                                strcpy(str, POPUP_CC_SERVICE_STR_SPA(cc_service));
1080                                        else
1081                                                strcpy(str, POPUP_CC_SERVICE_STR_KOR(cc_service));     
1082                                }
1083                               
1084                                break;
1085
1086                        case APP_VK_DMODE:
1087                                if(prev_key == APP_VK_DMODE)
1088                                        bChange = TRUE;
1089                                else 
1090                                        bChange = FALSE;
1091                                nParam = App_VideoShowOrChangeDisplayMode(bChange);
1092                                if(App_NVM_GetMenuLang()==0)
1093                                        strcpy(str, POPUP_VIDEO_MODE_STR_ENG(nParam));
1094                                else if(App_NVM_GetMenuLang()==1)
1095                                        strcpy(str, POPUP_VIDEO_MODE_STR_SPA(nParam));
1096                                else
1097                                        strcpy(str, POPUP_VIDEO_MODE_STR_KOR(nParam));
1098                                break;
1099
1100                        case APP_VK_SLEEP:
1101                                if(prev_key == APP_VK_SLEEP)
1102                                        bChange = TRUE;
1103                                else 
1104                                        bChange = FALSE;
1105                                       
1106                                if(bChange)
1107                                {       // Sleep Timer POPUPÀÌ ÄÑÁ®ÀÖ´Â °æ¿ì
1108                                        if(p_is_on_sleep_timer)
1109                                        { // Sleep Timer°¡ ¼³Á¤µÇ¾î ÀÖ´Â °æ¿ì
1110                                                if(p_sleep_timer_mode == 4)
1111                                                { // 120ÀÎ °æ¿ì -> off·Î º¯È¯
1112                                                        p_is_on_sleep_timer = FALSE;
1113                                                        p_sleep_timer_mode = 0;
1114                                                        p_sleep_timer_start_time = 0;
1115                                                        DMG_KillTimer(TIMER_ID_SLEEP);
1116                                                }
1117                                                else
1118                                                { // 15 ~ 90ºÐÀÎ °æ¿ì -> Çϳª¾¿ Áõ°¡
1119                                                        p_is_on_sleep_timer = TRUE;
1120                                                        p_sleep_timer_mode++;
1121                                                        nTimeLeft = nMultiMin[p_sleep_timer_mode];
1122                                                        p_sleep_timer_start_time = DHL_OS_GetMsCount();
1123                                                        DMG_KillTimer(TIMER_ID_SLEEP); // 1ºÐ Ä«¿îÆ®´Ù¿î timer¸¦ kill ÇØÁÖ±â À§ÇØ
1124                                                        DMG_SetTimer(TIMER_ID_SLEEP, (nTimeLeft)*60*1000, eDMG_CMD_OPT_TIMER_ONESHOT);
1125                                                        dprint(3, "[%d]p_sleep_timer_mode : %d // nTimeLeft : %d\n", __LINE__, p_sleep_timer_mode, nTimeLeft);
1126                                                }
1127                                        }
1128                                        else
1129                                        { // Sleep Timer°¡ ¼³Á¤µÇ¾î ÀÖÁö ¾ÊÀº °æ¿ì(OFF)
1130                                                p_is_on_sleep_timer = TRUE;
1131                                                p_sleep_timer_mode = 1;
1132                                                nTimeLeft = nMultiMin[p_sleep_timer_mode];
1133                                                p_sleep_timer_start_time = DHL_OS_GetMsCount();
1134                                                DMG_SetTimer(TIMER_ID_SLEEP, (nTimeLeft)*60*1000, eDMG_CMD_OPT_TIMER_ONESHOT);
1135                                                dprint(3, "[%d]p_sleep_timer_mode : %d // nTimeLeft : %d\n", __LINE__, p_sleep_timer_mode, nTimeLeft);
1136                                        }
1137                                       
1138                                        /* ¼³Á¤ÇÒ ½Ã°£ Ç¥½Ã */
1139                                        //nTimeLeft = nMultiMin[p_sleep_timer_mode];
1140                                       
1141                                        if(p_sleep_timer_mode == 0) {GET_STR2(str, TIMER_WARN_TIMER_OFF);}
1142                                        else {
1143                                                char *t;
1144                                                GET_STR(t, TIMER_WARN_OVER_1MIN);
1145                                                sprintf(str, t, nTimeLeft);
1146                                        }
1147                                       
1148                                        DMG_KillTimer(TIMER_ID_SLEEP_LAST1MIN); // 1ºÐ Ä«¿îÆ®´Ù¿î timer¸¦ kill ÇØÁÖ±â À§ÇØ
1149                                }
1150                               
1151                                else // 2010.03.09 foxhunt : ÀÌ ºÎºÐÀº ÇÊ¿ä¾ø´Â ºÎºÐÀÏ ¼öµµ ÀÖÀ¸³ª ¼³Á¤ÇصÎÀÚ.
1152                                { // Sleep Timer POPUPÀÌ Ã³À½ ÄÑÁø °æ¿ì
1153                                        if(p_is_on_sleep_timer)
1154                                        { // Sleep Timer°¡ ¼³Á¤µÇ¾î ÀÖ´Â °æ¿ì
1155                                                nTimeLeft = nMultiMin[p_sleep_timer_mode]*60 - (DHL_OS_GetMsCount()-p_sleep_timer_start_time)/1000;
1156                                               
1157                                                if(nTimeLeft > 60) {
1158                                                        char *t;
1159                                                        GET_STR(t, TIMER_WARN_OVER_1MIN);
1160                                                        sprintf(str, t, nTimeLeft/60);
1161                                                }
1162                                                else
1163                                                {
1164                                                        char *t;
1165                                                        DMG_KillTimer(TIMER_ID_SLEEP_LAST1MIN);
1166                                                        DMG_KillTimer(TIMER_ID_POPUP); // popup¹è³Ê°¡ »ç¶óÁ®¹ö¸®¸é sleep timer °ªÀÌ ¾û¸ÁÀÌ µÇ¹Ç·Î killÇÏÀÚ.
1167                                                        GET_STR(t, TIMER_WARN_LESS_1MIN);
1168                                                        sprintf(str, t, nTimeLeft);
1169                                                }
1170                                        }
1171                                        else {// Sleep Timer°¡ ¼³Á¤µÇ¾î ÀÖÁö ¾ÊÀº °æ¿ì(OFF)
1172                                                GET_STR2(str, TIMER_WARN_TIMER_OFF);
1173                                        }
1174                                }
1175                               
1176                                dprint(1, "[2]p_sleep_timer_mode : %d // Set Time : %d minutes\n", p_sleep_timer_mode, nTimeLeft);
1177                                break;
1178                               
1179                        case APP_VK_POWER_OFF:
1180                        case APP_VK_CH_UP:
1181                        case APP_VK_CH_DOWN:
1182                        case APP_VK_FAV:
1183                                DMG_KillTimer(TIMER_ID_POPUP);
1184                                DMG_MenuExit(MID_POPUP_BANNER);
1185                                App_OSD_ErasePopupBG();
1186                                bret=FALSE;
1187                                break;
1188                       
1189                        case APP_VK_VOL_UP :
1190                        case APP_VK_VOL_DOWN :
1191                                if(prev_key==APP_VK_MUTE) {
1192                                        DMG_MenuExit(MID_POPUP_BANNER);
1193                                        bret=FALSE;
1194                                }
1195                                else {
1196                                        App_Menu_StopPopupBanner();
1197                                }       
1198                                break;
1199                               
1200                        case APP_VK_RESOLUTION:
1201#if 0
1202                                {
1203                                                APP_VIDEO_FORMAT r=App_VideoGetOutputResolution();
1204                                               
1205                                                r=r==APP_VIDEO_FORMAT_1080I?APP_VIDEO_FORMAT_720P:
1206                                                             r==APP_VIDEO_FORMAT_720P?APP_VIDEO_FORMAT_480P:
1207                                                             r==APP_VIDEO_FORMAT_480P?APP_VIDEO_FORMAT_480I:
1208                                                             r==APP_VIDEO_FORMAT_480I?APP_VIDEO_FORMAT_1080I:APP_VIDEO_FORMAT_1080I;
1209                                               
1210                                                strcpy(str, r==APP_VIDEO_FORMAT_1080I?"1080i":
1211                                                                  r==APP_VIDEO_FORMAT_1080P?"1080p":
1212                                                                  r==APP_VIDEO_FORMAT_720P?"720p":
1213                                                                  r==APP_VIDEO_FORMAT_480P?"480p":"480i");
1214                                               
1215                                                App_VideoSetOutputResolution(r, TRUE);
1216                                }
1217#else
1218                                {
1219                                       
1220                                        APP_VIDEO_FORMAT r=App_VideoGetAndSetNextSupportedFormat();
1221                                        strcpy(str, r==APP_VIDEO_FORMAT_1080I?"1080i":
1222                                                          r==APP_VIDEO_FORMAT_1080P?"1080p":
1223                                                          r==APP_VIDEO_FORMAT_720P?"720p":
1224                                                          r==APP_VIDEO_FORMAT_480P?"480p":"480i");
1225                                }
1226#endif
1227                                break;
1228
1229                        default:
1230                                App_Menu_StopPopupBanner();
1231                                break;
1232                        }       
1233                       
1234                        prev_key = param2;
1235                        App_OSD_DrawPopupBG(str);
1236                        DMG_SetTimer(TIMER_ID_POPUP, TIMER_POPUP_BANNER_DUR, eDMG_CMD_OPT_TIMER_ONESHOT);
1237                        break;
1238
1239                case eDMG_CMD_ON_MENU_EXIT :
1240                        DMG_KillTimer(TIMER_ID_POPUP);
1241                        //DMG_MenuExit(MID_POPUP_BANNER);
1242                        App_OSD_ErasePopupBG();
1243                        bChange = FALSE;
1244                        break;
1245                                       
1246                default :
1247                        bret=FALSE;
1248                        break;
1249       
1250        }
1251       
1252        if(!bret) 
1253                bret=App_Proc_Idle(cmd, opt, param1, param2);
1254       
1255        DMG_AutoRefresh();
1256       
1257        return bret;
1258}
1259
1260
1261void App_Menu_CreatePopupBanner(void)
1262{
1263        if(DMG_GetMenu(MID_POPUP_BANNER)) {
1264                return;
1265        }
1266       
1267        DMG_CreateMenu(MID_POPUP_BANNER_CFG);
1268}
1269
1270
1271#if COMMENT
1272__PROC_SleepTimer__() {}
1273#endif
1274
1275
1276BOOL App_Proc_Sleep_Timer(tDMG_CMD cmd, UINT32 opt, UINT32 param1, UINT32 param2)
1277{
1278        BOOL bret=TRUE;
1279        tDMG_Menu *pmenu;
1280       
1281        dprint(1, "%s proc : cmd(%x), param1(%x), param2(%x)\n", __FUNCTION__, cmd, param1, param2);
1282       
1283        switch(cmd) {
1284               
1285                case eDMG_CMD_ON_MENU_UPDATE :
1286                       
1287                        DMG_SetFontSize(20);
1288                       
1289                        App_OSD_DrawPopupBG((char *)param2);
1290                       
1291                        DMG_SetFontSize(24);
1292                       
1293                        break;
1294                       
1295                case eDMG_CMD_ON_MENU_INACTIVE :
1296                case eDMG_CMD_ON_MENU_EXIT :
1297                        App_OSD_ErasePopupBG();
1298                        break;
1299               
1300                default :
1301                        bret=FALSE;
1302                        break;
1303        }
1304       
1305        if(!bret) 
1306                bret=App_Proc_Idle(cmd, opt, param1, param2);
1307       
1308        DMG_AutoRefresh();
1309       
1310        return bret;
1311}
1312
1313void App_Menu_CreateSleepTimer(void)
1314{
1315        if(DMG_GetMenu(MID_SLEEP_TIMER)) {
1316                return;
1317        }
1318       
1319        DMG_CreateMenu(MID_SLEEP_TIMER_CFG);
1320}
1321
1322
1323
1324#if COMMENT
1325__PROC_SIGNAL_STRENGTH__() {}
1326#endif
1327
1328BOOL App_Proc_Signal_Banner(tDMG_CMD cmd, UINT32 opt, UINT32 param1, UINT32 param2)
1329{
1330        BOOL bret=TRUE;
1331       
1332        dprint(1, "%s proc : cmd(%x), param1(%x), param2(%x)\n", __FUNCTION__, cmd, param1, param2);
1333       
1334        switch(cmd) {
1335                       
1336                case eDMG_CMD_ON_MENU_ACTIVE :                 
1337
1338                        // Draw
1339                        App_OSD_DrawSignalStrength(SigMon_GetStrength());
1340                        DMG_SetTimer(TIMER_ID_SIGNAL, 2000, 0);
1341                        break;
1342                       
1343                case eDMG_CMD_ON_TIME :
1344                        if(param1==TIMER_ID_SIGNAL) {
1345                                // refresh signal strength
1346                                App_OSD_DrawSignalStrength(SigMon_GetStrength());
1347                        }
1348                        else
1349                                bret=FALSE;
1350                        break;
1351               
1352                case eDMG_CMD_ON_MENU_INACTIVE :
1353                case eDMG_CMD_ON_MENU_EXIT :
1354                        //DMG_MenuExit(MID_SIGNAL_BANNER);
1355                        App_OSD_EraseSignalStrength();
1356                        break;
1357               
1358                case eDMG_CMD_ON_KEY :
1359                       
1360                        switch(param2) {
1361                                case APP_VK_BACK:
1362                                case APP_VK_MENU:
1363                                case APP_VK_SELECT:                                     
1364                                case APP_VK_METER:                                     
1365                                        DMG_MenuExit(MID_SIGNAL_BANNER);
1366                                        //App_OSD_EraseSignalStrength();
1367                                        break;
1368
1369                                default :
1370                                        bret=FALSE;
1371                        }
1372                        break;
1373                                       
1374                default :
1375                        bret=FALSE;
1376                        break;
1377       
1378        }
1379       
1380        if(!bret) 
1381                bret=App_Proc_Idle(cmd, opt, param1, param2);
1382       
1383        DMG_AutoRefresh();
1384       
1385        return bret;
1386}
1387
1388
1389void App_Menu_StartSignalBanner(int vol)
1390{
1391        DMG_MenuStart(MID_SIGNAL_BANNER);
1392}
1393
1394
1395void App_Menu_StopSignalBanner()
1396{
1397        DMG_MenuExit(MID_SIGNAL_BANNER);
1398}
1399
1400
1401void App_Menu_CreateSignalBanner(void)
1402{
1403        if(DMG_GetMenu(MID_SIGNAL_BANNER)) {
1404                return;
1405        }
1406       
1407        DMG_CreateMenu(MID_SIGNAL_BANNER_CFG);
1408}
1409
1410
1411
1412
1413
1414#if COMMENT
1415__PROC_SIG_MON__() {}
1416#endif
1417
1418BOOL App_Proc_SigMon(tDMG_CMD cmd, UINT32 opt, UINT32 param1, UINT32 param2)
1419{
1420        BOOL bret=TRUE;
1421        tDMG_Menu *pmenu;
1422        static BOOL is_active=FALSE;
1423       
1424        dprint(1, "%s proc : cmd(%x), param1(%x), param2(%x)\n", __FUNCTION__, cmd, param1, param2);
1425       
1426        switch(cmd) {
1427               
1428                case eDMG_CMD_ON_MENU_ENTER :
1429                        /* 2010.04.19 foxhunt
1430                         * ´Ù¸¥ ¸Þ´º°¡ ¶° ÀÖ´Â µ¿¾È eDMG_MENU_MANAGE_DENY_BUT_HIDE°¡ µÇ±â À§ÇØ ²À ÇÊ¿äÇÔ */
1431                        break;
1432               
1433                case eDMG_CMD_ON_MENU_ACTIVE :
1434                        is_active=TRUE;
1435                       
1436                        break;
1437               
1438                case eDMG_CMD_ON_USER_DEFINED :
1439                       
1440                        if(!is_active) break;
1441                       
1442                        if(opt==UD_ID_SIG_MON) {
1443                                if((param1>=UD_PARAM_SIG_MON_DRAW_WEAK_BANNER1) && (param1<=UD_PARAM_SIG_MON_DRAW_AUDIO_ONLY)) {
1444                                        App_OSD_DrawWeakSignal(param1, param2);
1445                                }
1446                                else if(param1==UD_PARAM_SIG_MON_ERASE_BANNER)
1447                                        App_OSD_EraseWeakSignal(param2);
1448                        }
1449#if 0 // ¾Æ·¡ Äڵ尡 Á» ÀÌÇØµÇÁö ¾ÊÀ½
1450                        else{
1451                                is_active=FALSE;
1452                                DMG_MenuExit(MID_SIG_MON);
1453                                App_OSD_EraseWeakSignal(-1);
1454                                bret=FALSE;
1455                        }
1456#endif
1457                        else {
1458                                bret=FALSE;
1459                        }
1460                        break;
1461               
1462                case eDMG_CMD_ON_MENU_INVISIBLE :
1463                case eDMG_CMD_ON_MENU_INACTIVE :
1464                case eDMG_CMD_ON_MENU_EXIT :
1465                        is_active=FALSE;
1466#if 0 // ¾Æ·¡ Äڵ尡 Á» ÀÌÇØµÇÁö ¾ÊÀ½
1467                        //DMG_MenuExit(MID_SIG_MON);
1468#endif
1469                        App_OSD_EraseWeakSignal(-1);
1470                        break;
1471                                       
1472                default :
1473                        bret=FALSE;
1474                        break;
1475       
1476        }
1477       
1478        if(!bret) 
1479                bret=App_Proc_Idle(cmd, opt, param1, param2);
1480       
1481        DMG_AutoRefresh();
1482       
1483        return bret;
1484}
1485
1486
1487void App_Menu_CreateSigMon(void)
1488{
1489        if(DMG_GetMenu(MID_SIG_MON)) {
1490                return;
1491        }
1492       
1493        DMG_CreateMenu(MID_SIG_MON_CFG);
1494}
1495
1496
1497#if COMMENT
1498__PROC_EA__() {}
1499#endif
1500
1501#include "App_Fnc_EA2.h"
1502
1503#define EA_SCROLL_IVTERVAL 500
1504
1505//EAÀÇ scroll°ú tuneÀ» ±¸ºÐÇØ¾ß ÇÔ.
1506//tuneÀ» proc¿¡¼­ ó¸®ÇÏÁö ¸»°í, trigger°¡ ¹ß»ýÇϸé TuneÀº ¹Ù·Î ó¸®Çϰí
1507//Á¾·á ½ÃÁ¡À» timer·Î ¾Ë·ÁÁÖ´Â ¹æ½ÄÀ¸·Î ±¸ÇöÀ» ÇÏÀÚ.
1508//±×¸®°í scroll¸¸ Proc EA¿¡¼­ ó¸®Çϵµ·Ï ÇÏÀÚ.
1509
1510
1511BOOL App_Proc_EA(tDMG_CMD cmd, UINT32 opt, UINT32 param1, UINT32 param2)
1512{
1513        BOOL bret=TRUE;
1514       
1515        static int pass_time=0;
1516        static eApp_EAInfo cur_ea={0, 0, 0, 0,};
1517       
1518        switch(cmd) {
1519               
1520                case eDMG_CMD_ON_MENU_ENTER :
1521                       
1522                        AppF_SetEAScroll(TRUE);
1523                       
1524                        AppF_GetCurEAInfo(&cur_ea);
1525                       
1526                        //¹«Á¶°Ç SCROLLÇÏ¸é µÊ.
1527                        AppO_SetEAText(cur_ea.text);
1528                        DMG_SetTimer(TIMER_ID_EA_SCROLL, EA_SCROLL_IVTERVAL, 0);
1529                        break;
1530               
1531                case eDMG_CMD_ON_MENU_ACTIVE :
1532                       
1533                        AppF_GetCurEAInfo(&cur_ea);
1534                       
1535                        if(cur_ea.remain<=0) {
1536                                DMG_MenuExit(DMG_MENU_ID_DEFAULT);
1537                        }
1538                       
1539                        if(cur_ea.bscroll) {
1540                                if(AppO_CheckEAContinue()) { //³¡³­ ÁöÁ¡ºÎÅÍ ´Ù½Ã ±×¸²
1541                                        ;//AppO_EADrawText(TRUE);
1542                                }
1543                                else {
1544                                        AppO_SetEAText(cur_ea.text); //óÀ½ºÎÅÍ ´Ù½Ã ±×¸².
1545                                }
1546                                DMG_SetTimer(TIMER_ID_EA_SCROLL, EA_SCROLL_IVTERVAL, 0);
1547                        }
1548                       
1549                        break;
1550               
1551                case eDMG_CMD_ON_MENU_INVISIBLE :
1552                case eDMG_CMD_ON_MENU_INACTIVE :
1553                       
1554                        AppO_EraseEA();
1555                        DMG_KillTimer(TIMER_ID_EA_SCROLL);
1556                        break;
1557                       
1558                case eDMG_CMD_ON_MENU_EXIT :
1559                        AppO_EraseEA();
1560                        DMG_KillTimer(TIMER_ID_EA_SCROLL);
1561                        AppF_SetEAScroll(FALSE);
1562                        break;
1563               
1564                case eDMG_CMD_ON_TIME:
1565                        if(param1==TIMER_ID_EA_SCROLL) {
1566                               
1567                                AppF_GetCurEAInfo(&cur_ea);
1568                               
1569                                //½Ã°£ÀÌ ´Ù Èê·¶°í, ÇÑ ÁÙÀÌ ´Ù ±×·ÁÁ³´Ù¸é Á¾·áÇÔ.
1570                                if(AppO_EADrawText(FALSE) && cur_ea.remain<=0) {//Á¾·á.
1571                                        AppO_EraseEA();
1572                                        AppF_SetEAScroll(FALSE);
1573                                        DMG_KillTimer(TIMER_ID_EA_SCROLL);
1574                                        DMG_MenuExit(DMG_MENU_ID_DEFAULT);
1575                                }
1576                        }
1577                        else 
1578                                bret=FALSE;
1579                       
1580                        break;
1581               
1582                case eDMG_CMD_ON_USER_DEFINED:
1583                       
1584                        if(opt==UD_ID_EA_CMD) {
1585                               
1586                                if(opt==UD_ID_EA_SCROLL_START) { //ÀÌ COMMAND´Â IDLE¿¡¼­ ó¸®ÇØ¾ß ÇÔ.
1587                                        //º¸Åë ÀÌ ¸Þ½ÃÁö´Â IDLE¿¡¼­ ¼ö½ÅÇÏ´Â°Ô Á¤»óÀε¥,
1588                                        //¿©±â¼­´Â ¾î¶»°Ô 󸮸¦ ÇØ¾ß ÇÒ Áö...
1589                                }
1590                                else if(opt==UD_ID_EA_SCROLL_STOP) {
1591                                        AppO_EraseEA();
1592                                        DMG_KillTimer(TIMER_ID_EA_SCROLL);
1593                                        DMG_MenuExit(DMG_MENU_ID_DEFAULT);
1594                                }
1595                                else if(opt==UD_ID_EA_SCROLL_UPDATE) {
1596                                        //scroll timeÀ» ´Ù½Ã Ã¼Å©ÇØ¾ß ÇÔ.-> timer¿¡¼­ °è¼Ó üũÇϱ⠶§¹®¿¡
1597                                        //¾Æ·¡ ÄÚµå´Â ±»ÀÌ »ó°ü ¾øÀ½.
1598                                        AppF_GetCurEAInfo(&cur_ea); //remain °ªÀ» ¾÷µ¥ÀÌÆ®ÇÔ.
1599                                }
1600                        }
1601                        else
1602                                bret=FALSE;
1603                                       
1604                default :
1605                        bret=FALSE;
1606                        break;
1607       
1608        }
1609       
1610        if(!bret) 
1611                bret=App_Proc_Idle(cmd, opt, param1, param2);
1612       
1613        DMG_AutoRefresh();
1614       
1615        return bret;
1616}
1617
1618
1619void App_Menu_CreateEA(void)
1620{
1621        if(DMG_GetMenu(MID_EA)) {
1622                return;
1623        }
1624       
1625        DMG_CreateMenu(MID_EA_CFG);
1626}
1627
1628
1629
1630/* end of file */
Note: See TracBrowser for help on using the repository browser.