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

📄 hdlc.h

📁 在大型通信系统(机架插板式)中多块单板通过TDM总线
💻 H
字号:
/************************************************************************************/
/*                                                                                  */
/*  描述: 定义Q921协议相关变量及数据结构                                            */
/*                                                                                  */
/*  时间: 2002/02/25                                                                */
/*                                                                                  */
/************************************************************************************/
#define L1TXBUFNUM      4               /* 物理层发送队列缓冲区数               */
#define L1RXBUFNUM      8               /* 物理层接收队列缓冲区数               */
#define L2TXBUFNUM      4               /* 链路层发送队列缓冲区数               */
#define L2RXBUFNUM      5               /* 链路层接收队列缓冲区数               */
#define L3TXBUFNUM      6               /* 网络层发送队列缓冲区数               */
#define L3RXBUFNUM      4               /* 网络层接收队列缓冲区数               */

#define RR_CONTROL      0x01            /* 帧类型定义                           */
#define RNR_CONTROL     0x05
#define REJ_CONTROL     0x09
#define UI_CONTROL      0x03
#define SABME_CONTROL   0x6F
#define DM_CONTROL      0x0F
#define DISC_CONTROL    0x43
#define UA_CONTROL      0x63
#define XID_CONTROL     0xAF 
#define FRMR_CONTROL    0x87
#define IFRAME_CONTROL  0x00

#define DL_ESTABLISH    0x01            /* 链路已建立                           */
#define DL_RELEASE      0x00            /* 链路未建立                           */

#define T201            100             /* 重发定时器,10ms为单位                */
#define N200            3               /* 重发计数最大值                       */


/* 网络层I帧数据结构  */
typedef struct
{
    uchar ucPID;                        /* 协议标示符                           */
    uchar ucLength;                     /* 消息长度(含本结构全部字段)           */
    uint  uiType;                       /* 消息类型                             */
    uchar ucData[BUFSIZE-8];            /* 消息内容                             */
}L3Pack;

/* 链路层数据结构  */
typedef struct
{
    uchar ucLength;                     /* 长度(不含本身)                       */  
    uchar ucRsv1[2];                    /* 保留                                 */  
    uchar ucCRID;                       /* 命令或响应类型                       */
    uchar ucRsv2;                       /* 保留                                 */  
    uchar ucData[BUFSIZE-4];            /* 消息内容                             */
}L2Pack;

/* 物理层数据结构(数据)  */
typedef struct
{
    uchar ucLength;                     /* 长度(不含本身)                       */  
    uchar ucData[BUFSIZE];              /* 消息内容                             */
}L1Pack;

/* 物理层队列接口数据结构 */
typedef struct
{
    uchar ucTxPendNum;                  /* L1TxBuf发送队列里等待发送的帧的数目  */
    uchar ucRxPendNum;                  /* L1RxBuf接收队列里等待处理的帧的数目  */
    uchar ucTxDealIndex;                /* L1TxBuf发送队列中当前正在发送的帧指针*/
    uchar ucTxPlaceIndex;               /* L1TxBuf发送队列中当前可存入的帧指针  */
    uchar ucRxDealIndex;                /* L1RxBuf接收队列中当前正在处理的帧指针*/
    uchar ucRxPlaceIndex;               /* L1RxBuf接收队列中当前可存入的帧指针  */
}L1Queue;

/* 链路层队列接口数据结构 */
typedef struct
{
    uchar ucLinkState;                  /* 链路状态                             */
    uchar ucTxIFrameStatus;             /* 当前是否有I帧正在发送处理中          */
    uchar ucT201Control;                /* 启动/停止重发定时器控制              */
    uchar ucT201;                       /* 重发定时器T201,参见Q.921 §5.9.1     */
    uchar ucN200;                       /* 重发次数,参见Q.921 §5.3.2.1        */
    uchar ucRSendFlag;                  /* 是否重发标志                         */
    uchar ucTxPendNum;                  /* L2TxBuf发送队列里等待发送的帧的数目  */
    uchar ucRxPendNum;                  /* L2RxBuf接收队列里等待处理的帧的数目  */
    uchar ucTxDealIndex;                /* L2TxBuf发送队列中当前正在发送的帧指针*/
    uchar ucTxPlaceIndex;               /* L2TxBuf发送队列中当前可存入的帧指针  */
    uchar ucRxDealIndex;                /* L2RxBuf接收队列中当前正在处理的帧指针*/
    uchar ucRxPlaceIndex;               /* L2RxBuf接收队列中当前可存入的帧指针  */
}L2Queue;

/* 网络层队列接口数据结构 */
typedef struct
{
    uchar ucTxPendNum;                  /* L3TxBuf发送队列里等待发送的帧的数目  */
    uchar ucRxPendNum;                  /* L3RxBuf接收队列里等待处理的帧的数目  */
    uchar ucTxDealIndex;                /* L3TxBuf发送队列中当前正在发送的帧指针*/
    uchar ucTxPlaceIndex;               /* L3TxBuf发送队列中当前可存入的帧指针  */
    uchar ucRxDealIndex;                /* L3RxBuf接收队列中当前正在处理的帧指针*/
    uchar ucRxPlaceIndex;               /* L3RxBuf接收队列中当前可存入的帧指针  */
}L3Queue;                                                               

⌨️ 快捷键说明

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