source: svn/trunk/zas_dstar/hal/include/dsthalfe.h

Last change on this file was 2, checked in by phkim, 11 years ago

1.phkim

  1. revision copy newcon3sk r27
File size: 8.7 KB
Line 
1/****************************************************************************
2 * Copyright (c) 2004 Digital Stream Technologies Inc.  All Rights Reserved.
3 *
4 * Module:      dsthalfe.h
5 * Author:              Jun-ku Park, hwatk@dstreamtech.com
6 * Description: DST HAL [Front End] Platform/Project Independent Includes
7 *             
8 * notes: hwatk20040602
9 *
10 ***************************************************************************/
11
12#ifndef __DST_HALFE_H__
13#define __DST_HALFE_H__
14
15#include "dsthalcommon.h"
16
17typedef enum {
18        TUNER_UNKNOWN=0,                /* Tuner type is not specified. */
19        TUNER_FAT,                              /* FAT Tuner */
20        TUNER_FDC,                              /* FDC Tuner */
21        TUNER_MAX=3
22} TunerType;
23
24#undef FREQ_MAX
25
26typedef enum {
27        FREQ_UNKNOWN=0,                 /* Frequency Standard is not specified */
28        FREQ_AIR,                               /* Frequency Standard is OFF-AIR */
29        FREQ_STD,                               /* Frequency Standard is Cable Standard */
30        FREQ_IRC,                               /* Frequency Standard is Cable IRC */
31        FREQ_HRC,                               /* Frequency Standard is Cable HRC */
32        FREQ_MAX
33} FreqStandardType;
34
35typedef enum {
36        TUNERSTATE_UNKNOWN=0,   /* Tuner is not initialized. */
37        TUNERSTATE_INIT,                /* Tuner is initialized. */
38        TUNERSTATE_START,               /* Tuner is started. */
39        TUNERSTATE_STOP,                /* Tuner is stopped. */
40        TUNERSTATE_MAX
41} TunerState;
42
43typedef enum {
44        DEMOD_UNKNOWN=0,
45        DEMOD_8VSB,                             /* Modulation is 8VSB */
46        DEMOD_64QAM,                    /* Modulation is 64QAM */
47        DEMOD_256QAM,                   /* Modulation is 256QAM */
48        DEMOD_QAM,                              /* Autodetection between 64QAM and 256QAM */
49        DEMOD_NTSC,                             /* Modulation is NTSC */
50       
51        DEMOD_ISDBT,            /* ISDB-T Auto-detection. */
52        DEMOD_ISDBT_MANUAL,     /* ISDB-T Manual */
53       
54    DEMOD_OFF,
55       
56        DEMOD_MODEA,                    /* Modulation is FDC - MODEA */
57        DEMOD_MODEB,                    /* Modulation is FDC - MODEB */
58       
59        DEMOD_MAX
60} TunerDemod;
61
62typedef enum {
63        CHANNEL=0,                              /* Tuning by channel number */
64        FREQ                                    /* Tuning by frequency */
65} TuneType;
66
67typedef enum {
68        FEBERT_RM_0=1,                  /* Remove 0 byte on header  */
69        FEBERT_RM_1,                    /* Remove 1 bytes on header */
70        FEBERT_RM_3,                    /* Remove 3 bytes on header */
71        FEBERT_RM_4                             /* Remove 4 bytes on header */
72} FEBertRm;
73
74typedef enum {
75        FEBERT_INPUT_FAT=1,
76        FEBERT_INPUT_DI,
77        FEBERT_INPUT_FDC,
78        FEBERT_INPUT_TRELLIS
79} FEBertSource;
80
81typedef enum {
82        FEBERT_INVERTED=1,
83        FEBERT_NON_INVERTED
84} FEBertPNInv;
85
86typedef enum {
87        FEBERT_PN_15=1,
88        FEBERT_PN_23
89} FEBertPNSeq;
90
91typedef enum {
92        FECALLBACK_UNKNOWN=0,
93        FECALLBACK_ACQSTART,    /* Callback on acquisition start, DHL_FE_Start() */
94        FECALLBACK_LOCK,                /* Callback on tuner being locked. */
95        FECALLBACK_UNLOCK,              /* Callback on tuner being unlocked. */
96        FECALLBACK_MAX
97} FECallbackSource;
98
99typedef enum {
100        FE_AUDIO_MONO = 0,                      /* Mono */
101        FE_AUDIO_STEREO,                /* Stereo */
102        FE_AUDIO_MONO_SAP,              /* Mono on left, SAP on right */
103        FE_AUDIO_SAP,                   /* Secondary Audio Program */
104        FE_AM_INVALID,
105} FEAudioMode_t;
106
107typedef enum {
108        FE_AUDIO_OFF = 0,
109        FE_AUDIO_BTSC,                  /* BTSC */
110        FE_DUALFM,                              /* Dual FM, aka A2 audio standard */
111        FE_AUTODETECT,                  /* Automatic detection */
112        FE_AS_INVALID
113} FEAudioStandard_t;
114
115typedef enum {
116        FE_WAIT_FOR_LOCK,
117        FE_SENT_LOCK,
118        FE_SENT_UNLOCK
119} FENotificationState_t;
120
121typedef void (*P_DHL_FE_CALLBACK)(TunerType Tuner, FECallbackSource eventSource, DS_U32 userArg);
122
123/****************************************************************************
124
125        FDC °ü·Ã Type-definition
126
127 ***************************************************************************/
128typedef enum {
129        FDC_SYMBOL_RATE_772=1,
130        FDC_SYMBOL_RATE_1024,
131        FDC_SYMBOL_RATE_1544
132} FdcSymbolRate_t;
133
134typedef enum {
135        FDC_INVERT_SIGNAL=1,
136        FDC_NO_INVERT_SIGNAL,
137} FdcSignalPolarity_t;
138
139typedef struct tag_DST_FE
140{
141        TunerType                       bTuner;
142        TunerState                      bCurState;
143        DS_BOOL                         bHWInit;                /* Lower H/W Initialized? */
144               
145        /* FAT-specific fields */
146        FreqStandardType        bFreqStd;
147        DS_U8                           bChannel;
148       
149        /* FDC-specific fields */
150        FdcSymbolRate_t         FdcSymbolRate;
151        FdcSignalPolarity_t     FdcClockPolarity;
152        FdcSignalPolarity_t     FdcDataPolarity;
153        FdcSignalPolarity_t     FdcDecoderMode;
154        DS_U32                          RefDivider;
155       
156        /* FAT & FDC common fields */
157        TunerDemod                      bCurDemod;
158        DS_U32                          uFrequency;
159
160        /* Callback Functions */
161        P_DHL_FE_CALLBACK       fnFECallback[FECALLBACK_MAX-1];
162        DS_U32                          FECallbackUserArg[FECALLBACK_MAX-1];
163       
164        P_DHL_FE_CALLBACK       fnFECallbackNTSC[FECALLBACK_MAX-1];
165        DS_U32                          FECallbackNTSCUserArg[FECALLBACK_MAX-1];
166
167        DS_U32                          feThreadId;
168        volatile DS_BOOL                bThreadActive;
169        FENotificationState_t NotifyState;
170       
171        /*
172         * Current Status
173         *      - bLockStatus : Tuner Lock Status, filled on DHL_FE_GetSNR()
174         *  - fSNR        : SNR of Equalizer, filled on DHL_FE_GetTrellisSNR()
175         *  - dTrellisSNR : SNR of Trellis Decoder, filled on DHL_FE_GetTrellisSNR()
176         *  - uSQI        : Signal Strength of Tuner, filled on DHL_FE_GetSignalStrength()
177         *  - uRSErrorCnt : Reed-Solomon Decoder Error Count, filled on DHL_FE_GetRSError()
178         *  - fRSErrorRate : Reed-Solomon Decoder Error Count per unit time, filled on DHL_FE_GetRSError()
179         */
180        DS_U8                           bLockStatus;
181        float                           fSNR;
182        double                          dTrellisSNR;
183        DS_U32                          uSQI;
184        DS_U32                          uRSErrorCnt;
185        float                           fRSErrorRate;
186        DS_U64                          ulBERTErrorCnt; /* BERT Error Cnt updated on DHL_FE_GetBERT() */
187        double                          dBERTErrorRate; /* BERT Error Rate updated on DHL_FE_GetBERT() */
188        DS_U8                           bBERTStarted;   /* BERT Test Started ? */
189       
190        DS_U8                    bCarrierMute;
191       
192        /* Platform/Project Specific fields */
193} *P_DST_FE, DST_FE;
194
195#define MIN_FAT_CH              1
196#define MAX_FAT_CH              135
197
198#define FULL_SEARCH_HALF_BOUND  1500.0  /* NTSC Full Search Range 1.5 Mhz */
199#define SHORT_SEARCH_HALF_BOUND 437.5   /* NTSC Short Search Range 437.5 kHz */
200#define SEARCH_STEP_FREQ                250             /* NTSC Search Step : 250 kHz */
201#define XOCECO_STEP_FREQ                100
202#ifdef __cplusplus
203extern "C" {
204#endif
205
206       
207DHL_RESULT DHL_FE_Init( TunerType Tuner );
208DHL_RESULT DHL_FE_SetChannelStandard( TunerType Tuner, FreqStandardType FreqStd );
209DHL_RESULT DHL_FE_Start( TunerType Tuner, DS_U32 ChannelFreq, TunerDemod Demod, TuneType bFreq );
210DHL_RESULT DHL_FE_Stop( TunerType Tuner );
211DHL_RESULT DHL_FE_Close( TunerType Tuner );
212
213DHL_RESULT DHL_FE_SetCallback( TunerType Tuner, FECallbackSource eventSource, 
214                                                                        P_DHL_FE_CALLBACK fn, DS_U32 userArg );
215DHL_RESULT DHL_FE_GetLockStatus( TunerType Tuner, DS_U8 *pLockStatus );
216DHL_RESULT DHL_FE_GetSNR( TunerType Tuner, float *pSNR );
217DHL_RESULT DHL_FE_GetTrellisSNR( TunerType Tuner, double *pTrellisSNR );
218DHL_RESULT DHL_FE_GetSignalStrength( TunerType Tuner, DS_U32 *pSQI );
219DHL_RESULT DHL_FE_GetSignalPower( TunerType Tuner, DS_U32 *pSQI );
220DHL_RESULT DHL_FE_GetEqSNR( TunerType Tuner, float *pSNR );
221DHL_RESULT DHL_FE_GetRSError( TunerType Tuner, DS_U32 *pRSErrorCnt, float *pRSErrorRate );
222DHL_RESULT DHL_FE_GetBERT( TunerType Tuner, DS_U32 *pErrorCnt, float *pErrorRate );
223DHL_RESULT DHL_FE_GetModFormat( TunerType Tuner, TunerDemod *pModFormat );
224
225DHL_RESULT DHL_FE_BERTStart( TunerType Tuner, FEBertRm HdrRm, FEBertSource Source, 
226                            FEBertPNInv PNInv, FEBertPNSeq PNSeq);
227DHL_RESULT DHL_FE_BERTStop( TunerType Tuner );
228
229DHL_RESULT DHL_FE_SetFDCConfig( TunerType Tuner, DS_U32 RFFreq, FdcSymbolRate_t SymbolRate, 
230                                                                FdcSignalPolarity_t ClockPol, FdcSignalPolarity_t DataPol, 
231                                                                FdcSignalPolarity_t DecoderMode, DS_U32 RefDivider );
232
233DHL_RESULT DHL_FE_CheckAlive( TunerType Tuner );
234DS_U32 DD_FE_GetVersion( void );
235
236DHL_RESULT DD_FE_I2SEnable( P_DST_FE pDSTFETuner, int Enable );
237DHL_RESULT DHL_FE_SetInput( TunerType Tuner, int Cable );
238DHL_RESULT DHL_FE_SetGPIOC( TunerType Tuner, int mask, int value );
239DHL_RESULT DHL_FE_GetGPIOC( TunerType Tuner, int mask, int *value );
240void dhl_fe_t_btsc( int Enable );
241
242DHL_RESULT DHL_FE_GetAudioMode( TunerType Tuner, FEAudioMode_t *audioMode, FEAudioStandard_t *audioStandard );
243DHL_RESULT DHL_FE_SetAudioMode( TunerType Tuner, FEAudioMode_t audioMode, FEAudioStandard_t audioStandard );
244
245void SetGPIOC( int mask, int value );
246
247//DHL_RESULT DHL_FE_AnalogFullSearch(TunerType Tuner, DS_U32 channel, INT32 *offset, TuneType bFreq, float search_range );
248DHL_RESULT DHL_FE_AnalogFullSearch(TunerType Tuner, DS_U32 channel, DS_S32 *offset, TuneType bFreq, float search_range, DS_BOOL (*fnCancelCk1)(void), DS_BOOL (*fnCancelCk2)(void) );
249DHL_RESULT DHL_FE_AnalogShortSearch(TunerType Tuner, DS_U32 channel, DS_S32 *offset, TuneType bFreq );
250DHL_RESULT DHL_FE_AnalogGetLockStatus(TunerType Tuner, DS_U8 *lockStatus);
251
252DHL_RESULT DHL_FE_AnalogFullSearchEx( TunerType Tuner, DS_U32 channel, DS_S32 *pOffset, TuneType bFreq, DS_S32 RangeLow, DS_S32 RangeHigh );
253int GetAFT(void);
254DHL_RESULT PrintTunerStatus(void);
255
256DHL_RESULT DHL_FE_SetCallbackNTSC( TunerType Tuner, FECallbackSource eventSource, 
257                                                                        P_DHL_FE_CALLBACK fn, DS_U32 userArg );
258
259DS_U32 DHL_FE_GetFrequency( TunerType Tuner );
260void DHL_FE_SetAnalogLockMethod(int Method);
261DHL_RESULT DHL_FE_SetCarrierMute( TunerType Tuner, DS_U8 bEn );
262
263void set_spliter_to_air_or_cable(DS_BOOL AirOrCable);
264
265#ifdef __cplusplus
266}
267#endif
268
269#endif /* __DST_HALFE_H__ */
Note: See TracBrowser for help on using the repository browser.