source: svn/newcon3bcm2_21bu/dst/app/src/kview/Proc/App_Proc_Scan.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: 6.5 KB
Line 
1/****************************************************************************
2* NAME: App_Proc_Scan.c
3*----------------------------------------------------------------------------
4* Copyright (c) DIGITAL STREAM Technology Inc.
5*----------------------------------------------------------------------------
6* CREATED_BY: Yong Dae Park
7* CREATION_DATE: 2009/09/07
8* $Author: x2silo $
9* $Revision: 1.0 $
10* $Date: 2009/09/07 11:58:43 $
11*----------------------------------------------------------------------------
12* PURPOSE:
13* -
14*****************************************************************************/
15
16/*_____ I N C L U D E __________________________________________*/
17
18#include "App_Main.h"
19#include "App_Proc.h"
20
21#include "App_Fnc_Ucm.h"
22
23#include "DMW_ChannelAPI.h"
24
25#include "App_Res_Resources.h"
26
27#include "App_Fnc_AutoScan.h"
28#include "App_OSD_Scan.h"
29#include "App_OSD_Banner.h"
30
31
32
33
34
35/*_____ D E F I N I T I O N ____________________________________*/
36
37#if COMMENT
38____DbgPrint____(){}
39#endif
40
41DHL_MODULE("@p_scn",0);
42
43
44
45
46
47#if COMMENT
48____Config____(){}
49#endif
50
51
52
53
54
55#if COMMENT
56____Types____(){}
57#endif
58
59
60
61
62
63#if COMMENT
64____Variables____(){}
65#endif
66
67static BOOL p_bscan_waiting = FALSE; // scan ÁßÀÌ ¾Æ´Ñ ´ë±â ÁßÀÎ »óÅÂ
68
69
70
71
72
73/*_____ F U N C T I O N ________________________________________*/
74
75#if COMMENT
76____Function____(){}
77#endif
78
79
80void p_stop_autoscan()
81{
82        DMW_ASC_StopScan(TRUE);
83}
84
85
86static void p_post_autoscan()
87{
88        App_Autoscan_RecoverLastChannel();
89}
90
91#if 0
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       
105        return temp;
106}
107
108static void p_draw_ch_banner()
109{
110        tApp_UcmShortInfo info;
111                               
112        if(App_GetCurUcmShortInfo(&info)==statusOK) {
113                char temp[20];
114               
115                App_OSD_DrawChBanner(p_make_ch_str(info.major, info.minor, temp), info.short_name);
116                DMG_SetTimer(TIMER_ID_CH_BANNER, TIMER_CH_BANNER_DUR, eDMG_CMD_OPT_TIMER_ONESHOT);
117        }
118}
119       
120#endif
121
122
123BOOL App_Proc_Scan(tDMG_CMD cmd, UINT32 opt, UINT32 param1, UINT32 param2)
124{
125        BOOL bret=TRUE;
126        tDMG_Menu *pmenu;
127       
128        dprint(1, "%s proc : cmd(%s:%x), param1(%x), param2(%x)\n", 
129                __FUNCTION__, DMG_CMD_STR(cmd), cmd, param1, param2);
130       
131        switch(cmd) {
132                case eDMG_CMD_ON_MENU_ACTIVE :
133                        pmenu=(tDMG_Menu *)param1;
134                       
135                        pmenu->param1=0; /* 0: update, 1: rescan */
136                        pmenu->param2=0; /* 0: update/rescan, 1:stop */
137                       
138                        App_OSD_DrawScanBG();
139                        App_OSD_UpdateScanBtn(pmenu->param1, pmenu->param2);
140                        DMG_SetMenuTimeout(MID_AUTOSCAN, 30000);
141                                //30ÃÊ timeout
142                        break;
143                       
144                case eDMG_CMD_ON_MENU_INACTIVE :
145                case eDMG_CMD_ON_MENU_INVISIBLE :
146                       
147                        /* 2010.03.31 foxhunt
148                         * scan µµÁß card in/out, card mmi°¡ ¼ö½ÅµÉ °æ¿ì scanÀº °­Á¦ Á¾·áÇÑ´Ù.(Tivo µ¿ÀÛ°ú µ¿ÀÏ) */
149                        p_stop_autoscan(); /* °­Á¦ stop */
150                        DMG_MenuExit(MID_AUTOSCAN);
151                        break;
152                       
153                case eDMG_CMD_ON_MENU_EXIT :
154                        p_stop_autoscan(); /* °­Á¦ stop */
155                        DMG_MenuExit(MID_AUTOSCAN);
156                        App_OSD_EraseScanBG();
157                        break;
158               
159                case eDMG_CMD_ON_TIME :
160                       
161                        if(param1==TIMER_ID_CH_BANNER) {
162                                App_OSD_EraseChBanner();               
163                        }
164                        else
165                                bret=FALSE;
166                        break;
167                       
168                case eDMG_CMD_ON_TIMEOUT :
169                        DMG_MenuExit(MID_MAIN);
170                        DMG_MenuExit(MID_AUTOSCAN);
171                        break;
172
173                case eDMG_CMD_ON_KEY :
174                        pmenu=DMG_GetCurMenu();
175                       
176                        switch(param2) {
177                                case APP_VK_UP :
178                                        if(pmenu->param1==0 || pmenu->param2==1)
179                                                break;
180                                       
181                                        pmenu->param1=0;
182                                        App_OSD_UpdateScanBtn(pmenu->param1, pmenu->param2);
183                                        break;
184                               
185                                case APP_VK_DOWN :
186                                        if(pmenu->param1==1 || pmenu->param2==1)
187                                                break;
188                                               
189                                        pmenu->param1=1;
190                                        App_OSD_UpdateScanBtn(pmenu->param1, pmenu->param2);
191                                        break;
192                               
193                                case APP_VK_SELECT :
194                                        if(pmenu->param2==0) {
195                                                // start
196                                                DMG_SetMenuTimeout(MID_AUTOSCAN, DMG_TIME_FOREVER);
197                                                App_OSD_DrawScanBG();
198                                                App_OSD_ResetScanedChInfo();
199       
200                                                if(pmenu->param1==0)
201                                                        App_AutoScan_StartScan(2, 51, 1);
202                                                else /* rescan */
203                                                        App_AutoScan_StartScan(2, 51, 0);
204                                               
205                                                pmenu->param2=1;
206                                               
207                                                // scanÀÌ ½ÃÀÛÇØ¼­ µ¿ÀÛ ÁßÀÓÀ» ¾Ë¸®´Â Áß°£ ¸Þ½ÃÁö : Please Wait...
208                                                DMG_SetUserDefined(UD_ID_SCAN_WAITING, 0, 0);
209                                        }
210                                        else { 
211                                                // stop
212                                                if(!p_bscan_waiting) {
213                                                        p_stop_autoscan(); /* °­Á¦ stop */
214                                                        p_bscan_waiting=TRUE;
215                                                }
216                                               
217                                                DMG_SetMenuTimeout(MID_AUTOSCAN, 30000);
218                                        }
219                                        App_OSD_UpdateScanBtn(pmenu->param1, pmenu->param2);
220                                       
221                                        break;
222                               
223                                case APP_VK_BACK :
224                                case APP_VK_MENU :
225                                        p_stop_autoscan(); /* °­Á¦ stop */
226                                        DMG_MenuExit(MID_AUTOSCAN);
227                                        break;
228                                       
229                                // 2010.03.30 foxhunt : autoscan µµÁß ¸·¾Æ¾ß ÇÏ´Â key list
230                                case APP_VK_EPG :
231                                case APP_VK_METER :
232                                        dprint(2, "!! key %x ignored while autoscan..\n", param2);
233                                        break;
234                                       
235                                default :
236                                        bret=FALSE;
237                        }
238                        break;
239               
240                case eDMG_CMD_ON_USER_DEFINED :
241                        pmenu=DMG_GetCurMenu();
242                       
243                        printf("--- param2(%x)\n", pmenu->param2);
244                        //if(pmenu->param2==0) break;
245                       
246                        if(opt==UD_ID_SCAN_WAITING) {
247                                App_OSD_WaitingScanMsg();
248                        }
249                        else if(opt==UD_ID_SCAN_PROGRESS) {
250                               
251                                if(pmenu->param2==0) break;
252                                        //menu update »óŰ¡ ¾Æ´Ï¸é ´Ù ¹«½ÃÇÔ.
253                               
254                                if(param2==1) {
255                                        /* Á¾·áÇØ¾ß ÇÔ */
256                                        pmenu->param2=0;
257                                        p_post_autoscan();
258#if 0
259                                        //autoscan ÈÄ¿¡ ch banner°¡ OSD manager¿¡ ÀÇÇØ º¸¿©ÁöÁö ¾Ê±â ¶§¹®¿¡,
260                                        // scan proc¿¡¼­ ±×·ÁÁÜ --> ¿ÀÅ佺ĵ°ú ä³Î ¹è³Ê°¡ °ãħ
261                                        p_draw_ch_banner();
262#endif
263                                        p_bscan_waiting=FALSE;
264                                        App_OSD_UpdateScanBtn(pmenu->param1, pmenu->param2);
265                                        DMG_SetMenuTimeout(MID_AUTOSCAN, 30000);
266                                }
267                                else {
268                                        App_OSD_UpdateScanBar(DMG_HIWORD(param1), DMG_LOWORD(param1));                         
269                                }
270                        }
271                        else if(opt==UD_ID_SCAN_UPDATE_CH) {
272                               
273                                if(pmenu->param2==0) break;
274                               
275                                App_OSD_UpdateScanCh(param1, DMG_HIWORD(param2), DMG_LOWORD(param2));
276                        }
277                        else
278                                bret=FALSE;
279                        break;
280                       
281                default :
282                        bret=FALSE;
283                        break;
284        }
285       
286        if(!bret)
287                bret=App_Proc_Idle(cmd, opt, param1, param2);
288               
289        DMG_AutoRefresh();
290       
291        return bret;
292}
293
294
295void App_Menu_StartScan(int major, int minor, UINT16 *pch_name)
296{
297        DMG_MenuStart(MID_AUTOSCAN);
298}
299
300
301void App_Menu_StopScan()
302{
303        DMG_MenuExit(MID_AUTOSCAN);
304}
305
306
307void App_Menu_CreateScan()
308{
309        if(DMG_GetMenu(MID_AUTOSCAN)) {
310                return;
311        }
312       
313        DMG_CreateMenu(MID_AUTOSCAN_CFG);
314}
315
316
317
318
319
320/* end of file */
Note: See TracBrowser for help on using the repository browser.