|
|
@@ -1,6 +1,7 @@
|
|
|
#include "stdafx.h"
|
|
|
#include "ConnectorFSM.h"
|
|
|
#include "../include/ModuleMix.h"
|
|
|
+#include "../include/EventCode.h"
|
|
|
|
|
|
|
|
|
#define RELEASEING_TIMER_INTERVAL 1200
|
|
|
@@ -11,8 +12,20 @@
|
|
|
#define LIVEDETECT_CONNECT_INTERVAL 5000 //live detection实体检测间隔5s
|
|
|
#define LIVEDETECTION_TIMEOUT 60000 //活体检测超时时间60s
|
|
|
|
|
|
+#ifndef MAX_PATH
|
|
|
+#define MAX_PATH 260
|
|
|
+#endif
|
|
|
|
|
|
|
|
|
+#ifdef RVC_OS_LINUX
|
|
|
+unsigned long GetTickCount()
|
|
|
+{
|
|
|
+ struct timespec ts;
|
|
|
+ clock_gettime(CLOCK_MONOTONIC, &ts);
|
|
|
+ return (ts.tv_sec * 1000 + ts.tv_nsec / 1000000);
|
|
|
+}
|
|
|
+#endif
|
|
|
+
|
|
|
class SyncServiceClient:public SyncService_ClientBase
|
|
|
{
|
|
|
public:
|
|
|
@@ -24,7 +37,7 @@ public:
|
|
|
class MyPhoneClient : public PhoneService_ClientBase
|
|
|
{
|
|
|
public:
|
|
|
- MyPhoneClient(CEntityBase *pEntity, ACMCallFSM* fsm) : PhoneService_ClientBase(pEntity), m_fsm(fsm) {}
|
|
|
+ MyPhoneClient(CEntityBase *pEntity, ACMCallFSM* fsm) : PhoneService_ClientBase(pEntity), m_fsm(fsm) {m_bSipConnected = false;}
|
|
|
virtual void OnMessage(ErrorCodeEnum Error, PhoneService_PhoneState_Info &Msg, CSmartPointer<IReleasable> pData)
|
|
|
{
|
|
|
Dbg("rx sip phone state = %d, status = %s", Msg.state, (LPCSTR)Msg.status);
|
|
|
@@ -43,15 +56,31 @@ public:
|
|
|
Dbg("sip channel connected");
|
|
|
FSMEvent *e = new FSMEvent(USER_EVT_SIP_STATE_CONNECTED);
|
|
|
m_fsm->PostEventFIFO(e);
|
|
|
+ m_bSipConnected = true;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case ePhone_Calling:
|
|
|
+ {
|
|
|
+ m_bSipConnected = false;
|
|
|
}
|
|
|
break;
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
|
+
|
|
|
+ if (ePhone_Terminated == Msg.state){
|
|
|
+ if (!m_bSipConnected){
|
|
|
+ char strmsg[MAX_PATH] = { 0 };
|
|
|
+ _snprintf(strmsg, MAX_PATH, "sip connect failed for %s.", Msg.status.GetData());
|
|
|
+ LogWarn(Severity_High, Error_Debug, LOG_WARN_COUNTERCONNECT_SIP_CONNECT_FAILED,strmsg);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+public:
|
|
|
ACMCallFSM *m_fsm;
|
|
|
+ int m_bSipConnected;
|
|
|
};
|
|
|
|
|
|
class MyChannelClient : public ChannelService_ClientBase
|
|
|
@@ -127,7 +156,10 @@ ErrorCodeEnum ACMCallFSM::OnInit()
|
|
|
m_pPhoneClient = new MyPhoneClient(m_pEntity, this);
|
|
|
Error = m_pPhoneClient->Connect();
|
|
|
if (Error != Error_Succeed)
|
|
|
+ {
|
|
|
+ LogError(Severity_Middle, Error_Hardware, EVENT_MOD_CONNECT_SIPPHONE_ERROR, "connect sip phone error");
|
|
|
goto on_error;
|
|
|
+ }
|
|
|
PhoneService_BeginState_Sub PhoneSub;
|
|
|
Error = m_pPhoneClient->BeginState(PhoneSub);
|
|
|
if (Error != Error_Succeed)
|
|
|
@@ -145,18 +177,15 @@ ErrorCodeEnum ACMCallFSM::OnInit()
|
|
|
m_nSysCallType = 0;
|
|
|
m_pChannelClient = new MyChannelClient(m_pEntity, this);
|
|
|
Error = m_pChannelClient->Connect();
|
|
|
- if (Error != Error_Succeed) {
|
|
|
- m_pChannelClient->SafeDelete();
|
|
|
- m_pChannelClient = NULL;
|
|
|
+ if (Error != Error_Succeed)
|
|
|
+ {
|
|
|
+ LogError(Severity_Middle, Error_Hardware, EVENT_MOD_CONNECT_ASSIST_ERROR, "connect assistant channel error");
|
|
|
goto on_error;
|
|
|
}
|
|
|
ChannelService_BeginState_Sub ChannelSub;
|
|
|
Error = m_pChannelClient->BeginState(ChannelSub);
|
|
|
- if (Error != Error_Succeed) {
|
|
|
- m_pChannelClient->GetFunction()->CloseSession();
|
|
|
- m_pChannelClient = NULL;
|
|
|
+ if (Error != Error_Succeed)
|
|
|
goto on_error;
|
|
|
- }
|
|
|
|
|
|
Dbg("fsm init ok!");
|
|
|
|
|
|
@@ -225,6 +254,7 @@ BOOL ACMCallFSM::ReConnectionSipphone()
|
|
|
Error = m_pPhoneClient->Connect();
|
|
|
if (Error != Error_Succeed)
|
|
|
{
|
|
|
+ LogError(Severity_Middle, Error_Hardware, EVENT_MOD_CONNECT_SIPPHONE_ERROR, "connect sip phone error");
|
|
|
m_pPhoneClient->SafeDelete();
|
|
|
Dbg("m_phoneClient connect fail!");
|
|
|
return FALSE;
|
|
|
@@ -298,15 +328,33 @@ void ACMCallFSM::OnStateTrans(int iSrcState, int iDstState)
|
|
|
if (iSrcState != FSM_STATE_INIT && iDstState != FSM_STATE_EXIT) {
|
|
|
int st1 = TranslateState(iSrcState);
|
|
|
int st2 = TranslateState(iDstState);
|
|
|
+
|
|
|
if (st1 != st2) {
|
|
|
PhoneState evt;
|
|
|
evt.state = st2;
|
|
|
evt.status = CSimpleStringA::Format("OnStateTrans from state %d to %d", st1, st2);
|
|
|
//LOG_TRACE(evt.status);
|
|
|
- if (!((st2 == eState_Fail)&&(m_nCurChanServer!=Error_Server)&&(m_nCurSipServer!=Error_Server))||m_bHangup)
|
|
|
+ if (!((st2 == eState_Fail)&&(m_nCurChanServer != Error_Server)&&(m_nCurSipServer != Error_Server))||m_bHangup)
|
|
|
{
|
|
|
- Dbg("Broadcast state from %d to %d", st1, st2);
|
|
|
- SpSendBroadcast(GetEntityBase()->GetFunction(), SP_MSG_OF(PhoneState), SP_MSG_SIG_OF(PhoneState), evt);
|
|
|
+ if (eState_Fail != st1 || eState_Connecting != st2){
|
|
|
+ Dbg("Broadcast state from %d to %d", st1, st2);
|
|
|
+ SpSendBroadcast(GetEntityBase()->GetFunction(), SP_MSG_OF(PhoneState), SP_MSG_SIG_OF(PhoneState), evt);
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ char strinfo[MAX_PATH] = {0};
|
|
|
+ _snprintf(strinfo, MAX_PATH,"state from %d to %d, auto reconnect, not broadcast state to ui.", st1, st2);
|
|
|
+ LogWarn(Severity_High, Error_Debug, LOG_WARN_COUNTERCONNECT_AUTO_RECONNECT,strinfo);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (eState_HandFree == st2 || eState_Pickup == st2){
|
|
|
+ if (eState_Connecting == st1){
|
|
|
+ LogWarn(Severity_High, Error_Debug, LOG_WARN_COUNTERCONNECT_CONNECT_SUCCESS, "connect success!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (eState_Fail == st1 && eState_Offline == st2){
|
|
|
+ LogWarn(Severity_High, Error_Debug, LOG_WARN_COUNTERCONNECT_CONNECT_FAILED, "connect failed!");
|
|
|
+ }
|
|
|
}
|
|
|
SetCallState(st2);
|
|
|
GetEntityBase()->GetFunction()->SetUserDefineState(st2+USER_SIP_OFFLINE);
|
|
|
@@ -324,7 +372,8 @@ ErrorCodeEnum ACMCallFSM::SetCallState(int state)
|
|
|
"B", // Broken
|
|
|
"F", // Fail
|
|
|
"R", // Releasing
|
|
|
- "L" // LiveDetect
|
|
|
+ "L", // LiveDetect
|
|
|
+ "V" // Recording
|
|
|
};
|
|
|
|
|
|
char* strCallState = "O";
|
|
|
@@ -347,6 +396,7 @@ void ACMCallFSM::s0_on_entry()
|
|
|
void ACMCallFSM::s0_on_exit()
|
|
|
{
|
|
|
m_bHangup = FALSE;
|
|
|
+ m_nStarttime = GetTickCount();
|
|
|
}
|
|
|
|
|
|
unsigned int ACMCallFSM::s0_on_event(FSMEvent* event)
|
|
|
@@ -356,12 +406,14 @@ unsigned int ACMCallFSM::s0_on_event(FSMEvent* event)
|
|
|
memset(&m_CallingParam,0,sizeof(m_CallingParam)); //正常呼叫
|
|
|
GetEntityBase()->GetFunction()->SetSysVar(SYSVAR_CALLTYPE, CALLTYPE_NORMAL); // 设置呼叫模式为常规呼叫
|
|
|
m_nSysCallType = 0;
|
|
|
+ LogWarn(Severity_High, Error_Debug, LOG_WARN_COUNTERCONNECT_PICKUPCALL,"begin pickup call");
|
|
|
}
|
|
|
else if (event->iEvt == USER_EVT_HANDFREE_CALL)
|
|
|
{
|
|
|
GetEntityBase()->GetFunction()->SetSysVar(SYSVAR_CALLTYPE,CALLTYPE_NORMAL); // 设置呼叫模式为常规呼叫
|
|
|
m_nSysCallType = 0;
|
|
|
memset(&m_CallingParam,0,sizeof(m_CallingParam)); // 正常呼叫
|
|
|
+ LogWarn(Severity_High, Error_Debug, LOG_WARN_COUNTERCONNECT_HANDFREECALL,"begin hand free call");
|
|
|
}
|
|
|
else if (event->iEvt == USER_EVT_COMMAND_CALL)
|
|
|
{
|
|
|
@@ -401,6 +453,7 @@ unsigned int ACMCallFSM::s0_on_event(FSMEvent* event)
|
|
|
//GetEntityBase()->GetFunction()->SetSysVar(SYSVAR_CALLTYPE,CALLTYPE_RECORD); // 设置呼叫模式为双录呼叫
|
|
|
m_nSysCallType = 0;
|
|
|
Dbg("start double record call,call type is %d.", m_CallingParam.nCallType);
|
|
|
+ LogWarn(Severity_High, Error_Debug, LOG_WARN_COUNTERCONNECT_DOUBLERECORDCALL,"begin double record call");
|
|
|
}
|
|
|
else if (event->iEvt == USER_EVT_STOPLOACALREMOTEVIDEO)
|
|
|
{
|
|
|
@@ -539,8 +592,8 @@ unsigned int ACMCallFSM::s10_on_event(FSMEvent* event)
|
|
|
void ACMCallFSM::s11_on_entry()
|
|
|
{
|
|
|
ErrorCodeEnum Error = Error_Succeed;
|
|
|
- if (m_nCurSipServer == Error_Server)
|
|
|
- {
|
|
|
+ LogWarn(Severity_High, Error_Debug, LOG_WARN_COUNTERCONNECT_MAKECALL,"begin make call");
|
|
|
+ if (m_nCurSipServer == Error_Server){
|
|
|
Error = Error_NetBroken;
|
|
|
}
|
|
|
if (Error == Error_Succeed)
|
|
|
@@ -602,28 +655,68 @@ unsigned int ACMCallFSM::s11_on_event(FSMEvent* event)
|
|
|
if (event->iEvt == USER_EVT_HANGUP)
|
|
|
{
|
|
|
m_bHangup = TRUE;
|
|
|
+ DWORD now = GetTickCount();
|
|
|
+ int interval = now - m_nStarttime;
|
|
|
+ char msg[128];
|
|
|
+ sprintf(msg, "sip connecting, customer active hangup after: %d", interval);
|
|
|
+ LogWarn(Severity_High, Error_Unexpect, LOG_WARN_COUNTERCONNECT_SIPCONNECT_HANGUP, msg);
|
|
|
}
|
|
|
else if (event->iEvt == USER_EVT_SIP_STATE_IDLE)
|
|
|
{
|
|
|
+ if (m_nCurSipServer == MAIN_SERVER){
|
|
|
+ LogWarn(Severity_High, Error_Unexpect, LOG_WARN_COUNTERCONNECT_MAIN_SIPCONNECT_SIPSTATE_IDLE,"sipphone connect main server failed");
|
|
|
+ }else if (m_nCurSipServer == BACK_SERVER){
|
|
|
+ LogWarn(Severity_High, Error_Unexpect, LOG_WARN_COUNTERCONNECT_BAK_SIPCONNECT_SIPSTATE_IDLE,"sipphone connect bak server failed");
|
|
|
+ }else{
|
|
|
+ LogWarn(Severity_High, Error_Unexpect, LOG_WARN_COUNTERCONNECT_SIPCONNECT_SIPSTATE_IDLE,"sipphone connect error server failed");
|
|
|
+ }
|
|
|
m_nCurSipServer?(m_nCurSipServer=Error_Server):(m_nCurSipServer=BACK_SERVER);
|
|
|
m_nSipErrorNum++;
|
|
|
//StopChannel();
|
|
|
}
|
|
|
else if (event->iEvt == USER_EVT_ASSISTCHAN_IDEL)
|
|
|
{
|
|
|
+ if (m_nCurSipServer == MAIN_SERVER){
|
|
|
+ LogWarn(Severity_High, Error_Unexpect, LOG_WARN_COUNTERCONNECT_MAIN_SIPCONNECT_CHANSTATE_IDLE,"chan mod idle, main server");
|
|
|
+ }else if (m_nCurSipServer == BACK_SERVER){
|
|
|
+ LogWarn(Severity_High, Error_Unexpect, LOG_WARN_COUNTERCONNECT_BAK_SIPCONNECT_CHANSTATE_IDLE,"chan mod idle, bak server");
|
|
|
+ }else{
|
|
|
+ LogWarn(Severity_High, Error_Unexpect, LOG_WARN_COUNTERCONNECT_SIPCONNECT_CHANSTATE_IDLE,"chan mod idle, error server");
|
|
|
+ }
|
|
|
ReConnectionAssistchan();
|
|
|
}
|
|
|
else if (event->iEvt == USER_EVT_SIPPHONE_IDEL)
|
|
|
{
|
|
|
+ if (m_nCurSipServer == MAIN_SERVER){
|
|
|
+ LogWarn(Severity_High, Error_Unexpect, LOG_WARN_COUNTERCONNECT_MAIN_SIPCONNECT_SIPENTITY_RESTART,"sipphone mod idle, main server");
|
|
|
+ }else if (m_nCurSipServer == BACK_SERVER){
|
|
|
+ LogWarn(Severity_High, Error_Unexpect, LOG_WARN_COUNTERCONNECT_BAK_SIPCONNECT_SIPENTITY_RESTART,"sipphone mod idle, bak server");
|
|
|
+ }else{
|
|
|
+ LogWarn(Severity_High, Error_Unexpect, LOG_WARN_COUNTERCONNECT_SIPCONNECT_SIPENTITY_RESTART,"sipphone mod idle, error server");
|
|
|
+ }
|
|
|
ReConnectionSipphone();
|
|
|
}
|
|
|
else if (event->iEvt == EVT_TIMER)
|
|
|
{
|
|
|
+ if (m_nCurSipServer == MAIN_SERVER){
|
|
|
+ LogWarn(Severity_High, Error_Unexpect, LOG_WARN_COUNTERCONNECT_MAIN_SIPCONNECT_TIMEOUT,"sipphone connect timeout, main server");
|
|
|
+ }else if (m_nCurSipServer == BACK_SERVER){
|
|
|
+ LogWarn(Severity_High, Error_Unexpect, LOG_WARN_COUNTERCONNECT_BAK_SIPCONNECT_TIMEOUT,"sipphone connect timeout, bak server");
|
|
|
+ }else{
|
|
|
+ LogWarn(Severity_High, Error_Unexpect, LOG_WARN_COUNTERCONNECT_SIPCONNECT_TIMEOUT,"sipphone connect timeout, error server");
|
|
|
+ }
|
|
|
Dbg("sip call timeout,release call");
|
|
|
m_nSipErrorNum++;
|
|
|
}
|
|
|
else if (event->iEvt == USER_EVT_JMP_FAIL)
|
|
|
{
|
|
|
+ if (m_nCurSipServer == MAIN_SERVER){
|
|
|
+ LogWarn(Severity_High, Error_Unexpect, LOG_WARN_COUNTERCONNECT_MAIN_SIPCONNECT_FUNC_FAILED,"sipphone connect func failed, main server");
|
|
|
+ }else if (m_nCurSipServer == BACK_SERVER){
|
|
|
+ LogWarn(Severity_High, Error_Unexpect, LOG_WARN_COUNTERCONNECT_BAK_SIPCONNECT_FUNC_FAILED,"sipphone connect func failed, bak server");
|
|
|
+ }else{
|
|
|
+ LogWarn(Severity_High, Error_Unexpect, LOG_WARN_COUNTERCONNECT_SIPCONNECT_FUNC_FAILED,"sipphone connect func failed, error server");
|
|
|
+ }
|
|
|
m_nSipErrorNum++;
|
|
|
}
|
|
|
else if (event->iEvt == USER_EVT_STOPLOACALREMOTEVIDEO)
|
|
|
@@ -635,6 +728,7 @@ unsigned int ACMCallFSM::s11_on_event(FSMEvent* event)
|
|
|
}
|
|
|
return 0;
|
|
|
}
|
|
|
+
|
|
|
void ACMCallFSM::s12_on_entry()
|
|
|
{
|
|
|
ErrorCodeEnum Error = Error_Succeed;
|
|
|
@@ -676,15 +770,28 @@ void ACMCallFSM::s12_on_entry()
|
|
|
PostEventFIFO(new FSMEvent(USER_EVT_JMP_FAIL));
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
void ACMCallFSM::s12_on_exit() {}
|
|
|
unsigned int ACMCallFSM::s12_on_event(FSMEvent* event)
|
|
|
{
|
|
|
if (event->iEvt == USER_EVT_HANGUP)
|
|
|
{
|
|
|
m_bHangup = TRUE;
|
|
|
+ DWORD now = GetTickCount();
|
|
|
+ int interval = now - m_nStarttime;
|
|
|
+ char msg[128];
|
|
|
+ sprintf(msg, "chan connecting, customer active hangup after: %d", interval);
|
|
|
+ LogWarn(Severity_High, Error_Unexpect, LOG_WARN_COUNTERCONNECT_CHANCONNECT_HANGUP, msg);
|
|
|
}
|
|
|
else if (event->iEvt == USER_EVT_SIP_STATE_IDLE)
|
|
|
{
|
|
|
+ if (m_nCurChanServer == MAIN_SERVER){
|
|
|
+ LogWarn(Severity_High, Error_Unexpect, LOG_WARN_COUNTERCONNECT_MAIN_CHANCONNECT_SIPSTATE_IDLE,"sipphone connect server failed at channel connect, main server");
|
|
|
+ }else if (m_nCurChanServer == BACK_SERVER){
|
|
|
+ LogWarn(Severity_High, Error_Unexpect, LOG_WARN_COUNTERCONNECT_BAK_CHANCONNECT_SIPSTATE_IDLE,"sipphone connect server failed at channel connect, bak server");
|
|
|
+ }else{
|
|
|
+ LogWarn(Severity_High, Error_Unexpect, LOG_WARN_COUNTERCONNECT_CHANCONNECT_SIPSTATE_IDLE,"sipphone connect server failed at channel connect, error server");
|
|
|
+ }
|
|
|
m_nCurSipServer?(m_nCurSipServer=Error_Server):(m_nCurSipServer=BACK_SERVER);
|
|
|
StopChannel();
|
|
|
}
|
|
|
@@ -692,6 +799,13 @@ unsigned int ACMCallFSM::s12_on_event(FSMEvent* event)
|
|
|
{
|
|
|
if (!m_bHangup)
|
|
|
{
|
|
|
+ if (m_nCurChanServer == MAIN_SERVER){
|
|
|
+ LogWarn(Severity_High, Error_Unexpect, LOG_WARN_COUNTERCONNECT_MAIN_CHANCONNECT_CHANSTATE_IDLE,"chan connect server failed, main server");
|
|
|
+ }else if (m_nCurChanServer == BACK_SERVER){
|
|
|
+ LogWarn(Severity_High, Error_Unexpect, LOG_WARN_COUNTERCONNECT_BAK_CHANCONNECT_CHANSTATE_IDLE,"chan connect server failed, bak server");
|
|
|
+ }else{
|
|
|
+ LogWarn(Severity_High, Error_Unexpect, LOG_WARN_COUNTERCONNECT_CHANCONNECT_CHANSTATE_IDLE,"chan connect server failed, error server");
|
|
|
+ }
|
|
|
m_nCurChanServer?(m_nCurChanServer=Error_Server):(m_nCurChanServer=BACK_SERVER);
|
|
|
}
|
|
|
HangupCall();
|
|
|
@@ -704,10 +818,24 @@ unsigned int ACMCallFSM::s12_on_event(FSMEvent* event)
|
|
|
}
|
|
|
else if (event->iEvt == USER_EVT_ASSISTCHAN_IDEL)
|
|
|
{
|
|
|
+ if (m_nCurChanServer == MAIN_SERVER){
|
|
|
+ LogWarn(Severity_High, Error_Unexpect, LOG_WARN_COUNTERCONNECT_MAIN_CHANCONNECT_CHANENTITY_RESTART,"chan mod idle, main server");
|
|
|
+ }else if (m_nCurChanServer == BACK_SERVER){
|
|
|
+ LogWarn(Severity_High, Error_Unexpect, LOG_WARN_COUNTERCONNECT_BAK_CHANCONNECT_CHANENTITY_RESTART,"chan mod idle, bak server");
|
|
|
+ }else{
|
|
|
+ LogWarn(Severity_High, Error_Unexpect, LOG_WARN_COUNTERCONNECT_CHANCONNECT_CHANENTITY_RESTART,"chan mod idle, error server");
|
|
|
+ }
|
|
|
ReConnectionAssistchan();
|
|
|
}
|
|
|
else if (event->iEvt == USER_EVT_SIPPHONE_IDEL)
|
|
|
{
|
|
|
+ if (m_nCurChanServer == MAIN_SERVER){
|
|
|
+ LogWarn(Severity_High, Error_Unexpect, LOG_WARN_COUNTERCONNECT_MAIN_CHANCONNECT_SIPENTITY_RESTART,"sipphone mod idle, main server");
|
|
|
+ }else if (m_nCurChanServer == BACK_SERVER){
|
|
|
+ LogWarn(Severity_High, Error_Unexpect, LOG_WARN_COUNTERCONNECT_BAK_CHANCONNECT_SIPENTITY_RESTART,"sipphone mod idle, bak server");
|
|
|
+ }else{
|
|
|
+ LogWarn(Severity_High, Error_Unexpect, LOG_WARN_COUNTERCONNECT_CHANCONNECT_SIPENTITY_RESTART,"sipphone mod idle, error server");
|
|
|
+ }
|
|
|
ReConnectionSipphone();
|
|
|
}
|
|
|
else if (event->iEvt == USER_EVT_STOPLOACALREMOTEVIDEO)
|
|
|
@@ -717,9 +845,20 @@ unsigned int ACMCallFSM::s12_on_event(FSMEvent* event)
|
|
|
m_bHangup=TRUE;
|
|
|
StopVideo();
|
|
|
}
|
|
|
+ else if (event->iEvt == USER_EVT_JMP_FAIL)
|
|
|
+ {
|
|
|
+ if (m_nCurChanServer == MAIN_SERVER){
|
|
|
+ LogWarn(Severity_High, Error_Unexpect, LOG_WARN_COUNTERCONNECT_MAIN_CHANCONNECT_FUNC_FAILED,"chan connect func failed, main server");
|
|
|
+ }else if (m_nCurChanServer == BACK_SERVER){
|
|
|
+ LogWarn(Severity_High, Error_Unexpect, LOG_WARN_COUNTERCONNECT_BAK_CHANCONNECT_FUNC_FAILED,"chan connect func failed, bak server");
|
|
|
+ }else{
|
|
|
+ LogWarn(Severity_High, Error_Unexpect, LOG_WARN_COUNTERCONNECT_CHANCONNECT_FUNC_FAILED,"chan connect func failed, error server");
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
return 0;
|
|
|
}
|
|
|
+
|
|
|
void ACMCallFSM::s13_on_entry()
|
|
|
{
|
|
|
if (m_bHandFree)
|
|
|
@@ -731,7 +870,9 @@ void ACMCallFSM::s13_on_entry()
|
|
|
PostEventLIFO(new FSMEvent(USER_EVT_JMP_PICKUP));
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
void ACMCallFSM::s13_on_exit() {}
|
|
|
+
|
|
|
unsigned int ACMCallFSM::s13_on_event(FSMEvent* event)
|
|
|
{
|
|
|
if (event->iEvt == USER_EVT_ASSISTCHAN_IDEL)
|
|
|
@@ -828,7 +969,8 @@ unsigned int ACMCallFSM::s21_on_event(FSMEvent* event)
|
|
|
PostEventFIFO(new FSMEvent(USER_EVT_JMP_FAIL));
|
|
|
//重启mod_sipphone
|
|
|
//RealSipErrorCheck();
|
|
|
- LogEvent(Severity_High,EVENT_MOD_RELEASESIP_TIMEOUT,"restart sipphone ");
|
|
|
+ LogEvent(Severity_Middle, EVENT_MOD_RELEASESIP_TIMEOUT,"restart sipphone");
|
|
|
+ LogWarn(Severity_High, Error_Unexpect, LOG_WARN_COUNTERCONNECT_RESTART_SIPPHONE,"restart sipphone");
|
|
|
}
|
|
|
}
|
|
|
return 0;
|
|
|
@@ -887,7 +1029,8 @@ unsigned int ACMCallFSM::s23_on_event(FSMEvent* event)
|
|
|
{
|
|
|
m_nSipErrorNum = 0;
|
|
|
//RealSipErrorCheck();
|
|
|
- LogEvent(Severity_High,EVENT_MOD_RELEASESIP_TIMEOUT,"restart sipphone ");
|
|
|
+ LogEvent(Severity_Middle, EVENT_MOD_RELEASESIP_TIMEOUT,"restart sipphone ");
|
|
|
+ LogWarn(Severity_High, Error_Unexpect, LOG_WARN_COUNTERCONNECT_RESTART_SIPPHONE,"FAIL TIMES, restart sipphone ");
|
|
|
}
|
|
|
}
|
|
|
return 0;
|
|
|
@@ -1041,7 +1184,8 @@ unsigned int ACMCallFSM::s52_on_event(FSMEvent* event)
|
|
|
PostEventFIFO(new FSMEvent(USER_EVT_JMP_FAIL));
|
|
|
//重启mod_sipphone
|
|
|
//RealSipErrorCheck();
|
|
|
- LogEvent(Severity_High,EVENT_MOD_RELEASESIP_TIMEOUT,"restart sipphone ");
|
|
|
+ LogEvent(Severity_Middle, EVENT_MOD_RELEASESIP_TIMEOUT,"restart sipphone ");
|
|
|
+ LogWarn(Severity_High, Error_Unexpect, LOG_WARN_COUNTERCONNECT_RESTART_SIPPHONE,"restart sipphone ");
|
|
|
}
|
|
|
|
|
|
}
|
|
|
@@ -1071,7 +1215,8 @@ unsigned int ACMCallFSM::s53_on_event(FSMEvent* event)
|
|
|
{
|
|
|
m_nSipErrorNum = 0;
|
|
|
//RealSipErrorCheck();
|
|
|
- LogEvent(Severity_High,EVENT_MOD_RELEASESIP_TIMEOUT,"restart sipphone ");
|
|
|
+ LogEvent(Severity_Middle, EVENT_MOD_RELEASESIP_TIMEOUT,"restart sipphone ");
|
|
|
+ LogWarn(Severity_High, Error_Unexpect, LOG_WARN_COUNTERCONNECT_RESTART_SIPPHONE,"FAIL TIMES, restart sipphone ");
|
|
|
}
|
|
|
}
|
|
|
return 0;
|
|
|
@@ -1151,7 +1296,8 @@ unsigned int ACMCallFSM::s62_on_event(FSMEvent* event)
|
|
|
PostEventFIFO(new FSMEvent(USER_EVT_JMP_FAIL));
|
|
|
//重启mod_sipphone
|
|
|
//RealSipErrorCheck();
|
|
|
- LogEvent(Severity_High,EVENT_MOD_RELEASESIP_TIMEOUT,"restart sipphone ");
|
|
|
+ LogEvent(Severity_Middle, EVENT_MOD_RELEASESIP_TIMEOUT,"restart sipphone ");
|
|
|
+ LogWarn(Severity_High, Error_Unexpect, LOG_WARN_COUNTERCONNECT_RESTART_SIPPHONE,"restart sipphone ");
|
|
|
}
|
|
|
}
|
|
|
return 0;
|
|
|
@@ -1180,7 +1326,8 @@ unsigned int ACMCallFSM::s63_on_event(FSMEvent* event)
|
|
|
{
|
|
|
m_nSipErrorNum = 0;
|
|
|
//RealSipErrorCheck();
|
|
|
- LogEvent(Severity_High,EVENT_MOD_RELEASESIP_TIMEOUT,"restart sipphone ");
|
|
|
+ LogEvent(Severity_Middle, EVENT_MOD_RELEASESIP_TIMEOUT,"restart sipphone ");
|
|
|
+ LogWarn(Severity_High, Error_Unexpect, LOG_WARN_COUNTERCONNECT_RESTART_SIPPHONE,"FAIL TIMES, restart sipphone ");
|
|
|
}
|
|
|
}
|
|
|
return 0;
|
|
|
@@ -1212,8 +1359,6 @@ int ACMCallFSM::TranslateState( int innerState )
|
|
|
case s52:
|
|
|
case s53:
|
|
|
return eState_Broken;
|
|
|
- case s7:
|
|
|
- case s14:
|
|
|
case s60:
|
|
|
case s61:
|
|
|
case s62:
|
|
|
@@ -1221,6 +1366,9 @@ int ACMCallFSM::TranslateState( int innerState )
|
|
|
return eState_Releasing;
|
|
|
case s9:
|
|
|
return eState_LiveDetect;
|
|
|
+ case s7:
|
|
|
+ case s14:
|
|
|
+ return eState_Recording;
|
|
|
default:
|
|
|
assert(0);
|
|
|
return 0;
|