| 1 | #include "DST_WinManager.h" |
|---|
| 2 | #include "DST_ChannelTune.h" |
|---|
| 3 | #include "DST_DB.h" |
|---|
| 4 | //#include "DST_OTC_Main.h" |
|---|
| 5 | #include "DST_ISDBT_ChannelTask.h" |
|---|
| 6 | |
|---|
| 7 | #if 0 |
|---|
| 8 | ____CBasicSystemWin___() |
|---|
| 9 | #endif |
|---|
| 10 | |
|---|
| 11 | bool DST_IsTuneMode(); |
|---|
| 12 | |
|---|
| 13 | class CBasicSystemWin : public CWindow |
|---|
| 14 | { |
|---|
| 15 | private: |
|---|
| 16 | int nScanCount; |
|---|
| 17 | public: |
|---|
| 18 | virtual ~CBasicSystemWin() |
|---|
| 19 | { |
|---|
| 20 | DST_Printf("\n\n\n\n\n\n\n\n\n\nERROR : Base Window Deleted!!!!\n\n\n\n\n\n\n\n\n\n\n"); |
|---|
| 21 | } |
|---|
| 22 | CBasicSystemWin(SWinEventMsg event):CWindow(event) |
|---|
| 23 | { |
|---|
| 24 | RegisterAllKey(); |
|---|
| 25 | RegisterKey(VK_LEFT, true, KEY_DELAY_VOLUME, KEY_REPEAT_VOLUME); |
|---|
| 26 | RegisterKey(VK_RIGHT, true, KEY_DELAY_VOLUME, KEY_REPEAT_VOLUME); |
|---|
| 27 | RegisterKey(VK_UP, true, KEY_DELAY_CHANNEL, 400); |
|---|
| 28 | RegisterKey(VK_DN, true, KEY_DELAY_CHANNEL, 400); |
|---|
| 29 | SetTimeOut(0); |
|---|
| 30 | nScanCount = 0; |
|---|
| 31 | } |
|---|
| 32 | |
|---|
| 33 | virtual void OnMessage(SWinEventMsg event) |
|---|
| 34 | { |
|---|
| 35 | if (event.cmd == WM_CVT) |
|---|
| 36 | { |
|---|
| 37 | KillTimer(1); // Background ScanÀ» ÁßÁöÇÑ´Ù. |
|---|
| 38 | memcpy(&DST_g_strSWVersion[0], &event.data[0], 16); |
|---|
| 39 | DS_U8 download_command = event.data32[4]; |
|---|
| 40 | DST_g_OTC_Modulation_type = (event.data32[5]==1)?(DHL_MODULATION_64QAM):(DHL_MODULATION_256QAM); |
|---|
| 41 | DST_g_OTC_RF = event.data32[6]; |
|---|
| 42 | DST_g_OTC_PID = event.data32[7]; |
|---|
| 43 | |
|---|
| 44 | DST_Printf("WM_CVT\n"); |
|---|
| 45 | DST_Printf("strSWVersion = %02X %02X %02X %02X\n", DST_g_strSWVersion[0], DST_g_strSWVersion[1], DST_g_strSWVersion[2], DST_g_strSWVersion[3]); |
|---|
| 46 | DST_Printf("download_command = %s(%d)\n", download_command==0 ? "Download Now" : download_command==1 ? "Deferred Download" : "No Exception", download_command); |
|---|
| 47 | DST_Printf("modulation_type = %s(%d)\n", event.data32[5]==1 ? "64QAM" : "256QAM", (int)event.data32[5]); |
|---|
| 48 | DST_Printf("rf = %d Hz\n", (int)DST_g_OTC_RF); |
|---|
| 49 | DST_Printf("pid = 0x%X\n", DST_g_OTC_PID); |
|---|
| 50 | |
|---|
| 51 | // if (DST_g_SleepState != 0) // ´Éµ¿´ë±âÀÎ °æ¿ì ȸéÀ» ÄÑ°í ¹Ù·Î OTC ÁøÇà |
|---|
| 52 | // { |
|---|
| 53 | //// DHL_POWER_Display(true); // ȸéÀ» ÄÒ´Ù. |
|---|
| 54 | // download_command = 2; // °Á¦ ¸ðµå·Î ÇÑ´Ù. |
|---|
| 55 | // } |
|---|
| 56 | //// DST_Printf("OS_GetTickCount : %d\n\n\n\n\n\n",OS_GetTickCount()); |
|---|
| 57 | // if (DST_g_FDC_FirstLockTime == 0 || (OS_GetTickCount() - DST_g_FDC_FirstLockTime < 10*OS_GetTicksPerSecond())) |
|---|
| 58 | // { |
|---|
| 59 | // download_command = 2; // °Á¦ ¸ðµå·Î ÇÑ´Ù. |
|---|
| 60 | // } |
|---|
| 61 | download_command = 2; // °Á¦ ¸ðµå·Î ÇÑ´Ù. |
|---|
| 62 | switch (download_command) |
|---|
| 63 | { |
|---|
| 64 | // case 0: T();DST_CreateWin(WIN_OTC_DOWNLOAD_ASK);break; |
|---|
| 65 | // case 1: T();DST_g_bNeedOTCDownload= true; break; |
|---|
| 66 | // case 2: T();DST_OTC_Start(); break; |
|---|
| 67 | } |
|---|
| 68 | JST_OTC(DST_g_OTC_RF, (DHL_MODULATION_MODE)DST_g_OTC_Modulation_type, DST_g_OTC_PID); |
|---|
| 69 | |
|---|
| 70 | DST_CreateWin(WIN_OTC_DOWNLOAD); |
|---|
| 71 | } |
|---|
| 72 | |
|---|
| 73 | switch (event.cmd) |
|---|
| 74 | { |
|---|
| 75 | case WM_SIGNAL_STATE: |
|---|
| 76 | if (DST_g_PowerOn == false) |
|---|
| 77 | { |
|---|
| 78 | if (DST_GetWin(WIN_ERROR)) DST_CloseWin(WIN_ERROR); |
|---|
| 79 | break; |
|---|
| 80 | } |
|---|
| 81 | switch (event.data32[0]) |
|---|
| 82 | { |
|---|
| 83 | case SM_WAIT_SIGNAL: |
|---|
| 84 | case SM_GOOD_SIGNAL: // Good Signal |
|---|
| 85 | if (DST_GetWin(WIN_ERROR)) DST_CloseWin(WIN_ERROR); |
|---|
| 86 | break; |
|---|
| 87 | case SM_NO_PROGRAM: |
|---|
| 88 | case SM_AUDIO_ONLY: |
|---|
| 89 | if (DST_g_HWTestMode == false && DST_g_bFactoryMode == false) DST_CreateWin(WIN_ERROR, WIN_NULL, event.data32[0]); |
|---|
| 90 | break; |
|---|
| 91 | case SM_WEAK_SIGNAL: // Error |
|---|
| 92 | if (DST_GetWin(WIN_UPDATE)) break; |
|---|
| 93 | if (DST_GetWin(WIN_POWER_DOWN_CAUTION)) break; |
|---|
| 94 | if (DST_GetWin(WIN_OTC_DOWNLOAD)) break; |
|---|
| 95 | if (DST_GetWin(WIN_CHANNEL_BANNER)) break; |
|---|
| 96 | if (DST_GetWin(WIN_DIRECT_TUNE)) break; |
|---|
| 97 | if (DST_GetWin(WIN_VOLUME)) break; |
|---|
| 98 | if (DST_GetWin(WIN_VOLUME_MUTE)) break; |
|---|
| 99 | if (DST_GetWin(WIN_SIGNAL_METER)) break; |
|---|
| 100 | if (DST_GetWin(WIN_AUDIO_HOT)) break; |
|---|
| 101 | if (DST_GetWin(WIN_DISPLAY_MODE_HOT)) break; |
|---|
| 102 | if (DST_GetWin(WIN_CLOSED_CAPTION_HOT)) break; |
|---|
| 103 | if (DST_GetWin(WIN_AGE_RATING)) break; |
|---|
| 104 | if (DST_GetWin(WIN_FACTORY_RESET)) break; |
|---|
| 105 | if (DST_GetWin(WIN_MAIN_MENU)) break; |
|---|
| 106 | if (DST_GetWin(WIN_PASSWD_CONFIRM)) break; |
|---|
| 107 | if (DST_GetWin(WIN_PASSWD_CHANGE)) break; |
|---|
| 108 | if (DST_GetWin(WIN_PASSWD_CHECK)) break; |
|---|
| 109 | if (DST_GetWin(WIN_AUTO_SEARCH)) break; |
|---|
| 110 | if (DST_GetWin(WIN_MANUAL_SEARCH)) break; |
|---|
| 111 | if (DST_GetWin(WIN_PROGRAM_GUIDE)) break; |
|---|
| 112 | if (DST_GetWin(WIN_CHANNEL_LIST)) break; |
|---|
| 113 | if (DST_g_HWTestMode == false && DST_g_bFactoryMode == false) DST_CreateWin(WIN_ERROR, WIN_NULL, event.data32[0]); |
|---|
| 114 | break; |
|---|
| 115 | |
|---|
| 116 | default: |
|---|
| 117 | break; |
|---|
| 118 | } |
|---|
| 119 | break; |
|---|
| 120 | |
|---|
| 121 | case WM_POWER_DOWN_ENTER: |
|---|
| 122 | DST_PowerDown(); |
|---|
| 123 | break; |
|---|
| 124 | |
|---|
| 125 | case WM_POWER_OFF: |
|---|
| 126 | DHL_INFO_SetLastPowerState(false); |
|---|
| 127 | { |
|---|
| 128 | #ifdef DSTAR |
|---|
| 129 | |
|---|
| 130 | T(); |
|---|
| 131 | nScanCount = 0; |
|---|
| 132 | DST_g_PowerOn = false; |
|---|
| 133 | // CMB CVT Á֯ļö 639MHz |
|---|
| 134 | JST_CVT(DST_GetIndexByMHzFrequency(639), DHL_MODULATION_256QAM); // CMB OTC üũ |
|---|
| 135 | SetTimer(1, 5000); |
|---|
| 136 | #else // º¸µå¿¡¼ Àü¿øÅ° ´©¸£¸é ¹Ù·Î ²¨Áöµµ·Ï Àӽà ¼öÁ¤ |
|---|
| 137 | DST_PowerDown(); |
|---|
| 138 | #endif |
|---|
| 139 | } |
|---|
| 140 | break; |
|---|
| 141 | |
|---|
| 142 | case WM_POWER_ON: |
|---|
| 143 | DHL_INFO_SetLastPowerState(true); |
|---|
| 144 | T(); |
|---|
| 145 | nScanCount = 0; |
|---|
| 146 | DST_g_PowerOn = true; |
|---|
| 147 | DST_DB_TuneFirstChannel(); |
|---|
| 148 | break; |
|---|
| 149 | // case WM_USB_UPDATE_STARTED: |
|---|
| 150 | // case WM_USB_UPDATE_STATUS: |
|---|
| 151 | // if (DST_GetWin(WIN_UPDATE)) break; |
|---|
| 152 | // DST_CreateWin(WIN_UPDATE); |
|---|
| 153 | // break; |
|---|
| 154 | // case WM_OTC_DOWNLOADING_STARTED: |
|---|
| 155 | // if (DST_GetWin(WIN_OTC_DOWNLOAD)) break; |
|---|
| 156 | // DST_CreateWin(WIN_OTC_DOWNLOAD); |
|---|
| 157 | // break; |
|---|
| 158 | // case WM_OTC_DOWNLOADING_STATUS: |
|---|
| 159 | // if (DST_GetWin(WIN_OTC_DOWNLOAD_FAIL)) break; |
|---|
| 160 | // DST_CreateWin(WIN_OTC_DOWNLOAD_FAIL,WIN_NULL,event.data32[0]); |
|---|
| 161 | // break; |
|---|
| 162 | } |
|---|
| 163 | } |
|---|
| 164 | bool IsTVHotKeyPossible() |
|---|
| 165 | { |
|---|
| 166 | if (DST_g_PowerOn == false) return false; |
|---|
| 167 | if (DST_IsTuneMode() == false) return false; |
|---|
| 168 | if (DST_g_LastTuneTime == 0) return false; |
|---|
| 169 | if (DST_GetWin(WIN_AUTO_SEARCH)) return false; |
|---|
| 170 | if (DST_GetWin(WIN_MANUAL_SEARCH)) return false; |
|---|
| 171 | return true; |
|---|
| 172 | } |
|---|
| 173 | virtual void OnTimer(char nID) |
|---|
| 174 | { |
|---|
| 175 | switch (nID) |
|---|
| 176 | { |
|---|
| 177 | case 1: |
|---|
| 178 | SetTimer(1, 3000); |
|---|
| 179 | if (DST_g_PowerOn == true) break; |
|---|
| 180 | static int nRF = DST_MaxRF(); |
|---|
| 181 | // ½ºÄµÀ» Çߴµ¥ ä³ÎÀÌ ¾ø¾îÁ³´Ù¸é ä³Î¸Ê¿¡¼ Á¦°ÅÇÑ´Ù. |
|---|
| 182 | if (nScanCount > 0 && CT_ScanFindChannel() == false) JST_DB_Del(nRF); |
|---|
| 183 | |
|---|
| 184 | if (nScanCount > DST_MaxRF() - DST_MinRF()+1) |
|---|
| 185 | { |
|---|
| 186 | DST_SendWindowEventWithOnlyCmd(WM_POWER_DOWN_ENTER); |
|---|
| 187 | return; |
|---|
| 188 | } |
|---|
| 189 | nRF = (nRF >= DST_MaxRF()) ? DST_MinRF() : nRF+1; |
|---|
| 190 | JST_Scan(nRF); |
|---|
| 191 | nScanCount++; |
|---|
| 192 | break; |
|---|
| 193 | } |
|---|
| 194 | } |
|---|
| 195 | virtual void KeyInput(unsigned char key, bool /*bRepeat*/) |
|---|
| 196 | { |
|---|
| 197 | switch (key) |
|---|
| 198 | { |
|---|
| 199 | case VK_0: |
|---|
| 200 | case VK_1: |
|---|
| 201 | case VK_2: |
|---|
| 202 | case VK_3: |
|---|
| 203 | case VK_4: |
|---|
| 204 | case VK_5: |
|---|
| 205 | case VK_6: |
|---|
| 206 | case VK_7: |
|---|
| 207 | case VK_8: |
|---|
| 208 | case VK_9: |
|---|
| 209 | if (IsTVHotKeyPossible()) DST_CreateWin(WIN_CHANNEL_BANNER, WIN_NULL, BANNER_DIGIT, key); |
|---|
| 210 | break; |
|---|
| 211 | |
|---|
| 212 | case VK_ZOOM: |
|---|
| 213 | if (IsTVHotKeyPossible()) DST_CreateWin(WIN_DISPLAY_MODE_HOT); |
|---|
| 214 | break; |
|---|
| 215 | case VK_AUDIO: |
|---|
| 216 | if (IsTVHotKeyPossible()) DST_CreateWin(WIN_AUDIO_HOT); |
|---|
| 217 | break; |
|---|
| 218 | |
|---|
| 219 | case VK_EPG: |
|---|
| 220 | if (IsTVHotKeyPossible()) DST_CreateWin(WIN_PROGRAM_GUIDE); |
|---|
| 221 | break; |
|---|
| 222 | |
|---|
| 223 | |
|---|
| 224 | case VK_HYPHEN: |
|---|
| 225 | if (IsTVHotKeyPossible()) DST_CreateWin(WIN_DIRECT_TUNE); |
|---|
| 226 | break; |
|---|
| 227 | case VK_PWR: |
|---|
| 228 | case VK_KEY_PWR: |
|---|
| 229 | if (DST_g_PowerOn == true) |
|---|
| 230 | { |
|---|
| 231 | DST_SendWindowEventWithOnlyCmd(WM_POWER_OFF); |
|---|
| 232 | } |
|---|
| 233 | else |
|---|
| 234 | { |
|---|
| 235 | DST_SendWindowEventWithOnlyCmd(WM_POWER_ON); |
|---|
| 236 | } |
|---|
| 237 | break; |
|---|
| 238 | |
|---|
| 239 | case VK_VOL_DN: |
|---|
| 240 | if (IsTVHotKeyPossible() == false) break; |
|---|
| 241 | if (DST_UI_GetVolume() > 0) DST_UI_SetVolume(DST_EEPROM_GetVolume() - 1); |
|---|
| 242 | if (DST_UI_GetMute()) DST_UI_SetMute(!DST_UI_GetMute()); |
|---|
| 243 | DST_CreateWin(WIN_VOLUME); |
|---|
| 244 | break; |
|---|
| 245 | |
|---|
| 246 | case VK_VOL_UP: |
|---|
| 247 | if (IsTVHotKeyPossible() == false) break; |
|---|
| 248 | if (DST_UI_GetVolume() < 50) DST_UI_SetVolume(DST_EEPROM_GetVolume() + 1); |
|---|
| 249 | if (DST_UI_GetMute()) DST_UI_SetMute(!DST_UI_GetMute()); |
|---|
| 250 | DST_CreateWin(WIN_VOLUME); |
|---|
| 251 | break; |
|---|
| 252 | |
|---|
| 253 | case VK_MUTE: |
|---|
| 254 | if (IsTVHotKeyPossible() == false) break; |
|---|
| 255 | DST_UI_SetMute(!DST_UI_GetMute()); |
|---|
| 256 | DST_CreateWin(WIN_VOLUME_MUTE); |
|---|
| 257 | break; |
|---|
| 258 | |
|---|
| 259 | case VK_SIGNAL_METER: |
|---|
| 260 | if (IsTVHotKeyPossible()) DST_CreateWin(WIN_SIGNAL_METER); |
|---|
| 261 | break; |
|---|
| 262 | |
|---|
| 263 | case VK_CC: |
|---|
| 264 | // if (IsTVHotKeyPossible()) DST_CreateWin(WIN_CLOSED_CAPTION_HOT); |
|---|
| 265 | { |
|---|
| 266 | SWinEventMsg event; |
|---|
| 267 | memset(&event, 0, sizeof(SWinEventMsg)); |
|---|
| 268 | event.cmd = WM_CVT; |
|---|
| 269 | char swversion[16] = {0,}; |
|---|
| 270 | sprintf(swversion, "0.2000"); |
|---|
| 271 | memcpy(&event.data[0], swversion, 16); |
|---|
| 272 | // case 0: DST_Printf("Download Now\n"); break; |
|---|
| 273 | // case 1: DST_Printf("Deferred Download\n"); break; |
|---|
| 274 | // case 2: DST_Printf("No Exception\n"); break; |
|---|
| 275 | event.data32[4] = 0; |
|---|
| 276 | event.data32[5] = 1; |
|---|
| 277 | event.data32[6] = 627000000; |
|---|
| 278 | event.data32[7] = 0x66; |
|---|
| 279 | DST_SendWindowEvent(event); |
|---|
| 280 | } |
|---|
| 281 | |
|---|
| 282 | break; |
|---|
| 283 | |
|---|
| 284 | case VK_CH_UP: |
|---|
| 285 | case VK_CH_DN: |
|---|
| 286 | case VK_KEY_UP: |
|---|
| 287 | case VK_KEY_DN: |
|---|
| 288 | if (IsTVHotKeyPossible() == false) break; |
|---|
| 289 | T(); |
|---|
| 290 | if (DST_DB_PresentChMap() == false) // ä³Î¸ÊÀÌ ¾ø´Â °æ¿ì |
|---|
| 291 | { |
|---|
| 292 | T(); |
|---|
| 293 | DST_CreateWin(WIN_AUTO_SEARCH, WIN_NULL, 1); // Rescan |
|---|
| 294 | break; |
|---|
| 295 | } |
|---|
| 296 | T(); |
|---|
| 297 | switch (key) |
|---|
| 298 | { |
|---|
| 299 | case VK_CH_UP: |
|---|
| 300 | case VK_KEY_UP: |
|---|
| 301 | DST_UI_ChannelUpDn(true); |
|---|
| 302 | break; |
|---|
| 303 | default: |
|---|
| 304 | DST_UI_ChannelUpDn(false); |
|---|
| 305 | break; |
|---|
| 306 | } |
|---|
| 307 | break; |
|---|
| 308 | |
|---|
| 309 | case VK_MENU: |
|---|
| 310 | if (IsTVHotKeyPossible()) DST_CreateWin(WIN_MAIN_MENU); |
|---|
| 311 | break; |
|---|
| 312 | |
|---|
| 313 | case VK_OK: |
|---|
| 314 | if (IsTVHotKeyPossible()) DST_CreateWin(WIN_INFOR_BANNER); |
|---|
| 315 | break; |
|---|
| 316 | |
|---|
| 317 | case VK_PREV: |
|---|
| 318 | case VK_PREV_CH: |
|---|
| 319 | if (IsTVHotKeyPossible()) |
|---|
| 320 | { |
|---|
| 321 | int nCh_Major = DST_DB_GetMajor(DST_g_PrevRF,DST_g_PrevProgramNumber); |
|---|
| 322 | int nCh_Minor = DST_DB_GetMinor(DST_g_PrevRF,DST_g_PrevProgramNumber); |
|---|
| 323 | if(DST_DB_PresentMatchChannel(DST_g_PrevRF, nCh_Major,nCh_Minor )) |
|---|
| 324 | { |
|---|
| 325 | DST_UI_ChannelTune(DST_g_PrevRF, DST_g_PrevProgramNumber); |
|---|
| 326 | } |
|---|
| 327 | else |
|---|
| 328 | { |
|---|
| 329 | DST_g_PrevRF = DST_EEPROM_GetRF(); |
|---|
| 330 | DST_g_PrevProgramNumber = DST_EEPROM_GetProgramNumber(); |
|---|
| 331 | } |
|---|
| 332 | } |
|---|
| 333 | break; |
|---|
| 334 | } |
|---|
| 335 | } |
|---|
| 336 | }; |
|---|
| 337 | |
|---|
| 338 | void DST_CreateBaseSystemWindow(SWinEventMsg event) |
|---|
| 339 | { |
|---|
| 340 | DST_AddWin((WinID)(event.data[0]), new CBasicSystemWin(event)); |
|---|
| 341 | } |
|---|