source: svn/newcon3bcm2_21bu/dst/dhl/src/DHL_FE.c @ 76

Last change on this file since 76 was 76, checked in by megakiss, 10 years ago

1W 대기전력을 만족시키기 위하여 POWEROFF시 튜너를 Standby 상태로 함

  • Property svn:executable set to *
File size: 6.5 KB
Line 
1
2/********************************************************************
3        DHL_FE.c
4       
5        PHOENIX Driver HAL library
6        FrontEnd (Tuner/Demodulator) functions implementation
7
8        Copyright 2006 Digital STREAM Technology, Inc.
9        All Rights Reserved
10
11        $Id: DHL_FE.c  v1.00 2006/04 cafrii Exp $
12       
13********************************************************************/
14#include "DHL_OSAL.h"
15#include "DHL_DBG.h"
16
17#include "DHL_FE.h"
18#include "DHL_FE_Priv.h"
19#include "DHL_FE_FreqTable.h"
20
21#include "DHL_SYS.h"
22
23
24
25//DHL_MODULE("*FE", 0);
26
27#define TEST_FE_FUNCTION        0
28#if TEST_FE_FUNCTION
29void DHL_FE_TestInit();
30void tune(UINT32 ch, UINT32 cable);
31
32#endif
33
34#if COMMENT
35____local____(){}
36#endif
37
38static DHL_OS_SEMA_ID p_fe_mtx;
39
40
41static void p_lock(BOOL lock)
42{
43        lock?DHL_OS_TakeSemaphore(p_fe_mtx, 1):DHL_OS_GiveSemaphore(p_fe_mtx);
44}
45
46
47#if COMMENT
48____API____(){}
49#endif
50
51
52DHL_RESULT DHL_FE_Init()
53{
54
55        DHL_RESULT result = DHL_OK;
56        static BOOL is_inited=FALSE;
57        DHL_BOARD_REV pVer;
58        DHL_BOARD_TYPE pType;
59
60        //dprint(3, "%s\n", __func__);
61       
62        if(is_inited) return DHL_OK;
63               
64        p_fe_mtx=DHL_OS_CreateMutexSemaphore("fe_mtx");
65
66        result = dhl_fe_init();
67        if(result == DHL_OK)
68        {
69                is_inited=TRUE;
70        }
71        else
72        {
73                DHL_OS_Printf("error: dhl_fe_init fail\n");
74        }
75
76#if TEST_FE_FUNCTION
77        tune(17,0);
78#endif
79
80        return result;
81}
82
83
84DHL_RESULT DHL_FE_Open(tDHL_TunerID id)
85{
86#if 0//BKNOTE: DHL_FE_Init¿¡¼­ ¼öÇàÇÔ. »ç¿ëÇÏÁö ¾Ê´Â API (Áߺ¹)
87        DHL_RESULT result;
88       
89        p_lock(TRUE);
90       
91        result=dhl_fe_open(id);
92       
93        p_lock(FALSE);
94       
95        return result;
96#else
97        DHL_OS_Printf("error: DHL_FE_Open fail\n");
98        return DHL_FAIL;
99#endif
100}
101
102
103DHL_RESULT DHL_FE_Close(tDHL_TunerID id)
104{
105        DHL_RESULT result;
106       
107        p_lock(TRUE);
108       
109        result=dhl_fe_close(id);
110       
111        p_lock(FALSE);
112       
113        return result;
114}
115
116
117DHL_RESULT DHL_FE_GetDeviceInfo(
118        tDHL_TunerID id, tDHL_TunerDeviceInfo selector, void *pValue)
119{
120        DHL_RESULT result;
121       
122        p_lock(TRUE);
123       
124        result=dhl_fe_get_device_info(id, selector, pValue);
125       
126        p_lock(FALSE);
127       
128        return result;
129}
130
131
132DHL_RESULT DHL_FE_Start(tDHL_TunerID id, UINT32 freqKHz, tDHL_Demod demod, tDHL_DemodExtSettings *settings)
133{
134        DHL_RESULT result;
135       
136        p_lock(TRUE);
137       
138        result=dhl_fe_start(id, freqKHz, demod, settings);
139       
140        p_lock(FALSE); 
141       
142        return result;
143}
144
145
146DHL_RESULT DHL_FE_Stop(tDHL_TunerID id)
147{
148        DHL_RESULT result;
149       
150        p_lock(TRUE);
151       
152        result=dhl_fe_stop(id);
153       
154        p_lock(FALSE); 
155       
156        return result; 
157}
158
159
160DHL_RESULT DHL_FE_GetSignalStatus(
161        tDHL_TunerID id, tDHL_SignalStatus selector, UINT32 *pValue)
162{
163        DHL_RESULT result;
164       
165        p_lock(TRUE);
166       
167        result=dhl_fe_get_sig_info(id, selector, pValue);
168       
169        p_lock(FALSE); 
170       
171        return result;
172}
173
174
175DHL_RESULT DHL_FE_GetModFormat(tDHL_TunerID id, tDHL_Demod *pDemod)
176{
177        DHL_RESULT result;
178       
179        p_lock(TRUE);
180       
181        result=dhl_fe_get_demod_type(id, pDemod);
182       
183        p_lock(FALSE); 
184       
185        return result;
186}
187
188
189DHL_RESULT DHL_FE_GetSignalStrength(tDHL_TunerID id, UINT32 *pstrength)
190{
191        DHL_RESULT result;
192       
193        p_lock(TRUE);
194       
195        result=dhl_fe_get_sig_info(id, eDHL_SIGNAL_STRENGTH, pstrength);
196       
197        p_lock(FALSE); 
198       
199        return result;
200}
201
202
203DHL_RESULT DHL_FE_GetLockStatus(tDHL_TunerID id, BOOL *pbLock, tDHL_Demod *pDemod)
204{
205        DHL_RESULT result;
206        UINT32 value;
207       
208        p_lock(TRUE);
209       
210        result=dhl_fe_get_demod_type(id, pDemod);
211       
212        if(result!=DHL_OK) {
213                *pbLock=FALSE;
214        }
215        else  {
216                result=dhl_fe_get_sig_info(id, eDHL_SIGNAL_LOCK, &value);
217                if(result!=DHL_OK) {
218                        *pbLock=FALSE;
219                }
220                else {
221                        *pbLock=value?TRUE:FALSE;
222                }
223        }
224       
225        p_lock(FALSE); 
226       
227        return result;
228}
229
230
231
232UINT32 DHL_FE_ChannelToFrequency(int ch, tDHL_FreqStd freqTbl)
233{
234        UINT32 freq=0;
235        BOOL isValid=TRUE;
236       
237        /* air,cable Á¦ÇÑ Á¶°Ç */
238       
239        if(freqTbl==eDHL_FREQ_AIR) {
240                if(ch<FE_MIN_FAT_AIR_CH && ch>FE_MAX_FAT_AIR_CH)
241                        isValid=FALSE;
242        }
243        else {
244                if(ch<FE_MIN_FAT_CBL_CH && ch>FE_MAX_FAT_CBL_CH)
245                        isValid=FALSE;
246        }
247       
248        if(!isValid) return 0;
249       
250        switch ( freqTbl )
251        {
252                case eDHL_FREQ_AIR:
253                        freq = Air_Freq[ch];
254                        break;
255                case eDHL_FREQ_STD:
256                        freq = Cable_Freq[ch];
257                        break;
258                case eDHL_FREQ_IRC:
259                        freq = Cable_Freq_IRC[ch];
260                        break;
261                case eDHL_FREQ_HRC:
262                        freq = Cable_Freq_HRC[ch];
263                        break;
264                default:
265                        //dprint(0, "!! Error with Channel = %lu, FreqStd = %d\n", ch, freqTbl);
266                        freq=0;
267        }       
268       
269        return freq;
270}
271
272
273
274
275
276#if COMMENT
277__Test_Func__(){}
278#endif
279
280#if TEST_FE_FUNCTION
281
282void tune(UINT32 ch, UINT32 cable)
283{
284        DHL_RESULT dhr;
285        UINT32 freqKHz;
286       
287        if (cable)
288        {
289                freqKHz = DHL_FE_ChannelToFrequency(ch, eDHL_FREQ_STD);
290        }
291        else
292        {
293                freqKHz = DHL_FE_ChannelToFrequency(ch, eDHL_FREQ_AIR);
294        }
295        if (freqKHz == 0)
296        {
297                DHL_OS_Printf("!! get freq err\n");
298               
299                return;
300        }
301       
302        dhr = DHL_FE_Start(0, freqKHz, eDHL_DEMOD_8VSB, NULL);
303        if (dhr != DHL_OK)
304        {
305                DHL_OS_Printf("!! tune freq err\n");
306               
307                return;
308        }
309}
310
311static void get_fe_info(void)
312{
313        DHL_RESULT ret;
314        char str[FE_VENDOR_NAME_LEN];
315        UINT32 val;
316       
317        ret = DHL_FE_GetDeviceInfo(0, eDHL_FE_DEV_VENDOR_NAME, (void *)str);
318        if (ret == DHL_OK)
319        {
320                DHL_OS_Printf("vendor : %s\n", str);
321        }
322        else
323        {
324                DHL_OS_Printf("get err...\n");
325        }
326       
327        ret = DHL_FE_GetDeviceInfo(0, eDHL_FE_DEV_MODEL_NAME, (void *)str);
328        if (ret == DHL_OK)
329        {
330                DHL_OS_Printf("model : %s\n", (void *)str);
331        }
332        else
333        {
334                DHL_OS_Printf("get err...\n");
335        }
336       
337        ret = DHL_FE_GetDeviceInfo(0, eDHL_FE_DEV_CAPABILITY_1, (void *)&val);
338        if (ret == DHL_OK)
339        {
340                DHL_OS_Printf("capability : 0x%x\n", val);
341        }
342        else
343        {
344                DHL_OS_Printf("get err...\n");
345        }
346}
347
348static void get_dem(void)
349{
350        DHL_RESULT ret;
351        tDHL_Demod demod;
352       
353        ret = DHL_FE_GetModFormat(0, &demod);
354        if (ret == DHL_OK)
355        {
356                DHL_OS_Printf("demod : 0x%x\n", demod);
357        }
358        else
359        {
360                DHL_OS_Printf("get err...\n");
361        }
362}
363
364static void get_snr(void)
365{
366        DHL_RESULT ret;
367        UINT32 snr;
368       
369        ret = DHL_FE_GetSignalStatus(0, eDHL_SIGNAL_SNR, &snr);
370        if (ret == DHL_OK)
371        {
372                DHL_OS_Printf("snr : %d\n", snr);
373        }
374        else
375        {
376                DHL_OS_Printf("get err...\n");
377        }
378}
379
380static void get_sig(void)
381{
382        DHL_RESULT ret;
383        UINT32 sig;
384       
385        ret = DHL_FE_GetSignalStrength(0, &sig);
386        if (ret == DHL_OK)
387        {
388                DHL_OS_Printf("sig : %d\n", sig);
389        }
390        else
391        {
392                DHL_OS_Printf("get err...\n");
393        }
394}
395
396static void get_lock(void)
397{
398        DHL_RESULT ret;
399        BOOL lock;
400        tDHL_Demod demod;
401       
402        ret = DHL_FE_GetLockStatus(0, &lock, &demod);
403        if (ret == DHL_OK)
404        {
405                DHL_OS_Printf("demod : 0x%x\n", demod);
406                DHL_OS_Printf("lock : %x\n", lock);
407        }
408        else
409        {
410                DHL_OS_Printf("get err...\n");
411        }
412}
413
414
415
416
417#include "DHL_DBG.h"
418
419static DHL_SymbolTable DHL_FE_TestSymbols[] =
420{
421        //---- functions
422       
423        DHL_FNC_SYM_ENTRY(tune),
424        DHL_FNC_SYM_ENTRY(get_fe_info),
425        DHL_FNC_SYM_ENTRY(get_dem),
426        DHL_FNC_SYM_ENTRY(get_snr),
427        DHL_FNC_SYM_ENTRY(get_sig),
428        DHL_FNC_SYM_ENTRY(get_lock),
429};
430
431void DHL_FE_TestInit()
432{
433        DHL_DBG_RegisterSymbols(DHL_FE_TestSymbols, DHL_NUMSYMBOLS(DHL_FE_TestSymbols));
434
435
436}
437
438#endif
Note: See TracBrowser for help on using the repository browser.