| 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 | |
|---|
| 10 | void DST_Mute(); |
|---|
| 11 | |
|---|
| 12 | // Simple Task¿¡¼ 10ms ¸¶´Ù È£Ãâ |
|---|
| 13 | void 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 | |
|---|
| 65 | void 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 | |
|---|
| 103 | void 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 ÄÁÆ®·Ñ |
|---|
| 129 | static 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 | // ¼öÇà½Ã°£ÀÌ ±ä ŽºÅ©´Â ´Ù¸¥ ŽºÅ©¿¡ ¿µÇâÀ» ¹ÌÄ¡¹Ç·Î º°µµ·Î ó¸®ÇÑ´Ù. |
|---|
| 185 | static 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 | |
|---|
| 194 | static void tSimpleTask() |
|---|
| 195 | { |
|---|
| 196 | while (1) |
|---|
| 197 | { |
|---|
| 198 | DST_OS_Delay(10); |
|---|
| 199 | tSimpleTaskSub(); |
|---|
| 200 | } |
|---|
| 201 | } |
|---|
| 202 | |
|---|
| 203 | void 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 | } |
|---|