source: svn/trunk/zasc/app_c/DST_SimpleTask.c @ 16

Last change on this file since 16 was 2, checked in by phkim, 11 years ago

1.phkim

  1. revision copy newcon3sk r27
File size: 5.5 KB
Line 
1
2#include "DST_HostInterface.h"
3#include "DST_SignalMonitor.h"
4#include "DST_ChannelTune.h"
5#include "dst_eroum_interface.h"
6#include "DST_EEPROM.h"
7#include "DST_WinManagerTask.h"
8#include "DST_WinManager.h"
9
10void DST_Mute();
11
12// Simple Task¿¡¼­ 10ms ¸¶´Ù È£Ãâ
13void DST_AspectRatio(void)
14{
15        static DHL_ASPECT_RATIO ar_old = (DHL_ASPECT_RATIO)-1;
16        if (DST_g_LastTuneTime == 0) return;
17        if (DST_IsVideoPlay() == false) return;
18        DS_U16 w = 0, h = 0, fps = 0;
19        bool bInterlace = false, bWide = false;
20        DST_GetVideoSize(&w, &h, &fps, &bInterlace, &bWide);
21       
22        static DS_U16 old_w = 0;
23        static DS_U16 old_h = 0;
24        static DS_U16 old_fps = 0;
25        static bool old_bInterlace = false;
26        static bool old_bWide = false;
27        if (old_w != w || old_h != h || old_fps != fps || old_bInterlace != bInterlace || old_bWide != bWide)
28        {
29                DST_SendWindowEventWithOnlyCmd(WM_SOURCE_FORMAT_DONE);
30                old_w = w;
31                old_h = h;
32                old_fps = fps;
33                old_bInterlace = bInterlace;
34                old_bWide = bWide;
35        }
36
37        if (h == 0) return;
38        DHL_ASPECT_RATIO ar = DHL_ASPECT_4x3_4x3;
39        bool bSource4x3 = (!bWide);
40        DS_U8 AspectRatio = DST_EEPROM_GetAspect(bSource4x3);
41
42        if (bSource4x3)
43        {
44                ar = DHL_ASPECT_4x3_4x3;
45        }
46        else
47        {
48                switch (AspectRatio)
49                {
50                        case ASPECT_RATIO_WIDE: ar = DHL_ASPECT_16x9_4x3_WIDE; break;
51                        case ASPECT_RATIO_NORMAL: ar = DHL_ASPECT_16x9_4x3_NORMAL; break;
52                        case ASPECT_RATIO_ZOOM: ar = DHL_ASPECT_16x9_4x3_ZOOM; break;
53                        default: break;
54                }
55        }
56       
57       
58        if (ar_old == ar) return;
59        DHL_VID_Aspect(ar, w, h);
60        ar_old = ar;
61
62}
63
64
65void DST_SleepTimer()
66{
67        DS_U32 shutdownTime = 0;
68        static DS_U32 wraparoundTime1 = 0;
69
70        //60ÃÊ ÀüºÎÅÍ´Â Ä«¿îÆ®´Ù¿î OSD¸¦ Ç¥±âÇØ¾ß ÇϹǷΠsleeptimeÀ» 1ºÐ Â÷°¨
71        //0ÀÎ °æ¿ì´Â offÀÓÀ¸·Î return
72        switch(DST_GetSleepTimer())
73        {
74                case 1: shutdownTime = 14*60*DST_OS_GetTicksPerSecond(); break;
75                case 2: shutdownTime = 29*60*DST_OS_GetTicksPerSecond(); break;
76                case 3: shutdownTime = 59*60*DST_OS_GetTicksPerSecond(); break;
77                case 4: shutdownTime = 119*60*DST_OS_GetTicksPerSecond(); break;
78                default: return;
79        }
80
81        DS_U32 addedTime = 0;
82        //¼¼ÆÃ±âÁؽð£ÀÌ tickcountº¸´Ù Ä¿Áú °æ¿ì´Â DS_U32ÀÇ max°ªÀ» Ãʰú ÇßÀ» °æ¿ì tickcount°ªÀÌ 0À¸·Î ÃʱâÈ­ µÇ¹Ç·Î
83        //ÀÌ °æ¿ì¿¡´Â DS_U32ÀÇ max°ª (0xFFFFFFFF) ¿¡¼­ ¼¼ÆÃ±âÁؽ𣰪À» »«°ªÀ» ÀúÀåÇÑ´Ù.
84        //±× °ª¿¡ 0À¸·Î ÃʱâÈ­ µÇ¾î Èê·¯¿Â tickcount°ªÀ» ´õÇÏ¸é ´©Àû½Ã°£ÀÌ ³ª¿Â´Ù.
85        if(DST_g_sleepTimercheckTime > DST_OS_GetTickCount())
86        {
87                wraparoundTime1 = 0xFFFFFFFF - DST_g_sleepTimercheckTime;
88                addedTime = wraparoundTime1 + DST_OS_GetTickCount();
89        }
90        else //ÀϹÝÀûÀÎ °æ¿ì¿¡´Â ÇöÀçtickcount¿¡¼­ ¼¼ÆÃ±âÁؽð£À» »©¾î ´©Àû½Ã°£À» °è»êÇÑ´Ù
91        {
92                wraparoundTime1 = 0;
93                addedTime = DST_OS_GetTickCount() - DST_g_sleepTimercheckTime ;
94        }
95
96        //´©Àû½Ã°£ÀÌ ¼³Á¤µÈ sleeptimeº¸´Ù ÀûÀº°æ¿ì´Â return
97        if(addedTime < shutdownTime) return;
98       
99        DST_CreateWin(WIN_POWER_DOWN_CAUTION,WIN_NULL,0,0,0,0);
100}
101
102
103void DST_Timer()
104{
105        if(DST_g_bSleepTimerOut) return;
106
107        //hostinterface¿¡¼­ bPressed°¡ 1 ÀÏ °æ¿ì true·Î ¼³Á¤
108        //À̰ªÀÌ trueÀÏ °æ¿ì ¿©±â¼­¸¸ false·Î º¯°æ.
109        //SleepTimer ¿Í PowerDown ¼¼ÆÃ±âÁؽð£À» ۰¡ ´­¸° ½ÃÁ¡À¸·Î º¯°æÇØÁÜ
110        //60ÃÊ Ä«¿îÆ®´Ù¿î OSD°¡ ¶°ÀÖ´Ù¸é close½ÃÅ´
111        if(DST_g_KeyPressed)
112        {
113                //60ÃÊ Ä«¿îÆ®´Ù¿î OSD°¡ ¶°ÀÖÀ» °æ¿ì¿¡¸¸, Ű ÀÔ·ÂÀÌ µé¾î¿ÔÀ»¶§ sleeptimer 0ff º¯°æ
114                if(DST_GetWin(WIN_POWER_DOWN_CAUTION))  DST_SetSleepTimer(0);
115               
116                DST_g_BadSignalStartTime = DST_OS_GetTickCount();
117                DST_g_KeyPressed = false;
118                if(DST_GetWin(WIN_POWER_DOWN_CAUTION)) DST_CloseWin(WIN_POWER_DOWN_CAUTION);
119        }
120
121        //60ÃÊ Ä«¿îÆ®´Ù¿î OSD°¡ ¶°ÀÖ´Ù¸é ÀÌ¹Ì ½Ã°£°è»êÀÌ ³¡³µÀ¸¹Ç·Î returnÇÑ´Ù
122        if(DST_GetWin(WIN_POWER_DOWN_CAUTION)) return;
123       
124        //µÑÁß¿¡ Á¶°ÇÀÌ ¸ÕÀú ¸¸Á·µÇ´Â timer ¿ì¼±À¸·ÎÇϸç, 60ÃÊ ÀÌÈÄ Á¾·áÇÏ´Â ±â´ÉÀº Ä«¿îÆ®´Ù¿î OSD¿¡¼­ ÇÑ´Ù.
125        DST_SleepTimer();
126}
127
128// LED ÄÁÆ®·Ñ
129static void DST_LED()
130{
131        // POWER OFF ÀÎ °æ¿ì
132        if (DST_g_PowerOn == false)
133        {
134                DHL_SetLED(true, false); // Àû»ö
135                return;
136        }
137       
138        // RF UPDATEÀÎ °æ¿ì
139        if (DST_GetWin(WIN_FACTORY_MODE) || DST_GetWin(WIN_RF_UPDATE) || DST_GetWin(WIN_OTC_DOWNLOAD) || DST_GetWin(WIN_OTC_DOWNLOAD_FAIL) || DST_GetWin(WIN_UPDATE) || DST_GetWin(WIN_UPDATE_RESET)) // RF ¾÷µ¥ÀÌÆ® ½ÇÇàÁß 0.5ÃÊ °£°ÝÀ¸·Î RED/GREEN/YELLOW
140        {
141                int nPos = DST_OS_GetTickCount() / (DST_OS_GetTicksPerSecond()/ 3);
142                switch (DST_g_RFUpdateState)
143                {
144                        case 0: // ÁøÇàÁß Àû»ö/³ì»ö/³ë¶û
145                                switch (nPos%3)
146                                {
147                                        case 0:DHL_SetLED(true , false); break;
148                                        case 1:DHL_SetLED(false, true); break;
149                                        case 2:DHL_SetLED(true , true); break;
150                                }
151                                break;
152                        case 1: // ¼º°ø ³ì»ö Á¡¸ê
153                                switch (nPos%3)
154                                {
155                                        case 0:DHL_SetLED(false ,true); break;
156                                        case 1:DHL_SetLED(false, true); break;
157                                        case 2:DHL_SetLED(false ,false); break;
158                                }
159                                break;
160                        case 2: // ½ÇÆÐ Àû»ö Á¡¸ê
161                                switch (nPos%3)
162                                {
163                                        case 0:DHL_SetLED(true ,false); break;
164                                        case 1:DHL_SetLED(true, false); break;
165                                        case 2:DHL_SetLED(false ,false); break;
166                                }
167                                break;
168                }
169                return;
170        }
171       
172        // ۰¡ ´­¸° °æ¿ì
173        if (DST_OS_GetTickCount() - DST_g_KeyPressTime < DST_OS_GetTicksPerSecond()/10) 
174        {
175                DHL_SetLED(false, false); // ۰¡ ´­¸®¸é 100ms µ¿¾È OFF
176                return;
177        }
178       
179        // ÀϹÝÀûÀÎ »óÅÂ
180        DHL_SetLED(false, true); // ³ì»ö
181}
182
183// 10ms¸¶´Ù È£ÃâÇÒ ±â´ÉµéÀ» ³Ö´Â´Ù.
184// ¼öÇà½Ã°£ÀÌ ±ä ŽºÅ©´Â ´Ù¸¥ ŽºÅ©¿¡ ¿µÇâÀ» ¹ÌÄ¡¹Ç·Î º°µµ·Î ó¸®ÇÑ´Ù.
185static void tSimpleTaskSub()
186{
187        DST_LED();
188        DST_AspectRatio();     
189        DST_Timer();
190        if (DST_g_LastTuneTryTime == 0)
191                DST_g_LastTuneTryTime = DST_OS_GetTickCount();
192}
193
194static void tSimpleTask()
195{
196        while (1)
197        {
198                DST_OS_Delay(10);
199                tSimpleTaskSub();
200        }
201}
202
203void DST_SimpleTask(void)
204{
205        static DS_U32 TaskID = 0;
206        if (TaskID == 0) TaskID = DST_OS_SpawnTask((void(*)(void *))tSimpleTask, (char*)"tSimple", APP_TASK_PRIO_SIMPLE, WIN_MGR_TASK_STACKSIZE,  0);
207}
Note: See TracBrowser for help on using the repository browser.