📄 sys.h
字号:
#include "Include.h"
/* x25发送缓冲区长度 */
#define X25MSG_QUEUE_SIZE 100
/* Socket连接状态 */
typedef enum
{
SOCKET_DISCONNECTED =0,
SOCKET_CONNECTED =1
}SOCKET_CONNECT_STATUS_e;
/* 定时器类型 */
typedef enum
{
SCHEDULED_NEW_MESSAGE =1, /* 定时发送预约新消息 */
SCHEDULED_RESEND =2, /* 定时重发 */
WRITE_RETURN_TO_CBC_PROXY =3, /* Write定时回复 */
REPLACE_RETURN_TO_CBC_PROXY =4, /* Replace定时回复 */
KILL_RETURN_TO_CBC_PROXY =5, /* KILL定时回复 */
STATUS_CBCH_QUERY_RETURN =6, /* STATUS_CBCH_QUERY定时回复 */
STATUS_MSG_QUERY_RETURN =7, /* STATUS_MSG_QUERY定时回复 */
LIFE_PERIOD =8, /* 进程生命到期 */
SCHEDULED_STATUS_CBCH_QUERY =9, /* 定时STATUS_CBCH_QUERY */
SET_DRX_REPORT_RETURN =10,/* SET_DRX_REPORT定时回复 */
RESET_RETURN =11, /* RESET回复定时器 */
STATISTIC_TIMER =20, /* 统计定时器 */
WATCH_TIME =21 /* 观察定时器 */
}TIME_TYPE_e;
/* 定时器时长,单位:ms */
typedef enum
{
RETURN_TO_CBC_PROXY_DELAY_TIME =5000,
WRITE_RETURN_RETURN_DELAY_TIME =10000, /* WRITE回复定时器时长 */
REPLACE_RETURN_DELAY_TIME =5000, /* REPLACE回复定时器时长 */
KILL_RETURN_DELAY_TIME =5000, /* KILL回复定时器时长 */
STATUS_CBCH_QUERY_RETURN_DELAY_TIME =5000, /* STATUS_CBCH_QUERY回复定时器时长 */
STATUS_MSG_QUERY_RETURN_DELAY_TIME =5000, /* STATUS_MSG_QUERY回复定时器时长 */
SET_DRX_RETURN_DELAY_TIME =10000, /* SET_DRX_RETURN_DELAY_TIME回复定时器时长 */
RESET_RETURN_DELAY_TIME =10000, /* RESET_RETURN回复定时器时长 */
SCHEDULED_STATUS_CBCH_QUERY_TIME =30000, /* 定时查询小区负荷时长 */
RESEND_PERIOD =30000, /* 重发周期 */
WAIT_RESPONSE_TIME =6000, /* 等待响应时间 */
RELEASE_X25CONNECT_WAIT =10000 /* 释放X25链路等待时间 */
}TIME_LEN_e;
/*
* BSC的状态
*/
typedef enum
{
/* 连接断开 */
BSC_DISCONNECT =0,
/* 正常 */
BSC_STEADY =1
}BSC_STATUS_e;
/*
* 小区的状态
*/
typedef enum
{
/* 正常 */
CELL_OK =0,
/* 连接断开 */
CELL_ERROR =1
}CELL_STATUS_e;
/*
* 消息缓冲结构
*/
typedef struct
{
unsigned char cMessage[MESSAGE_LEN];
}MESSAGE_t;
typedef struct
{
unsigned short iLen;
MESSAGE_HEAD_t s_MessageHead;
unsigned char cMessage[MESSAGE_LEN];
}CBEMESSAGE_t;
typedef struct
{
unsigned short iLen;
unsigned char cMessage[MESSAGE_LEN];
PID_t s_Pid;
}BSCMESSAGE_t;
typedef struct
{
unsigned int iHead;
unsigned int iTail;
unsigned int iMsgCount;
HANDLE MsgMutex;
HANDLE MsgFull;
HANDLE MsgEmpty;
CBEMESSAGE_t s_Message[MSG_QUEUE_SIZE];
}MESSAGE_BUF_t;
typedef struct
{
unsigned int iHead;
unsigned int iTail;
unsigned int iMsgCount;
HANDLE MsgMutex;
HANDLE MsgFull;
HANDLE MsgEmpty;
BSCMESSAGE_t s_Message[X25MSG_QUEUE_SIZE];
}X25_SEND_MESSAGE_BUF_t;
/*
* 和BSC连接有关的参数
*/
typedef struct
{
char BscIdentifier[BSC_INDENTIFIER_LEN]; /* BSC标志 */
char BscAddr[BSC_ADDR_LEN+1]; /* BSC地址 */
int BscPort; /* Bsc端口 */
unsigned char CBCOperator[MAX_OPERATOR_LEN+1]; /* 下行连接用户名 */
unsigned char BSCOperator[MAX_OPERATOR_LEN+1]; /* 上行连接用户名 */
HANDLE DownlinkConnectThread; /* 下行连接请求线程 */
HANDLE UplinkListenThread; /* 上行链路监听线程 */
// HANDLE ThreadEvent; /* 线程同步事件 */
HANDLE X25SendThreadHandle; /* 下行发送线程句柄 */
// HANDLE X25ReceiveThreadHandle; /* 下行接受线程句柄 */
int X25DownlinkHandle; /* 下行连接句柄 */
int X25UpLinkHandle; /* 上行连接句柄 */
/* 正常 BSC_STEADY =1,*/
/* 连接断开 BSC_DISCONNECT =2 */
// int BscStatus; /* BSC状态 */
int DownlinkStatus; /* 下行链路连接状态 */
int UplinkStatus; /* 上行链路连接状态 */
unsigned char ConnectOpen; /* 1:开启连接,0:关闭连接 */
unsigned char DownlinkThreadOpen; /* 1:线程开启,0:线程关闭 */
unsigned char UplinkThreadOpen; /* 1:线程开启,0:线程关闭 */
int MessageType; /* 发送消息类型 */
X25_SEND_MESSAGE_BUF_t s_X25SendMessageBuf; /* 发送消息队列 */
PID_t s_Pid; /* 消息的进程标志 */
// unsigned char bX25PackStatiFlag; /* 包层统计开启标志 */
// unsigned char bX25LinkStatiFlag; /* 链路统计开启标志 */
// int ExpireTimes; /* 连续超时次数 */
// unsigned char OriginalMessageBuf[LPCB_DATA_SIZE]; /* 未打包的原始信息 */
}BSC_CONNECT_INFO_t;
/* 小区消息的统计 */
typedef struct
{
unsigned int iSendCount; /* 发送总数 */
unsigned int iSuccessCount; /* 成功总数 */
unsigned int ibsscapErr; /* 基站系统负荷超载 */
unsigned int icellmemErr; /* 小区内存溢出 */
unsigned int ibssmemErr; /* 基站系统内存溢出 */
unsigned int iotherErr; /* 其他错误 */
}CELL_STAT_t;
typedef struct
{
unsigned char cCellId[4];
unsigned char cCellStatus; /* 0:可用,1:不可用 */
unsigned char cCellLoading; /* 信道负荷是用百分比的形式表明预计的短期内的负载 */
unsigned int iFailureCount; /* 小区失败的次数 */
unsigned int icResetCount; /* 小区复位的次数 */
CELL_STAT_t s_WriteCount; /* 写入的统计 */
CELL_STAT_t s_ReplaceCount;/* 替换的统计 */
CELL_STAT_t s_KillCount; /* 删除的统计 */
CELL_STAT_t s_QueryCount; /* 消息查询的统计 */
CELL_STAT_t s_CBCHCount; /* 信道负荷的统计 */
}CELLID_INFO_t;
/*
* 和BTS小区有关的参数
*/
typedef struct
{
unsigned char cBTSIdentifer[BTS_INDENTIFIER_LEN];
unsigned char cNumberOfCell;
CELLID_INFO_t s_CellId[MAXCELLOFBTS];
}BTS_CELL_INFO_t;
/*
* 和BSC小区有关的参数
*/
typedef struct
{
unsigned char bFlag;
unsigned char cBSCIdentifer[BSC_INDENTIFIER_LEN]; /* BSC的编号 */
unsigned char cLacId[LAC_INDENTIFIER_LEN]; /* MSC的编号 */
unsigned char cNumberOfBTS; /* BTS的个数 */
BTS_CELL_INFO_t s_BTSCellInfo[MAXBTSOFBSC];
}BSC_CELL_INFO_t;
/*
* CBCProxy配置BSC小区有关的参数接口
*/
typedef struct
{
unsigned char cBSCIdentifer[BSC_INDENTIFIER_LEN]; /* BSC的编号 */
unsigned char cLacId[LAC_INDENTIFIER_LEN]; /* MSC的编号 */
unsigned char BSCAddress[BSC_ADDR_LEN+1]; /* Bsc的地址 */
unsigned char CBCOperator[MAX_OPERATOR_LEN+1]; /* 下行连接用户名 */
unsigned char BSCOperator[MAX_OPERATOR_LEN+1]; /* 上行连接用户名 */
int cNumberOfCell; /* Cell的个数 */
CELLID_t s_Cell[MAX_BSC_CELL_COUNT] ;
}BSC_CELL_INFO_i;
/*
* X25连接的虚链路的端口号和逻辑会话号,
*/
typedef struct
{
unsigned int UplinkPort; /* 上行端口号 */
unsigned int UplinkLsn; /* 上行逻辑会话号 */
unsigned char UplinkFlag; /* 1:存在,0:不存在 */
unsigned int DownlinkPort; /* 下行端口号 */
unsigned int DownlinkLsn; /* 下行逻辑会话号 */
unsigned char DownlinkFlag; /* 1:存在,0:不存在 */
unsigned char BscAddr[BSC_ADDR_LEN+1]; /* Bsc的地址 */
}X25_PORT_LSN_t;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -