| 1 | /******************************************************************* |
|---|
| 2 | * DMW_ChannelHAL.c |
|---|
| 3 | * |
|---|
| 4 | * |
|---|
| 5 | * |
|---|
| 6 | * Copyright 2003 Digital STREAM Technology, Inc. |
|---|
| 7 | * All Rights Reserved |
|---|
| 8 | * |
|---|
| 9 | * $Id: DMW_ChannelHAL.c,v 1.0 2003/01/00 who Exp $ |
|---|
| 10 | * |
|---|
| 11 | ********************************************************************/ |
|---|
| 12 | |
|---|
| 13 | |
|---|
| 14 | |
|---|
| 15 | #include "DMW_Platform.h" |
|---|
| 16 | |
|---|
| 17 | |
|---|
| 18 | |
|---|
| 19 | |
|---|
| 20 | #include "DHL_OSAL.h" |
|---|
| 21 | #include "DHL_FE.h" |
|---|
| 22 | #include "DHL_DBG.h" |
|---|
| 23 | |
|---|
| 24 | #include "DMW_Config.h" |
|---|
| 25 | |
|---|
| 26 | #include "DMW_DebugUtil.h" |
|---|
| 27 | |
|---|
| 28 | // MW files |
|---|
| 29 | #include "DMW_Channel.h" |
|---|
| 30 | #include "DMW_Status.h" |
|---|
| 31 | #include "DMW_Mutex.h" |
|---|
| 32 | |
|---|
| 33 | |
|---|
| 34 | DHL_MODULE("$chh", 0); |
|---|
| 35 | |
|---|
| 36 | //------------------------------------------------------------------- |
|---|
| 37 | // |
|---|
| 38 | // Define constant |
|---|
| 39 | // |
|---|
| 40 | |
|---|
| 41 | //#define USE_DHL_API 1 |
|---|
| 42 | |
|---|
| 43 | |
|---|
| 44 | //------------------------------------------------------------------- |
|---|
| 45 | // |
|---|
| 46 | // Global variables |
|---|
| 47 | // |
|---|
| 48 | |
|---|
| 49 | |
|---|
| 50 | |
|---|
| 51 | //#define USE_DETAIL_TUNE_API 1 |
|---|
| 52 | // |
|---|
| 53 | // RF ¹øÈ£¸¦ ÀÌ¿ëÇÑ TuningÀ» ÇÏ´Â°Ô ¾Æ´Ï¶ó Á÷Á¢ Á֯ļö °ªÀ» ÀÌ¿ëÇÏ¿© TuningÀ» ÇÑ´Ù. |
|---|
| 54 | // ¾ÕÀ¸·Î´Â ¸ðµÎ ÀÌ ¹æ½ÄÀ» »ç¿ëÇÒ °ÍÀÌ´Ù. |
|---|
| 55 | // Å×½ºÆ®, °ËÁõÀÌ ³¡³ª±â Àü±îÁö´Â ÀÏ´Ü ¿¹Àü ÄÚµå (0) ºÎºÐÀ» À¯ÁöÇÑ´Ù. |
|---|
| 56 | // Àû´çÇÑ ½ÃÁ¡¿¡¼ ¹Ì»ç¿ë ÄÚµå »èÁ¦ ¿¹Á¤.. |
|---|
| 57 | // |
|---|
| 58 | |
|---|
| 59 | |
|---|
| 60 | //-------------- |
|---|
| 61 | // ä³Î ŸÀÔ |
|---|
| 62 | // |
|---|
| 63 | ChannelType g_CurChannelType = ChannelType_Air; |
|---|
| 64 | // |
|---|
| 65 | // ÇöÀç ä³Î À¯Çü. 0: AIR, 1: Cable |
|---|
| 66 | // Air¿Í CableÀÌ °øÁ¸ÇÒ ¼ö´Â ¾ø´Ù. (ÇϳªÀÇ RF ¹øÈ£¸¦ ³õ°í ÇØ¼® ¹æ¹ýÀÌ ´Þ¶óÁö¹Ç·Î..) |
|---|
| 67 | // |
|---|
| 68 | // ÀÌ º¯¼ö¸¦ Á÷Á¢ ¼öÁ¤ÇÏÁö ¾Êµµ·Ï ÇÑ´Ù. |
|---|
| 69 | // const typeÀ̹ǷΠÀϹÝÀûÀÎ ¹æ¹ýÀ¸·Î´Â ¼öÁ¤ÇÒ ¼ö ¾ø´Ù. |
|---|
| 70 | // ²À ÃʱâÈ ÇÔ¼ö¸¦ ÀÌ¿ëÇØ¾ß ÇÑ´Ù. |
|---|
| 71 | // |
|---|
| 72 | // cafrii, 030323 |
|---|
| 73 | // compilerÀÇ optimization ¹®Á¦·Î const¸¦ ´Ù½Ã »èÁ¦ÇÔ. |
|---|
| 74 | |
|---|
| 75 | //-------------- |
|---|
| 76 | // Á֯ļö Ç¥ÁØ |
|---|
| 77 | |
|---|
| 78 | tDHL_FreqStd g_CableSystem = eDHL_FREQ_AIR; |
|---|
| 79 | // |
|---|
| 80 | // ÇöÀç »ç¿ëÁßÀÎ Á֯ļö Ç¥ÁØ |
|---|
| 81 | // |
|---|
| 82 | // ÀÌ °ªÀº Áö»óÆÄ, ¶Ç´Â ÄÉÀÌºí ½Ã½ºÅÛÀ» °áÁ¤ÇÏ´Â °ªÀ̹ǷΠÄÉÀ̺í ä³Î Å×À̺íÀ» ¼±ÅÃÇÏ´Â ±âÁØÀÌ µÈ´Ù. |
|---|
| 83 | // ¶ÇÇÑ, ÀÌ °ªÀº NVM¿¡ ÀúÀåµÇ¾î¾ß ÇÑ´Ù. (Application ¸ò) |
|---|
| 84 | // |
|---|
| 85 | |
|---|
| 86 | |
|---|
| 87 | |
|---|
| 88 | |
|---|
| 89 | //------------------------------------------------------------------- |
|---|
| 90 | // |
|---|
| 91 | // Tuner Resource Lock Semaphores |
|---|
| 92 | // |
|---|
| 93 | |
|---|
| 94 | |
|---|
| 95 | // Mutex = { SemID, Owner, lockCnt, FailCnt, UseOsMutex, Name, flag, traceLvl } |
|---|
| 96 | // |
|---|
| 97 | DMW_MUTEX |
|---|
| 98 | tunerMutex = { 0, 0, 0, 0, FALSE, "TunerMtx", OS_SEM_FIFO, FALSE, }; |
|---|
| 99 | |
|---|
| 100 | static void dmw_tuner_lock_sema4(BOOL bLock) |
|---|
| 101 | { |
|---|
| 102 | if (bLock) |
|---|
| 103 | DMW_LockMutex(&tunerMutex); |
|---|
| 104 | else |
|---|
| 105 | DMW_UnlockMutex(&tunerMutex); |
|---|
| 106 | } |
|---|
| 107 | |
|---|
| 108 | |
|---|
| 109 | #if 0 |
|---|
| 110 | _______________() |
|---|
| 111 | #endif |
|---|
| 112 | |
|---|
| 113 | |
|---|
| 114 | |
|---|
| 115 | ModulationType DMW_HAL_TunerDemod2Modulation(tDHL_Demod demod) |
|---|
| 116 | { |
|---|
| 117 | ModulationType mode; |
|---|
| 118 | |
|---|
| 119 | mode = |
|---|
| 120 | demod == eDHL_DEMOD_NTSC ? Modulation_NTSC : |
|---|
| 121 | demod == eDHL_DEMOD_8VSB ? Modulation_8VSB : |
|---|
| 122 | demod == eDHL_DEMOD_64QAM? Modulation_64QAM : |
|---|
| 123 | demod == eDHL_DEMOD_256QAM ? Modulation_256QAM : |
|---|
| 124 | demod == eDHL_DEMOD_QAM_AUTO ? Modulation_QAM : |
|---|
| 125 | demod == eDHL_DEMOD_AUTODETECT ? Modulation_CableAuto : |
|---|
| 126 | Modulation_Invalid; |
|---|
| 127 | |
|---|
| 128 | return mode; |
|---|
| 129 | } |
|---|
| 130 | |
|---|
| 131 | tDHL_Demod DMW_HAL_Modulation2TunerDemod(ModulationType mode) |
|---|
| 132 | { |
|---|
| 133 | tDHL_Demod demod; |
|---|
| 134 | |
|---|
| 135 | demod = |
|---|
| 136 | mode == Modulation_NTSC ? eDHL_DEMOD_NTSC : |
|---|
| 137 | mode == Modulation_8VSB ? eDHL_DEMOD_8VSB : |
|---|
| 138 | mode == Modulation_64QAM ? eDHL_DEMOD_64QAM : |
|---|
| 139 | mode == Modulation_256QAM ? eDHL_DEMOD_256QAM : |
|---|
| 140 | mode == Modulation_QAM ? eDHL_DEMOD_QAM_AUTO : |
|---|
| 141 | mode == Modulation_CableAuto ? eDHL_DEMOD_AUTODETECT : |
|---|
| 142 | eDHL_DEMOD_INVALID; |
|---|
| 143 | |
|---|
| 144 | return demod; |
|---|
| 145 | } |
|---|
| 146 | |
|---|
| 147 | |
|---|
| 148 | |
|---|
| 149 | #if 0 |
|---|
| 150 | _______________() |
|---|
| 151 | #endif |
|---|
| 152 | |
|---|
| 153 | |
|---|
| 154 | // cafrii 060630 add |
|---|
| 155 | // ¸¶Áö¸· RF/Modulation °ªÀ» ±â¾ïÇÑ´Ù. |
|---|
| 156 | // Modulation °ªÀº ¾ðÁ¦µçÁö Àоî¿Ã ¼ö ÀÖÀ¸¹Ç·Î ±×·¸°Ô Å« ÇÊ¿ä´Â ¾ø´Ù. |
|---|
| 157 | // |
|---|
| 158 | int g_TunerRf; |
|---|
| 159 | ModulationType g_TunerModulation; |
|---|
| 160 | |
|---|
| 161 | |
|---|
| 162 | |
|---|
| 163 | |
|---|
| 164 | BOOL DMW_HAL_DetectAnalogVideoChannel() |
|---|
| 165 | { |
|---|
| 166 | DHL_RESULT dhlResult; |
|---|
| 167 | UINT8 Lock; |
|---|
| 168 | tDHL_Demod demod; |
|---|
| 169 | |
|---|
| 170 | |
|---|
| 171 | dhlResult = DHL_FE_GetLockStatus(DEFAULT_TUNER_ID, &Lock, &demod); |
|---|
| 172 | |
|---|
| 173 | return (dhlResult==DHL_OK && Lock) ? TRUE : FALSE; |
|---|
| 174 | } |
|---|
| 175 | |
|---|
| 176 | |
|---|
| 177 | // import from UCM.c |
|---|
| 178 | // Freq Standard °ü·Ã ±â´ÉÀº Channel DB¿Í´Â µ¶¸³ÀûÀÎ ÇÏÀ§ ±â´ÉÀ̹ǷΠºÐ¸®Çؼ |
|---|
| 179 | // Tuner HAL°ú °°ÀÌ °ü¸®ÇÑ´Ù. |
|---|
| 180 | // |
|---|
| 181 | STATUS DMW_HAL_SetChannelStandard(tDHL_FreqStd nFreqStd) |
|---|
| 182 | { |
|---|
| 183 | // ÇöÀç°¡ Air ¸ðµåÀÌ¸é ¹«½Ã. |
|---|
| 184 | // |
|---|
| 185 | // Cable SystemÀÌ ÀÌ¹Ì 'system'À̶ó¸é ¹«½Ã.. |
|---|
| 186 | // |
|---|
| 187 | // ¼·Î ´Ù¸¥ CableSystemÀ¸·Î ¼³Á¤µÇ¸é ÇöÀç DB°¡ Àǹ̰¡ ¾ø¾îÁö¹Ç·Î ´Ù Áö¿ì´Â°Ô ¸Â°ÚÁö¸¸, |
|---|
| 188 | // ApplicationÀÌ ¾Ë¾Æ¼ Çϵµ·Ï ÇÑ´Ù. |
|---|
| 189 | |
|---|
| 190 | dprint(2, " frequency std set to %d, %s\n", nFreqStd, FreqStdString(nFreqStd)); |
|---|
| 191 | |
|---|
| 192 | if (nFreqStd != eDHL_FREQ_STD&& nFreqStd != eDHL_FREQ_IRC&& nFreqStd != eDHL_FREQ_HRC) |
|---|
| 193 | nFreqStd = eDHL_FREQ_AIR; // Air°¡ ±âº».. |
|---|
| 194 | |
|---|
| 195 | // cafrii 060630 add |
|---|
| 196 | // systemÀÌ º¯°æµÇ¸é last tune info¸¦ reset½ÃŲ´Ù. |
|---|
| 197 | // |
|---|
| 198 | if (g_CableSystem != nFreqStd) { |
|---|
| 199 | g_CableSystem = nFreqStd; |
|---|
| 200 | |
|---|
| 201 | dprint(2, " reset tuner info\n"); |
|---|
| 202 | g_TunerRf = 0; |
|---|
| 203 | g_TunerModulation = Modulation_Invalid; |
|---|
| 204 | } |
|---|
| 205 | |
|---|
| 206 | // ÀÌÁ¦ ½ÇÁ¦ Driver layer¿¡ ¼³Á¤À» ÇÑ´Ù. |
|---|
| 207 | // |
|---|
| 208 | // DHL_FE_SetChannelStandard(DEFAULT_TUNER_ID, nFreqStd); |
|---|
| 209 | |
|---|
| 210 | if (g_CableSystem == eDHL_FREQ_AIR) |
|---|
| 211 | g_CurChannelType = ChannelType_Air; |
|---|
| 212 | else |
|---|
| 213 | g_CurChannelType = ChannelType_Cable; |
|---|
| 214 | |
|---|
| 215 | return statusOK; |
|---|
| 216 | } |
|---|
| 217 | |
|---|
| 218 | |
|---|
| 219 | |
|---|
| 220 | |
|---|
| 221 | //------------------------------------------- |
|---|
| 222 | // DMW_HAL_TunerScanSetChannel |
|---|
| 223 | // |
|---|
| 224 | // |
|---|
| 225 | // |
|---|
| 226 | STATUS DMW_HAL_TunerScanSetChannel(UINT32 ch, ModulationType type, INT32* pOffset, |
|---|
| 227 | FreqTuneMode mode, BOOL (*chkfn)()) |
|---|
| 228 | { |
|---|
| 229 | STATUS nReturn = statusOK; |
|---|
| 230 | UINT32 frequency; |
|---|
| 231 | UINT32 new_freq; |
|---|
| 232 | INT32 offset; |
|---|
| 233 | DHL_RESULT dhlResult; |
|---|
| 234 | |
|---|
| 235 | tDHL_Demod demod; |
|---|
| 236 | |
|---|
| 237 | if (pOffset == NULL) |
|---|
| 238 | return statusInvalidArgument; |
|---|
| 239 | |
|---|
| 240 | demod = DMW_HAL_Modulation2TunerDemod(type); |
|---|
| 241 | |
|---|
| 242 | if (demod == eDHL_DEMOD_INVALID) |
|---|
| 243 | return statusInvalidArgument; |
|---|
| 244 | |
|---|
| 245 | offset = *pOffset; |
|---|
| 246 | |
|---|
| 247 | // offset °ªÀº caller°¡ ÁöÁ¤ÇÑ frequency offset À̸ç, ÀÌ °ªÀ» ÃÖ´ëÇÑ Á¸ÁßÇÏ¿© Æ©´×À» ÇÑ´Ù. |
|---|
| 248 | // |
|---|
| 249 | // Tuning ¸ðµå¿¡ µû¶ó¼ ³»ºÎÀûÀ¸·Î auto-search °úÁ¤À» ¼öÇà, ´Ù¸¥ Á֯ļö°¡ »õ·Î ¹ß°ßµÉ ¼ö Àִµ¥, |
|---|
| 250 | // À̶§ ¹ß°ßµÈ frequency offsetÀº *pOffset¿¡ ´Ù½Ã ÀúÀåµÇ¾î ¸®ÅϵȴÙ. |
|---|
| 251 | // |
|---|
| 252 | |
|---|
| 253 | dmw_tuner_lock_sema4(TRUE); |
|---|
| 254 | |
|---|
| 255 | //---------------------- Air (Terrestrial) --------------------- |
|---|
| 256 | // |
|---|
| 257 | |
|---|
| 258 | if (g_CurChannelType == ChannelType_Air) |
|---|
| 259 | { |
|---|
| 260 | DMW_HAL_SetChannelStandard(eDHL_FREQ_AIR); |
|---|
| 261 | |
|---|
| 262 | frequency = FindCenterFrequency(ch, offset, eDHL_FREQ_AIR); |
|---|
| 263 | |
|---|
| 264 | if (frequency == 0) { |
|---|
| 265 | dprint(0, "!! center frequency of rf %d, offset %d err\n", ch, offset); |
|---|
| 266 | |
|---|
| 267 | nReturn = statusInvalidArgument; |
|---|
| 268 | goto label_exit; |
|---|
| 269 | } |
|---|
| 270 | |
|---|
| 271 | dprint(2, "SetTuner, AIR, %s, rf %d, offset %d, freq %dKHz\n", |
|---|
| 272 | ServiceTypeString(type), ch, offset, frequency/1000); |
|---|
| 273 | |
|---|
| 274 | if (type == Modulation_NTSC) |
|---|
| 275 | { |
|---|
| 276 | // NTSCÀÇ °æ¿ì¿¡´Â ½ÇÁ¦·Î °Ë»öµÈ frequency offsetÀ» pOffsetÀ» ÀÌ¿ëÇØ¼ ³Ñ°ÜÁà¾ß ÇÑ´Ù. |
|---|
| 277 | // ¸¸¾à ÃøÁ¤ÀÌ ºÒ°¡´ÉÇÒ °æ¿ì¶ó¸é ±×³É caller°¡ Á¦½ÃÇÑ offsetÀ» ±×´ë·Î »ç¿ëÇÑ´Ù. |
|---|
| 278 | // |
|---|
| 279 | if (mode == FREQTUNE_SHORT_SEARCH) |
|---|
| 280 | { |
|---|
| 281 | dprint(2, " short search: AFC (%dKHz)\n", frequency/1000); |
|---|
| 282 | |
|---|
| 283 | new_freq = DMW_HAL_AfcSearchMultiple(1, &frequency, 0, NULL); |
|---|
| 284 | |
|---|
| 285 | // »õ·Î¿î frequency°¡ ¹ß°ßµÇ¾úÀ¸¸é º¯°æµÈ ¸¸Å offsetÀ» ´Ù½Ã Á¶Á¤. |
|---|
| 286 | // |
|---|
| 287 | if (new_freq && new_freq != frequency) { |
|---|
| 288 | *pOffset = *pOffset + (new_freq - frequency); |
|---|
| 289 | dprint(2, " frequency adjusted to %dKHz, new offset %dKHz\n", |
|---|
| 290 | new_freq/1000, (*pOffset)/1000); |
|---|
| 291 | } |
|---|
| 292 | } |
|---|
| 293 | else // FREQTUNE_FIXED ¸ðµå |
|---|
| 294 | { |
|---|
| 295 | dprint(2, " fixed mode: DHL_FE_Start (%dKHz, NTSC)\n", frequency/1000); |
|---|
| 296 | |
|---|
| 297 | // FREQTUNE_FIXED¿¡´Â ±×³É caller°¡ Á¦½ÃÇÑ Á֯ļö·Î try¸¦ Çѹø ÇÑ´Ù. |
|---|
| 298 | // pOffset À» ÅëÇØ »õ·Ó°Ô ¸®ÅϵǴ °ªÀº ¾ø´Ù.. |
|---|
| 299 | |
|---|
| 300 | dprint(2, " DHL_FE_Start (%dKHz, NTSC)\n", frequency/1000); |
|---|
| 301 | |
|---|
| 302 | dhlResult = DHL_FE_Start(DEFAULT_TUNER_ID, frequency/1000, eDHL_DEMOD_NTSC, NULL); |
|---|
| 303 | // cafrii 070710 cancel bugfix |
|---|
| 304 | //nReturn = dhlResult ? statusError : statusOK; |
|---|
| 305 | nReturn = dhlResult == DHL_FAIL_CANCELLED_BY_USER ? statusCancelled : |
|---|
| 306 | dhlResult ? statusError : statusOK; |
|---|
| 307 | } |
|---|
| 308 | |
|---|
| 309 | } |
|---|
| 310 | else if (type == Modulation_8VSB) |
|---|
| 311 | { |
|---|
| 312 | dprint(2, " DHL_FE_Start (%dKHz, VSB)\n", frequency/1000); |
|---|
| 313 | |
|---|
| 314 | dhlResult = DHL_FE_Start(DEFAULT_TUNER_ID, frequency/1000, eDHL_DEMOD_8VSB, NULL); |
|---|
| 315 | // cafrii 070710 cancel bugfix |
|---|
| 316 | //nReturn = dhlResult ? statusError : statusOK; |
|---|
| 317 | nReturn = dhlResult == DHL_FAIL_CANCELLED_BY_USER ? statusCancelled : |
|---|
| 318 | dhlResult ? statusError : statusOK; |
|---|
| 319 | |
|---|
| 320 | } |
|---|
| 321 | else |
|---|
| 322 | { |
|---|
| 323 | dprint(0, "!! unknown service type %d in Air channel.\n", type); |
|---|
| 324 | nReturn = statusInvalidArgument; // No QAM allowed!!!! |
|---|
| 325 | } |
|---|
| 326 | } |
|---|
| 327 | |
|---|
| 328 | //---------------------- Cable (STD/HRC/IRC) ------------------------- |
|---|
| 329 | else |
|---|
| 330 | { |
|---|
| 331 | DMW_HAL_SetChannelStandard(g_CableSystem); |
|---|
| 332 | |
|---|
| 333 | frequency = FindCenterFrequency(ch, offset, g_CableSystem); |
|---|
| 334 | |
|---|
| 335 | if (frequency == 0) { |
|---|
| 336 | dprint(0, "!! center frequency of rf %d, offset %d err\n", ch, offset); |
|---|
| 337 | nReturn = statusInvalidArgument; |
|---|
| 338 | goto label_exit; |
|---|
| 339 | } |
|---|
| 340 | |
|---|
| 341 | dprint(2, "SetTuner, CABLE %s, %s, rf %d, offset %d, freq %dKHz\n", |
|---|
| 342 | (g_CableSystem == eDHL_FREQ_IRC) ? "IRC": |
|---|
| 343 | (g_CableSystem == eDHL_FREQ_HRC) ? "HRC" : "STD", |
|---|
| 344 | ServiceTypeString(type), ch, offset, frequency/1000); |
|---|
| 345 | |
|---|
| 346 | if (type == Modulation_NTSC) |
|---|
| 347 | { |
|---|
| 348 | if (mode == FREQTUNE_SHORT_SEARCH) |
|---|
| 349 | { |
|---|
| 350 | dprint(2, " short search: AFC (%dKHz)\n", frequency/1000); |
|---|
| 351 | |
|---|
| 352 | new_freq = DMW_HAL_AfcSearchMultiple(1, &frequency, 0, NULL); |
|---|
| 353 | |
|---|
| 354 | // »õ·Î¿î frequency°¡ ¹ß°ßµÇ¾úÀ¸¸é º¯°æµÈ ¸¸Å offsetÀ» ´Ù½Ã Á¶Á¤. |
|---|
| 355 | // |
|---|
| 356 | if (new_freq && new_freq != frequency) { |
|---|
| 357 | *pOffset = *pOffset + (new_freq - frequency); |
|---|
| 358 | dprint(2, " frequency adjusted to %dKHz, new offset %dKHz\n", |
|---|
| 359 | new_freq/1000, (*pOffset)/1000); |
|---|
| 360 | } |
|---|
| 361 | } |
|---|
| 362 | else // FREQTUNE_FIXED ¸ðµå |
|---|
| 363 | { |
|---|
| 364 | dprint(2, " fixed mode: DHL_FE_Start (%dKHz, NTSC)\n", frequency/1000); |
|---|
| 365 | |
|---|
| 366 | // DHL ³»ºÎ¿¡¼ ÀûÀýÇÑ standard·Î ¹Ù²ï´Ù. |
|---|
| 367 | // ¸¸¾à application option¿¡ µû¶ó standard°¡ º¯°æµÇ¾î¾ß ÇÑ´Ù¸é |
|---|
| 368 | // º°µµÀÇ DHL API¸¦ ÀÌ¿ëÇÏ¿© presetÀ» ÇØ¾ß ÇÑ´Ù. ÇöÀç ±× ±â´ÉÀº ¹Ì±¸Çö. |
|---|
| 369 | dhlResult = DHL_FE_Start(DEFAULT_TUNER_ID, frequency/1000, eDHL_DEMOD_NTSC, NULL); |
|---|
| 370 | // cafrii 070710 cancel bugfix |
|---|
| 371 | //nReturn = dhlResult ? statusError : statusOK; |
|---|
| 372 | nReturn = dhlResult == DHL_FAIL_CANCELLED_BY_USER ? statusCancelled : |
|---|
| 373 | dhlResult ? statusError : statusOK; |
|---|
| 374 | |
|---|
| 375 | } |
|---|
| 376 | |
|---|
| 377 | } |
|---|
| 378 | else |
|---|
| 379 | { |
|---|
| 380 | dprint(2, " DHL_FE_Start (%dKHz, %s)\n", frequency/1000, |
|---|
| 381 | ServiceTypeString(type)); |
|---|
| 382 | |
|---|
| 383 | dhlResult = DHL_FE_Start(DEFAULT_TUNER_ID, frequency/1000, demod, NULL); |
|---|
| 384 | // cafrii 070710 cancel bugfix |
|---|
| 385 | //nReturn = dhlResult ? statusError : statusOK; |
|---|
| 386 | nReturn = dhlResult == DHL_FAIL_CANCELLED_BY_USER ? statusCancelled : |
|---|
| 387 | dhlResult ? statusError : statusOK; |
|---|
| 388 | } |
|---|
| 389 | |
|---|
| 390 | } |
|---|
| 391 | |
|---|
| 392 | label_exit: |
|---|
| 393 | |
|---|
| 394 | // cafrii 060630 add |
|---|
| 395 | // Ç×»ó tunerÀÇ ¸¶Áö¸· »óŸ¦ tracking Çϵµ·Ï ÇÑ´Ù. |
|---|
| 396 | // ³ªÁß¿¡ lock check, ¶Ç´Â mod check¸¦ ÇÒ ¶§ g_TunerModulationÀº °áÁ¤µÈ´Ù. |
|---|
| 397 | |
|---|
| 398 | if (nReturn == statusOK) |
|---|
| 399 | g_TunerRf = ch; |
|---|
| 400 | else |
|---|
| 401 | g_TunerRf = 0; |
|---|
| 402 | |
|---|
| 403 | // analogÀÇ °æ¿ì´Â º°µµ·Î lock check¸¦ ¾ÈÇÏ´Â °æ¿ìµµ Àֱ⠶§¹®¿¡ |
|---|
| 404 | // PLL ¼³Á¤¸¸ ¼º°øÇϸé NTSC ¸ðµå¶ó°í º»´Ù. |
|---|
| 405 | // |
|---|
| 406 | if (nReturn == statusOK && type == Modulation_NTSC) |
|---|
| 407 | g_TunerModulation = Modulation_NTSC; |
|---|
| 408 | else |
|---|
| 409 | g_TunerModulation = Modulation_Invalid; |
|---|
| 410 | |
|---|
| 411 | dmw_tuner_lock_sema4(FALSE); |
|---|
| 412 | |
|---|
| 413 | return nReturn; |
|---|
| 414 | } |
|---|
| 415 | |
|---|
| 416 | |
|---|
| 417 | |
|---|
| 418 | |
|---|
| 419 | //------------------------------------------- |
|---|
| 420 | // DMW_HAL_TunerSetChannel |
|---|
| 421 | // |
|---|
| 422 | // |
|---|
| 423 | // |
|---|
| 424 | STATUS DMW_HAL_TunerSetChannel(UINT32 ch, ModulationType type, INT32 offset, |
|---|
| 425 | FreqTuneMode mode, BOOL (*chkfn)()) |
|---|
| 426 | { |
|---|
| 427 | STATUS status; |
|---|
| 428 | |
|---|
| 429 | status = DMW_HAL_TunerScanSetChannel(ch, type, &offset, mode, chkfn); |
|---|
| 430 | |
|---|
| 431 | return status; |
|---|
| 432 | } |
|---|
| 433 | |
|---|
| 434 | |
|---|
| 435 | |
|---|
| 436 | |
|---|
| 437 | //------------------------------------------- |
|---|
| 438 | // DMW_HAL_TunerSetFrequency |
|---|
| 439 | // |
|---|
| 440 | // |
|---|
| 441 | // cafrii 041206 add for cable system autodetect feature.. |
|---|
| 442 | // |
|---|
| 443 | // cafrii 061221, analog fine tune is not supported in this function |
|---|
| 444 | // |
|---|
| 445 | STATUS DMW_HAL_TunerSetFrequency(UINT32 freqInKHz, ModulationType mode, BOOL (*chkfn)()) |
|---|
| 446 | { |
|---|
| 447 | DHL_RESULT dhlResult; |
|---|
| 448 | tDHL_Demod demod; |
|---|
| 449 | |
|---|
| 450 | demod = DMW_HAL_Modulation2TunerDemod(mode); |
|---|
| 451 | |
|---|
| 452 | // report Àü¿ëÀÎ °ªµéÀº »ç¿ë ºÒ°¡. |
|---|
| 453 | // |
|---|
| 454 | if (demod == eDHL_DEMOD_INVALID) { |
|---|
| 455 | dprint(0, "!! invalid modtype %d (%s)\n", mode, ServiceTypeString(mode)); |
|---|
| 456 | return statusInvalidArgument; |
|---|
| 457 | } |
|---|
| 458 | |
|---|
| 459 | g_TunerRf = 0; // cafrii 060714 add bugfix! |
|---|
| 460 | |
|---|
| 461 | // DEMOD_AUTO_DETECT °¡ ¾Æ´Ñ ÀÌ»ó check fnÀº º°·Î ÇÊ¿äÇÏÁö´Â ¾Ê´Ù. |
|---|
| 462 | // |
|---|
| 463 | dhlResult = DHL_FE_Start(DEFAULT_TUNER_ID, freqInKHz, demod, NULL); |
|---|
| 464 | |
|---|
| 465 | // cafrii 070710 cancel bugfix |
|---|
| 466 | //return (dhlResult==DHL_OK ? statusOK : statusError); |
|---|
| 467 | return (dhlResult == DHL_FAIL_CANCELLED_BY_USER ? statusCancelled : |
|---|
| 468 | dhlResult ? statusError : statusOK); |
|---|
| 469 | |
|---|
| 470 | } |
|---|
| 471 | |
|---|
| 472 | |
|---|
| 473 | BOOL DMW_HAL_DetectNIMChannel() |
|---|
| 474 | { |
|---|
| 475 | DHL_RESULT dhlResult; |
|---|
| 476 | UINT8 Lock; |
|---|
| 477 | tDHL_Demod demod; |
|---|
| 478 | |
|---|
| 479 | dhlResult = DHL_FE_GetLockStatus(DEFAULT_TUNER_ID, &Lock, &demod); |
|---|
| 480 | |
|---|
| 481 | // cafrii 060630 add, tuner status tracking.. |
|---|
| 482 | if (dhlResult == DHL_OK && Lock) { |
|---|
| 483 | g_TunerModulation = DMW_HAL_GetModulationMode(); |
|---|
| 484 | return TRUE; |
|---|
| 485 | } |
|---|
| 486 | else { |
|---|
| 487 | g_TunerModulation = Modulation_Invalid; |
|---|
| 488 | return FALSE; |
|---|
| 489 | } |
|---|
| 490 | } |
|---|
| 491 | |
|---|
| 492 | int DMW_HAL_GetSignalStrength() |
|---|
| 493 | { |
|---|
| 494 | DHL_RESULT dhlResult; |
|---|
| 495 | int str; |
|---|
| 496 | dhlResult = DHL_FE_GetSignalStrength(DEFAULT_TUNER_ID, (UINT32 *)&str); |
|---|
| 497 | if (dhlResult) |
|---|
| 498 | str = 0; |
|---|
| 499 | |
|---|
| 500 | return str; |
|---|
| 501 | } |
|---|
| 502 | |
|---|
| 503 | float DMW_HAL_GetSNR() |
|---|
| 504 | { |
|---|
| 505 | DHL_RESULT dhlResult; |
|---|
| 506 | float snr; |
|---|
| 507 | UINT32 snr1000; |
|---|
| 508 | dhlResult = DHL_FE_GetSignalStatus(DEFAULT_TUNER_ID, eDHL_SIGNAL_SNR2, &snr1000); |
|---|
| 509 | if (dhlResult) |
|---|
| 510 | snr = 0.; |
|---|
| 511 | else |
|---|
| 512 | snr = snr1000/1000.; |
|---|
| 513 | return snr; |
|---|
| 514 | } |
|---|
| 515 | |
|---|
| 516 | |
|---|
| 517 | // cafrii 060630 add |
|---|
| 518 | int DMW_HAL_GetCurrentRF(void) |
|---|
| 519 | { |
|---|
| 520 | return g_TunerRf; |
|---|
| 521 | |
|---|
| 522 | } |
|---|
| 523 | |
|---|
| 524 | void DMW_HAL_ResetLastRF(void) |
|---|
| 525 | { |
|---|
| 526 | g_TunerRf = 0; |
|---|
| 527 | } |
|---|
| 528 | |
|---|
| 529 | ModulationType DMW_HAL_GetModulationMode() |
|---|
| 530 | { |
|---|
| 531 | DHL_RESULT dhlResult; |
|---|
| 532 | tDHL_Demod demod; |
|---|
| 533 | ModulationType mod; |
|---|
| 534 | |
|---|
| 535 | dhlResult = DHL_FE_GetModFormat(DEFAULT_TUNER_ID, &demod); |
|---|
| 536 | |
|---|
| 537 | // cafrii 060630, add tuner status tracking.. |
|---|
| 538 | if (dhlResult) { |
|---|
| 539 | g_TunerModulation = Modulation_Invalid; |
|---|
| 540 | return Modulation_Invalid; |
|---|
| 541 | } |
|---|
| 542 | |
|---|
| 543 | if (0); |
|---|
| 544 | else if (demod == eDHL_DEMOD_NTSC) |
|---|
| 545 | mod = Modulation_NTSC; |
|---|
| 546 | else if (demod == eDHL_DEMOD_8VSB) |
|---|
| 547 | mod = Modulation_8VSB; |
|---|
| 548 | else if (demod == eDHL_DEMOD_64QAM) |
|---|
| 549 | mod = Modulation_64QAM; |
|---|
| 550 | else if (demod == eDHL_DEMOD_256QAM) |
|---|
| 551 | mod = Modulation_256QAM; |
|---|
| 552 | else if (demod == eDHL_DEMOD_QAM_AUTO) |
|---|
| 553 | mod = Modulation_64QAM; // »ç½Ç ÀÌ·±°Ô ³ª¿À¸é ¾ÈµÊ.. |
|---|
| 554 | else |
|---|
| 555 | mod = Modulation_Invalid; |
|---|
| 556 | |
|---|
| 557 | g_TunerModulation = mod; |
|---|
| 558 | |
|---|
| 559 | return mod; |
|---|
| 560 | |
|---|
| 561 | } |
|---|
| 562 | |
|---|
| 563 | |
|---|
| 564 | // not tested yet.. |
|---|
| 565 | // |
|---|
| 566 | int DMW_HAL_SetTunerLockTimeout(int vsb, int q64, int q256, int ntsc) |
|---|
| 567 | { |
|---|
| 568 | // ´ÜÀ§´Â 0.1 ÃÊ |
|---|
| 569 | |
|---|
| 570 | // cafrii 050413 |
|---|
| 571 | // ÀÌ ÇÔ¼ö´Â ´õÀÌ»ó µ¿ÀÛÇÏÁö ¾Ê´Â´Ù.. |
|---|
| 572 | // |
|---|
| 573 | /// int vsbTimeout, int qam64Timeout, int qam256Timeout, int ntscTimeout ) |
|---|
| 574 | //DD_SetLockTimeout(vsb, q64, q256, ntsc); |
|---|
| 575 | |
|---|
| 576 | return statusOK; |
|---|
| 577 | } |
|---|
| 578 | |
|---|
| 579 | |
|---|
| 580 | |
|---|
| 581 | //--------------------------------------------------------------------------- |
|---|
| 582 | // DMW_HAL_AfcSearchMultiple |
|---|
| 583 | // |
|---|
| 584 | // |
|---|
| 585 | // ÁöÁ¤ÇÑ Á֯ļö ¿µ¿ª¿¡¼ ¾Æ³¯·Î±× ½ÅÈ£ °Ë»öÀ» ÇÏ¿© ¹ß°ßµÈ Á֯ļö¸¦ ¸®ÅÏÇÑ´Ù. |
|---|
| 586 | // |
|---|
| 587 | // µå¶óÀ̹ö¿¡¼ AFC ±â´ÉÀÌ Áö¿øµÇÁö ¾ÊÀ¸¸é Á÷Á¢ Lock check API¸¦ ÀÌ¿ëÇØ¼ |
|---|
| 588 | // Lock ¿©ºÎ·Î ÆÇ´ÜÇÑ´Ù. timeoutTick °ªÀº ÀÌ °æ¿ì¿¡¸¸ »ç¿ëÀÌ µÇ¸ç, |
|---|
| 589 | // timeoutÀ¸·Î 0ÀÇ °ªÀ» ÁöÁ¤ÇÒ °æ¿ì °¢ Frequency º°·Î 1ȸ¸¸ üũÇÑ´Ù. |
|---|
| 590 | // |
|---|
| 591 | |
|---|
| 592 | STATUS DMW_HAL_AfcSearchMultiple(int nFreq, UINT32 *aFreq, int timeoutTick, BOOL (*ckfn)()) |
|---|
| 593 | { |
|---|
| 594 | // cafrii 050328 add timeoutTick param. |
|---|
| 595 | // |
|---|
| 596 | // ÇÔ¼ö ÀÎÀÚÀÇ Á֯ļö ´ÜÀ§´Â Hz. |
|---|
| 597 | |
|---|
| 598 | #if SUPPORT_NTSC_FINE_TUNE |
|---|
| 599 | |
|---|
| 600 | int i; |
|---|
| 601 | UINT32 f2 = 0; |
|---|
| 602 | |
|---|
| 603 | AFC_SearchStart(gTuner); |
|---|
| 604 | |
|---|
| 605 | for (i=0; i<nFreq; i++) |
|---|
| 606 | { |
|---|
| 607 | f2 = AFC_SearchFrequency(gTuner, aFreq[i]); |
|---|
| 608 | |
|---|
| 609 | if (f2) |
|---|
| 610 | goto label_exit; |
|---|
| 611 | |
|---|
| 612 | if (ckfn && ckfn()) { |
|---|
| 613 | f2 = 0; |
|---|
| 614 | goto label_exit; |
|---|
| 615 | } |
|---|
| 616 | } |
|---|
| 617 | |
|---|
| 618 | f2 = 0; |
|---|
| 619 | |
|---|
| 620 | label_exit: |
|---|
| 621 | |
|---|
| 622 | AFC_SearchEnd(gTuner); |
|---|
| 623 | |
|---|
| 624 | return f2; |
|---|
| 625 | |
|---|
| 626 | |
|---|
| 627 | #else // !SUPPORT_NTSC_FINE_TUNE |
|---|
| 628 | |
|---|
| 629 | // cafrii 050325 add |
|---|
| 630 | |
|---|
| 631 | int i; |
|---|
| 632 | BOOL bLocked; |
|---|
| 633 | UINT32 tickStart; |
|---|
| 634 | |
|---|
| 635 | UINT32 f2 = 0; |
|---|
| 636 | //int timeoutTick = g_Timeout_AnalogSignalLock * 1000 / 1000; |
|---|
| 637 | // |
|---|
| 638 | // ÀÌ g_Timeout_AnalogSignalLock º¯¼ö´Â Á» ´õ »óÀ§ °èÃþÀÇ º¯¼öÀ̹ǷΠ|
|---|
| 639 | // ÀÌ ·¹º§¿¡¼ ¸¶À½´ë·Î »ç¿ëÇÒ ¼ö ÀÖ´Â °ÍÀÌ ¾Æ´Ï¶ó ÂüÁ¶ÇÏÁö ¾Êµµ·Ï ÇÏÀÚ. |
|---|
| 640 | |
|---|
| 641 | dmw_tuner_lock_sema4(TRUE); |
|---|
| 642 | |
|---|
| 643 | for (i=0; i<nFreq; i++) |
|---|
| 644 | { |
|---|
| 645 | DHL_FE_Start(DEFAULT_TUNER_ID, aFreq[i]/1000, eDHL_DEMOD_NTSC, NULL); |
|---|
| 646 | |
|---|
| 647 | tickStart = DHL_OS_GetMsCount(); |
|---|
| 648 | |
|---|
| 649 | while (1) |
|---|
| 650 | { |
|---|
| 651 | bLocked = DMW_HAL_DetectAnalogVideoChannel(); |
|---|
| 652 | |
|---|
| 653 | if (bLocked) { |
|---|
| 654 | f2 = aFreq[i]; |
|---|
| 655 | dprint(2, "freq[%d] %dkHz locked\n", i, aFreq[i]/1000); |
|---|
| 656 | goto label_exit; |
|---|
| 657 | } |
|---|
| 658 | |
|---|
| 659 | if (DHL_OS_GetMsCount() - tickStart > (unsigned int)timeoutTick) |
|---|
| 660 | break; // ´ÙÀ½ Á֯ļö·Î ´Ù½Ã ½Ãµµ.. |
|---|
| 661 | |
|---|
| 662 | if (ckfn && ckfn()) { |
|---|
| 663 | f2 = 0; |
|---|
| 664 | dprint(2, "afc search cancelled\n"); |
|---|
| 665 | goto label_exit; |
|---|
| 666 | } |
|---|
| 667 | |
|---|
| 668 | DHL_OS_Delay(100); |
|---|
| 669 | } |
|---|
| 670 | |
|---|
| 671 | // ´ÙÀ½ Á֯ļö·Î ´Ù½Ã ½Ãµµ.. |
|---|
| 672 | |
|---|
| 673 | dprint(3, " freq[%d] %dkHz not locked. %s\n", i, aFreq[i]/1000, |
|---|
| 674 | i==nFreq-1 ? "" : "try next.."); |
|---|
| 675 | } |
|---|
| 676 | |
|---|
| 677 | f2 = 0; |
|---|
| 678 | |
|---|
| 679 | label_exit: |
|---|
| 680 | |
|---|
| 681 | dmw_tuner_lock_sema4(FALSE); |
|---|
| 682 | |
|---|
| 683 | return f2; |
|---|
| 684 | |
|---|
| 685 | #endif // SUPPORT_NTSC_FINE_TUNE |
|---|
| 686 | |
|---|
| 687 | } |
|---|
| 688 | |
|---|
| 689 | |
|---|
| 690 | |
|---|
| 691 | |
|---|
| 692 | |
|---|
| 693 | #if 0 |
|---|
| 694 | _____Fdc_Tune___() |
|---|
| 695 | #endif |
|---|
| 696 | |
|---|
| 697 | |
|---|
| 698 | //------------------- |
|---|
| 699 | // Driver function |
|---|
| 700 | // |
|---|
| 701 | |
|---|
| 702 | |
|---|
| 703 | |
|---|
| 704 | STATUS DMW_HAL_FdcTune(unsigned long ulFrequency, unsigned short usBitRate, int nSpectrumInversion ) |
|---|
| 705 | { |
|---|
| 706 | |
|---|
| 707 | #if SUPPORT_FDC_TUNER |
|---|
| 708 | |
|---|
| 709 | int err; |
|---|
| 710 | |
|---|
| 711 | dprint(1, "DMW_HAL_FdcTun(freq %d, bitrate %d, spectrum_inv %d\n", |
|---|
| 712 | ulFrequency, usBitRate, nSpectrumInversion); |
|---|
| 713 | |
|---|
| 714 | err = FDC(ulFrequency/1000, usBitRate, nSpectrumInversion); |
|---|
| 715 | |
|---|
| 716 | if (err) { |
|---|
| 717 | dprint(0, "!! FDC err %d\n", err); |
|---|
| 718 | } |
|---|
| 719 | return err; |
|---|
| 720 | |
|---|
| 721 | #else |
|---|
| 722 | return statusNotImpl; |
|---|
| 723 | #endif |
|---|
| 724 | |
|---|
| 725 | } |
|---|
| 726 | |
|---|
| 727 | |
|---|
| 728 | int DMW_HAL_GetFDCLockStatus() |
|---|
| 729 | { |
|---|
| 730 | #if SUPPORT_FDC_TUNER |
|---|
| 731 | return GetFDCLockStatus(); |
|---|
| 732 | #else |
|---|
| 733 | return 0; |
|---|
| 734 | #endif |
|---|
| 735 | } |
|---|
| 736 | |
|---|
| 737 | int DMW_HAL_GetFDCSignalStrength() |
|---|
| 738 | { |
|---|
| 739 | #if SUPPORT_FDC_TUNER |
|---|
| 740 | return GetFDCSignalStrength(); |
|---|
| 741 | #else |
|---|
| 742 | return 0; |
|---|
| 743 | #endif |
|---|
| 744 | } |
|---|
| 745 | |
|---|
| 746 | float DMW_HAL_GetFDCSNR() |
|---|
| 747 | { |
|---|
| 748 | #if SUPPORT_FDC_TUNER |
|---|
| 749 | return (float) GetFDCSNR(); |
|---|
| 750 | #else |
|---|
| 751 | return 0; |
|---|
| 752 | #endif |
|---|
| 753 | } |
|---|
| 754 | |
|---|
| 755 | |
|---|
| 756 | |
|---|
| 757 | #if 0 |
|---|
| 758 | ________________() |
|---|
| 759 | #endif |
|---|
| 760 | |
|---|
| 761 | |
|---|
| 762 | #if DMW_REGISTER_DEBUG_SYMBOL |
|---|
| 763 | |
|---|
| 764 | |
|---|
| 765 | static DHL_SymbolTable ChannelHalSymbols[] = |
|---|
| 766 | { |
|---|
| 767 | //---- functions |
|---|
| 768 | |
|---|
| 769 | DHL_FNC_SYM_ENTRY(DMW_HAL_SetChannelStandard), |
|---|
| 770 | DHL_FNC_SYM_ENTRY(DMW_HAL_TunerSetChannel), |
|---|
| 771 | DHL_FNC_SYM_ENTRY(DMW_HAL_GetSignalStrength), |
|---|
| 772 | DHL_FNC_SYM_ENTRY(DMW_HAL_GetModulationMode), |
|---|
| 773 | |
|---|
| 774 | //---- variables |
|---|
| 775 | |
|---|
| 776 | //DHL_VAR_SYM_ENTRY(g_Trace_ChannelHAL), |
|---|
| 777 | |
|---|
| 778 | }; |
|---|
| 779 | |
|---|
| 780 | #endif // DMW_REGISTER_DEBUG_SYMBOL |
|---|
| 781 | |
|---|
| 782 | |
|---|
| 783 | void DMW_HAL_RegisterChannelHalSymbols() |
|---|
| 784 | { |
|---|
| 785 | |
|---|
| 786 | #if DMW_REGISTER_DEBUG_SYMBOL |
|---|
| 787 | DHL_DBG_RegisterSymbols(ChannelHalSymbols, DHL_NUMSYMBOLS(ChannelHalSymbols)); |
|---|
| 788 | |
|---|
| 789 | #endif |
|---|
| 790 | |
|---|
| 791 | } |
|---|
| 792 | |
|---|
| 793 | |
|---|
| 794 | |
|---|
| 795 | |
|---|
| 796 | #if 0 |
|---|
| 797 | ________________() |
|---|
| 798 | #endif |
|---|
| 799 | |
|---|
| 800 | |
|---|
| 801 | #if 0 |
|---|
| 802 | |
|---|
| 803 | int gSignalLockTimeoutInTick = 60; |
|---|
| 804 | |
|---|
| 805 | void TestSetFreq(UINT32 freq) |
|---|
| 806 | { |
|---|
| 807 | int err, ret; |
|---|
| 808 | UINT32 tickStart; |
|---|
| 809 | |
|---|
| 810 | |
|---|
| 811 | dmw_tuner_lock_sema4(TRUE); |
|---|
| 812 | |
|---|
| 813 | // DMW_HAL_ChangeFrequencyStandard(0); // FREQ_AIR |
|---|
| 814 | // DMW_HAL_ChangeFrequencyStandard(1); // FREQ_STD |
|---|
| 815 | // shell ¿¡¼ Å×½ºÆ® ÇÏ·Á¸é À§¿Í °°ÀÌ ¸ÕÀú ¼³Á¤À» ÇÑ ´ÙÀ½¿¡ ½ÇÇà..... |
|---|
| 816 | |
|---|
| 817 | |
|---|
| 818 | OS_DbgPrintf("Set Frequency: %d KHz\n", freq); |
|---|
| 819 | |
|---|
| 820 | OS_DbgPrintf("** try 8VSB..\n"); |
|---|
| 821 | err = TunerSetFrequency(gTuner, freq, DEMOD_8VSB); |
|---|
| 822 | |
|---|
| 823 | tickStart = DHL_OS_GetMsCount(); |
|---|
| 824 | while (DHL_OS_GetMsCount() - tickStart < gSignalLockTimeoutInTick) { |
|---|
| 825 | ret = GetLockStatus(); |
|---|
| 826 | if (ret) |
|---|
| 827 | goto labe_done; |
|---|
| 828 | DHL_OS_Delay(1000/20); |
|---|
| 829 | } |
|---|
| 830 | |
|---|
| 831 | |
|---|
| 832 | OS_DbgPrintf("** try 64QAM..\n"); |
|---|
| 833 | err = TunerSetFrequency(gTuner, freq, DEMOD_64QAM); |
|---|
| 834 | |
|---|
| 835 | tickStart = DHL_OS_GetMsCount(); |
|---|
| 836 | while (DHL_OS_GetMsCount() - tickStart < gSignalLockTimeoutInTick) { |
|---|
| 837 | ret = GetLockStatus(); |
|---|
| 838 | if (ret) |
|---|
| 839 | goto labe_done; |
|---|
| 840 | DHL_OS_Delay(1000/20); |
|---|
| 841 | } |
|---|
| 842 | |
|---|
| 843 | |
|---|
| 844 | OS_DbgPrintf("** try 256QAM..\n"); |
|---|
| 845 | err = TunerSetFrequency(gTuner, freq, DEMOD_256QAM); |
|---|
| 846 | |
|---|
| 847 | tickStart = DHL_OS_GetMsCount(); |
|---|
| 848 | while (DHL_OS_GetMsCount() - tickStart < gSignalLockTimeoutInTick) { |
|---|
| 849 | ret = GetLockStatus(); |
|---|
| 850 | if (ret) |
|---|
| 851 | goto labe_done; |
|---|
| 852 | DHL_OS_Delay(1000/20); |
|---|
| 853 | } |
|---|
| 854 | |
|---|
| 855 | OS_DbgPrintf("!! signal not locked\n"); |
|---|
| 856 | dmw_tuner_lock_sema4(FALSE); |
|---|
| 857 | return; |
|---|
| 858 | |
|---|
| 859 | labe_done: |
|---|
| 860 | dmw_tuner_lock_sema4(FALSE); |
|---|
| 861 | |
|---|
| 862 | OS_DbgPrintf("signal locked.\n"); |
|---|
| 863 | |
|---|
| 864 | if (1) { |
|---|
| 865 | int str = DMW_HAL_GetSignalStrength(); |
|---|
| 866 | float snr = DMW_HAL_GetSNR(); |
|---|
| 867 | |
|---|
| 868 | OS_DbgPrintf("signal strength: %d, SNR: %.3f\n", str, snr); |
|---|
| 869 | } |
|---|
| 870 | } |
|---|
| 871 | |
|---|
| 872 | #endif //0 |
|---|
| 873 | |
|---|
| 874 | |
|---|
| 875 | /******************************************************************** |
|---|
| 876 | $Log: DMW_ChannelTune.c,v $ |
|---|
| 877 | |
|---|
| 878 | 1.30 2005/3/28 DMW_HAL_AfcSearchMultiple¿¡ timeout param Ãß°¡ |
|---|
| 879 | 1.29 2005/3/25 DMW_HAL_AfcSearchMultiple API¸¦ AFC ¾øÀ̵µ »ç¿ë°¡´ÉÇϵµ·Ï ¼öÁ¤ |
|---|
| 880 | |
|---|
| 881 | 1.28 2005/1/26 ScanSetChannel ¿¡¼ ¹«Á¶°Ç STDCable·Î ¼³Á¤ÇÏ´Â ¿¹Àü ¹æ½Ä ¼öÁ¤ |
|---|
| 882 | Mocha¸¦ Á¦¿ÜÇÑ ´Ù¸¥ platform ´õÀÌ»ó Áö¿øÇÏÁö ¾ÊÀ½. |
|---|
| 883 | ScanSetChannel/SetChannel prototype º¯°æ (ÇÔ¼ö ÀÎÀÚ º¯°æ) |
|---|
| 884 | ScanSetChannel ÇÔ¼ö·Î ÅëÇÕ. |
|---|
| 885 | ¾Æ³¯·Î±× carrier search¸¦ À§ÇÑ DMW_HAL_AfcSearchMultiple Ãß°¡ |
|---|
| 886 | ÀáÁ¤ÀûÀ¸·Î USE_DETAIL_TUNE_API »ç¿ë. ³ªÁß¿¡´Â ÀÌ Ç÷¡±×·Î °íÁ¤ÇÒ °ÍÀÓ |
|---|
| 887 | µð¹ö±× ¸Þ½ÃÁö Ãâ·Â¿¡ debug level Áö¿ø |
|---|
| 888 | FDCÂÊ »ç¿ëÇÏÁö ¾Ê´Â ÄÚµåµé ¸ðµÎ Á¦°Å |
|---|
| 889 | Àüü ±¸Á¶ ¹× °ÅÀÇ ¸ðµç ³»¿ë ¼öÁ¤.. |
|---|
| 890 | |
|---|
| 891 | 1.27 2004/12/09 DMW_HAL_TunerSetChannel: dprint bugfix |
|---|
| 892 | 1.26 2004/12/06 DMW_HAL_TunerSetFrequency Ãß°¡ |
|---|
| 893 | |
|---|
| 894 | 1.25 2004/11/22 DMW_HAL_GetModulationMode ÀÇ Àӽà ÄÚµå ¼öÁ¤. |
|---|
| 895 | 1.24 2004/11/10 FDC API Ãß°¡ |
|---|
| 896 | 1.23 2004/11/4 TunerSetChannelEx µå¶óÀ̹ö ÇÔ¼ö »ç¿ë |
|---|
| 897 | HAL api prototype ¼öÁ¤ |
|---|
| 898 | |
|---|
| 899 | 1.22 2004/9/20 DMW_Config µµÀÔ, config »çÇ× À̵¿ |
|---|
| 900 | 1.21 2004/9/3 g_Trace_TunerSema4 position moved |
|---|
| 901 | 1.2 2004/8/30 ChannelType, FreqStd imported from ChannelAPI |
|---|
| 902 | TuneChannelByUid is moved to UCM module |
|---|
| 903 | |
|---|
| 904 | 1.1 2004/7/26 auto fine tune *offset reset bug fix |
|---|
| 905 | SUPPORT_NTSC_FINE_TUNE and related var added |
|---|
| 906 | 1.0 2003/0/0 Initial coding from ___, based on M/W API document |
|---|
| 907 | |
|---|
| 908 | ********************************************************************/ |
|---|