source: svn/trunk/zasc/app/DST_SimpleTask.cpp @ 10

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

1.phkim

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