📄 recsysdlg.cpp
字号:
{
SsmSetKB(trkinfo[i].opch,1); //回主叫ACM
trkinfo[i].trunk_state=WAITE_ANSWER;
SsmTalkWith(i,trkinfo[i].opch);
trkinfo[trkinfo[i].opch].trunk_state=WAITE_ANSWER;
throwmsg(trkinfo[i],"",p_orginfo);
// p_orginfo=p_orginfo%MAX_QUEUE;
::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,CHKCHN_ACM);
p_orginfo=(p_orginfo+1)%MAX_QUEUE;
}
break;
case DIAL_BUSYTONE: //被叫忙
{
SsmHangup(i);
// SsmHangup(trkinfo[i].opch);
SsmSetKB(trkinfo[i].opch,2); //回主叫SLB
trkinfo[i].trunk_state=CHN_IDLE;
trkinfo[trkinfo[i].opch].trunk_state=CHN_IDLE;
strcpy(trkinfo[i].clear_time,curtime);
throwmsg(trkinfo[i],"",p_orginfo);
::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,CHKCHN_BUSY);
p_orginfo=(p_orginfo+1)%MAX_QUEUE;
}
break;
case DIAL_FAILURE: //呼叫失败
{
getch=SsmGetAutoDialFailureReason(i);
SsmHangup(i);
// SsmHangup(trkinfo[i].opch);
SsmSetKB(trkinfo[i].opch,2); //回主叫SLB
trkinfo[i].trunk_state=CHN_IDLE;
trkinfo[trkinfo[i].opch].trunk_state=CHN_IDLE;
strcpy(trkinfo[i].clear_time,curtime);
sprintf(trkinfo[i].release_resean,"%d",getch);
throwmsg(trkinfo[i],"",p_orginfo);
::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,CHKCHN_DIALFAILURE);
p_orginfo=(p_orginfo+1)%MAX_QUEUE;
}
break;
case DIAL_INVALID_PHONUM: //空号
{
SsmHangup(i);
// SsmHangup(trkinfo[i].opch);
SsmSetKB(trkinfo[i].opch,5); //回主叫UNN
trkinfo[i].trunk_state=CHN_IDLE;
trkinfo[trkinfo[i].opch].trunk_state=CHN_IDLE;
strcpy(trkinfo[i].clear_time,curtime);
throwmsg(trkinfo[i],"",p_orginfo);
::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,CHKCHN_INVIALNO);
p_orginfo=(p_orginfo+1)%MAX_QUEUE;
}
break;
default:
break;
}
}
else //主叫方处理
{
trkinfo[trkinfo[i].opch].line_state=chstate;
if(chstate==S_CALL_STANDBY) //主叫挂机
{
SsmHangup(trkinfo[i].opch);
//若断断开双方连接失败,则显示出错信息
exerec=SsmStopTalkWith(i,trkinfo[i].opch);
if(exerec==-1)
{
SsmGetLastErrMsg(errmsg);
throwmsg(trkinfo[i],errmsg,p_orginfo);
::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,WATEANS_REV_OTHMSG);
p_orginfo=(p_orginfo+1)%MAX_QUEUE;
SsmStopTalkWith(i,trkinfo[i].opch);
}
//
trkinfo[i].trunk_state=CHN_IDLE;
trkinfo[trkinfo[i].opch].trunk_state=CHN_IDLE;
strcpy(trkinfo[i].clear_time,curtime);
throwmsg(trkinfo[trkinfo[i].opch],"",p_orginfo);
::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,CHKCHN_REV_OTHMSG);
p_orginfo=(p_orginfo+1)%MAX_QUEUE;
continue;
}
chstate=SsmChkAutoDial(trkinfo[i].opch);
switch(chstate) {
case DIAL_DIALING: //正在拨号
{
throwmsg(trkinfo[trkinfo[i].opch],"",p_orginfo);
::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,CHKCHN_DIALING);
p_orginfo=(p_orginfo+1)%MAX_QUEUE;
continue;
}
break;
case DIAL_ECHOTONE: //被叫示闲
{
SsmSetKB(i,1); //回主叫ACM
trkinfo[i].trunk_state=WAITE_ANSWER;
trkinfo[trkinfo[i].opch].trunk_state=WAITE_ANSWER;
SsmTalkWith(i,trkinfo[i].opch);
throwmsg(trkinfo[trkinfo[i].opch],"",p_orginfo);
::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,CHKCHN_ACM);
p_orginfo=(p_orginfo+1)%MAX_QUEUE;
}
break;
case DIAL_BUSYTONE: //被叫忙
{
// SsmHangup(i);
SsmHangup(trkinfo[i].opch);
SsmSetKB(i,2); //回主叫SLB
trkinfo[i].trunk_state=CHN_IDLE;
trkinfo[trkinfo[i].opch].trunk_state=CHN_IDLE;
strcpy(trkinfo[i].clear_time,curtime);
throwmsg(trkinfo[trkinfo[i].opch],"",p_orginfo);
SsmStopTalkWith(i,trkinfo[i].opch);
::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,CHKCHN_BUSY);
p_orginfo=(p_orginfo+1)%MAX_QUEUE;
}
break;
case DIAL_FAILURE: //呼叫失败
{
getch=SsmGetAutoDialFailureReason(trkinfo[i].opch);
// SsmHangup(i);
SsmSetKB(i,2); //回主叫SLB
SsmHangup(trkinfo[i].opch);
SsmStopTalkWith(i,trkinfo[i].opch);
trkinfo[i].trunk_state=CHN_IDLE;
trkinfo[trkinfo[i].opch].trunk_state=CHN_IDLE;
sprintf(trkinfo[trkinfo[i].opch].release_resean,"%d",chstate);
strcpy(trkinfo[i].clear_time,curtime);
throwmsg(trkinfo[trkinfo[i].opch],"",p_orginfo);
::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,CHKCHN_DIALFAILURE);
p_orginfo=(p_orginfo+1)%MAX_QUEUE;
}
break;
case DIAL_INVALID_PHONUM: //空号
{
// SsmHangup(i);
SsmSetKB(i,5); //回主叫UNN
SsmHangup(trkinfo[i].opch);
SsmStopTalkWith(i,trkinfo[i].opch);
trkinfo[i].trunk_state=CHN_IDLE;
trkinfo[trkinfo[i].opch].trunk_state=CHN_IDLE;
strcpy(trkinfo[i].clear_time,curtime);
throwmsg(trkinfo[trkinfo[i].opch],"",p_orginfo);
::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,CHKCHN_INVIALNO);
p_orginfo=(p_orginfo+1)%MAX_QUEUE;
}
break;
default:
break;
}
}
break;
}
//***************CHECK_CHN结束********************************************
//***************WAITE_ANSWER开始********************************************
case WAITE_ANSWER:
{
if(trkinfo[i].iscaller==false) //被叫方处理
{
trkinfo[i].line_state=chstate;
if(chstate==S_CALL_STANDBY) //被叫挂机
{
SsmHangup(trkinfo[i].opch);
SsmHangup(i);
//若断断开双方连接失败,则显示出错信息
exerec=SsmStopTalkWith(i,trkinfo[i].opch);
if(exerec==-1)
{
SsmGetLastErrMsg(errmsg);
throwmsg(trkinfo[i],errmsg,p_orginfo);
::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,WATEANS_REV_OTHMSG);
p_orginfo=(p_orginfo+1)%MAX_QUEUE;
SsmStopTalkWith(i,trkinfo[i].opch);
}
trkinfo[i].trunk_state=CHN_IDLE;
trkinfo[trkinfo[i].opch].trunk_state=CHN_IDLE;
strcpy(trkinfo[i].clear_time,curtime);
throwmsg(trkinfo[i],"",p_orginfo);
::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,CHKCHN_INHUNGUP);
p_orginfo=(p_orginfo+1)%MAX_QUEUE;
continue;
}
getch=SsmChkAutoDial(i);
switch(getch) {
case DIAL_NOANSWER: //被叫无人应答
{
SsmHangup(i);
SsmHangup(trkinfo[i].opch);
//若断断开双方连接失败,则显示出错信息
exerec=SsmStopTalkWith(i,trkinfo[i].opch);
if(exerec==-1)
{
SsmGetLastErrMsg(errmsg);
throwmsg(trkinfo[i],errmsg,p_orginfo);
::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,WATEANS_REV_OTHMSG);
p_orginfo=(p_orginfo+1)%MAX_QUEUE;
SsmStopTalkWith(i,trkinfo[i].opch);
}
//
trkinfo[i].trunk_state=CHN_IDLE;
trkinfo[trkinfo[i].opch].trunk_state=CHN_IDLE;
strcpy(trkinfo[i].clear_time,curtime);
throwmsg(trkinfo[i],"",p_orginfo);
::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,CHKCHN_NOANSWER);
p_orginfo=(p_orginfo+1)%MAX_QUEUE;
}
break;
case DIAL_VOICE: //被叫摘机
{
SsmPickup(trkinfo[i].opch); //帮主叫摘机
/* orginfo_queue[p_orginfo].trunkno=trkinfo[i].opch;
sprintf(orginfo_queue[p_orginfo].trkerrmsg,"SsmPickup");
::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,SHOW_SYS_MSG);
p_orginfo=(p_orginfo+1)%MAX_QUEUE;*/
SsmSetRecMixer(trkinfo[i].opch,true,2); //录主叫方
/* orginfo_queue[p_orginfo].trunkno=trkinfo[i].opch;
sprintf(orginfo_queue[p_orginfo].trkerrmsg,"SsmSetRecMixer");
::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,SHOW_SYS_MSG);
p_orginfo=(p_orginfo+1)%MAX_QUEUE;*/
SsmSetRecVolume(trkinfo[i].opch,2);
/* orginfo_queue[p_orginfo].trunkno=trkinfo[i].opch;
sprintf(orginfo_queue[p_orginfo].trkerrmsg,"SsmSetRecVolume");
::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,SHOW_SYS_MSG);
p_orginfo=(p_orginfo+1)%MAX_QUEUE;*/
if(trkinfo[i].EnRecord)
{
SsmRecToFile(trkinfo[i].opch,trkinfo[i].rec_filename,
17, //IMA ADPCM
0L, //录音起始位置
0xffffffff, //4G录音大小
10,
0 //以文件大小决定录音
);
/* sprintf(orginfo_queue[p_orginfo].trkerrmsg,"SsmRecToFile");
orginfo_queue[p_orginfo].trunkno=trkinfo[i].opch;
::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,SHOW_SYS_MSG);
p_orginfo=(p_orginfo+1)%MAX_QUEUE;*/
}
trkinfo[i].trunk_state=RECORDING;
trkinfo[trkinfo[i].opch].trunk_state=RECORDING;
throwmsg(trkinfo[i],"",p_orginfo);
strcpy(trkinfo[i].answer_time,curtime);
strcpy(trkinfo[trkinfo[i].opch].answer_time,curtime);
::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,RECORDING_SAY);
p_orginfo=(p_orginfo+1)%MAX_QUEUE;
}
break;
default : break;
}
}
else //主叫方处理
{
trkinfo[trkinfo[i].opch].line_state=chstate;
if(chstate==S_CALL_STANDBY) //主叫挂机
{
SsmHangup(trkinfo[i].opch);
SsmHangup(i);
//若断断开双方连接失败,则显示出错信息
exerec=SsmStopTalkWith(i,trkinfo[i].opch);
if(exerec==-1)
{
SsmGetLastErrMsg(errmsg);
throwmsg(trkinfo[i],errmsg,p_orginfo);
::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,WATEANS_REV_OTHMSG);
p_orginfo=(p_orginfo+1)%MAX_QUEUE;
SsmStopTalkWith(i,trkinfo[i].opch);
}
//
trkinfo[i].trunk_state=CHN_IDLE;
trkinfo[trkinfo[i].opch].trunk_state=CHN_IDLE;
strcpy(trkinfo[i].clear_time,curtime);
throwmsg(trkinfo[trkinfo[i].opch],"",p_orginfo);
::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,CHKCHN_INHUNGUP);
p_orginfo=(p_orginfo+1)%MAX_QUEUE;
continue;
}
getch=SsmChkAutoDial(trkinfo[i].opch); //检测被叫
switch(getch) {
case DIAL_NOANSWER: //无人应答
{
SsmHangup(i);
SsmHangup(trkinfo[i].opch);
//若断断开双方连接失败,则显示出错信息
exerec=SsmStopTalkWith(i,trkinfo[i].opch);
if(exerec==-1)
{
SsmGetLastErrMsg(errmsg);
throwmsg(trkinfo[i],errmsg,p_orginfo);
::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,WATEANS_REV_OTHMSG);
p_orginfo=(p_orginfo+1)%MAX_QUEUE;
SsmStopTalkWith(i,trkinfo[i].opch);
}
//
trkinfo[i].trunk_state=CHN_IDLE;
trkinfo[trkinfo[i].opch].trunk_state=CHN_IDLE;
strcpy(trkinfo[i].clear_time,curtime);
throwmsg(trkinfo[trkinfo[i].opch],"",p_orginfo);
::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,CHKCHN_NOANSWER);
p_orginfo=(p_orginfo+1)%MAX_QUEUE;
}
break;
case DIAL_VOICE:
{
SsmPickup(i); //主叫摘机
/* sprintf(orginfo_queue[p_orginfo].trkerrmsg,"SsmPickup");
orginfo_queue[p_orginfo].trunkno=i;
::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,SHOW_SYS_MSG);
p_orginfo=(p_orginfo+1)%MAX_QUEUE;*/
SsmSetRecMixer(i,true,2); //录主叫方
/* orginfo_queue[p_orginfo].trunkno=i;
sprintf(orginfo_queue[p_orginfo].trkerrmsg,"SsmSetRecMixer");
::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,SHOW_SYS_MSG);
p_orginfo=(p_orginfo+1)%MAX_QUEUE;*/
SsmSetRecVolume(i,2);
/* orginfo_queue[p_orginfo].trunkno=i;
sprintf(orginfo_queue[p_orginfo].trkerrmsg,"SsmSetRecVolume");
::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,SHOW_SYS_MSG);
p_orginfo=(p_orginfo+1)%MAX_QUEUE;*/
if(trkinfo[i].EnRecord)
{
SsmRecToFile(i,trkinfo[i].rec_filename,
17, //IMA ADPCM
0L, //录音起始位置
0xffffffff, //4G录音大小
10,
0 //以文件大小决定录音
);
/* orginfo_queue[p_orginfo].trunkno=i;
sprintf(orginfo_queue[p_orginfo].trkerrmsg,"SsmRecToFile");
::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,SHOW_SYS_MSG);
p_orginfo=(p_orginfo+1)%MAX_QUEUE;*/
}
trkinfo[i].trunk_state=RECORDING;
trkinfo[trkinfo[i].opch].trunk_state=RECORDING;
strcpy(trkinfo[i].answer_time,curtime);
strcpy(trkinfo[trkinfo[i].opch].answer_time,curtime);
throwmsg(trkinfo[i],"",p_orginfo);
::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,RECORDING_SAY);
p_orginfo=(p_orginfo+1)%MAX_QUEUE;
}
break;
default: break;
}
}
break;
}
//***************WAITE_ANSWER结束********************************************
//***************RECORDING开始********************************************
case RECORDING:
{
if(trkinfo[i].iscaller==false) //被叫方处理
{
trkinfo[i].line_state=chstate;
switch(chstate)
{
case S_CALL_STANDBY: //被叫挂机
{
trkinfo[i].trunk_state=CHN_IDLE;
trkinfo[trkinfo[i].opch].trunk_state=CHN_IDLE;
strcpy(trkinfo[i].clear_time,curtime);
throwmsg(trkinfo[i],"",p_orginfo);
if(trkinfo[i].EnRecord)
{
SsmStopRecToFile(trkinfo[i].opch);
::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,RECORDING_HUNGUP_B);
}
else
{
::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,RECORDING_HUNGUP_NOREC);
}
SsmHangup(trkinfo[i].opch);
SsmHangup(i);
p_orginfo=(p_orginfo+1)%MAX_QUEUE;
//若断断开双方连接失败,则显示出错信息
exerec=SsmStopTalkWith(i,trkinfo[i].opch);
if(exerec==-1)
{
SsmGetLastErrMsg(errmsg);
throwmsg(trkinfo[i],errmsg,p_orginfo);
::PostMessage(HWND(pParam),WM_PROCMSG,p_orginfo,WATEANS_REV_OTHMSG);
p_o
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -