/* NTSC FullSearch Test Code ARZHNA */ #include "DHL_OSAL.h" #include "DHL_FE.h" #include "DHL_DBG.h" #include "DMW_Status.h" /* ¸ðµÎ KHz ´ÜÀ§ */ #define SEARCH_STEP_FREQ 831 #define SHORT_SEARCH_HALF_BOUND SEARCH_STEP_FREQ #define SEARCH_FREQ_POSITIVE_BOUNDARY 844 #define SEARCH_FREQ_NEGATIVE_BOUNDARY -831 static STATUS dmw_search_ntsc_get_deviation(tDHL_TunerID id, UINT32 freqKHz, INT32* freq) { DHL_RESULT dhl_result; dhl_result = DHL_FE_Start(id, freqKHz, eDHL_DEMOD_NTSC, NULL); if(dhl_result) return statusError; DHL_OS_Delay(10); dhl_result = DHL_FE_GetSignalStatus(id, eDHL_SIGNAL_NTSC_FREQ_DEVIATION, (UINT32*)freq); if(dhl_result) return statusError; return statusOK; } /* ¸ðµç freq´Â KHz ´ÜÀ§·Î ÀÔ·ÂÇÑ´Ù */ static STATUS dmw_search_ntsc_one_channel(tDHL_TunerID id, UINT32 start_freq, UINT32 end_freq, UINT32 step_freq, UINT32 *tune_freq) { STATUS result; UINT32 freqKHz; INT32 freq; /* ¿ì¼± Center Frequency·Î ãÀ½. */ freqKHz = (start_freq+end_freq)/2; result = dmw_search_ntsc_get_deviation(id, freqKHz, &freq); if(result) return result; if(freq < SEARCH_FREQ_POSITIVE_BOUNDARY && freq > SEARCH_FREQ_NEGATIVE_BOUNDARY){ *tune_freq = freqKHz + freq; return statusOK; }else{ for(freqKHz=start_freq; freqKHzfreqKHz && ((start_freq+end_freq)/2)-step_freq SEARCH_FREQ_NEGATIVE_BOUNDARY){ *tune_freq = freqKHz + freq; return statusOK; } } } return statusError; } STATUS DMW_NtscFullSearch(tDHL_TunerID id, int channel, tDHL_FreqStd freqTbl, INT32 *tune_freq, UINT32 search_range) { STATUS result; UINT32 try_freq; /* * Convert Channel to Frequency if bFreq == CHANNEL. */ try_freq = DHL_FE_ChannelToFrequency(channel, freqTbl); result = dmw_search_ntsc_one_channel(id, try_freq-search_range, try_freq+search_range, SEARCH_STEP_FREQ, &tune_freq); return result; } STATUS DMW_NtscShortSearch(tDHL_TunerID id, int channel, tDHL_FreqStd freqTbl, INT32 *tune_freq, UINT32 search_range) { STATUS result; UINT32 try_freq; result = DMW_NtscFullSearch(id, channel, freqTbl, tune_freq, SHORT_SEARCH_HALF_BOUND); return result; }