📄 svinapdisp.cpp
字号:
switch(oc) //operate code
{
case 42: //激活业务过滤
indeffmt=procsequencetag(0x01);
//过滤掉的呼叫处理
indeffmt2=procsequencetag(0x03);
////SF帐单计费特性
indeffmt3=procsequencetag(0x05);
//////“SF帐单计费特性”选择“无IN计费”“IN计费”“发送计费信息”
if((*recbuf&0x3f)==0) procNULL(0x07); //选择“无IN计费”
else if((*recbuf&0x3f)==0x21) //选择“IN计费”
{indeffmt4=procsequencetag(0x09); //IN计费 sequence
if((*recbuf&0x3f)==0) procsbasicpara(0x0b); //计费模式
if((*recbuf&0x3f)==2) procINAPADDR(0x0e); //目标地址号码
if((*recbuf&0x3f)==3) procsbasicpara(0x12); //计费用户标识指示
if((*recbuf&0x3f)==4) procINAPCHGADDR(0x15); //规定的计费号码
if((*recbuf&0x3f)==0x25) ProcAdditionalCharg(0x19); //附加费
if((*recbuf&0x3f)==6) procsbasicpara(0x21); //计费类型
if((*recbuf&0x3f)==0x27) ProcAdjustRate(0x24); //计费调整率
if((*recbuf&0x3f)==8) procsbasicpara(0x2c); //开始计费方式(枚举)
if((*recbuf&0x3f)==9) procsbasicpara(0x2f); //详细帐单记录类型
if((*recbuf&0x3f)==10) procsbasicpara(0x32); //透明参数
if((*recbuf&0x3f)==11) procsbasicpara(0x32); //透明参数
if((*recbuf&0x3f)==12) procsbasicpara(0x32); //透明参数
if((*recbuf&0x3f)==13) procsbasicpara(0x32); //透明参数
if((*recbuf&0x3f)==14) procsbasicpara(0x32); //透明参数
if((*recbuf&0x3f)==15) procsbasicpara(0x32); //透明参数
if((*recbuf&0x3f)==16) procsbasicpara(0x32); //透明参数
if((*recbuf&0x3f)==17) procsbasicpara(0x32); //透明参数
if((*recbuf&0x3f)==18) procsbasicpara(0x32); //透明参数
if((*recbuf&0x3f)==19) procsbasicpara(0x32); //透明参数
if((*recbuf&0x3f)==20) procsbasicpara(0x32); //透明参数
if((*recbuf&0x3f)==21) procsbasicpara(0x32); //透明参数
if((*recbuf&0x3f)==22) procsbasicpara(0x32); //透明参数
if((*recbuf&0x3f)==23) procsbasicpara(0x32); //透明参数
if((*recbuf&0x3f)==24) procsbasicpara(0x32); //透明参数
if((*recbuf&0x3f)==25) procsbasicpara(0x32); //透明参数
if(indeffmt4!=0) {recbuf+=2;UDTlen-=2;}
}//选择“IN计费”
else if((*recbuf&0x3f)==0x22) //选择“发送计费信息”
{
}//选择“发送计费信息”
if(indeffmt3!=0) {recbuf+=2;UDTlen-=2;}
////“要发送的信息”
if((*recbuf&0x3f)==0x21) ProcSendingInfo(0x35,0xa7);
////“最大计数器个数”
if((*recbuf&0x3f)==2) procsbasicpara(0x6a);
////“释放原因”
if((*recbuf&0x3f)==3) procCase(0x6d);
if(indeffmt2!=0) {recbuf+=2;UDTlen-=2;}
//“过滤特性”选择“间隙间隔”“呼叫次数”
indeffmt2=procsequencetag(0x70); //过滤特性 sequence
if((*recbuf&0x3f)==0) procsbasicpara(0x72); //间隙间隔
else if((*recbuf&0x3f)==1) procsbasicpara(0x75); //呼叫次数
if(indeffmt2!=0) {recbuf+=2;UDTlen-=2;}
//“过滤迂限”选择“持续时间”“结束时间”
indeffmt2=procsequencetag(0x78); //过滤迂限 sequence
if((*recbuf&0x3f)==0) procsbasicpara(0x64); //持续时间
else if((*recbuf&0x3f)==1) procsbasicpara(0x7a); //结束时间
if(indeffmt2!=0) {recbuf+=2;UDTlen-=2;}
//“过滤标准”选择“所拨数字”“主叫用户线”“业务键”“地址和业务”
indeffmt2=procsequencetag(0x7d); //过滤标准 sequence
if((*recbuf&0x3f)==0) procsbasicpara(0x7f); //所拨数字
else if((*recbuf&0x3f)==1) procINAPADDR(0x82); //主叫用户线
else if((*recbuf&0x3f)==2) procsbasicpara(0x86); //业务键
else if((*recbuf&0x3f)==0x3e)//地址和业务
{indeffmt3=procsequencetag(0x89); //地址和业务 sequence
procINAPADDR(0x8b); //被叫地址值
procsbasicpara(0x86); //业务键
if((*recbuf&0x3f)==2) procINAPADDR(0x8f); //主叫地址值
if((*recbuf&0x3f)==3) procINAPADDR(0x93); //位置号码
if(indeffmt3!=0) {recbuf+=2;UDTlen-=2;}
}//地址和业务
if(indeffmt2!=0) {recbuf+=2;UDTlen-=2;}
//开始时间
if((*recbuf&0x3f)==4) procsbasicpara(0x97); //所拨数字
//扩展
if((*recbuf&0x3f)==0x25) ProcExpand(0x9a);
if(indeffmt!=0) {recbuf+=2;UDTlen-=2;}
break;
case 35: //申请计费:35
indeffmt=procsequencetag(0x01);
//ACH帐单计费特性
indeffmt2=procsequencetag(0x03); //ACH帐单计费特性 sequence
////计费模式
if((*recbuf&0x3f)==0) procsbasicpara(0x05);
////计费记录标识
if((*recbuf&0x3f)==1) procsbasicpara(0x08);
////计费动作(枚举)
if((*recbuf&0x3f)==2) procsbasicpara(0x0b);
////计费部分(枚举)
if((*recbuf&0x3f)==4) procsbasicpara(0x0e);
////计费记录处理
if((*recbuf&0x3f)==5) procsbasicpara(0x11);
////主叫用户号码
if((*recbuf&0x3f)==6) procINAPADDR(0x14);
////被叫用户号码
if((*recbuf&0x3f)==7) procINAPADDR(0x18);
////目标地址号码
if((*recbuf&0x3f)==8) procINAPADDR(0x1c);
////位置号码
if((*recbuf&0x3f)==9) procINAPADDR(0x20);
////计费记录标识指示
if((*recbuf&0x3f)==10) procsbasicpara(0x24);
////规定的计费号码
if((*recbuf&0x3f)==11) procINAPCHGADDR(0x27);
////附加费
if((*recbuf&0x3f)==0x2c) ProcAdditionalCharg(0x2b); //附加费
////计费类别
if((*recbuf&0x3f)==13) procsbasicpara(0x33);
////计费调整率
if((*recbuf&0x3f)==0x2e) ProcAdjustRate(0x36); //计费调整率
////开始计费方式(枚举)
if((*recbuf&0x3f)==15) procsbasicpara(0x3e);
////停止计费方式(枚举)
if((*recbuf&0x3f)==16) procsbasicpara(0x41);
////详细帐单计费记录类型
if((*recbuf&0x3f)==17) procsbasicpara(0x44);
////是否发送计费信息(枚举)
if((*recbuf&0x3f)==18) procsbasicpara(0x47);
////透明参数
if((*recbuf&0x3f)==19) procsbasicpara(0x4a); //透明参数
if((*recbuf&0x3f)==20) procsbasicpara(0x4a); //透明参数
if((*recbuf&0x3f)==21) procsbasicpara(0x4a); //透明参数
if((*recbuf&0x3f)==22) procsbasicpara(0x4a); //透明参数
if((*recbuf&0x3f)==23) procsbasicpara(0x4a); //透明参数
if((*recbuf&0x3f)==24) procsbasicpara(0x4a); //透明参数
if((*recbuf&0x3f)==25) procsbasicpara(0x4a); //透明参数
if((*recbuf&0x3f)==26) procsbasicpara(0x4a); //透明参数
if((*recbuf&0x3f)==27) procsbasicpara(0x4a); //透明参数
if((*recbuf&0x3f)==28) procsbasicpara(0x4a); //透明参数
if((*recbuf&0x3f)==29) procsbasicpara(0x4a); //透明参数
if((*recbuf&0x3f)==30) procsbasicpara(0x4a); //透明参数
if((*recbuf&0x3f)==31) procsbasicpara(0x4a); //透明参数
if((*recbuf&0x3f)==32) procsbasicpara(0x4a); //透明参数
if((*recbuf&0x3f)==33) procsbasicpara(0x4a); //透明参数
if((*recbuf&0x3f)==34) procsbasicpara(0x4a); //透明参数
////呼叫监视
if((*recbuf&0x3f)==35)//呼叫监视
{indeffmt3=procsequencetag(0x4d); //呼叫监视 sequence
if((*recbuf&0x3f)==0x21)//监视方式
{indeffmt4=procsequencetag(0x4f);//监视方式 sequence
if((*recbuf&0x3f)==1) procsbasicpara(0x51); //选择费用
else if((*recbuf&0x3f)==2) procsbasicpara(0x54); //选择时间
if(indeffmt4!=0) {recbuf+=2;UDTlen-=2;}
}//监视方式
if((*recbuf&0x3f)==0x22)//到达前告警
{indeffmt4=procsequencetag(0x57);//到达前告警 sequence
if((*recbuf&0x3f)==0) procsbasicpara(0x59); //提前告警时间
if((*recbuf&0x3f)==0x21) ProcSendingInfo(0x5c,0xad); //告警指示:“要发送的信息”
if(indeffmt4!=0) {recbuf+=2;UDTlen-=2;}
}//到达前告警
if((*recbuf&0x3f)==3) procCase(0x8f); //强制释放原因
if((*recbuf&0x3f)==4) procsbasicpara(0x92); //报告时间间隔
if(indeffmt3!=0) {recbuf+=2;UDTlen-=2;}
}//呼叫监视
if(indeffmt2!=0) {recbuf+=2;UDTlen-=2;}
//“发送结果给SCP”(BOOL)
if((*recbuf&0x3f)==1) procsbasicpara(0x95);
//计费方式”选择“发方”“收方”
if((*recbuf&0x3f)==2)
{indeffmt2=procsequencetag(0x98);
if((*recbuf&0x3f)==0) procsbasicpara(0x9a); //选择“发方”
else if((*recbuf&0x3f)==1) procsbasicpara(0x9d); //选择“收方”
if(indeffmt2!=0) {recbuf+=2;UDTlen-=2;}
}
//“扩展”
if((*recbuf&0x3f)==0x23) ProcExpand(0xa0);
if(indeffmt!=0) {recbuf+=2;UDTlen-=2;}
break;
case 36: //申请计费报告:36
indeffmt=procsequencetag(0x01);
//业务键
if((*recbuf&0x3f)==0) procsbasicpara(0x03);
//计费模式
if((*recbuf&0x3f)==1) procsbasicpara(0x06);
//计费记录标识
if((*recbuf&0x3f)==5) procsbasicpara(0x09);
//计费用户标识指示
if((*recbuf&0x3f)==7) procsbasicpara(0x0c);
//规定的计费号码
if((*recbuf&0x3f)==8) procINAPCHGADDR(0x0F);
//主叫用户号码
if((*recbuf&0x3f)==9) procINAPADDR(0x13);
//被叫用户号码
if((*recbuf&0x3f)==10) procINAPADDR(0x17);
//目标地址号码
if((*recbuf&0x3f)==11) procINAPADDR(0x1b);
//位置号码
if((*recbuf&0x3f)==12) procINAPADDR(0x1f);
//开始日期和时间
if((*recbuf&0x3f)==13) procsbasicpara(0x23);
//结束日期和时间
if((*recbuf&0x3f)==14) procsbasicpara(0x26);
//持续时间
if((*recbuf&0x3f)==15) procsbasicpara(0x29);
//呼叫费用
if((*recbuf&0x3f)==16) procsbasicpara(0x2c);
//“承载能力”选择“承载能力1”“传输媒介要求”
if((*recbuf&0x3f)==0x31)//承载能力
{indeffmt2=procsequencetag(0x2f);
if((*recbuf&0x3f)==0) procsbasicpara(0x31); //承载能力1
else if((*recbuf&0x3f)==1) procsbasicpara(0x34); //传输媒介要求
if(indeffmt2!=0) {recbuf+=2;UDTlen-=2;}
}//承载能力
//计费类别
if((*recbuf&0x3f)==18) procsbasicpara(0x37);
//报告原因(枚举)
if((*recbuf&0x3f)==19) procsbasicpara(0x3a);
//时间标记
if((*recbuf&0x3f)==20) procsbasicpara(0x3d);
//监视结果
if((*recbuf&0x3f)==0x35)//监视结果
{indeffmt2=procsequencetag(0x40); //监视结果 sequence
////“监视方式”选择“所用费用”“所用时间”
if((*recbuf&0x3f)==0) procsbasicpara(0x44); //所用费用
else if((*recbuf&0x3f)==1) procsbasicpara(0x47); //所用时间
if(indeffmt2!=0) {recbuf+=2;UDTlen-=2;}
}//监视结果
if(indeffmt!=0) {recbuf+=2;UDTlen-=2;}
break;
case 16: //辅助请求指令:16
indeffmt=procsequencetag(0x01);
//相关ID
procsbasicpara(0x03);
//IP可用性
if((*recbuf&0x3f)==1) procsbasicpara(0x06);
//IPSSP能力
if((*recbuf&0x3f)==2) procsbasicpara(0x09);
//“扩展”
if((*recbuf&0x3f)==0x23) ProcExpand(0x0c);
if(indeffmt!=0) {recbuf+=2;UDTlen-=2;}
break;
case 41: //呼叫间隙:41
indeffmt=procsequencetag(0x01);
//“间隙标准”选择“被叫地址值”“根据业务间隙”“被叫地址和业务”“主叫地址和业务”
indeffmt2=procsequencetag(0x03);
if((*recbuf&0x3f)==0) procINAPADDR(0x05); //选择“被叫地址值”
else if((*recbuf&0x3f)==0x22) //“根据业务间隙”
{indeffmt3=procsequencetag(0x09); //根据业务间隙 sequence
if((*recbuf&0x3f)==0) procsbasicpara(0x0b); //业务键
if((*recbuf&0x3f)==1) procsbasicpara(0x0e); //DP标准(枚举)
if(indeffmt3!=0) {recbuf+=2;UDTlen-=2;}
}//“根据业务间隙”
else if((*recbuf&0x3f)==0x3d)//“被叫地址和业务”:29
{indeffmt3=procsequencetag(0x11); //被叫地址和业务 sequence
if((*recbuf&0x3f)==0) procINAPADDR(0x05); //选择“被叫地址值”
if((*recbuf&0x3f)==1) procsbasicpara(0x0b); //业务键
if(indeffmt3!=0) {recbuf+=2;UDTlen-=2;}
}//“被叫地址和业务”
else if((*recbuf&0x3f)==0x3e)//“主叫地址和业务”:30
{indeffmt3=procsequencetag(0x11); //主叫地址和业务 sequence
if((*recbuf&0x3f)==0) procINAPADDR(0x15); //主叫地址值
if((*recbuf&0x3f)==1) procsbasicpara(0x0b); //业务键
if((*recbuf&0x3f)==2) procINAPADDR(0x19); //位置号码
if(indeffmt3!=0) {recbuf+=2;UDTlen-=2;}
}//“主叫地址和业务”
if(indeffmt2!=0) {recbuf+=2;UDTlen-=2;}
//“间隙指示”
if((*recbuf&0x3f)==0x21)
{indeffmt2=procsequencetag(0x1d); //间隙指示 sequence
if((*recbuf&0x3f)==0) procsbasicpara(0x1f); //持续时间
if((*recbuf&0x3f)==1) procsbasicpara(0x22); //间隙间隔
if(indeffmt2!=0) {recbuf+=2;UDTlen-=2;}
}
//“控制类型(枚举)”
if((*recbuf&0x3f)==2) procsbasicpara(0x25); //控制类型(枚举)
//“间隙处理”选择“要发送的信息”“释放愿因”“都要”
if((*recbuf&0x3f)==0x23)//间隙处理
{indeffmt2=procsequencetag(0x1d); //间隙处理 sequence
if((*recbuf&0x3f)==0x20) ProcSendingInfo(0x2a,0x71); //要发送的信息
else if((*recbuf&0x3f)==1) procsbasicpara(0x5f);//释放愿因
else if((*recbuf&0x3f)==0x22)//“要发送的信息”“释放愿因”都要
{indeffmt3=procsequencetag(0x62);
if((*recbuf&0x3f)==0x20) ProcSendingInfo(0x2a,0x71); //要发送的信息
if((*recbuf&0x3f)==1) procsbasicpara(0x5f); //释放愿因
if(indeffmt3!=0) {recbuf+=2;UDTlen-=2;}
}//“要发送的信息”“释放愿因”都要
if(indeffmt2!=0) {recbuf+=2;UDTlen-=2;}
}//间隙处理
//“扩展”
if((*recbuf&0x3f)==0x24) ProcExpand(0x64);
if(indeffmt!=0) {recbuf+=2;UDTlen-=2;}
break;
case 44: //呼叫信息报告:44
indeffmt=procsequencetag(0x01);
//所请求的信息清单
indeffmt2=procsequencetag(0x03); //所请求的信息清单 sequence
////所请求的信息
while(*recbuf==0x30)//所请求的信息
{indeffmt3=procsequencetag(0x05); //所请求的信息 sequence
procsbasicpara(0x07); //所请求的信息类型(枚举)
//“所请求的信息值”:以下5项选择其一
indeffmt3+=procsequencetag(0x0a); //所请求的信息值 sequence
if((*recbuf&0x3f)==0) procsbasicpara(0x0c); //呼叫历时时间值
else if((*recbuf&0x3f)==1) procsbasicpara(0x0f); //呼叫停止时间
else if((*recbuf&0x3f)==2) procsbasicpara(0x12); //呼叫连接历时时间
else if((*recbuf&0x3f)==3) procINAPADDR(0x15); //被叫地址值
else if((*recbuf&0x3f)==4) procsbasicpara(0x09); //释放愿因值
else
{
procmoredatadisp(UDTlen); //add by 2000.06.14
UDTlen = 0;
return;
}
if(indeffmt3!=0) {recbuf+=2*indeffmt3;UDTlen-=2*indeffmt3;}
}//所请求的信息
if(indeffmt2!=0) {recbuf+=2;UDTlen-=2;}
//“相关ID”
if((*recbuf&0x3f)==1) procsbasicpara(0x1c); //相关ID
//“扩展”
if((*recbuf&0x3f)==0x24) ProcExpand(0x1f);
if(indeffmt!=0) {recbuf+=2;UDTlen-=2;}
break;
case 45: //呼叫信息请求:45
indeffmt=procsequencetag(0x01);
//所请求的信息类型清单
indeffmt2=procsequencetag(0x03); //所请求的信息类型清单 sequence
////所请求的信息类型
while(*recbuf==0x30)//所请求的信息类型
procsbasicpara(0x05); //所请求的信息类型(枚举)
if(indeffmt2!=0) {recbuf+=2;UDTlen-=2;}
//“相关ID”
if((*recbuf&0x3f)==1) procsbasicpara(0x08); //相关ID
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -