📄 svinapdisp.cpp
字号:
//“扩展”
if((*recbuf&0x3f)==0x2f) ProcExpand(0x3b);
//触发类型(枚举)
if((*recbuf&0x3f)==16) procsbasicpara(0x48);
//高层一致性
if((*recbuf&0x3f)==23) procsbasicpara(0x4b);
//业务相互作用表示语
if((*recbuf&0x3f)==24) procsbasicpara(0x4e);
//附加主叫用户号码
if((*recbuf&0x3f)==25) procINAPADDR(0x51);
//前向呼叫指示
if((*recbuf&0x3f)==26) procsbasicpara(0x55);
//“承载能力”选择“承载能力1”“传输媒介要求”
if((*recbuf&0x3f)==0x3b)//承载能力:27
{indeffmt2=procsequencetag(0x58);//承载能力 sequence
if((*recbuf&0x1f)==0) procsbasicpara(0x5a); //承载能力1
else if((*recbuf&0x1f)==1) procsbasicpara(0x5d); //传输媒介要求
if(indeffmt2!=0) {recbuf+=2;UDTlen-=2;}
}//承载能力
//BCSM事件类型(枚举)
if((*recbuf&0x3f)==28) procsbasicpara(0x60);
//改向用户ID
if((*recbuf&0x3f)==29) procINAPADDR(0x63);
//改向信息
if((*recbuf&0x3f)==30) procsbasicpara(0x67);
if(indeffmt!=0) {recbuf+=2;UDTlen-=2;}
break;
case 32: //启动试呼:32
indeffmt=procsequencetag(0x01); //sequence
//目的地路由地址
indeffmt2=procsequencetag(0x03); //目的地路由地址 sequence
while((*recbuf&0x3f)==0x04) procINAPADDR(0x05); //被叫用户号码
if(indeffmt2!=0) {recbuf+=2;UDTlen-=2;}
//振铃模式
if((*recbuf&0x3f)==1) procsbasicpara(0x09);
//与ISDN接入相关的信息
if((*recbuf&0x3f)==2) procsbasicpara(0x0c);
//跨越标志
if((*recbuf&0x3f)==3) procsbasicpara(0x0f);
//“扩展”
if((*recbuf&0x3f)==0x24) ProcExpand(0x13);
//业务相互作用表示语
if((*recbuf&0x3f)==29) procsbasicpara(0x20);
//主叫用户号码
if((*recbuf&0x3f)==30) procINAPADDR(0x23);
if(indeffmt!=0) {recbuf+=2;UDTlen-=2;}
break;
case 47: //播送通知:47
indeffmt=procsequencetag(0x01); //sequence
//要发送的信息
if((*recbuf&0x3f)==0x20) ProcSendingInfo(0x03,0x4b); //要发送的信息
//禁止由IP启动拆线(BOOL)
if((*recbuf&0x3f)==0x01) procsbasicpara(0x38);
//请求通知完成(BOOL)
if((*recbuf&0x3f)==0x02) procsbasicpara(0x3b);
//“扩展”
if((*recbuf&0x3f)==0x23) ProcExpand(0x3e);
if(indeffmt!=0) {recbuf+=2;UDTlen-=2;}
break;
case 48: //提示并收集用户信息:48
if(compt==1)//operate
{indeffmt=procsequencetag(0x01); //sequence
//收集的信息选择“收集的数字”“IA5信息”
indeffmt2=procsequencetag(0x03); //收集的信息 sequence
if((*recbuf&0x3f)==0x20)//收集的数字
{indeffmt3=procsequencetag(0x05); //收集的数字 sequence
if((*recbuf&0x3f)==0) procsbasicpara(0x07); //最小数字个数
if((*recbuf&0x3f)==1) procsbasicpara(0x0a); //最大数字个数
if((*recbuf&0x3f)==2) procsbasicpara(0x0d); //应答结束数字
if((*recbuf&0x3f)==3) procsbasicpara(0x10); //取消数字
if((*recbuf&0x3f)==4) procsbasicpara(0x13); //开始数字
if((*recbuf&0x3f)==5) procsbasicpara(0x16); //首位超时
if((*recbuf&0x3f)==6) procsbasicpara(0x19); //位间超时
if((*recbuf&0x3f)==7) procsbasicpara(0x1c); //差错处理(枚举)
if((*recbuf&0x3f)==8) procsbasicpara(0x1f); //中断通知表示语(BOOL)
if((*recbuf&0x3f)==9) procsbasicpara(0x22); //语音信息(BOOL)
if((*recbuf&0x3f)==10) procsbasicpara(0x25); //语音反馈(BOOL)
if(indeffmt3!=0) {recbuf+=2;UDTlen-=2;}
}//收集的数字
else if((*recbuf&0x3f)==1) procsbasicpara(0x28); //IA5信息(BOOL)
if(indeffmt2!=0) {recbuf+=2;UDTlen-=2;}
//禁止由IP启动拆线(BOOL)
procsbasicpara(0x2b);
//要发送的信息
if((*recbuf&0x3f)==0x22) ProcSendingInfo(0x2e,0x76);
//“扩展”
if((*recbuf&0x3f)==0x23) ProcExpand(0x63);
if(indeffmt!=0) {recbuf+=2;UDTlen-=2;}
}//operate
else//result
{if((*recbuf&0x3f)==0) procsbasicpara(0x70); //数字响应
else if((*recbuf&0x3f)==1) procsbasicpara(0x73); //IA5响应
}//result
break;
case 22: //释放呼叫:22
procCase(0x01);
break;
case 37: //请求报告当前状态:37
if(compt==1)//operate
{if((*recbuf&0x3f)==0) procsbasicpara(0x01); //选择"用户线ID"
else if((*recbuf&0x3f)==0x21) procResourceID(0x04); //选择"资源ID"
}//operate
else//result
{indeffmt=procsequencetag(0x1a); //sequence
//资源状态
if((*recbuf&0x3f)==0) procsbasicpara(0x1c);
//资源ID
if((*recbuf&0x3f)==0x21) procResourceID(0x04);//"资源ID"
//“扩展”
if((*recbuf&0x3f)==0x22) ProcExpand(0x1f);
if(indeffmt!=0) {recbuf+=2;UDTlen-=2;}
}//result
break;
case 38: //请求报告每一状态变化:38
indeffmt=procsequencetag(0x1a); //sequence
//资源ID
procResourceID(0x03);
//资源状态
if((*recbuf&0x3f)==1) procsbasicpara(0x17);
//相关ID
if((*recbuf&0x3f)==2) procsbasicpara(0x1a);
//监视持续时间
if((*recbuf&0x3f)==3) procsbasicpara(0x1d);
//“扩展”
if((*recbuf&0x3f)==0x24) ProcExpand(0x20);
//“承载能力”选择“承载能力1”“传输媒介要求”
if((*recbuf&0x3f)==0x25)//承载能力
{indeffmt2=procsequencetag(0x2d);
if((*recbuf&0x3f)==0) procsbasicpara(0x2f); //承载能力1
else if((*recbuf&0x3f)==1) procsbasicpara(0x32); //传输媒介要求
if(indeffmt2!=0) {recbuf+=2;UDTlen-=2;}
}//承载能力
if(indeffmt!=0) {recbuf+=2;UDTlen-=2;}
break;
case 25: //请求通知计费事件:25
indeffmt=procsequencetag(0x01); //sequence
while(*recbuf==0x30) //计费事件,P57
{len = UDTlen;
indeffmt2=procsequencetag(0x03); //计费事件 sequence
//计费事件类型
procsbasicpara(0x05);
//监视方式(枚举)
procsbasicpara(0x08);
//LEGID
if((*recbuf&0x3f)==0x22) procLegID(0x0b);
if(len <= UDTlen)
{
procmoredatadisp(UDTlen); //add by 2000.06.14
UDTlen = 0;
return;
}
if(indeffmt2!=0) {recbuf+=2;UDTlen-=2;}
}//计费事件
if(indeffmt!=0) {recbuf+=2;UDTlen-=2;}
break;
case 23: //请求报告BCSM事件:23
indeffmt=procsequencetag(0x01); //sequence
//BCSM事件组
indeffmt2=procsequencetag(0x03); //BCSM事件组 sequence
while(*recbuf==0x30)//BCSM事件
{len = UDTlen;
indeffmt3=procsequencetag(0x05); //BCSM事件 sequence
procsbasicpara(0x07); //BCSM事件类型(枚举)
procsbasicpara(0x0a); //监视方式(枚举)
if((*recbuf&0x3f)==0x22) procLegID(0x0d); //LEGID
if((*recbuf&0x3f)==0x3e)//DP规定准则:30
{indeffmt4=procsequencetag(0x15);//DP规定准则 sequence
if((*recbuf&0x3f)==0) procsbasicpara(0x17); //数字个数
else if((*recbuf&0x3f)==1) procsbasicpara(0x1a); //应用定时器
if(indeffmt4!=0) {recbuf+=2;UDTlen-=2;}
}//DP规定准则
if(len <= UDTlen)
{
procmoredatadisp(UDTlen); //add by 2000.06.14
UDTlen = 0;
return;
}
if(indeffmt3!=0) {recbuf+=2;UDTlen-=2;}
}//BCSM事件
if(indeffmt2!=0) {recbuf+=2;UDTlen-=2;}
//BCSM事件相关ID
if((*recbuf&0x3f)==1) procsbasicpara(0x1d);
//“扩展”
if((*recbuf&0x3f)==0x22) ProcExpand(0x20);
if(indeffmt!=0) {recbuf+=2;UDTlen-=2;}
break;
case 33: //重设定时器:33
indeffmt=procsequencetag(0x01); //sequence
//定时器ID(枚举)
if((*recbuf&0x3f)==0) procsbasicpara(0x03);
//定时器值
if((*recbuf&0x3f)==1) procsbasicpara(0x06);
//“扩展”
if((*recbuf&0x3f)==0x22) ProcExpand(0x09);
if(indeffmt!=0) {recbuf+=2;UDTlen-=2;}
break;
case 30: //选择设备:30
indeffmt=procsequencetag(0x01); //sequence
//振铃模式
if((*recbuf&0x3f)==0) procsbasicpara(0x03);
//目的地路由地址,P59
if((*recbuf&0x3f)==0x21)//目的地路由地址
{indeffmt2=procsequencetag(0x06);//目的地路由地址 sequence
while((*recbuf&0x3f)==0x04) procINAPADDR(0x08); //被叫用户号码
if(indeffmt2!=0) {recbuf+=2;UDTlen-=2;}
}//目的地路由地址
//与ISDN接入相关的信息
if((*recbuf&0x3f)==2) procsbasicpara(0x0c);
//被叫设备群
if((*recbuf&0x3f)==0x23)//被叫设备群
{indeffmt2=procsequencetag(0x0f);//被叫设备群 sequence
if((*recbuf&0x3f)==0) procsbasicpara(0x11); //中继群ID
else if((*recbuf&0x3f)==1) procsbasicpara(0x14);//单个设备ID
else if((*recbuf&0x3f)==2) procsbasicpara(0x17);//搜索群
else if((*recbuf&0x3f)==3) procsbasicpara(0x1a);//路由索引
if(indeffmt2!=0) {recbuf+=2;UDTlen-=2;}
}//被叫设备群
//被叫设备群成员
if((*recbuf&0x3f)==4) procsbasicpara(0x1d);
//原被叫用户ID
if((*recbuf&0x3f)==5) procINAPADDR(0x20);
//“扩展”
if((*recbuf&0x3f)==0x26) ProcExpand(0x24);
if(indeffmt!=0) {recbuf+=2;UDTlen-=2;}
break;
case 46: //发送计费信息:46,具体信息待定
procSourcePARAdisp(0x01); //sequence
break;
case 43: //业务过滤响应:43
indeffmt=procsequencetag(0x01); //sequence
//计数器值
indeffmt2=procsequencetag(0x03); //计数器值 sequence
while(*recbuf==0x30)//计数器和值
{len=UDTlen;
indeffmt3=procsequencetag(0x05); //计数器和值 sequence
procsbasicpara(0x07);//计数器ID
procsbasicpara(0x0a);//计数器值
if(len <= UDTlen)
{
procmoredatadisp(UDTlen); //add by 2000.06.14
UDTlen = 0;
return;
}
if(indeffmt3!=0) {recbuf+=2;UDTlen-=2;}
}//计数器和值
if(indeffmt2!=0) {recbuf+=2;UDTlen-=2;}
//“过滤标准”选择“所拨数字”“主叫用户线ID”“业务键”“地址和业务”,P59
indeffmt2=procsequencetag(0x0d); //计数器值 sequence
if((*recbuf&0x3f)==0) procsbasicpara(0x0f); //所拨数字
else if((*recbuf&0x3f)==1) procsbasicpara(0x12); //主叫用户线ID
else if((*recbuf&0x3f)==2) procsbasicpara(0x15); //业务键
else if((*recbuf&0x3f)==0x23)//地址和业务
{indeffmt3=procsequencetag(0x18); //地址和业务 sequence
procINAPADDR(0x1a); //被叫地址值
procsbasicpara(0x15); //业务键
if((*recbuf&0x3f)==2) procINAPADDR(0x1e); //主叫地址值
if((*recbuf&0x3f)==3) procINAPADDR(0x22); //位置号码
if(indeffmt2!=0) {recbuf+=2;UDTlen-=2;}
}//地址和业务
if(indeffmt2!=0) {recbuf+=2;UDTlen-=2;}
//“扩展”
if((*recbuf&0x3f)==0x22) ProcExpand(0x26);
//响应条件(枚举)
if((*recbuf&0x3f)==3) procsbasicpara(0x33);
if(indeffmt!=0) {recbuf+=2;UDTlen-=2;}
break;
case 49: //专用资源报告:49
procNULL(0x01);
break;
case 40: //状态报告:40
indeffmt=procsequencetag(0x01); //sequence
//资源状态(枚举)
if((*recbuf&0x3f)==0) procsbasicpara(0x03);
//相关ID
if((*recbuf&0x3f)==1) procsbasicpara(0x06);
//资源ID
if((*recbuf&0x3f)==0x22) procResourceID(0x09);
//“扩展”
if((*recbuf&0x3f)==0x23) ProcExpand(0x20);
//报告条件(枚举)
if((*recbuf&0x3f)==4) procsbasicpara(0x2d);
if(indeffmt!=0) {recbuf+=2;UDTlen-=2;}
break;
default:
procmoredatadisp(UDTlen); //add by 2000.06.14
UDTlen = 0;
break;
}//switch
}
void procINAPERRdisp(unsigned char ec)
{ unsigned char indeffmt;
switch(ec)
{
case 1://取消失败:1
indeffmt=procsequencetag(0x01); //sequence
procsbasicpara(0x03); //问题(枚举)
procsbasicpara(0x06); //操作
if(indeffmt!=0) {recbuf+=2;UDTlen-=2;}
break;
case 10://所请求的信息差错:10
case 12://任务被拒绝:12
procsbasicpara(0x01); //枚举
break;
case 11://系统故障:11
procsbasicpara(0x01); //不知道网络资源(枚举)
break;
default:break;
}//switch
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -