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

📄 drx_driver.h

📁 用于DRX3973或DRX39系列的芯片的控制
💻 H
📖 第 1 页 / 共 3 页
字号:
/**
* \file $Id: drx_driver.h,v 1.24 2005/10/21 09:02:17 paulja Exp $
*
* \brief DRX driver API
*
* \author Paul Janssen
*/

/*
* $(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 __DRXDRIVER_H__
#define __DRXDRIVER_H__
/*-------------------------------------------------------------------------
INCLUDES
-------------------------------------------------------------------------*/
#include "bsp_types.h"
#include "bsp_i2c.h"
#include "bsp_tuner.h"
#include "bsp_host.h"

#ifdef __cplusplus
extern "C" {
#endif
/*-------------------------------------------------------------------------
TYPEDEFS
-------------------------------------------------------------------------*/

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

/**************
 *
 * This section configures the DRX Data Access Protocols (DAPs).
 *
 **************/

/**
* \def DRXDAP_SINGLE_MASTER
* \brief Enable I2C single or I2C multimaster mode on host.
*
* Set to 1 to enable single master mode
* Set to 0 or undefine to enable multi master mode
*
* The actual DAP implementation may be restricted to only one of the modes.
* A compiler warning or error will be generated if the DAP implementation
* overides or cannot handle the mode defined below.
*
*/
#define DRXDAP_SINGLE_MASTER 1


/**
* \def DRXDAP_MAX_WCHUNKSIZE
* \brief Defines maximum chunksize of an i2c write action by host.
*
* This indicates the maximum size of data the I2C device driver is able to
* write at a time. This includes I2C device address and register addressing.
*
* This maximum size may be restricted by the actual DAP implementation.
* A compiler warning or error will be generated if the DAP implementation
* overides or cannot handle the chunksize defined below.
*
* Beware that the DAP uses  DRXDAP_MAX_WCHUNKSIZE to create a temporary data
* buffer. Do not undefine or choose too large, unless your system is able to
* handle a stack buffer of that size.
*
*/
#define  DRXDAP_MAX_WCHUNKSIZE 254


/**
* \def DRXDAP_MAX_RCHUNKSIZE
* \brief Defines maximum chunksize of an i2c read action by host.
*
* This indicates the maximum size of data the I2C device driver is able to read
* at a time. Minimum value is 2. Also, the read chunk size must be even.
*
* This maximum size may be restricted by the actual DAP implementation.
* A compiler warning or error will be generated if the DAP implementation
* overides or cannot handle the chunksize defined below.
*
*/
#define  DRXDAP_MAX_RCHUNKSIZE 254


/**************
 *
 * This section describes drxdriver defines.
 *
 **************/

/**
* \def DRX_UNKNOWN
* \brief Generic UNKNOWN value for DRX enumerated types.
*
* Used to indicate that the parameter value is unknown or not yet initalized.
*/
#define DRX_UNKNOWN (254)

/**
* \def DRX_AUTO
* \brief Generic AUTO value for DRX enumerated types.
*
* Used to instruct the driver to automatically determine the value of the parameter.
*/
#define DRX_AUTO    (255)

/*-------------------------------------------------------------------------
MACROS
-------------------------------------------------------------------------*/
/* Macros to stringify the version number */
#define DRX_VERSIONSTRING( MAJOR, MINOR, PATCH ) \
         DRX_VERSIONSTRING_HELP(MAJOR)"." \
         DRX_VERSIONSTRING_HELP(MINOR)"." \
         DRX_VERSIONSTRING_HELP(PATCH)
#define DRX_VERSIONSTRING_HELP( NUM ) #NUM

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

/**
* \enum DRXStandard_t
* \brief Modulation standards.
*/
typedef enum DRXStandard_t {
    DRX_STANDARD_DVBT    = 0,            /**< Terrestrial DVB-T. */
    DRX_STANDARD_8VSB,                   /**< Terrestrial 8VSB. */
    DRX_STANDARD_NTSC,                   /**< Terrestrial analog NTSC. */
    DRX_STANDARD_PAL,                    /**< Terrestrial ANALOG PAL. */
    DRX_STANDARD_ITU_A,                  /**< Cable ITU ANNEX A. */
    DRX_STANDARD_ITU_B,                  /**< Cable ITU ANNEX B. */
    DRX_STANDARD_ITU_C,                  /**< Cable ITU ANNEX C. */
    DRX_STANDARD_ITU_D,                  /**< Cable ITU ANNEX D. */
    DRX_STANDARD_UNKNOWN = DRX_UNKNOWN,  /**< Standard unknown. */
    DRX_STANDARD_AUTO    = DRX_AUTO      /**< Autodetect standard. */
} DRXStandard_t, *pDRXStandard_t;

/**
* \enum DRXBandwidth_t
* \brief Channel bandwidth or channel spacing.
*/
typedef enum DRXBandwidth_t {
    DRX_BANDWIDTH_8MHZ    = 0,            /**< Bandwidth 8 MHz. */
    DRX_BANDWIDTH_7MHZ,                   /**< Bandwidth 7 MHz. */
    DRX_BANDWIDTH_6MHZ,                   /**< Bandwidth 6 MHz. */
    DRX_BANDWIDTH_UNKNOWN = DRX_UNKNOWN   /**< Bandwidth unknown. */
} DRXBandwidth_t, *pDRXBandwidth_t;

/**
* \enum DRXMirror_t
* \brief Indicate if channel spectrum is mirrored or not.
*/
typedef enum {
   DRX_MIRROR_YES     = 0,            /**< Spectrum is mirrored. */
   DRX_MIRROR_NO,                     /**< Spectrum is not mirrored. */
   DRX_MIRROR_UNKNOWN = DRX_UNKNOWN,  /**< It is unknown if spectrum is mirrored. */
   DRX_MIRROR_AUTO   = DRX_AUTO      /**< Autodetect if spectrum is mirrored. */
} DRXMirror_t, *pDRXMirror_t;

/**
* \enum DRXConstellation_t
* \brief Constellation type of the channel.
*/
typedef enum {
   DRX_CONSTELLATION_BPSK    = 0,            /**< Modulation is BPSK. */
   DRX_CONSTELLATION_QPSK,                   /**< Constellation is QPSK. */
   DRX_CONSTELLATION_PSK8,                   /**< Constellation is PSK8. */
   DRX_CONSTELLATION_QAM16,                  /**< Constellation is QAM16. */
   DRX_CONSTELLATION_QAM32,                  /**< Constellation is QAM32. */
   DRX_CONSTELLATION_QAM64,                  /**< Constellation is QAM64. */
   DRX_CONSTELLATION_QAM128,                 /**< Constellation is QAM128. */
   DRX_CONSTELLATION_QAM256,                 /**< Constellation is QAM256. */
   DRX_CONSTELLATION_QAM512,                 /**< Constellation is QAM512. */
   DRX_CONSTELLATION_QAM1024,                /**< Constellation is QAM1024. */
   DRX_CONSTELLATION_UNKNOWN = DRX_UNKNOWN,  /**< Constellation unknown. */
   DRX_CONSTELLATION_AUTO    = DRX_AUTO      /**< Autodetect constellation. */
} DRXConstellation_t, *pDRXConstellation_t;

/**
* \enum DRXHierarchy_t
* \brief Hierarchy of the channel.
*/
typedef enum {
   DRX_HIERARCHY_NONE    = 0,           /**< No hierarchical transmission. */
   DRX_HIERARCHY_ALPHA1,                /**< Hierarchical transmission with alpha=1. */
   DRX_HIERARCHY_ALPHA2,                /**< Hierarchical transmission with alpha=2. */
   DRX_HIERARCHY_ALPHA4,                /**< Hierarchical transmission with alpha=4. */
   DRX_HIERARCHY_UNKNOWN = DRX_UNKNOWN, /**< Hierarchicy unknown. */
   DRX_HIERARCHY_AUTO    = DRX_AUTO     /**< Autodetect hierarchy. */
} DRXHierarchy_t, *pDRXHierarchy_t;

/**
* \enum DRXPriority_t
* \brief Channel priority in case of hierarchical transmission.
*/
typedef enum {
   DRX_PRIORITY_LOW     = 0,           /**< Low priority channel. */
   DRX_PRIORITY_HIGH,                  /**< High priority channel. */
   DRX_PRIORITY_UNKNOWN = DRX_UNKNOWN  /**< Priority unknown. */
} DRXPriority_t, *pDRXPriority_t;

/**
* \enum DRXCoderate_t
* \brief Channel priority in case of hierarchical transmission.
*/
typedef enum {
   DRX_CODERATE_1DIV2   = 0,            /**< Code rate 1/2nd. */
   DRX_CODERATE_2DIV3,                  /**< Code rate 2/3nd. */
   DRX_CODERATE_3DIV4,                  /**< Code rate 3/4nd. */
   DRX_CODERATE_5DIV6,                  /**< Code rate 5/6nd. */
   DRX_CODERATE_7DIV8,                  /**< Code rate 7/8nd. */
   DRX_CODERATE_UNKNOWN = DRX_UNKNOWN,  /**< Code rate unknown. */
   DRX_CODERATE_AUTO    = DRX_AUTO      /**< Autodetect code rate. */
} DRXCoderate_t, *pDRXCoderate_t;

/**
* \enum DRXGuard_t
* \brief Guard interval of a channel.
*/
typedef enum {
   DRX_GUARD_1DIV32   = 0,            /**< Guard interval 1/32nd. */
   DRX_GUARD_1DIV16,                  /**< Guard interval 1/16th. */
   DRX_GUARD_1DIV8,                   /**< Guard interval 1/8th. */
   DRX_GUARD_1DIV4,                   /**< Guard interval 1/4th. */
   DRX_GUARD_UNKNOWN  = DRX_UNKNOWN,  /**< Guard interval unknown. */
   DRX_GUARD_AUTO     = DRX_AUTO      /**< Autodetect guard interval. */
} DRXGuard_t, *pDRXGuard_t;

/**
* \enum DRXFftmode_t
* \brief FFT mode.
*/
typedef enum {
   DRX_FFTMODE_2K      = 0,            /**< 2K FFT mode. */
   DRX_FFTMODE_8K,                     /**< 8K FFT mode. */
   DRX_FFTMODE_UNKNOWN = DRX_UNKNOWN,  /**< FFT mode unknown. */
   DRX_FFTMODE_AUTO    = DRX_AUTO      /**< Autodetect FFT mode. */
} DRXFftmode_t, *pDRXFftmode_t;

/**
* \enum DRXClassification_t
* \brief Channel classification.
*/
typedef enum {
   DRX_CLASSIFICATION_GAUSS     = 0,            /**< Gaussion noise. */
   DRX_CLASSIFICATION_HVY_GAUSS,                /**< Heavy Gaussion noise. */
   DRX_CLASSIFICATION_COCHANNEL,                /**< Co-channel. */
   DRX_CLASSIFICATION_STATIC,                   /**< Static echo. */
   DRX_CLASSIFICATION_MOVING,                   /**< Moving echo. */
   DRX_CLASSIFICATION_ZERODB,                   /**< Zero dB echo. */
   DRX_CLASSIFICATION_UNKNOWN   = DRX_UNKNOWN,  /**< Channel classification unknown. */
   DRX_CLASSIFICATION_AUTO      = DRX_AUTO      /**< Autodetect channel classification. */
} DRXClassification_t, *pDRXClassification_t;

/**
* \enum DRXTPSFrame_t
* \brief Frame number in current super-frame.
*/
typedef enum {
   DRX_TPS_FRAME1     = 0,                /**< TPS frame 1. */
   DRX_TPS_FRAME2,                        /**< TPS frame 2. */
   DRX_TPS_FRAME3,                        /**< TPS frame 3. */
   DRX_TPS_FRAME4,                        /**< TPS frame 4. */
   DRX_TPS_FRAME_UNKNOWN = DRX_UNKNOWN   /**< TPS frame unknown. */
} DRXTPSFrame_t, *pDRXTPSFrame_t;

/**
* \enum DRXCtrlIndex_t
* \brief Indices of the control functions.
*/
#define DRX_CTRL_BASE          (0x0000)
typedef enum {
   DRX_CTRL_NOP                 = DRX_CTRL_BASE ,
   DRX_CTRL_PROBE_DEVICE        ,

   DRX_CTRL_LOAD_UCODE          ,
   DRX_CTRL_VERIFY_UCODE        ,
   DRX_CTRL_SET_CHANNEL         ,
   DRX_CTRL_GET_CHANNEL         ,
   DRX_CTRL_LOCK_STATUS         ,
   DRX_CTRL_SIG_QUALITY         ,
   DRX_CTRL_SIG_STRENGTH        ,
   DRX_CTRL_CONSTEL             ,
   DRX_CTRL_SCAN_INIT           ,
   DRX_CTRL_SCAN_NEXT           ,
   DRX_CTRL_TPS_INFO            ,
   DRX_CTRL_SET_CFG             ,
   DRX_CTRL_GET_CFG             ,
   DRX_CTRL_VERSION             ,
   DRX_CTRL_I2C_BRIDGE          ,
   DRX_CTRL_SET_STANDARD        ,
   DRX_CTRL_GET_STANDARD        ,
   DRX_CTRL_SET_OOB             ,
   DRX_CTRL_GET_OOB             ,
   DRX_CTRL_I2C_READWRITE       ,

   /* Professional */
   DRX_CTRL_MB_CFG              ,
   DRX_CTRL_MB_READ             ,
   DRX_CTRL_MB_WRITE            ,
   DRX_CTRL_MB_CONSTEL          ,
   DRX_CTRL_MB_MER              ,

   /* Misc */
   DRX_CTRL_UIO_CFG             ,
   DRX_CTRL_UIO_READ            ,
   DRX_CTRL_UIO_WRITE           ,
   DRX_CTRL_READ_EVENTS         ,
   DRX_CTRL_HDL_EVENTS          ,
   DRX_CTRL_POWER_MODE          ,

   DRX_CTRL_MAX /* dummy, never to be used */

} DRXCtrlIndex_t, *pDRXCtrlIndex_t;

/**
* \enum DRXUCodeAction_t
* \brief Used to indicate if firmware has to be uploaded or verified.
*/
typedef enum {
   UCODE_UPLOAD,
   UCODE_VERIFY
} DRXUCodeAction_t, *pDRXUCodeAction_t;


/**
* \enum DRXLockStatus_t
* \brief Used to reflect current lock status of demodulator.
*
* The generic lock states have device dependent semantics.
*/
typedef enum{
   DRX_NEVER_LOCK = 0,        /**< Device will never lock on this signal */
   DRX_NOT_LOCKED,            /**< Device has no lock at all */
   DRX_LOCK_STATE_1,          /**< Generic lock state */
   DRX_LOCK_STATE_2,          /**< Generic lock state */

⌨️ 快捷键说明

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