⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bsp_tuner.h

📁 用于DRX3973或DRX39系列的芯片的控制
💻 H
字号:
/**
* \file $Id: bsp_tuner.h,v 1.10 2005/10/18 16:38:17 paulja Exp $
*
* \brief Tuner dependable type definitions, macro's and functions
*
* \author Carlo Delhez
*/

/*
* $(c) 2004-2005 Micronas GmbH. All rights reserved.
*
* This software and related documentation (the 'Software') are intellectual
* property owned by Micronas and are copyright of Micronas, unless specifically
* noted otherwise.
*
* Any use of the Software is permitted only pursuant to the terms of the
* license agreement, if any, which accompanies, is included with or applicable
* to the Software ('License Agreement') or upon express written consent of
* Micronas. Any copying, reproduction or redistribution of the Software in
* whole or in part by any means not in accordance with the License Agreement
* or as agreed in writing by Micronas is expressly prohibited.
*
* THE SOFTWARE IS WARRANTED, IF AT ALL, ONLY ACCORDING TO THE TERMS OF THE
* LICENSE AGREEMENT. EXCEPT AS WARRANTED IN THE LICENSE AGREEMENT THE SOFTWARE
* IS DELIVERED 'AS IS' AND MICRONAS HEREBY DISCLAIMS ALL WARRANTIES AND
* CONDITIONS WITH REGARD TO THE SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
* AND CONDITIONS OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIT
* ENJOYMENT, TITLE AND NON-INFRINGEMENT OF ANY THIRD PARTY INTELLECTUAL
* PROPERTY OR OTHER RIGHTS WHICH MAY RESULT FROM THE USE OR THE INABILITY
* TO USE THE SOFTWARE.
*
* IN NO EVENT SHALL MICRONAS BE LIABLE FOR INDIRECT, INCIDENTAL, CONSEQUENTIAL,
* PUNITIVE, SPECIAL OR OTHER DAMAGES WHATSOEVER INCLUDING WITHOUT LIMITATION,
* DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS
* INFORMATION, AND THE LIKE, ARISING OUT OF OR RELATING TO THE USE OF OR THE
* INABILITY TO USE THE SOFTWARE, EVEN IF MICRONAS HAS BEEN ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGES, EXCEPT PERSONAL INJURY OR DEATH RESULTING FROM
* MICRONAS' NEGLIGENCE.                                                        $
*
*/

#ifndef __DRXBSP_TUNER_H__
#define __DRXBSP_TUNER_H__
/*------------------------------------------------------------------------------
INCLUDES
------------------------------------------------------------------------------*/
#include "bsp_types.h"
#include "bsp_i2c.h"

#ifdef __cplusplus
extern "C" {
#endif

/*------------------------------------------------------------------------------
DEFINES
------------------------------------------------------------------------------*/


   /* Sub-mode bits should be adjacent and incremental */
#define TUNER_MODE_SUB0 0x0001    /* for sub-mode (e.g. RF-AGC setting)    */
#define TUNER_MODE_SUB1 0x0002    /* for sub-mode (e.g. RF-AGC setting)    */
#define TUNER_MODE_SUB2 0x0004    /* for sub-mode (e.g. RF-AGC setting)    */
#define TUNER_MODE_SUB3 0x0008    /* for sub-mode (e.g. RF-AGC setting)    */
#define TUNER_MODE_SUB4 0x0010    /* for sub-mode (e.g. RF-AGC setting)    */
#define TUNER_MODE_SUB5 0x0020    /* for sub-mode (e.g. RF-AGC setting)    */
#define TUNER_MODE_SUB6 0x0040    /* for sub-mode (e.g. RF-AGC setting)    */
#define TUNER_MODE_SUB7 0x0080    /* for sub-mode (e.g. RF-AGC setting)    */

#define TUNER_MODE_DIGITAL 0x0100 /* for digital channel (e.g. DVB-T)      */
#define TUNER_MODE_ANALOG 0x0200  /* for analog channel  (e.g. PAL)        */
#define TUNER_MODE_SWITCH 0x0400  /* during channel switch & scanning      */
#define TUNER_MODE_LOCK 0x0800    /* after tuner has locked                */
#define TUNER_MODE_6MHZ 0x1000    /* for 6MHz bandwidth channels           */
#define TUNER_MODE_7MHZ 0x2000    /* for 7MHz bandwidth channels           */
#define TUNER_MODE_8MHZ 0x4000    /* for 8MHz bandwidth channels           */

#define TUNER_MODE_SUB_MAX  8
#define TUNER_MODE_SUBALL   ( TUNER_MODE_SUB0 | TUNER_MODE_SUB1 | \
                              TUNER_MODE_SUB2 | TUNER_MODE_SUB3 | \
                              TUNER_MODE_SUB4 | TUNER_MODE_SUB5 | \
                              TUNER_MODE_SUB6 | TUNER_MODE_SUB7 )

/*------------------------------------------------------------------------------
TYPEDEFS
------------------------------------------------------------------------------*/

typedef u32_t TUNERMode_t;
typedef pu32_t pTUNERMode_t;

typedef char*           TUNERSubMode_t;    /* description of supported submode        */
typedef TUNERSubMode_t *pTUNERSubMode_t;


typedef enum {

   TUNER_LOCKED,
   TUNER_NOT_LOCKED

} TUNERLockStatus_t, *pTUNERLockStatus_t;


typedef struct {

   char           *name;         /* Tuner brand & type name, e.g. for use in listboxes    */
   DRXFrequency_t minFreqRF;     /* Lowest  RF input frequency, in kHz        */
   DRXFrequency_t maxFreqRF;     /* Highest RF input frequency, in kHz        */

   u8_t            subMode;             /* Index to sub-mode in use           */
   pTUNERSubMode_t subModeDescriptions; /* Pointer to description of sub-modes*/
   u8_t            subModes;            /* Number of available sub-modes      */

   /* The following fields will be either 0, NULL or FALSE and do not need
      initialisation */
   void           *selfCheck;    /* gives proof of initialization             */
   Bool_t         programmed;    /* only valid if selfCheck is OK             */
   DRXFrequency_t RFfrequency;   /* only valid if programmed                  */
   DRXFrequency_t IFfrequency;   /* only valid if programmed                  */

   void*          myUserData;       /* pointer to associated demod instance      */
} TUNERCommonAttr_t, *pTUNERCommonAttr_t;


/*
* Generic functions for DRX devices.
*/
typedef struct TUNERInstance_s *pTUNERInstance_t;

typedef DRXStatus_t (*TUNEROpenFunc_t)  (pTUNERInstance_t tuner);
typedef DRXStatus_t (*TUNERCloseFunc_t) (pTUNERInstance_t tuner);
typedef DRXStatus_t (*TUNERSetFrequencyFunc_t)  (pTUNERInstance_t tuner,
                                                 TUNERMode_t      mode,
                                                 DRXFrequency_t   frequency);
typedef DRXStatus_t (*TUNERGetFrequencyFunc_t)  (pTUNERInstance_t tuner,
                                                 pDRXFrequency_t  RFfrequency,
                                                 pDRXFrequency_t  IFfrequency);
typedef DRXStatus_t (*TUNERLockStatusFunc_t)( pTUNERInstance_t   tuner,
                                              pTUNERLockStatus_t lockStat );

typedef DRXStatus_t (*TUNERi2cWriteReadFunc_t)( pTUNERInstance_t   tuner,
                                                pI2CDeviceAddr_t wDevAddr,
                                                u16_t            wCount,
                                                pu8_t            wData,
                                                pI2CDeviceAddr_t rDevAddr,
                                                u16_t            rCount,
                                                pu8_t            rData);

typedef struct
{
   TUNEROpenFunc_t         openFunc;
   TUNERCloseFunc_t        closeFunc;
   TUNERSetFrequencyFunc_t setFrequencyFunc;
   TUNERGetFrequencyFunc_t getFrequencyFunc;
   TUNERLockStatusFunc_t   lockStatusFunc;
   TUNERi2cWriteReadFunc_t i2cWriteReadFunc;

} TUNERFunc_t, *pTUNERFunc_t;

typedef struct TUNERInstance_s {

   I2CDeviceAddr_t      myI2CDevAddr;
   pTUNERCommonAttr_t   myCommonAttr;     /* should not be initialized by application  */
   void*                myExtAttr;
   pTUNERFunc_t         myFunct;

} TUNERInstance_t;


/*------------------------------------------------------------------------------
ENUM
------------------------------------------------------------------------------*/

/*------------------------------------------------------------------------------
STRUCTS
------------------------------------------------------------------------------*/


/*------------------------------------------------------------------------------
Exported FUNCTIONS
------------------------------------------------------------------------------*/

DRXStatus_t DRXBSP_TUNER_Open ( pTUNERInstance_t tuner );

DRXStatus_t DRXBSP_TUNER_Close( pTUNERInstance_t tuner );

DRXStatus_t DRXBSP_TUNER_SetFrequency( pTUNERInstance_t tuner,
                                       TUNERMode_t      mode,
                                       DRXFrequency_t   frequency );

DRXStatus_t DRXBSP_TUNER_GetFrequency( pTUNERInstance_t tuner,
                                       pDRXFrequency_t  RFfrequency,
                                       pDRXFrequency_t  IFfrequency );

DRXStatus_t DRXBSP_TUNER_LockStatus( pTUNERInstance_t   tuner,
                                     pTUNERLockStatus_t lockStat );


DRXStatus_t DRXBSP_TUNER_DefaultI2CWriteRead( pTUNERInstance_t tuner,
                                              pI2CDeviceAddr_t wDevAddr,
                                              u16_t            wCount,
                                              pu8_t            wData,
                                              pI2CDeviceAddr_t rDevAddr,
                                              u16_t            rCount,
                                              pu8_t            rData);


/*------------------------------------------------------------------------------
THE END
------------------------------------------------------------------------------*/
#ifdef __cplusplus
}
#endif
#endif   /* __DRXBSP_TUNER_H__ */

/* End of file */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -