📄 hdlc.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 + -