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

📄 sys.h

📁 CBS(小区广播)程序实现手稿
💻 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 + -