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

📄 statistic.h

📁 CBS(小区广播)程序实现手稿
💻 H
字号:
#include "..\sys\Include.h"

/* 统计业务的类型 */
typedef enum
{
	WRITE_STATISTIC    =1, /* 写入 */
    REPLACE_STATISTIC  =2, /* 替换 */
	KILL_STATISTIC     =3, /* 删除 */
	QUERY_STATISTIC    =4, /* 消息状态查询查询 */
	CBCH_STATISTIC     =5, /* 小区信道负荷查询 */
	RESET_STATISTIC    =6  /* 小区重启 */
}STATISTIC_TYPE_e;

/* 统计类别 */
typedef enum
{
	STATISTIC_CBSE           =1,  /* 服务元素的统计 */
	STATISTIC_RESET_AND_FAIL =2,  /* 统计小区广播失败和重新复位的次数 */
//	STATISTIC_WARNING        =4,  /* 告警的统计 */
	STATISTIC_X25            =3   /* X25链路统计 */
}STATISTIC_CATEGORY_e;

/* 服务元素的统计的标志 */
typedef enum
{
    CBCPROXY_CBSE_CNT	=1, /* CBCProxy业务请求次数 */
	BSC_CBSE_CNT    	=2, /* 对各个BSC业务请求次数 */
	CELL_CBSE_CNT	    =3  /* 小区服务元素的统计,包括成功和失败 */
}STATISTIC_CBSE_ID_e;

/* 统计小区广播失败和重新复位的次数的标志 */
typedef enum
{
	ALL_CELLOFCBC_RESETANDFAIL_CNT    =1, /* CBC支持的所有小区 */  
	ALL_CELLOFBSC_RESETANDFAIL_CNT    =2, /* BSC的小区 */
	CELL_RESETANDFAIL_CNT             =3  /* 小区 */
}STATISTIC_RESET_AND_FAIL_ID_e;

/* X25链路统计的标志 */
typedef enum
{
	 X25PACK_CNT    =1,    /* x.25包层通信统计 */
     X25LINK_CNT    =2     /* x.25链路层通信统计 */ 
}STATISTIC_X25_ID_e;


typedef struct
{
	int           iCbseType;
	int           iCbseTimes;  
}CBSE_REQUEST_TIMES_t;

typedef struct
{
	int           iCellReset; 
}CELL_RESET_t;


typedef struct
{
	unsigned int iCBCProxyWriteReqCnt;
	unsigned int iCBCProxyReplaceReqCnt;
	unsigned int iCBCProxyKillReqCnt;
	unsigned int iCBCProxyCBCHReqCnt;
	unsigned int iCBCProxyMsgQueryCnt;
	unsigned int iCBCProxyResetCnt;
//	unsigned int iCBCProxySetDrxCnt;
}CBSE_REQUEST_COUNT_t;


typedef struct
{
	unsigned int s_AlarmCode[4];  
}WARNING_COUNT_t;


/*
 *  统计CBC收到的各种业务的请求,
 *  统计对个BSC进行的各种业务的请求
 *  告警统计
 *  的计数器结构
 */
typedef struct
{
	CBSE_REQUEST_COUNT_t  s_CbcProxyReqCnt;
	CBSE_REQUEST_COUNT_t  s_ReqBSCCnt[MAX_BSC_CONNECT]; 
	WARNING_COUNT_t       AlarmType[3];
}COUNT_t;


/*  Message_Statistic_Request */
typedef struct
{
	unsigned short  ilen;              /* 包长度 */  
	MESSAGE_HEAD_t  s_StatMessageHead; /* 统计消息头 */
	unsigned char   StatSerialId[5];   /* 统计消息识别标志 */
	unsigned char   StatCounter;       /* 统计的次数 */
	unsigned short  StatTimeLength;    /* 每次统计的时长 */  
	unsigned char   ParaCategory;      /* 统计类别 */ 
	unsigned char   ParaId;            /* 统计消息标志 */ 
	unsigned char   BSCIdentifier[BSC_INDENTIFIER_LEN];   /* BSCID */
	unsigned char   cCellId[4];        /* 小区ID */  
}MESSAGE_STATISTIC_t;

/* Message_Statistic_Result */
typedef struct
{
	MESSAGE_HEAD_t  s_StatMessageHead; /* 统计消息头 */
	unsigned char   StatSerialId[5];   /* 统计消息识别标志 */
	unsigned char   StatCounter;       /* 统计的次数 */
	unsigned short  StatTimeLength;    /* 每次统计的时长 */  
	unsigned char   ParaCategory;      /* 统计类别 */ 
	unsigned char   ParaId;            /* 统计消息标志 */ 
	unsigned char   BSCIdentifier[BSC_INDENTIFIER_LEN];   /* BSCID */
	unsigned char   cCellId[4];        /* 小区ID */  
	//    unsigned char   ParaStatCounter;   /* 统计结果 */
}MESSAGE_STATISTIC_RESULT_t;

/*  X25_Statistic_Request */
typedef struct
{
	unsigned short  ilen;              /* 包长度 */  
	MESSAGE_HEAD_t  s_StatMessageHead; /* 统计消息头 */
	unsigned char   StatSerialId[5];   /* 统计消息识别标志 */
	unsigned char   StatCounter;       /* 统计的次数 */
	unsigned short  StatTimeLength;    /* 每次统计的时长 */  
	unsigned char   ParaCategory;      /* 统计类别 */ 
	unsigned char   ParaId;            /* 统计消息标志 */ 
	unsigned char   BSCIdentifier[BSC_INDENTIFIER_LEN];   /* BSCID */
	unsigned int   IfUplink;              /* 是否为下行链路0:下行,1上行 */ 
}X25_STATISTIC_t;

/* X25_Statistic_Result */
typedef struct
{
	MESSAGE_HEAD_t  s_StatMessageHead; /* 统计消息头 */
	unsigned char   StatSerialId[5];   /* 统计消息识别标志 */
	unsigned char   StatCounter;       /* 统计的次数 */
	unsigned short  StatTimeLength;    /* 每次统计的时长 */  
	unsigned char   ParaCategory;      /* 统计类别 */ 
	unsigned char   ParaId;            /* 统计消息标志 */ 
	unsigned char   BSCIdentifier[BSC_INDENTIFIER_LEN];   /* BSCID */
	unsigned int    IfUplink;              /* 是否为下行链路0:下行,1上行 */ 
	//    unsigned char   ParaStatCounter;   /* 统计结果 */
}X25_STATISTIC_RESULT_t;


/* Message_Statistic_cancel */
typedef struct
{
	unsigned short  ilen;              /* 包长度 */ 
	MESSAGE_HEAD_t  s_StatMessageHead; /* 统计消息头 */
	unsigned char   StatSerialId[5];   /* 统计消息识别标志 */
}MESSAGE_STATISTIC_CANCEL_t;


typedef struct
{
	unsigned char    cStatisticType;  
    int              iCount;
}STATTYPE_COUNT_t;


typedef struct
{
	unsigned char     cNumber;              /* 业务个数 */
	STATTYPE_COUNT_t  s_StattypeCount[20];  /* 业务操作完成次数 */
}CBSE_STATISTIC_RESULT_t;

typedef struct
{
	unsigned char    cStatisticType;  
	unsigned int iSendCount;    /* 发送总数 */
	unsigned int iSuccessCount; /* 成功总数 */
	unsigned int ibsscapErr;    /* 基站系统负荷超载 */
	unsigned int icellmemErr;   /* 小区内存溢出	 */
	unsigned int ibssmemErr;    /* 基站系统内存溢出	 */
	unsigned int iotherErr;     /* 其他错误 */ 
}CELL_STATTYPE_COUNT_t;

/* 小区统计返回结果 */
typedef struct
{
	unsigned char           cNumber;              /* 业务个数 */
    CELL_STATTYPE_COUNT_t   s_StattypeCount[20];  /* 小区业务操作完成次数 */
}CELL_CBSE_STATISTIC_RESULT_t;

/* 小区重启和失败统计 */
typedef struct
{
    unsigned int   iFailureCount; /* 小区失败的次数 */
	unsigned int   icResetCount;  /* 小区复位的次数 */
}CELL_RESETFAIL_COUNT_t;


//typedef struct
//{
//	unsigned char  cCell[4];
//    unsigned int   iFailureCount; /* 小区失败的次数 */
//	unsigned int   icResetCount;  /* 小区复位的次数 */
//}CELL_RESET_AND_FAIL_COUNT_t;

/* 小区重启和失败统计返回结果 */
//typedef struct
//{
//	unsigned char                cNumber;               /* 小区个数 */
//    CELL_RESET_AND_FAIL_COUNT_t  s_CellResetAndFailCnt[MAX_BSC_CELL_COUNT]; 
//}CELL_RESET_AND_FAIL_STAT_RESULT_t;

typedef struct
{
	unsigned char  cAlarmCode;
	unsigned char  cAlarmType;
	unsigned int   iCount; 
}ONETYPE_WARNING_STATISTIC_t;

/* 告警统计返回结果 */
typedef struct
{
	unsigned char                 cNumber;             
	ONETYPE_WARNING_STATISTIC_t   s_AKindOfWarningStat[30];
}WARNING_STATISTIC_RESULT_t;

/* 观察返回结果 */
typedef struct
{
	unsigned short iLen;
	MESSAGE_HEAD_t s_MessageHead;
	unsigned short iWatchID;
	int            iPidCount;
	int            iTimerCount;
}WATCH_RESULT_t;

/* 
 * 修改小区统计次数 
 * in: 
 *     LPCellId         小区识别号
 *     iBscPosi         BSC小区信息数组下标
 *     StatisticType    统计类型:1.write, 2.replace,3.Kill,4.Query 5.CBCH,
 *     mode             0.增加发送次数,1.增加成功次数,2增加失败次数
 *     Errortype        如果mode=2,FailureReason为失败原因,其余情况忽略.        
 */
extern void Update_Cell_Statistic_Count(char *LPCellId,int iBscPosi,int StatisticType ,int mode ,int FailureReason);

/* 处理统计定时器到时
 * 返回
 *    END         结束进程
 *    CONTINUANCE 继续
 */
extern int Process_Statistic_timer_Expired(PID_t s_Pid);



/* 处理统计请求 
 * <0:返回错误, >=0:返回Pid
 */
extern int Process_Statistic_request(CBEMESSAGE_t *LpCBEMessage);


/* 统计取消
 * 返回 1  成功
 *      <0 失败
 */
extern int Process_Statistic_cancel(CBEMESSAGE_t *LPs_CBEMessage);

/* 观察系统资源 */
extern int Process_Watch_Sysrsc(CBEMESSAGE_t *LPs_CBEMessage);

/* 停止观察系统资源 
 * 取消定时器,释放观察进程
 * 返回: 
 *     >0 成功
 *     <0 失败
 */
extern int Process_Stop_Watch_Sysrsc(CBEMESSAGE_t *LPs_CBEMessage);

/* 观察定时器到时 */
extern int Process_Watch_timer_Expired(PID_t s_Pid);

⌨️ 快捷键说明

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