📄 drx_driver.h
字号:
/**
* \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 + -