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

📄 zl5011x.h

📁 Zalink50114----TDMoIP芯片驱动源码
💻 H
📖 第 1 页 / 共 5 页
字号:
   zl5011xDmaRxModeE rxMode;
   zl5011xDmaInterruptModeE dmaInterruptMode;
   zl5011xQueueE dmaQueueId;
   zl5011xBooleanE  dmaRxBusy;
   Uint8T clockPeriod;
   zl5011xPolarityE dreqPolarity;
   zl5011xPolarityE dackPolarity;
   zl5011xDmaMsgPaddingE msgPadding;
}zl5011xCpuDmaIfS;

/******************************************************************************
 * enumerations + structures used for controlling the WAN interface
 ******************************************************************************/

typedef enum
{
   /* asynchronous - unframed mode */
   ZL5011X_WAN_UNFRAMED,
   /* generic frame pulse @ 2M */
   ZL5011X_WAN_FRAMED_2M,
   /* generic frame pulse @ 8M */
   ZL5011X_WAN_FRAMED_8M,
   ZL5011X_WAN_STBUS_2M_X1_CLOCK,
   ZL5011X_WAN_STBUS_2M_X2_CLOCK,
   ZL5011X_WAN_STBUS_8M,
   ZL5011X_WAN_MVIP_2M_X1_CLOCK,
   ZL5011X_WAN_MVIP_2M_X2_CLOCK,
   ZL5011X_WAN_HMVIP_8M,
   ZL5011X_WAN_H1X0_8M_X1_CLOCK,
   ZL5011X_WAN_H1X0_8M_X2_CLOCK,
   ZL5011X_WAN_INVALID_IF
} zl5011xWanIfTypeE;

typedef struct
{
   Uint8T stream;
   Uint8T channel;
} zl5011xWanChannelS;

typedef enum
{
   ZL5011X_STATE_NOT_IN_USE,
   ZL5011X_STATE_INIT,
   ZL5011X_STATE_TAKEN,
   ZL5011X_STATE_UPDATING,
   ZL5011X_STATE_ACTIVE,
   ZL5011X_STATE_TEARING_DOWN
} zl5011xContextStateE;

/******************************************************************************
 * enumerations + structures used for controlling the TIF block
 ******************************************************************************/

#define ZL5011X_CHECK_WAN_IF_OUTPUT_ENABLE(X) \
            ((X < ZL5011X_WAN_OUTPUT_HIZ) || (X > ZL5011X_WAN_OUTPUT_ENABLE)) ? \
               ZL5011X_PARAMETER_INVALID : ZL5011X_OK
typedef enum
{
   ZL5011X_WAN_OUTPUT_HIZ       = 0x0,
   ZL5011X_WAN_OUTPUT_ENABLE    = 0x1
} zl5011xWanIfOutputEnableE;

/******************/

#define ZL5011X_CHECK_WAN_IF_SAMPLE_POINT(X) \
            ((X < ZL5011X_WAN_SAMPLE_HALF_BIT) || (X > ZL5011X_WAN_SAMPLE_FULL_BIT)) ? \
               ZL5011X_PARAMETER_INVALID : ZL5011X_OK
typedef enum
{
   ZL5011X_WAN_SAMPLE_HALF_BIT           = 0x0,
   ZL5011X_WAN_SAMPLE_THREE_QUARTER_BIT  = 0x1,
   ZL5011X_WAN_SAMPLE_FULL_BIT           = 0x2
} zl5011xWanIfSamplePointE;

/******************/

#define ZL5011X_CHECK_WAN_IF_FRAME_PULSE_TYPE(X) \
            ((X < ZL5011X_WAN_FRAME_HALF_BIT) || (X > ZL5011X_WAN_FRAME_FULL_BIT_ALIGNED)) ? \
               ZL5011X_PARAMETER_INVALID : ZL5011X_OK
typedef enum
{
   ZL5011X_WAN_FRAME_HALF_BIT            = 0x0,
   ZL5011X_WAN_FRAME_FULL_BIT_CENTRED    = 0x1,
   ZL5011X_WAN_FRAME_1_5_BITS_CENTRED    = 0x2,
   ZL5011X_WAN_FRAME_2_BITS_CENTRED      = 0x3,
   ZL5011X_WAN_FRAME_FULL_BIT_ALIGNED    = 0x4
} zl5011xWanIfFramePulseTypeE;

/******************/

#define ZL5011X_CHECK_WAN_IF_CLOCK_RATE(X) \
            ((X < ZL5011X_WAN_CLK_DATA_RATE) || (X > ZL5011X_WAN_CLK_DATA_RATE_X_2)) ? \
               ZL5011X_PARAMETER_INVALID : ZL5011X_OK
typedef enum
{
   ZL5011X_WAN_CLK_DATA_RATE       = 0x0,
   ZL5011X_WAN_CLK_DATA_RATE_X_2   = 0x1
} zl5011xWanIfClockRateE;

/******************/

#define ZL5011X_CHECK_WAN_LIU_FREQ(X) \
            ((X < ZL5011X_WAN_LIU_FREQ_1_544M) || (X > ZL5011X_WAN_LIU_FREQ_OTHER)) ? \
               ZL5011X_PARAMETER_INVALID : ZL5011X_OK
typedef enum
{
   ZL5011X_WAN_LIU_FREQ_1_544M,
   ZL5011X_WAN_LIU_FREQ_2_048M,
   ZL5011X_WAN_LIU_FREQ_6_312M,
   ZL5011X_WAN_LIU_FREQ_34_368M,
   ZL5011X_WAN_LIU_FREQ_44_736M,
   ZL5011X_WAN_LIU_FREQ_OTHER
} zl5011xWanLiuFreqE;

/******************/

#define ZL5011X_CHECK_WAN_IF_DATA_RATE(X) \
            ((X < ZL5011X_WAN_DATA_RATE_1_544M) || (X > ZL5011X_WAN_DATA_RATE_44_736M)) ? \
               ZL5011X_PARAMETER_INVALID : ZL5011X_OK
typedef enum
{
   ZL5011X_WAN_DATA_RATE_1_544M    = 0x0,
   ZL5011X_WAN_DATA_RATE_2_048M    = 0x1,
   ZL5011X_WAN_DATA_RATE_6_312M    = 0x2,
   ZL5011X_WAN_DATA_RATE_8_192M    = 0x3,
   ZL5011X_WAN_DATA_RATE_34_368M   = 0x4,
   ZL5011X_WAN_DATA_RATE_44_736M   = 0x5
} zl5011xWanIfDataRateE;

/******************/

#define ZL5011X_CHECK_WAN_IF_CONNECTION_TYPE(X) \
            ((X < ZL5011X_WAN_CONNECTION_UNFRAMED) || (X > ZL5011X_WAN_CONNECTION_FRAMED_CLK_SLAVE)) ? \
               ZL5011X_PARAMETER_INVALID : ZL5011X_OK
typedef enum
{
   ZL5011X_WAN_CONNECTION_UNFRAMED             = 0x0,
   ZL5011X_WAN_CONNECTION_FRAMED_CLK_MASTER    = 0x1,
   ZL5011X_WAN_CONNECTION_FRAMED_CLK_SLAVE     = 0x2
} zl5011xWanIfConnectionTypeE;

/******************/

#define ZL5011X_CHECK_WAN_IF_BER_DIRECTION(X) \
            ((X < ZL5011X_WAN_BER_DIRECTION_RX) || (X > ZL5011X_WAN_BER_DIRECTION_TX)) ? \
               ZL5011X_PARAMETER_INVALID : ZL5011X_OK
typedef enum
{
   ZL5011X_WAN_BER_DIRECTION_RX = 0x0,
   ZL5011X_WAN_BER_DIRECTION_TX = 0x1
} zl5011xWanIfBerDirectionE;

/******************/

#define ZL5011X_CHECK_WAN_IF_BER_PATTERN(X) \
            ((X < ZL5011X_WAN_BER_PRBS_15) || (X > ZL5011X_WAN_BER_PRBS_23)) ? \
               ZL5011X_PARAMETER_INVALID : ZL5011X_OK
typedef enum
{
   ZL5011X_WAN_BER_PRBS_15   = 0x0,
   ZL5011X_WAN_BER_PRBS_23   = 0x1
} zl5011xWanIfBerPatternE;

/******************/

typedef struct
{
   zl5011xBooleanE berEnabled;
   zl5011xWanIfBerDirectionE berDirection;
   zl5011xWanIfBerPatternE berPattern;
   Uint8T berStream;
   Uint8T berStartChannel;
   Uint8T berEndChannel;
} zl5011xWanBerConfigS;

/******************************************************************************
 * enumerations + structures used for controlling the TFQ block
 ******************************************************************************/
#define ZL5011X_CHECK_WAN_TX_QUEUE_MODE(X) \
            ((X < ZL5011X_WAN_TX_QUEUE_FIFO) || (X > ZL5011X_WAN_TX_QUEUE_RESEQUENCE_16)) ? \
               ZL5011X_PARAMETER_INVALID : ZL5011X_OK
typedef enum
{
   ZL5011X_WAN_TX_QUEUE_FIFO,
   ZL5011X_WAN_TX_QUEUE_RESEQUENCE_8,
   ZL5011X_WAN_TX_QUEUE_RESEQUENCE_16
} zl5011xWanTxQueueOperationE;

/******************/

#define ZL5011X_CHECK_WAN_TX_QUEUE_SIZE(X) \
            ((X < ZL5011X_WAN_TX_QUEUE_SIZE_2) || (X > ZL5011X_WAN_TX_QUEUE_SIZE_1024)) ? \
               ZL5011X_PARAMETER_INVALID : ZL5011X_OK
typedef enum
{
   ZL5011X_WAN_TX_QUEUE_SIZE_2     = 1,
   ZL5011X_WAN_TX_QUEUE_SIZE_4     = 2,
   ZL5011X_WAN_TX_QUEUE_SIZE_8     = 3,
   ZL5011X_WAN_TX_QUEUE_SIZE_16    = 4,
   ZL5011X_WAN_TX_QUEUE_SIZE_32    = 5,
   ZL5011X_WAN_TX_QUEUE_SIZE_64    = 6,
   ZL5011X_WAN_TX_QUEUE_SIZE_128   = 7,
   ZL5011X_WAN_TX_QUEUE_SIZE_256   = 8,
   ZL5011X_WAN_TX_QUEUE_SIZE_512   = 9,
   ZL5011X_WAN_TX_QUEUE_SIZE_1024  = 10
} zl5011xWanTxQueueSizeE;

/******************/

#define ZL5011X_CHECK_WAN_TX_QUEUE_AVG(X) \
            ((X < ZL5011X_WAN_TX_QUEUE_AVG_2) || (X > ZL5011X_WAN_TX_QUEUE_AVG_65536)) ? \
               ZL5011X_PARAMETER_INVALID : ZL5011X_OK
typedef enum
{
   ZL5011X_WAN_TX_QUEUE_AVG_2      = 1,
   ZL5011X_WAN_TX_QUEUE_AVG_4      = 2,
   ZL5011X_WAN_TX_QUEUE_AVG_8      = 3,
   ZL5011X_WAN_TX_QUEUE_AVG_16     = 4,
   ZL5011X_WAN_TX_QUEUE_AVG_32     = 5,
   ZL5011X_WAN_TX_QUEUE_AVG_64     = 6,
   ZL5011X_WAN_TX_QUEUE_AVG_128    = 7,
   ZL5011X_WAN_TX_QUEUE_AVG_256    = 8,
   ZL5011X_WAN_TX_QUEUE_AVG_512    = 9,
   ZL5011X_WAN_TX_QUEUE_AVG_1024   = 10,
   ZL5011X_WAN_TX_QUEUE_AVG_2048   = 11,
   ZL5011X_WAN_TX_QUEUE_AVG_4096   = 12,
   ZL5011X_WAN_TX_QUEUE_AVG_8192   = 13,
   ZL5011X_WAN_TX_QUEUE_AVG_16384  = 14,
   ZL5011X_WAN_TX_QUEUE_AVG_32768  = 15,
   ZL5011X_WAN_TX_QUEUE_AVG_65536  = 16
} zl5011xWanTxQueueAvgModeE;

/******************/

typedef struct
{
   Uint32T minLength;
   Uint32T maxLength;
   Uint32T avgLength;
   Uint32T latePackets;
   Uint32T earlyPackets;
   Uint32T underruns;
} zl5011xTfqStatsS;

/******************/

typedef struct
{
   Uint32T queueBaseAddress;
   zl5011xWanTxQueueSizeE queueSize;
   zl5011xWanTxQueueOperationE queueMode;
   zl5011xWanTxQueueAvgModeE queueAvgMode;

   /* record whether the queue has been initialised */
   zl5011xBooleanE queueInitialised;

   /* statistics values for the TDM queue */
   zl5011xTfqStatsS stats;
} zl5011xWanTxQueueS;

/******************************************************************************
 * enumerations + structures used for controlling the TFM block
 ******************************************************************************/

#define ZL5011X_CHECK_WAN_IF_UNDERRUN_MODE(X) \
            ((X < ZL5011X_WAN_USE_LAST_BYTE) || (X > ZL5011X_WAN_USE_FIXED_BYTE)) ? \
               ZL5011X_PARAMETER_INVALID : ZL5011X_OK
typedef enum
{
   ZL5011X_WAN_USE_LAST_BYTE = 0,
   ZL5011X_WAN_USE_FIXED_BYTE = 1
} zl5011xWanIfUnderrunModeE;

/******************/

typedef struct
{
   /* used by API to determine whether to allow changes */
   zl5011xContextStateE state;

   /* first channel + number of channels for a context */
   Uint32T firstChannelIndex;
   Uint32T numChannels;
   Uint32T jitterDepth;
} zl5011xWanTxContextS;

typedef struct
{
   Uint32T context;

   /* underrun settings */
   zl5011xWanIfUnderrunModeE underrunMode;
   Uint8T underrunByte;
} zl5011xWanTxChannelS;

typedef struct
{
   zl5011xWanTxContextS context[ZL5011X_MAX_NUMBER_CONTEXTS];
   zl5011xWanTxChannelS channel[ZL5011X_MAX_NUMBER_CHANNELS];
} zl5011xWanTxConfigS;

/******************************************************************************
 * enumerations + structures used for controlling the PLA block
 ******************************************************************************/

typedef struct
{
   /* used by API to determine whether to allow changes */
   zl5011xContextStateE state;

   /* first channel + number of channels for a context */
   Uint32T firstChannelIndex;
   Uint32T numChannels;

   /* record the number of whole frames and additional bytes to be used to construct the payload */
   Uint32T payloadFrames;
   Uint32T payloadBytes;

   /* For unframed operation, the number of bytes in a packet is a multiple of the
      number of bytes in a frame. The payload size can be forced to be a multiple
      of 8 bytes, and the following variable tracks this setting */
   zl5011xBooleanE unframedForceMultiple64Bits;

} zl5011xWanRxContextS;

/******************/

typedef struct
{
   Uint32T context;
} zl5011xWanRxChannelS;

/******************/

typedef struct
{
   zl5011xWanRxContextS context[ZL5011X_MAX_NUMBER_CONTEXTS];
   zl5011xWanRxChannelS channel[ZL5011X_MAX_NUMBER_CHANNELS];
} zl5011xWanRxConfigS;

/******************/

typedef enum
{
   ZL5011X_PRIMARY_HEADER = 0,
   ZL5011X_SECONDARY_HEADER = 1
} zl5011xContextHeaderSwitchE;

/******************************************************************************
 * enumerations + structures used for controlling the PAC block
 ******************************************************************************/

 typedef struct
 {
    Uint32T wanRxDiffCount;
    Uint32T wanRxSeqNumber;

    Uint32T wanTxDiffCount;

⌨️ 快捷键说明

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