source: svn/trunk/newcon3bcm2_21bu/nexus/modules/frontend/common/include/nexus_ifd.h

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

first commit

  • Property svn:executable set to *
File size: 13.1 KB
Line 
1/***************************************************************************
2*     (c)2004-2010 Broadcom Corporation
3
4*  This program is the proprietary software of Broadcom Corporation and/or its licensors,
5*  and may only be used, duplicated, modified or distributed pursuant to the terms and
6*  conditions of a separate, written license agreement executed between you and Broadcom
7*  (an "Authorized License").  Except as set forth in an Authorized License, Broadcom grants
8*  no license (express or implied), right to use, or waiver of any kind with respect to the
9*  Software, and Broadcom expressly reserves all rights in and to the Software and all
10*  intellectual property rights therein.  IF YOU HAVE NO AUTHORIZED LICENSE, THEN YOU
11*  HAVE NO RIGHT TO USE THIS SOFTWARE IN ANY WAY, AND SHOULD IMMEDIATELY
12*  NOTIFY BROADCOM AND DISCONTINUE ALL USE OF THE SOFTWARE. 
13*   
14*  Except as expressly set forth in the Authorized License,
15*   
16*  1.     This program, including its structure, sequence and organization, constitutes the valuable trade
17*  secrets of Broadcom, and you shall use all reasonable efforts to protect the confidentiality thereof,
18*  and to use this information only in connection with your use of Broadcom integrated circuit products.
19*   
20*  2.     TO THE MAXIMUM EXTENT PERMITTED BY LAW, THE SOFTWARE IS PROVIDED "AS IS"
21*  AND WITH ALL FAULTS AND BROADCOM MAKES NO PROMISES, REPRESENTATIONS OR
22*  WARRANTIES, EITHER EXPRESS, IMPLIED, STATUTORY, OR OTHERWISE, WITH RESPECT TO
23*  THE SOFTWARE.  BROADCOM SPECIFICALLY DISCLAIMS ANY AND ALL IMPLIED WARRANTIES
24*  OF TITLE, MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR A PARTICULAR PURPOSE,
25*  LACK OF VIRUSES, ACCURACY OR COMPLETENESS, QUIET ENJOYMENT, QUIET POSSESSION
26*  OR CORRESPONDENCE TO DESCRIPTION. YOU ASSUME THE ENTIRE RISK ARISING OUT OF
27*  USE OR PERFORMANCE OF THE SOFTWARE.
28
29*  3.     TO THE MAXIMUM EXTENT PERMITTED BY LAW, IN NO EVENT SHALL BROADCOM OR ITS
30*  LICENSORS BE LIABLE FOR (i) CONSEQUENTIAL, INCIDENTAL, SPECIAL, INDIRECT, OR
31*  EXEMPLARY DAMAGES WHATSOEVER ARISING OUT OF OR IN ANY WAY RELATING TO YOUR
32*  USE OF OR INABILITY TO USE THE SOFTWARE EVEN IF BROADCOM HAS BEEN ADVISED OF
33*  THE POSSIBILITY OF SUCH DAMAGES; OR (ii) ANY AMOUNT IN EXCESS OF THE AMOUNT
34*  ACTUALLY PAID FOR THE SOFTWARE ITSELF OR U.S. $1, WHICHEVER IS GREATER. THESE
35*  LIMITATIONS SHALL APPLY NOTWITHSTANDING ANY FAILURE OF ESSENTIAL PURPOSE OF
36*  ANY LIMITED REMEDY.
37*
38* $brcm_Workfile: nexus_ifd.h $
39* $brcm_Revision: 12 $
40* $brcm_Date: 7/7/10 12:18p $
41*
42* API Description:
43*   API name: Frontend IFD
44*    Generic APIs for an IF Demodulator, used demodulate an analog (NTSC/PAL)
45*    input signal from a tuner device.
46*
47* Revision History:
48*
49* $brcm_Log: /nexus/modules/frontend/common/include/nexus_ifd.h $
50*
51* 12   7/7/10 12:18p jgarrett
52* CR3556-63: Adding IFD pull in range option
53*
54* 11   2/10/10 6:10p jgarrett
55* SW3556-1031: Adding India RF audio mode
56*
57* SW3556-1031/1   1/29/10 2:37p jgarrett
58* SW3556-1031: Adding india mode
59*
60* 10   3/25/09 3:29p jgarrett
61* PR 53549: Adding spectrumInverted option for SECAM-L'
62*
63* 9   2/17/09 2:48p jgarrett
64* PR 52131: Converting deviation mode to enum from boolean for medium
65*  deviation.
66*
67* 8   12/2/08 2:43p jgarrett
68* PR 49627: Adding high deviation mode
69*
70* 7   8/8/08 6:59p jgarrett
71* PR 45171: Adding AASD
72*
73* 6   6/20/08 3:20p jgarrett
74* PR 42360: Adding additional NICAM modes
75*
76* 5   5/15/08 7:40p jgarrett
77* PR 42360: Adding PAL-A2 and NICAM
78*
79* 4   2/7/08 5:36p jgarrett
80* PR 39407: Converting to common close functions
81*
82* 3   1/23/08 8:37p vobadm
83* PR35457: update docs
84*
85* 2   1/23/08 5:16p erickson
86* PR35457: update docs
87*
88* 1   1/18/08 2:19p jgarrett
89* PR 38808: Merging to main branch
90*
91* Nexus_Devel/2   12/20/07 2:30p jgarrett
92* PR 38019: Adding GetStatus
93*
94* Nexus_Devel/1   10/4/07 2:41p jgarrett
95* PR 35551: Adding initial version
96*
97***************************************************************************/
98#include "nexus_audio_types.h"
99#include "nexus_video_types.h"
100
101#ifndef NEXUS_IFD_H__
102#define NEXUS_IFD_H__
103
104#ifdef __cplusplus
105extern "C" {
106#endif
107
108/***************************************************************************
109Summary:
110IF Demodulator Handle
111***************************************************************************/
112typedef struct NEXUS_Ifd *NEXUS_IfdHandle;
113
114/***************************************************************************
115Summary:
116IF Modulation Types
117***************************************************************************/
118typedef enum NEXUS_IfdInputType
119{
120    NEXUS_IfdInputType_eNone,       /* Default, Audio and Video carried on IF input */
121    NEXUS_IfdInputType_eIf,         /* Default, Audio and Video carried on IF input */
122    NEXUS_IfdInputType_eSif,        /* Sound IF - Audio input typically from an off-chip IF Demodulator */
123    NEXUS_IfdInputType_eBaseband,   /* Baseband signal, not modulated.  Data will bypass IF Demodulator */
124    NEXUS_IfdInputType_eMax
125} NEXUS_IfdInputType;
126
127/***************************************************************************
128Summary:
129IF Modulation Types
130***************************************************************************/
131typedef enum NEXUS_IfdAudioMode
132{
133    NEXUS_IfdAudioMode_eUs,              /* BTSC US */
134    NEXUS_IfdAudioMode_eKorea,           /* Korea (A2) */
135    NEXUS_IfdAudioMode_eJapan,           /* Japan CPZ503 */
136    NEXUS_IfdAudioMode_eIndia,           /* India High Deviation FM Mono */
137    NEXUS_IfdAudioMode_eNicam,           /* NICAM */
138    NEXUS_IfdAudioMode_ePalA2,           /* PAL A2 */
139    NEXUS_IfdAudioMode_eAutoNicamPalA2,  /* Auto switch for NICAM and PAL-A2*/
140    NEXUS_IfdAudioMode_eMax
141} NEXUS_IfdAudioMode;
142
143/***************************************************************************
144Summary:
145US RF audio decoder modes
146***************************************************************************/
147typedef enum NEXUS_UsIfdAudioMode
148{
149    NEXUS_UsIfdAudioMode_eMono,       
150    NEXUS_UsIfdAudioMode_eStereo,     
151    NEXUS_UsIfdAudioMode_eSap,       
152    NEXUS_UsIfdAudioMode_eSapMono,
153    NEXUS_UsIfdAudioMode_eMax
154} NEXUS_UsIfdAudioMode;
155
156/***************************************************************************
157Summary:
158Korea A2 RF audio decoder modes
159***************************************************************************/
160typedef enum NEXUS_KoreaIfdAudioMode
161{
162    NEXUS_KoreaIfdAudioMode_eMono,    /* Mono - L=Main, R=Main */
163    NEXUS_KoreaIfdAudioMode_eStereo,  /* Stereo - L=L, R=R */
164    NEXUS_KoreaIfdAudioMode_eSub,     /* Special Mode - L=Sub, R=Sub */
165    NEXUS_KoreaIfdAudioMode_eDualMono,/* Dual Mono - L=Main, r=Sub */
166    NEXUS_KoreaIfdAudioMode_eMax
167} NEXUS_KoreaIfdAudioMode;
168
169/***************************************************************************
170Summary:
171Japan RF audio decoder modes
172***************************************************************************/
173typedef enum NEXUS_JapanIfdAudioMode
174{
175    NEXUS_JapanIfdAudioMode_eMono,    /* Mono - L=Main, R=Main */
176    NEXUS_JapanIfdAudioMode_eStereo,  /* Stereo - L=L, R=R */
177    NEXUS_JapanIfdAudioMode_eSub,     /* Special Mode - L=Sub, R=Sub */
178    NEXUS_JapanIfdAudioMode_eDualMono,/* Dual Mono - L=Main, r=Sub */
179    NEXUS_JapanIfdAudioMode_eMax
180} NEXUS_JapanIfdAudioMode;
181
182/***************************************************************************
183Summary:
184NICAM RF audio decoder modes
185***************************************************************************/
186typedef enum NEXUS_NicamIfdAudioMode
187{
188    NEXUS_NicamIfdAudioMode_eFmAmMono,      /* AM or FM mono audio */
189    NEXUS_NicamIfdAudioMode_eMono,          /* NICAM Mono - L=Main, R=Main */
190    NEXUS_NicamIfdAudioMode_eStereo,        /* NICAM Stereo - L=L, R=R */
191    NEXUS_NicamIfdAudioMode_eDualMono1,     /* NICAM Dual Mono - L=Main, r=Main */
192    NEXUS_NicamIfdAudioMode_eDualMono2,     /* NICAM Dual Mono - L=Sub, r=Sub */
193    NEXUS_NicamIfdAudioMode_eDualMono1And2, /* NICAM Dual Mono - L=Main, r=Sub */
194    NEXUS_NicamIfdAudioMode_eMax
195} NEXUS_NicamIfdAudioMode;
196
197/***************************************************************************
198Summary:
199PAL A2 RF audio decoder modes
200***************************************************************************/
201typedef enum NEXUS_PalA2IfdAudioMode
202{
203    NEXUS_PalA2IfdAudioMode_eMono,    /* Mono - L=Main, R=Main */
204    NEXUS_PalA2IfdAudioMode_eStereo,  /* Stereo - L=L, R=R */
205    NEXUS_PalA2IfdAudioMode_eSub,     /* Special Mode - L=Sub, R=Sub */
206    NEXUS_PalA2IfdAudioMode_eDualMono,/* Dual Mono - L=Main, r=Sub */
207    NEXUS_PalA2IfdAudioMode_eMax
208} NEXUS_PalA2IfdAudioMode;
209
210/***************************************************************************
211Summary:
212IFD Audio deviation settings
213***************************************************************************/
214typedef enum NEXUS_IfdAudioDeviation
215{
216    NEXUS_IfdAudioDeviation_eNormal,
217    NEXUS_IfdAudioDeviation_eMedium,
218    NEXUS_IfdAudioDeviation_eHigh,
219    NEXUS_IfdAudioDeviation_eMax
220} NEXUS_IfdAudioDeviation;
221
222/***************************************************************************
223Summary:
224IFD Pull In Range
225***************************************************************************/
226typedef enum NEXUS_IfdPullInRange
227{
228    NEXUS_IfdPullInRange_eDefault,      /* Use defaults from the hardware */
229    NEXUS_IfdPullInRange_e32kHz,
230    NEXUS_IfdPullInRange_e250kHz,
231    NEXUS_IfdPullInRange_e500kHz,
232    NEXUS_IfdPullInRange_e750kHz,
233    NEXUS_IfdPullInRange_e1000kHz,
234    NEXUS_IfdPullInRange_e1100kHz,
235    NEXUS_IfdPullInRange_eMax
236} NEXUS_IfdPullInRange;
237
238/***************************************************************************
239Summary:
240Generic IFD Settings
241***************************************************************************/
242typedef struct NEXUS_IfdSettings
243{
244    bool enabled;                           /* Set to true to enable the IFD, otherwise set to false */
245   
246    bool spectrumInverted;                  /* Set to true if the spectrum is inverted (SECAM-L' requires this) */
247    NEXUS_IfdInputType videoInputType;      /* Video Input to IFD.  Can select None, IF or Baseband. */
248    unsigned videoInputIndex;               /* Video Input index.  Specifies which specific input of type inputType will be selected */
249
250    NEXUS_IfdInputType audioInputType;      /* Audio Input to IFD.  Can select IF or SIF. */
251    unsigned audioInputIndex;               /* Audio Input index.  Specifies which specific input of type inputType will be selected */
252
253    unsigned carrierFrequency;              /* Video carrier frequency, in Hz.  Default=45.75MHz */
254    NEXUS_VideoFormat videoFormat;          /* Default=NEXUS_VideoFormat_eNtsc */
255    NEXUS_IfdAudioMode audioMode;           /* Audio Mode.  Default = NEXUS_IfdAudioMode_eUs */
256    NEXUS_IfdAudioDeviation audioDeviation; /* Audio Deviation mode.  Default = NEXUS_IfdAudioDeviation_eNormal */
257    NEXUS_IfdPullInRange pullInRange;       /* Pull In Range.  Default = NEXUS_IfdPullInRange_eDefault */
258    union
259    {   
260        struct
261        {
262           NEXUS_UsIfdAudioMode mode; 
263        } us;
264        struct
265        {
266            NEXUS_KoreaIfdAudioMode mode; 
267        } korea;
268        struct
269        {
270            NEXUS_JapanIfdAudioMode mode; 
271        } japan;
272        struct
273        {
274            NEXUS_NicamIfdAudioMode mode; 
275        } nicam;
276        struct
277        {
278            NEXUS_PalA2IfdAudioMode mode; 
279        } palA2;
280        struct
281        {
282            NEXUS_NicamIfdAudioMode nicamMode; 
283            NEXUS_PalA2IfdAudioMode palA2Mode; 
284        } autoNicamPalA2;
285    } audioModeSettings;
286
287    NEXUS_CallbackDesc lockCallback;        /* Callback will be called when lock status changes */
288} NEXUS_IfdSettings;
289
290/***************************************************************************
291Summary:
292    Get IFD Settings
293***************************************************************************/
294void NEXUS_Ifd_GetSettings(
295    NEXUS_IfdHandle handle,
296    NEXUS_IfdSettings *pSettings        /* [out] */
297    );
298
299/***************************************************************************
300Summary:
301    Set IFD Settings
302***************************************************************************/
303void NEXUS_Ifd_SetSettings(
304    NEXUS_IfdHandle handle,
305    const NEXUS_IfdSettings *pSettings
306    );
307
308/***************************************************************************
309Summary:
310IF Modulation Types
311***************************************************************************/
312typedef struct NEXUS_IfdStatus
313{
314    bool locked;        /* lock=true, unlocked=false */
315    int carrierOffset;  /* Carrier Frequency Offset, in Hertz */
316    int rfAgcLevel;     /* RF AGC level, in 1/10 percent */
317    int ifAgcLevel;     /* IF AGC level, in 1/10 percent */
318} NEXUS_IfdStatus;
319
320/***************************************************************************
321Summary:
322    Get current IFD status
323***************************************************************************/
324void NEXUS_Ifd_GetStatus(
325    NEXUS_IfdHandle handle,
326    NEXUS_IfdStatus *pStatus    /* [out] */
327    );
328
329/***************************************************************************
330Summary:
331    Close an IFD handle
332***************************************************************************/
333void NEXUS_Ifd_Close(
334    NEXUS_IfdHandle handle
335    );
336
337#ifdef __cplusplus
338}
339#endif
340
341#endif /* #ifndef NEXUS_FRONTEND_IFD_H__ */
342
Note: See TracBrowser for help on using the repository browser.