?? statistic.c
字號(hào):
#include "..\sys\Include.h"
int Process_Statistic_Cbse(CBEMESSAGE_t *LpCBEMessage);
/* 處理小區(qū)廣播失敗和重新復(fù)位的次數(shù)的統(tǒng)計(jì)
* <0:返回錯(cuò)誤, >=0:返回Pid
*/
int Process_Statistic_FailAndReset(CBEMESSAGE_t *LpCBEMessage);
/* 處理告警的統(tǒng)計(jì)
* <0:返回錯(cuò)誤, >=0:返回Pid
*/
int Process_Statistic_Warning(CBEMESSAGE_t *LpCBEMessage);
/* 處理X25鏈路統(tǒng)計(jì)
* <0:返回錯(cuò)誤, >=0:返回Pid
*/
int Process_Statistic_X25(CBEMESSAGE_t *LpCBEMessage);
/* 處理Cbse統(tǒng)計(jì)定時(shí)器到時(shí)
* 返回
* END 統(tǒng)計(jì)結(jié)束
* CONTINUANCE 統(tǒng)計(jì)繼續(xù)
*/
int Process_Statistic_Cbse_TimeExpired(PID_t s_Pid);
/* 處理Statistic_FailAndReset統(tǒng)計(jì)定時(shí)器到時(shí)
* 返回
* END 統(tǒng)計(jì)結(jié)束
* CONTINUANCE 統(tǒng)計(jì)繼續(xù)
*/
int Process_Statistic_FailAndReset_TimeExpired(PID_t s_Pid);
/* 處理Statistic_X25統(tǒng)計(jì)定時(shí)器到時(shí)
* 返回
* END 統(tǒng)計(jì)結(jié)束
* CONTINUANCE 統(tǒng)計(jì)繼續(xù)
*/
int Process_Statistic_X25_TimeExpired(PID_t s_Pid);
/*
* 修改小區(qū)統(tǒng)計(jì)次數(shù)
* in:
* LPCellId 小區(qū)識(shí)別號(hào)
* iBscPosi BSC小區(qū)信息數(shù)組下標(biāo)
* StatisticType 統(tǒng)計(jì)類型:1.write, 2.replace,3.Kill,4.Query 5.CBCH,
* mode 0.增加發(fā)送次數(shù),1.增加成功次數(shù),2增加失敗次數(shù)
* 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)
{
/* 發(fā)送此時(shí)加1 */
s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].s_WriteCount.iSendCount++;
}
if(mode==1)
{
/* 成功次數(shù)加1 */
s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].s_WriteCount.iSuccessCount++;
}
if(mode==2)
{
switch(FailureReason)
{
case BSS_CAPACITY_EXCEEDED:/* 基站系統(tǒng)負(fù)荷超載 */
{
s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].s_WriteCount.ibsscapErr++;
}
break;
case CELL_MEMORY_EXCEEDED: /* 小區(qū)內(nèi)存溢出 */
{
s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].s_WriteCount.icellmemErr++;
}
break;
case BSS_MEMORY_EXCEEDED: /*基站系統(tǒng)內(nèi)存溢出 */
{
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)
{
/* 發(fā)送此時(shí)加1 */
s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].s_ReplaceCount.iSendCount++;
}
if(mode==1)
{
/* 成功次數(shù)加1 */
s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].s_ReplaceCount.iSuccessCount++;
}
if(mode==2)
{
switch(FailureReason)
{
case BSS_CAPACITY_EXCEEDED:/* 基站系統(tǒng)負(fù)荷超載 */
{
s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].s_ReplaceCount.ibsscapErr++;
}
break;
case CELL_MEMORY_EXCEEDED: /* 小區(qū)內(nèi)存溢出 */
{
s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].s_ReplaceCount.icellmemErr++;
}
break;
case BSS_MEMORY_EXCEEDED: /*基站系統(tǒng)內(nèi)存溢出 */
{
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)
{
/* 發(fā)送此時(shí)加1 */
s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].s_KillCount.iSendCount++;
}
if(mode==1)
{
/* 成功次數(shù)加1 */
s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].s_KillCount.iSuccessCount++;
}
if(mode==2)
{
switch(FailureReason)
{
case BSS_CAPACITY_EXCEEDED:/* 基站系統(tǒng)負(fù)荷超載 */
{
s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].s_KillCount.ibsscapErr++;
}
break;
case CELL_MEMORY_EXCEEDED: /* 小區(qū)內(nèi)存溢出 */
{
s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].s_KillCount.icellmemErr++;
}
break;
case BSS_MEMORY_EXCEEDED: /*基站系統(tǒng)內(nèi)存溢出 */
{
s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].s_KillCount.ibssmemErr++;
}
break;
}
}
return;
}
}
}
}
break;
case QUERY_STATISTIC: /* 消息狀態(tài)查詢查詢 */
{
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)
{
/* 發(fā)送此時(shí)加1 */
s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].s_QueryCount.iSendCount++;
}
if(mode==1)
{
/* 成功次數(shù)加1 */
s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].s_QueryCount.iSuccessCount++;
}
if(mode==2)
{
switch(FailureReason)
{
case BSS_CAPACITY_EXCEEDED:/* 基站系統(tǒng)負(fù)荷超載 */
{
s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].s_QueryCount.ibsscapErr++;
}
break;
case CELL_MEMORY_EXCEEDED: /* 小區(qū)內(nèi)存溢出 */
{
s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].s_QueryCount.icellmemErr++;
}
break;
case BSS_MEMORY_EXCEEDED: /*基站系統(tǒng)內(nèi)存溢出 */
{
s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].s_QueryCount.ibssmemErr++;
}
break;
}
}
return;
}
}
}
}
break;
case CBCH_STATISTIC: /* 小區(qū)信道負(fù)荷查詢 */
{
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)
{
/* 發(fā)送此時(shí)加1 */
s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].s_CBCHCount.iSendCount++;
}
if(mode==1)
{
/* 成功次數(shù)加1 */
s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].s_CBCHCount.iSuccessCount++;
}
if(mode==2)
{
switch(FailureReason)
{
case BSS_CAPACITY_EXCEEDED:/* 基站系統(tǒng)負(fù)荷超載 */
{
s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].s_CBCHCount.ibsscapErr++;
}
break;
case CELL_MEMORY_EXCEEDED: /* 小區(qū)內(nèi)存溢出 */
{
s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].s_CBCHCount.icellmemErr++;
}
break;
case BSS_MEMORY_EXCEEDED: /*基站系統(tǒng)內(nèi)存溢出 */
{
s_BSCCellInfo[iBscPosi].s_BTSCellInfo[i].s_CellId[j].s_CBCHCount.ibssmemErr++;
}
break;
}
}
return;
}
}
}
}
break;
default:
break;
}
}
/* 處理統(tǒng)計(jì)請(qǐng)求
* <0:返回錯(cuò)誤, >=0:返回Pid
*/
int Process_Statistic_request(CBEMESSAGE_t *LpCBEMessage)
{
MESSAGE_STATISTIC_t *LpMessageStatistic;
int iReturnValue;
if (s_RuntimeInfo.iStatisticPidCount>=MAX_STATISTIC_PID)
{
/* 統(tǒng)計(jì)進(jìn)程超負(fù)荷 */
return TOO_MANY_STATISTIC_TASK;
}
LpMessageStatistic=(MESSAGE_STATISTIC_t *)LpCBEMessage;
switch(LpMessageStatistic->ParaCategory)
{
case STATISTIC_CBSE: /* 服務(wù)元素的統(tǒng)計(jì) */
{
iReturnValue=Process_Statistic_Cbse(LpCBEMessage);
}
break;
case STATISTIC_RESET_AND_FAIL: /* 統(tǒng)計(jì)小區(qū)廣播失敗和重新復(fù)位的次數(shù) */
{
iReturnValue=Process_Statistic_FailAndReset(LpCBEMessage);
}
break;
// case STATISTIC_WARNING: /* 告警的統(tǒng)計(jì) */
// {
// iReturnValue=Process_Statistic_Warning(LpCBEMessage);
// }
// break;
case STATISTIC_X25: /* X25鏈路統(tǒng)計(jì) */
{
iReturnValue=Process_Statistic_X25(LpCBEMessage);
}
break;
default:
{
/* 無法識(shí)別的統(tǒng)計(jì)類型 */
return UNRECOGNIZED_STATISTIC_TYPE;
}
}
if (iReturnValue>0)
{
/* 統(tǒng)計(jì)進(jìn)程計(jì)數(shù)加一 */
s_RuntimeInfo.iStatisticPidCount++;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -