📄 svinapdisp.cpp
字号:
//“扩展”
if((*recbuf&0x3f)==0x24) ProcExpand(0x0b);
if(indeffmt!=0) {recbuf+=2;UDTlen-=2;}
break;
case 53: //取消:53
if((*recbuf&0x3f)==0) procsbasicpara(0x01); //调用ID
else if((*recbuf&0x3f)==1) procNULL(0x04); //所有请求(NULL)
break;
case 54: //取消状态报告请求:54
indeffmt=procsequencetag(0x01);
//“资源ID”选择“用户线ID”“设备群ID”“设备群成员ID”“中继群ID”
if((*recbuf&0x3f)==0x20)//资源ID
{indeffmt2=procsequencetag(0x03); //资源ID sequence
if((*recbuf&0x3f)==0) procsbasicpara(0x05);//用户线ID
else if((*recbuf&0x3f)==0x21)//设备群ID
{indeffmt3=procsequencetag(0x08); //设备群ID sequence
if((*recbuf&0x3f)==0) procsbasicpara(0x0a); //中继群ID
else if((*recbuf&0x3f)==1) procsbasicpara(0x0d); //单个设备ID
else if((*recbuf&0x3f)==2) procsbasicpara(0x10); //搜索群
else if((*recbuf&0x3f)==3) procsbasicpara(0x13); //路由索引
if(indeffmt3!=0) {recbuf+=2;UDTlen-=2;}
}//设备群ID
else if((*recbuf&0x3f)==2) procsbasicpara(0x13); //设备群成员ID
else if((*recbuf&0x3f)==3) procsbasicpara(0x16); //中继群ID
if(indeffmt2!=0) {recbuf+=2;UDTlen-=2;}
}//资源ID
//“扩展”
if((*recbuf&0x3f)==0x21) ProcExpand(0x19);
if(indeffmt!=0) {recbuf+=2;UDTlen-=2;}
break;
case 27: //收集信息:27
indeffmt=procsequencetag(0x01);
//振铃模式
if((*recbuf&0x3f)==0) procsbasicpara(0x03);
//编号计划
if((*recbuf&0x3f)==1) procsbasicpara(0x06);
//原被叫用户ID(原被叫号码)
if((*recbuf&0x3f)==2) procINAPADDR(0x09);
//跨越标志
if((*recbuf&0x3f)==3) procINAPADDR(0x0d);
//“扩展”
if((*recbuf&0x3f)==0x24) ProcExpand(0x11);
//主叫用户号码
if((*recbuf&0x3f)==5) procINAPADDR(0x1e);
//所拨数字
if((*recbuf&0x3f)==6) procINAPADDR(0x22);
if(indeffmt!=0) {recbuf+=2;UDTlen-=2;}
break;
case 20: //连接:20
indeffmt=procsequencetag(0x01);
//目的地路由地址
indeffmt2=procsequencetag(0x03);
while((*recbuf&0x3f)==0x04) procINAPADDR(0x05); //被叫用户号码
if(indeffmt2!=0) {recbuf+=2;UDTlen-=2;}
//振铃模式
if((*recbuf&0x3f)==1) procsbasicpara(0x09);
//相关ID
if((*recbuf&0x3f)==2) procsbasicpara(0x0c);
//切割和补偿
if((*recbuf&0x3f)==3) procsbasicpara(0x0f);
//前向条件(枚举)
if((*recbuf&0x3f)==4) procsbasicpara(0x12);
//与ISDN接入相关的信息
if((*recbuf&0x3f)==5) procsbasicpara(0x15);
//原被叫用户ID(原被叫号码)
if((*recbuf&0x3f)==6) procINAPADDR(0x18);
//路由清单
if((*recbuf&0x3f)==0x27)//路由清单
{indeffmt2=procsequencetag(0x1c); //路由清单 sequence
while((*recbuf&0x3f)==0x04) procINAPADDR(0x1e); //路由
if(indeffmt2!=0) {recbuf+=2;UDTlen-=2;}
}//路由清单
//SCFID
if((*recbuf&0x3f)==8) procsbasicpara(0x21);
//跨越标志
if((*recbuf&0x3f)==9) procINAPADDR(0x24);
//“扩展”
if((*recbuf&0x3f)==0x2a) ProcExpand(0x28);
//承载者
if((*recbuf&0x3f)==11) procBearer(0x35);
//业务相互作用表示语
if((*recbuf&0x3f)==26) procsbasicpara(0x39);
//主叫用户号码
if((*recbuf&0x3f)==27) procINAPADDR(0x3c);
//主叫用户类别
if((*recbuf&0x3f)==28) procsbasicpara(0x40);
//改向用户ID
if((*recbuf&0x3f)==29) procINAPADDR(0x43);
//改向信息
if((*recbuf&0x3f)==30) procsbasicpara(0x47);
if(indeffmt!=0) {recbuf+=2;UDTlen-=2;}
break;
case 19: //连接到资源:19
indeffmt=procsequencetag(0x01);
//“资源地址”选择“IP路由地址”“legID”“两个都要”“两个都不要”
if((*recbuf&0x3f)==0) procINAPADDR(0x03); //IP路由地址
else if((*recbuf&0x3f)==0x21)//legID选择"发方ID""收方ID"
procLegID(0x07); //LEGID
else if((*recbuf&0x3f)==0x22)//两个都要
{indeffmt2=procsequencetag(0x0f); //IP路由地址和legID sequence
procINAPADDR(0x03); //IP路由地址
procLegID(0x07);//LEGID
if(indeffmt2!=0) {recbuf+=indeffmt2*2;UDTlen-=indeffmt2*2;}
}//两个都要
else if((*recbuf&0x3f)==3) procNULL(0x11); //两个都不要(NULL)
//“扩展”
if((*recbuf&0x3f)==0x25) ProcExpand(0x13);
//业务相互作用表示语
if((*recbuf&0x3f)==30) procsbasicpara(0x21);
if(indeffmt!=0) {recbuf+=2;UDTlen-=2;}
break;
case 17: //建立临时连接:17
indeffmt=procsequencetag(0x01);
//辅助SSPIP路由地址
procINAPADDR(0x03);
//相关ID
if((*recbuf&0x3f)==1) procsbasicpara(0x07);
//legID
if((*recbuf&0x3f)==0x22) procLegID(0x0a);
//SCFID
if((*recbuf&0x3f)==3) procsbasicpara(0x12);
//承载者
if((*recbuf&0x3f)==5) procBearer(0x15);
//“扩展”
if((*recbuf&0x3f)==0x26) ProcExpand(0x19);
//业务相互作用表示语
if((*recbuf&0x3f)==30) procsbasicpara(0x26);
if(indeffmt!=0) {recbuf+=2;UDTlen-=2;}
break;
case 26: //计费事件通知:26
indeffmt=procsequencetag(0x01);
//计费事件类型
procsbasicpara(0x03);
//计费事件规定的信息
if((*recbuf&0x3f)==1) procsbasicpara(0x06);
//legID
if((*recbuf&0x3f)==0x22) procLegID(0x09);
//“扩展”
if((*recbuf&0x3f)==0x23) ProcExpand(0x11);
//监视方式(枚举)
if((*recbuf&0x3f)==30) procsbasicpara(0x1e);
if(indeffmt!=0) {recbuf+=2;UDTlen-=2;}
break;
case 24: //BCSM事件报告:24
indeffmt=procsequencetag(0x01);
//BCSM事件类型(枚举)
procsbasicpara(0x03);
//BCSM事件相关ID
if((*recbuf&0x3f)==1) procsbasicpara(0x1c);
//“BCSM事件规定的信息”选择 //P60
if((*recbuf&0x3f)==0x22)//BCSM事件规定的信息
{indeffmt2=procsequencetag(0x09); //BCSM收集的信息规定的信息 sequence
if((*recbuf&0x3f)==0x20)//收集的信息规定的信息
{indeffmt3=procsequencetag(0x0b);//收集的信息规定的信息 sequence
if((*recbuf&0x3f)==0) procINAPADDR(0x0d); //被叫用户号码
if(indeffmt3!=0) {recbuf+=2;UDTlen-=2;}
}//收集的信息规定的信息
else if((*recbuf&0x3f)==0x21)//分析信息规定的信息
{indeffmt3=procsequencetag(0x11);//分析信息规定的信息 sequence
if((*recbuf&0x3f)==0) procINAPADDR(0x0d); //被叫用户号码
if(indeffmt3!=0) {recbuf+=2;UDTlen-=2;}
}//分析信息规定的信息
else if((*recbuf&0x3f)==0x22)//路由选择故障规定的信息
{indeffmt3=procsequencetag(0x13);//路由选择故障规定的信息 sequence
if((*recbuf&0x3f)==0) procCase(0x15); //失败原因
if(indeffmt3!=0) {recbuf+=2;UDTlen-=2;}
}//路由选择故障规定的信息
else if((*recbuf&0x3f)==0x23)//O-被叫忙规定的信息
{indeffmt3=procsequencetag(0x18);//O-被叫忙规定的信息 sequence
if((*recbuf&0x3f)==0) procCase(0x1a); //忙原因
if(indeffmt3!=0) {recbuf+=2;UDTlen-=2;}
}//O-被叫忙规定的信息
else if((*recbuf&0x3f)==0x24)//O-无应答规定的信息
{
}//O-无应答规定的信息
else if((*recbuf&0x3f)==0x25)//O-应答规定的信息
{
}//O-应答规定的信息
else if((*recbuf&0x3f)==0x26)//O-中间呼叫规定的信息
{indeffmt3=procsequencetag(0x21);//O-中间呼叫规定的信息 sequence
if((*recbuf&0x3f)==0) procsbasicpara(0x23); //连接时间
if(indeffmt3!=0) {recbuf+=2;UDTlen-=2;}
}//O-中间呼叫规定的信息
else if((*recbuf&0x3f)==0x27)//O-拆线规定的信息
{indeffmt3=procsequencetag(0x26);//O-拆线规定的信息 sequence
if((*recbuf&0x3f)==0) procCase(0x28); //释放原因
if((*recbuf&0x3f)==1) procsbasicpara(0x23); //连接时间
if(indeffmt3!=0) {recbuf+=2;UDTlen-=2;}
}//O-拆线规定的信息
else if((*recbuf&0x3f)==0x28)//T-被叫忙规定的信息
{indeffmt3=procsequencetag(0x2b);//T-被叫忙规定的信息 sequence
if((*recbuf&0x3f)==0) procCase(0x1a); //忙原因
if(indeffmt3!=0) {recbuf+=2;UDTlen-=2;}
}//T-被叫忙规定的信息
else if((*recbuf&0x3f)==0x29)//T-无应答规定的信息
{
}//T-无应答规定的信息
else if((*recbuf&0x3f)==0x2a)//T-应答规定的信息
{
}//T-应答规定的信息
else if((*recbuf&0x3f)==0x2b)//T-中间呼叫规定的信息
{indeffmt3=procsequencetag(0x31);//T-中间呼叫规定的信息 sequence
if((*recbuf&0x3f)==0) procsbasicpara(0x23); //连接时间
if(indeffmt3!=0) {recbuf+=2;UDTlen-=2;}
}//T-中间呼叫规定的信息
else if((*recbuf&0x3f)==0x2c)//T-拆线规定的信息
{indeffmt3=procsequencetag(0x33);//T-拆线规定的信息 sequence
if((*recbuf&0x3f)==0) procCase(0x28); //释放原因
if((*recbuf&0x3f)==1) procsbasicpara(0x23); //连接时间
if(indeffmt3!=0) {recbuf+=2;UDTlen-=2;}
}//O-拆线规定的信息
if(indeffmt2!=0) {recbuf+=2;UDTlen-=2;}
}//BCSM事件规定的信息
//legID
if((*recbuf&0x3f)==0x23) procLegID(0x35);
//杂项呼叫信息
if((*recbuf&0x3f)==0x24)//杂项呼叫信息
{indeffmt2=procsequencetag(0x3d);//杂项呼叫信息 sequence
if((*recbuf&0x3f)==0) procsbasicpara(0x3f); //信息类型(枚举)
if((*recbuf&0x3f)==1) procsbasicpara(0x42); //dp分配(枚举)
if(indeffmt2!=0) {recbuf+=2;UDTlen-=2;}
}//杂项呼叫信息
//“扩展”
if((*recbuf&0x3f)==0x25) ProcExpand(0x45);
if(indeffmt!=0) {recbuf+=2;UDTlen-=2;}
break;
case 34: //提供计费信息:34
if(*(recbuf+1)==0x80) li=0;
else if (*(recbuf+1)<0x80) li=*(recbuf+2);
else li=*(recbuf+3);
len=UDTlen;
indeffmt=procsequencetag(0x01); //FCI帐单计费特性 sequence
//计费模式
if((*recbuf&0x3f)==0) procsbasicpara(0x03);
//计费记录标识
if((*recbuf&0x3f)==1) procsbasicpara(0x06);
//计费动作(枚举)
if((*recbuf&0x3f)==2) procsbasicpara(0x09);
//计费部分(枚举)
if((*recbuf&0x3f)==4) procsbasicpara(0x0c);
//计费记录处理
if((*recbuf&0x3f)==5) procsbasicpara(0x0f);
//主叫用户号码
if((*recbuf&0x3f)==6) procINAPADDR(0x12);
//被叫用户号码
if((*recbuf&0x3f)==7) procINAPADDR(0x16);
//目标地址号码
if((*recbuf&0x3f)==8) procINAPADDR(0x1a);
//位置号码
if((*recbuf&0x3f)==9) procINAPADDR(0x1e);
//计费用户标识指示
if((*recbuf&0x3f)==10) procsbasicpara(0x22);
//规定的计费号码
if((*recbuf&0x3f)==11) procINAPCHGADDR(0x25);
//附加费
if((*recbuf&0x3f)==0x2c) ProcAdditionalCharg(0x29);
//计费类别
if((*recbuf&0x3f)==13) procsbasicpara(0x31);
//计费调整率
if((*recbuf&0x3f)==0x2e) ProcAdjustRate(0x34);
//开始计费方式(枚举)
if((*recbuf&0x3f)==15) procsbasicpara(0x3c);
//停止计费方式(枚举)
if((*recbuf&0x3f)==16) procsbasicpara(0x3f);
//详细帐单计费记录类型
if((*recbuf&0x3f)==17) procsbasicpara(0x42);
//是否发送计费信息(枚举)
if((*recbuf&0x3f)==18) procsbasicpara(0x45);
//透明参数
if((*recbuf&0x3f)==19) procsbasicpara(0x48);
if((*recbuf&0x3f)==20) procsbasicpara(0x48);
if((*recbuf&0x3f)==21) procsbasicpara(0x48);
if((*recbuf&0x3f)==22) procsbasicpara(0x48);
if((*recbuf&0x3f)==23) procsbasicpara(0x48);
if((*recbuf&0x3f)==24) procsbasicpara(0x48);
if((*recbuf&0x3f)==25) procsbasicpara(0x48);
if((*recbuf&0x3f)==26) procsbasicpara(0x48);
if((*recbuf&0x3f)==27) procsbasicpara(0x48);
if((*recbuf&0x3f)==28) procsbasicpara(0x48);
if((*recbuf&0x3f)==29) procsbasicpara(0x48);
if((*recbuf&0x3f)==30) procsbasicpara(0x48);
if((*recbuf&0x3f)==31) procsbasicpara(0x48);
len-=UDTlen;
if (len<li || li==0)
{if((*recbuf&0x3f)==32) procsbasicpara(0x48);
if((*recbuf&0x3f)==33) procsbasicpara(0x48);
if((*recbuf&0x3f)==34) procsbasicpara(0x48);
}
if(indeffmt!=0) {recbuf+=2;UDTlen-=2;}
break;
case 0: //启动DP:0
indeffmt=procsequencetag(0x01); //FCI帐单计费特性 sequence
//业务键
if((*recbuf&0x3f)==0) procsbasicpara(0x03);
//“所拨数字”
if((*recbuf&0x3f)==1) procsbasicpara(0x06);
//被叫用户号码
if((*recbuf&0x3f)==2) procINAPADDR(0x09);
//主叫用户号码
if((*recbuf&0x3f)==3) procINAPADDR(0x0D);
//主叫用户商业集团ID
if((*recbuf&0x3f)==4) procINAPADDR(0x11);
//主叫用户类别
if((*recbuf&0x3f)==5) procsbasicpara(0x15);
//主叫用户子地址
if((*recbuf&0x3f)==6) procINAPADDR(0x18);
//遇到呼叫间隙(枚举)
if((*recbuf&0x3f)==7) procsbasicpara(0x1c);
//IPSSP能力
if((*recbuf&0x3f)==8) procsbasicpara(0x1f);
//遇到呼叫间隙(枚举)
if((*recbuf&0x3f)==9) procsbasicpara(0x22);
//位置号码
if((*recbuf&0x3f)==10) procINAPADDR(0x25);
//杂项呼叫信息
if((*recbuf&0x3f)==0x2b)//杂项呼叫信息
{indeffmt2=procsequencetag(0x29);//杂项呼叫信息 sequence
if((*recbuf&0x3f)==0) procsbasicpara(0x2b); //信息类型(枚举)
if((*recbuf&0x3f)==1) procsbasicpara(0x2e); //dp分配(枚举)
if(indeffmt2!=0) {recbuf+=2;UDTlen-=2;}
}//杂项呼叫信息
//原被叫用户ID
if((*recbuf&0x3f)==12) procINAPADDR(0x31);
//业务轮廓表示语
if((*recbuf&0x3f)==13) procsbasicpara(0x35);
//终端类型(枚举)
if((*recbuf&0x3f)==14) procsbasicpara(0x38);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -