📄 statistic.c
字号:
#include "..\sys\Include.h"
int Process_Statistic_Cbse(CBEMESSAGE_t *LpCBEMessage);
/* 处理小区广播失败和重新复位的次数的统计
* <0:返回错误, >=0:返回Pid
*/
int Process_Statistic_FailAndReset(CBEMESSAGE_t *LpCBEMessage);
/* 处理告警的统计
* <0:返回错误, >=0:返回Pid
*/
int Process_Statistic_Warning(CBEMESSAGE_t *LpCBEMessage);
/* 处理X25链路统计
* <0:返回错误, >=0:返回Pid
*/
int Process_Statistic_X25(CBEMESSAGE_t *LpCBEMessage);
/* 处理Cbse统计定时器到时
* 返回
* END 统计结束
* CONTINUANCE 统计继续
*/
int Process_Statistic_Cbse_TimeExpired(PID_t s_Pid);
/* 处理Statistic_FailAndReset统计定时器到时
* 返回
* END 统计结束
* CONTINUANCE 统计继续
*/
int Process_Statistic_FailAndReset_TimeExpired(PID_t s_Pid);
/* 处理Statistic_X25统计定时器到时
* 返回
* END 统计结束
* CONTINUANCE 统计继续
*/
int Process_Statistic_X25_TimeExpired(PID_t s_Pid);
/*
* 修改小区统计次数
* in:
* LPCellId 小区识别号
* iBscPosi BSC小区信息数组下标
* StatisticType 统计类型:1.write, 2.replace,3.Kill,4.Query 5.CBCH,
* mode 0.增加发送次数,1.增加成功次数,2增加失败次数
* Errortype 如果mode=2,FailureReason为失败原因,其余情况忽略.
*/
void Update_Cell_Statistic_Count(char *LPCellId,int iBscPosi,int StatisticType ,int mode ,int FailureReason)
{
int i,j;
switch(StatisticType)
{
case WRITE_STATISTIC: /* 写入 */
{
for(i=0;i<s_BSCCellInfo[iBscPosi].cNumberOfBTS;i++)
{
for(j=0;j<s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].cNumberOfCell;j++)
{
if(memcmp((LPCellId+2),&s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].cCellId[2],2)==0)
{
if(mode==0)
{
/* 发送此时加1 */
s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].s_WriteCount.iSendCount++;
}
if(mode==1)
{
/* 成功次数加1 */
s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].s_WriteCount.iSuccessCount++;
}
if(mode==2)
{
switch(FailureReason)
{
case BSS_CAPACITY_EXCEEDED:/* 基站系统负荷超载 */
{
s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].s_WriteCount.ibsscapErr++;
}
break;
case CELL_MEMORY_EXCEEDED: /* 小区内存溢出 */
{
s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].s_WriteCount.icellmemErr++;
}
break;
case BSS_MEMORY_EXCEEDED: /*基站系统内存溢出 */
{
s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].s_WriteCount.ibssmemErr++;
}
break;
}
}
return;
}
}
}
}
break;
case REPLACE_STATISTIC: /* 替换 */
{
for(i=0;i<s_BSCCellInfo[iBscPosi].cNumberOfBTS;i++)
{
for(j=0;j<s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].cNumberOfCell;j++)
{
if(memcmp((LPCellId+2),&s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].cCellId[2],2)==0)
{
if(mode==0)
{
/* 发送此时加1 */
s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].s_ReplaceCount.iSendCount++;
}
if(mode==1)
{
/* 成功次数加1 */
s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].s_ReplaceCount.iSuccessCount++;
}
if(mode==2)
{
switch(FailureReason)
{
case BSS_CAPACITY_EXCEEDED:/* 基站系统负荷超载 */
{
s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].s_ReplaceCount.ibsscapErr++;
}
break;
case CELL_MEMORY_EXCEEDED: /* 小区内存溢出 */
{
s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].s_ReplaceCount.icellmemErr++;
}
break;
case BSS_MEMORY_EXCEEDED: /*基站系统内存溢出 */
{
s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].s_ReplaceCount.ibssmemErr++;
}
break;
}
}
return;
}
}
}
}
break;
case KILL_STATISTIC: /* 删除 */
{
for(i=0;i<s_BSCCellInfo[iBscPosi].cNumberOfBTS;i++)
{
for(j=0;j<s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].cNumberOfCell;j++)
{
if(memcmp((LPCellId+2),&s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].cCellId[2],2)==0)
{
if(mode==0)
{
/* 发送此时加1 */
s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].s_KillCount.iSendCount++;
}
if(mode==1)
{
/* 成功次数加1 */
s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].s_KillCount.iSuccessCount++;
}
if(mode==2)
{
switch(FailureReason)
{
case BSS_CAPACITY_EXCEEDED:/* 基站系统负荷超载 */
{
s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].s_KillCount.ibsscapErr++;
}
break;
case CELL_MEMORY_EXCEEDED: /* 小区内存溢出 */
{
s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].s_KillCount.icellmemErr++;
}
break;
case BSS_MEMORY_EXCEEDED: /*基站系统内存溢出 */
{
s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].s_KillCount.ibssmemErr++;
}
break;
}
}
return;
}
}
}
}
break;
case QUERY_STATISTIC: /* 消息状态查询查询 */
{
for(i=0;i<s_BSCCellInfo[iBscPosi].cNumberOfBTS;i++)
{
for(j=0;j<s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].cNumberOfCell;j++)
{
if(memcmp((LPCellId+2),&s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].cCellId[2],2)==0)
{
if(mode==0)
{
/* 发送此时加1 */
s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].s_QueryCount.iSendCount++;
}
if(mode==1)
{
/* 成功次数加1 */
s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].s_QueryCount.iSuccessCount++;
}
if(mode==2)
{
switch(FailureReason)
{
case BSS_CAPACITY_EXCEEDED:/* 基站系统负荷超载 */
{
s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].s_QueryCount.ibsscapErr++;
}
break;
case CELL_MEMORY_EXCEEDED: /* 小区内存溢出 */
{
s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].s_QueryCount.icellmemErr++;
}
break;
case BSS_MEMORY_EXCEEDED: /*基站系统内存溢出 */
{
s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].s_QueryCount.ibssmemErr++;
}
break;
}
}
return;
}
}
}
}
break;
case CBCH_STATISTIC: /* 小区信道负荷查询 */
{
for(i=0;i<s_BSCCellInfo[iBscPosi].cNumberOfBTS;i++)
{
for(j=0;j<s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].cNumberOfCell;j++)
{
if(memcmp((LPCellId+2),&s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].cCellId[2],2)==0)
{
if(mode==0)
{
/* 发送此时加1 */
s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].s_CBCHCount.iSendCount++;
}
if(mode==1)
{
/* 成功次数加1 */
s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].s_CBCHCount.iSuccessCount++;
}
if(mode==2)
{
switch(FailureReason)
{
case BSS_CAPACITY_EXCEEDED:/* 基站系统负荷超载 */
{
s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].s_CBCHCount.ibsscapErr++;
}
break;
case CELL_MEMORY_EXCEEDED: /* 小区内存溢出 */
{
s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].s_CBCHCount.icellmemErr++;
}
break;
case BSS_MEMORY_EXCEEDED: /*基站系统内存溢出 */
{
s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].s_CBCHCount.ibssmemErr++;
}
break;
}
}
return;
}
}
}
}
break;
default:
break;
}
}
/* 处理统计请求
* <0:返回错误, >=0:返回Pid
*/
int Process_Statistic_request(CBEMESSAGE_t *LpCBEMessage)
{
MESSAGE_STATISTIC_t *LpMessageStatistic;
int iReturnValue;
if (s_RuntimeInfo.iStatisticPidCount>=MAX_STATISTIC_PID)
{
/* 统计进程超负荷 */
return TOO_MANY_STATISTIC_TASK;
}
LpMessageStatistic=(MESSAGE_STATISTIC_t *)LpCBEMessage;
switch(LpMessageStatistic->ParaCategory)
{
case STATISTIC_CBSE: /* 服务元素的统计 */
{
iReturnValue=Process_Statistic_Cbse(LpCBEMessage);
}
break;
case STATISTIC_RESET_AND_FAIL: /* 统计小区广播失败和重新复位的次数 */
{
iReturnValue=Process_Statistic_FailAndReset(LpCBEMessage);
}
break;
// case STATISTIC_WARNING: /* 告警的统计 */
// {
// iReturnValue=Process_Statistic_Warning(LpCBEMessage);
// }
// break;
case STATISTIC_X25: /* X25链路统计 */
{
iReturnValue=Process_Statistic_X25(LpCBEMessage);
}
break;
default:
{
/* 无法识别的统计类型 */
return UNRECOGNIZED_STATISTIC_TYPE;
}
}
if (iReturnValue>0)
{
/* 统计进程计数加一 */
s_RuntimeInfo.iStatisticPidCount++;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -