#include "DST_HostInterface.h" #include "DST_SignalMonitor.h" #include "DST_ChannelTune.h" #include "dst_eroum_interface.h" #include "DST_EEPROM.h" #include "DST_WinManagerTask.h" #include "DST_WinManager.h" void DST_Mute(); // Simple Task¿¡¼­ 10ms ¸¶´Ù È£Ãâ void DST_AspectRatio(void) { static DHL_ASPECT_RATIO ar_old = (DHL_ASPECT_RATIO)-1; if (DST_g_LastTuneTime == 0) return; if (DST_IsVideoPlay() == false) return; DS_U16 w = 0, h = 0, fps = 0; bool bInterlace = false, bWide = false; DST_GetVideoSize(&w, &h, &fps, &bInterlace, &bWide); if (h == 0) return; DHL_ASPECT_RATIO ar = DHL_ASPECT_4x3_4x3; bool bSource4x3 = (!bWide); DS_U8 AspectRatio = DST_EEPROM_GetAspect(bSource4x3); if (bSource4x3) { ar = DHL_ASPECT_4x3_4x3; } else { switch (AspectRatio) { case ASPECT_RATIO_WIDE: ar = DHL_ASPECT_4x3_16x9_WIDE; break; case ASPECT_RATIO_NORMAL: ar = DHL_ASPECT_4x3_16x9_NORMAL; break; case ASPECT_RATIO_ZOOM: ar = DHL_ASPECT_4x3_16x9_ZOOM; break; default: break; } } if (ar_old == ar) return; DHL_VID_Aspect(ar, w, h); ar_old = ar; } void DST_SleepTimer() { DS_U32 shutdownTime = 0; static DS_U32 wraparoundTime1 = 0; //60ÃÊ ÀüºÎÅÍ´Â Ä«¿îÆ®´Ù¿î OSD¸¦ Ç¥±âÇØ¾ß ÇϹǷΠsleeptimeÀ» 1ºÐ Â÷°¨ //0ÀÎ °æ¿ì´Â offÀÓÀ¸·Î return switch(DST_GetSleepTimer()) { case 1: shutdownTime = 14*60*DST_OS_GetTicksPerSecond(); break; case 2: shutdownTime = 29*60*DST_OS_GetTicksPerSecond(); break; case 3: shutdownTime = 59*60*DST_OS_GetTicksPerSecond(); break; case 4: shutdownTime = 119*60*DST_OS_GetTicksPerSecond(); break; default: return; } DS_U32 addedTime = 0; //¼¼ÆÃ±âÁؽð£ÀÌ tickcountº¸´Ù Ä¿Áú °æ¿ì´Â DS_U32ÀÇ max°ªÀ» Ãʰú ÇßÀ» °æ¿ì tickcount°ªÀÌ 0À¸·Î ÃʱâÈ­ µÇ¹Ç·Î //ÀÌ °æ¿ì¿¡´Â DS_U32ÀÇ max°ª (0xFFFFFFFF) ¿¡¼­ ¼¼ÆÃ±âÁؽ𣰪À» »«°ªÀ» ÀúÀåÇÑ´Ù. //±× °ª¿¡ 0À¸·Î ÃʱâÈ­ µÇ¾î Èê·¯¿Â tickcount°ªÀ» ´õÇÏ¸é ´©Àû½Ã°£ÀÌ ³ª¿Â´Ù. if(DST_g_sleepTimercheckTime > DST_OS_GetTickCount()) { wraparoundTime1 = 0xFFFFFFFF - DST_g_sleepTimercheckTime; addedTime = wraparoundTime1 + DST_OS_GetTickCount(); } else //ÀϹÝÀûÀÎ °æ¿ì¿¡´Â ÇöÀçtickcount¿¡¼­ ¼¼ÆÃ±âÁؽð£À» »©¾î ´©Àû½Ã°£À» °è»êÇÑ´Ù { wraparoundTime1 = 0; addedTime = DST_OS_GetTickCount() - DST_g_sleepTimercheckTime ; } //´©Àû½Ã°£ÀÌ ¼³Á¤µÈ sleeptimeº¸´Ù ÀûÀº°æ¿ì´Â return if(addedTime < shutdownTime) return; DST_CreateWin(WIN_POWER_DOWN_CAUTION); } void DST_Timer() { //hostinterface¿¡¼­ bPressed°¡ 1 ÀÏ °æ¿ì true·Î ¼³Á¤ //À̰ªÀÌ trueÀÏ °æ¿ì ¿©±â¼­¸¸ false·Î º¯°æ. //SleepTimer ¿Í PowerDown ¼¼ÆÃ±âÁؽð£À» ۰¡ ´­¸° ½ÃÁ¡À¸·Î º¯°æÇØÁÜ //60ÃÊ Ä«¿îÆ®´Ù¿î OSD°¡ ¶°ÀÖ´Ù¸é close½ÃÅ´ if(DST_g_KeyPressed) { //60ÃÊ Ä«¿îÆ®´Ù¿î OSD°¡ ¶°ÀÖÀ» °æ¿ì¿¡¸¸, Ű ÀÔ·ÂÀÌ µé¾î¿ÔÀ»¶§ sleeptimer 0ff º¯°æ if(DST_GetWin(WIN_POWER_DOWN_CAUTION)) DST_SetSleepTimer(0); DST_g_BadSignalStartTime = DST_OS_GetTickCount(); DST_g_KeyPressed = false; if(DST_GetWin(WIN_POWER_DOWN_CAUTION)) DST_CloseWin(WIN_POWER_DOWN_CAUTION); } //60ÃÊ Ä«¿îÆ®´Ù¿î OSD°¡ ¶°ÀÖ´Ù¸é ÀÌ¹Ì ½Ã°£°è»êÀÌ ³¡³µÀ¸¹Ç·Î returnÇÑ´Ù if(DST_GetWin(WIN_POWER_DOWN_CAUTION)) return; //µÑÁß¿¡ Á¶°ÇÀÌ ¸ÕÀú ¸¸Á·µÇ´Â timer ¿ì¼±À¸·ÎÇϸç, 60ÃÊ ÀÌÈÄ Á¾·áÇÏ´Â ±â´ÉÀº Ä«¿îÆ®´Ù¿î OSD¿¡¼­ ÇÑ´Ù. DST_SleepTimer(); } // LED ÄÁÆ®·Ñ static void DST_LED() { // POWER OFF ÀÎ °æ¿ì if (DST_g_PowerOn == false) { DHL_SetLED(true, false); // Àû»ö return; } // RF UPDATEÀÎ °æ¿ì 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 { int nPos = DST_OS_GetTickCount() / (DST_OS_GetTicksPerSecond()/ 3); switch (DST_g_RFUpdateState) { case 0: // ÁøÇàÁß Àû»ö/³ì»ö/³ë¶û switch (nPos%3) { case 0:DHL_SetLED(true , false); break; case 1:DHL_SetLED(false, true); break; case 2:DHL_SetLED(true , true); break; } break; case 1: // ¼º°ø ³ì»ö Á¡¸ê switch (nPos%3) { case 0:DHL_SetLED(false ,true); break; case 1:DHL_SetLED(false, true); break; case 2:DHL_SetLED(false ,false); break; } break; case 2: // ½ÇÆÐ Àû»ö Á¡¸ê switch (nPos%3) { case 0:DHL_SetLED(true ,false); break; case 1:DHL_SetLED(true, false); break; case 2:DHL_SetLED(false ,false); break; } break; } return; } // ۰¡ ´­¸° °æ¿ì if (DST_OS_GetTickCount() - DST_g_KeyPressTime < DST_OS_GetTicksPerSecond()/10) { DHL_SetLED(false, false); // ۰¡ ´­¸®¸é 100ms µ¿¾È OFF return; } // ÀϹÝÀûÀÎ »óÅ DHL_SetLED(false, true); // ³ì»ö } // 10ms¸¶´Ù È£ÃâÇÒ ±â´ÉµéÀ» ³Ö´Â´Ù. // ¼öÇà½Ã°£ÀÌ ±ä ŽºÅ©´Â ´Ù¸¥ ŽºÅ©¿¡ ¿µÇâÀ» ¹ÌÄ¡¹Ç·Î º°µµ·Î ó¸®ÇÑ´Ù. static void tSimpleTaskSub() { DST_LED(); DST_AspectRatio(); DST_Timer(); if (DST_g_LastTuneTryTime == 0) DST_g_LastTuneTryTime = DST_OS_GetTickCount(); } static void tSimpleTask() { while (1) { DST_OS_Delay(DST_OS_GetTicksPerSecond()/100); tSimpleTaskSub(); } } void DST_SimpleTask(void) { static DS_U32 TaskID = 0; if (TaskID == 0) TaskID = DST_OS_SpawnTask((void(*)(void *))tSimpleTask, (char*)"tSimple", APP_TASK_PRIO_SIMPLE, WIN_MGR_TASK_STACKSIZE, 0); }