|
@@ -17,6 +17,9 @@
|
|
|
#define MAX_PATH 260
|
|
|
#endif
|
|
|
|
|
|
+#ifndef RVC_CALLROUTE_HTTP_API
|
|
|
+#define RVC_CALLROUTE_HTTP_API "/api/route/query"
|
|
|
+#endif // !RVC_CALLROUTE_HTTP_API
|
|
|
|
|
|
static const char* connect_failed_case_table[] = {
|
|
|
"",
|
|
@@ -151,28 +154,39 @@ ErrorCodeEnum ACMCallFSM::OnInit()
|
|
|
memset(m_iSIPProxyPort,0,sizeof(m_iSIPProxyPort));
|
|
|
memset(m_strChanCallNum,0,sizeof(m_strChanCallNum));
|
|
|
memset(m_strChanProxyIP,0,sizeof(m_strChanProxyIP));
|
|
|
- memset(m_iSIPProxyPort,0,sizeof(m_iSIPProxyPort));
|
|
|
+ memset(m_iChanProxyPort, 0, sizeof(m_iChanProxyPort));
|
|
|
m_strCallRouteIP = NULL;
|
|
|
m_iCallRoutePort = 0;
|
|
|
m_strCallRouteBranchNo = NULL;
|
|
|
m_strCallRouteAccessNo = NULL;
|
|
|
m_pCallRouteList = NULL;
|
|
|
m_strDefaultServer = NULL;
|
|
|
+ m_strHttpCallRouteAddr = NULL;
|
|
|
+ m_strHttpServerAPI = RVC_CALLROUTE_HTTP_API;
|
|
|
+ m_strQueueName = NULL;
|
|
|
+ m_strAddClientLevel = NULL;
|
|
|
+ m_iCallRouteType = 0;
|
|
|
m_LastSipError = Error_Succeed;
|
|
|
m_LastAssistError = Error_Succeed;
|
|
|
+ m_bNeedQueueName = FALSE;
|
|
|
ErrorCodeEnum Error = LoadConfig();
|
|
|
- if (Error != Error_Succeed)
|
|
|
+ if (Error != Error_Succeed) {
|
|
|
goto on_error;
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("LoadConfig success");
|
|
|
+ }
|
|
|
+
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("LoadConfig success");
|
|
|
GetEntityBase()->GetFunction()->SetSysVar("CallState", "O"); // set to offline state
|
|
|
Error = LoadTerminalId();
|
|
|
- if (Error != Error_Succeed)
|
|
|
+ if (Error != Error_Succeed) {
|
|
|
goto on_error;
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("sip proxy ip1:%s,num1:%s,port1:%d;ip2:%s,num2:%s,port2:%d", (LPCSTR)m_strSIPProxyIP[0],(LPCSTR)m_strSIPCallNum[0], m_iSIPProxyPort[0],(LPCSTR)m_strSIPProxyIP[1],(LPCSTR)m_strSIPCallNum[1], m_iSIPProxyPort[1]);
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("chan proxy ip1:%s,num1:%s,port1:%d;ip2:%s,num2:%s,port2:%d", (LPCSTR)m_strChanProxyIP[0],(LPCSTR)m_strChanCallNum[0], m_iChanProxyPort[0],(LPCSTR)m_strChanProxyIP[1],(LPCSTR)m_strChanCallNum[1], m_iChanProxyPort[1]);
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("CallRouteIP:%s,port:%d", (LPCSTR)m_strCallRouteIP,m_iCallRoutePort);
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("TerminalId: %s", (LPCSTR)m_strTerminalId);
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("default_voip_server: %s", m_strDefaultServer.GetData());
|
|
|
+ }
|
|
|
+
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("sip proxy ip1:%s,num1:%s,port1:%d;ip2:%s,num2:%s,port2:%d", (LPCSTR)m_strSIPProxyIP[0],(LPCSTR)m_strSIPCallNum[0], m_iSIPProxyPort[0],(LPCSTR)m_strSIPProxyIP[1],(LPCSTR)m_strSIPCallNum[1], m_iSIPProxyPort[1]);
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("chan proxy ip1:%s,num1:%s,port1:%d;ip2:%s,num2:%s,port2:%d", (LPCSTR)m_strChanProxyIP[0],(LPCSTR)m_strChanCallNum[0], m_iChanProxyPort[0],(LPCSTR)m_strChanProxyIP[1],(LPCSTR)m_strChanCallNum[1], m_iChanProxyPort[1]);
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("CallRouteIP:%s,port:%d", (LPCSTR)m_strCallRouteIP,m_iCallRoutePort);
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("TerminalId: %s", (LPCSTR)m_strTerminalId);
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("default_voip_server: %s", m_strDefaultServer.GetData());
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("HttpCallRouteAddr: %s", m_strHttpCallRouteAddr.GetData());
|
|
|
if(m_strDefaultServer.GetLength() > 0){
|
|
|
ParseDefaultServer(m_strDefaultServer.GetData());
|
|
|
}
|
|
@@ -187,7 +201,7 @@ ErrorCodeEnum ACMCallFSM::OnInit()
|
|
|
|
|
|
m_nSysCallType = 0;
|
|
|
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("fsm init ok!");
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("fsm init ok!");
|
|
|
|
|
|
AddStateHooker(this);
|
|
|
|
|
@@ -205,11 +219,11 @@ BOOL ACMCallFSM::ReConnectionAssistchan()
|
|
|
if (m_pChannelClient != NULL){
|
|
|
m_pChannelClient->GetFunction()->CloseSession();
|
|
|
m_pChannelClient = NULL;
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Close AssistChannel Session ");
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Close AssistChannel Session ");
|
|
|
}
|
|
|
|
|
|
if (m_pChannelClient == NULL){
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("ReConnection AssistChannel Session");
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("ReConnection AssistChannel Session");
|
|
|
m_pChannelClient = new MyChannelClient(m_pEntity, this);
|
|
|
ErrorCodeEnum Error = m_pChannelClient->Connect();
|
|
|
if (Error != Error_Succeed) {
|
|
@@ -218,7 +232,7 @@ BOOL ACMCallFSM::ReConnectionAssistchan()
|
|
|
return FALSE;
|
|
|
}
|
|
|
else {
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("m_channelClient connect success!");
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("m_channelClient connect success!");
|
|
|
}
|
|
|
|
|
|
if (Error == Error_Succeed){
|
|
@@ -231,7 +245,7 @@ BOOL ACMCallFSM::ReConnectionAssistchan()
|
|
|
return FALSE;
|
|
|
}
|
|
|
else {
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("BeginState biz channel success!");
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("BeginState biz channel success!");
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -240,15 +254,14 @@ BOOL ACMCallFSM::ReConnectionAssistchan()
|
|
|
|
|
|
BOOL ACMCallFSM::ReConnectionSipphone()
|
|
|
{
|
|
|
- if (m_pPhoneClient != NULL)
|
|
|
- {
|
|
|
+ if (m_pPhoneClient != NULL){
|
|
|
m_pPhoneClient->GetFunction()->CloseSession();
|
|
|
m_pPhoneClient = NULL;
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Close sip Session ");
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Close sip Session");
|
|
|
}
|
|
|
|
|
|
if (m_pPhoneClient == NULL){
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("ReConnection sip Session");
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("ReConnection sip Session");
|
|
|
m_pPhoneClient = new MyPhoneClient(m_pEntity, this);
|
|
|
ErrorCodeEnum Error = m_pPhoneClient->Connect();
|
|
|
if (Error != Error_Succeed) {
|
|
@@ -258,7 +271,7 @@ BOOL ACMCallFSM::ReConnectionSipphone()
|
|
|
return FALSE;
|
|
|
}
|
|
|
else {
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("m_phoneClient connect success!");
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("m_phoneClient connect success!");
|
|
|
}
|
|
|
|
|
|
if (Error == Error_Succeed)
|
|
@@ -272,7 +285,7 @@ BOOL ACMCallFSM::ReConnectionSipphone()
|
|
|
return FALSE;
|
|
|
}
|
|
|
else {
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("BeginState sip success!");
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("BeginState sip success!");
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -285,7 +298,7 @@ BOOL ACMCallFSM::ReConnectionSyncService()
|
|
|
if (NULL != m_pSyncServiceClient){
|
|
|
m_pSyncServiceClient->GetFunction()->CloseSession();
|
|
|
m_pSyncServiceClient = NULL;
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Close SyncService Session.");
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Close SyncService Session.");
|
|
|
}
|
|
|
|
|
|
m_pSyncServiceClient = new SyncServiceClient(m_pEntity, this);
|
|
@@ -296,12 +309,81 @@ BOOL ACMCallFSM::ReConnectionSyncService()
|
|
|
return FALSE;
|
|
|
}
|
|
|
else {
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Connect SyncService Success!");
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Connect SyncService Success!");
|
|
|
}
|
|
|
|
|
|
return TRUE;
|
|
|
}
|
|
|
|
|
|
+int ACMCallFSM::GetCallRouteList()
|
|
|
+{
|
|
|
+ int iret = -1;
|
|
|
+
|
|
|
+ if (0 == m_iCallRouteType) {
|
|
|
+ if (m_strCallRouteIP.GetLength() != 0) {
|
|
|
+ int icount = 0;
|
|
|
+ call_info_t call_info;
|
|
|
+ call_info.callroute_server_ip = m_strCallRouteIP;
|
|
|
+ call_info.callroute_server_port = m_iCallRoutePort;
|
|
|
+ call_info.szbranchno = m_strCallRouteBranchNo;
|
|
|
+ call_info.szcaller_num = m_strTerminalId;
|
|
|
+ call_info.szdest_num = m_strCallRouteAccessNo;
|
|
|
+
|
|
|
+ do {
|
|
|
+ m_pCallRouteList = get_callroute_list(&call_info);
|
|
|
+ icount++;
|
|
|
+ } while (!m_pCallRouteList && icount < CALLROUTE_MAX_TRY_COUNT);
|
|
|
+
|
|
|
+ if (icount > 1) {
|
|
|
+ char strmsg[MAX_PATH] = { 0 };
|
|
|
+ snprintf(strmsg, MAX_PATH, "request call route {%s:%d} %d times.", m_strCallRouteIP.GetData(), m_iCallRoutePort, icount);
|
|
|
+ LogWarn(Severity_Low, Error_Debug, LOG_WARN_COUNTERCONNECT_CALLROUTE_TIMES, strmsg);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ if (m_strHttpCallRouteAddr.GetLength() != 0) {
|
|
|
+ int ihttpcount = 0;
|
|
|
+ http_call_info_t http_callinfo;
|
|
|
+ http_callinfo.strServerURL = m_strHttpCallRouteAddr;
|
|
|
+ http_callinfo.strAPI = m_strHttpServerAPI;
|
|
|
+
|
|
|
+ if (m_bNeedQueueName) {
|
|
|
+ http_callinfo.strQueueName = m_strQueueName;
|
|
|
+ http_callinfo.strAddClientLevel = m_strAddClientLevel;
|
|
|
+ DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("http call route queue name is %s, and client level is %s.", http_callinfo.strQueueName.GetData(), http_callinfo.strAddClientLevel.GetData());
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ http_callinfo.strQueueName = NULL;
|
|
|
+ http_callinfo.strAddClientLevel = NULL;
|
|
|
+ DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("http call route queue name is NULL, and client level is NULL.");
|
|
|
+ }
|
|
|
+
|
|
|
+ http_callinfo.strTerminalNo = m_strTerminalId;
|
|
|
+
|
|
|
+ do {
|
|
|
+ m_pCallRouteList = get_http_callroute_list(&http_callinfo);
|
|
|
+ ihttpcount++;
|
|
|
+ } while (!m_pCallRouteList && ihttpcount < CALLROUTE_MAX_TRY_COUNT);
|
|
|
+
|
|
|
+ if (ihttpcount > 1) {
|
|
|
+ char strmsg[MAX_PATH] = { 0 };
|
|
|
+ snprintf(strmsg, MAX_PATH, "request http call route address{%s} %d times.", m_strHttpCallRouteAddr.GetData(), ihttpcount);
|
|
|
+ LogWarn(Severity_Low, Error_Debug, LOG_WARN_COUNTERCONNECT_CALLROUTE_TIMES, strmsg);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (NULL != m_pCallRouteList) {
|
|
|
+ iret = 0;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ LogWarn(Severity_Middle, Error_Debug, LOG_WARN_COUNTERCONNECT_CALLROUTE_FAILED, "call route request failed!");
|
|
|
+ }
|
|
|
+
|
|
|
+ return iret;
|
|
|
+}
|
|
|
+
|
|
|
|
|
|
int ACMCallFSM::GetDelayTime()
|
|
|
{
|
|
@@ -333,7 +415,7 @@ void ACMCallFSM::SetDelayTime()
|
|
|
info.key = "DelayTime";
|
|
|
info.data = "0";
|
|
|
m_pSyncServiceClient->SetMachineData(info);
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("set delay time to 0");
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("set delay time to 0");
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -439,9 +521,9 @@ int ACMCallFSM::ParseDefaultServer(const char* strServer)
|
|
|
}
|
|
|
|
|
|
iRet = m_voipserver.size();
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("default voip server number is %d.", iRet);
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("default voip server number is %d.", iRet);
|
|
|
for (int i = 0; i < iRet; i++){
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("default voip server address is %s", m_voipserver[i].c_str());
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("default voip server address is %s", m_voipserver[i].c_str());
|
|
|
}
|
|
|
|
|
|
return iRet;
|
|
@@ -553,10 +635,10 @@ void ACMCallFSM::OnStateTrans(int iSrcState, int iDstState)
|
|
|
|
|
|
if (eState_Fail == st2){
|
|
|
int ierrcode = GetFailedErrorCode(iSrcState);
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("connect_failed_case_table size is %d, and ierrcode = %d.", sizeof(connect_failed_case_table)/ sizeof(char*), ierrcode);
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("connect_failed_case_table size is %d, and ierrcode = %d.", sizeof(connect_failed_case_table)/ sizeof(char*), ierrcode);
|
|
|
if (ierrcode >= 0 && ierrcode < sizeof(connect_failed_case_table)/ sizeof(char*)){
|
|
|
evt.errinfo = CSimpleStringA2W(connect_failed_case_table[ierrcode]);
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("connect failed for %s.", CSimpleStringW2A(evt.errinfo).GetData());
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("connect failed for %s.", CSimpleStringW2A(evt.errinfo).GetData());
|
|
|
}
|
|
|
|
|
|
char strerrmsg[MAX_PATH] = {0};
|
|
@@ -572,7 +654,7 @@ void ACMCallFSM::OnStateTrans(int iSrcState, int iDstState)
|
|
|
}
|
|
|
|
|
|
SpSendBroadcast(GetEntityBase()->GetFunction(), SP_MSG_OF(PhoneState), SP_MSG_SIG_OF(PhoneState), evt);
|
|
|
- LogWarn(Severity_Low, Error_Debug, LOG_WARN_COUNTERCONNECT_BROADCAST_CALL_STATE, strmsg);
|
|
|
+ //LogWarn(Severity_Low, Error_Debug, LOG_WARN_COUNTERCONNECT_BROADCAST_CALL_STATE, strmsg);
|
|
|
}
|
|
|
else{
|
|
|
char strinfo[MAX_PATH] = {0};
|
|
@@ -610,7 +692,7 @@ ErrorCodeEnum ACMCallFSM::SetCallState(int state)
|
|
|
if (0 <= state && state < sizeof(sts)/sizeof(char*)){
|
|
|
strCallState = sts[state];
|
|
|
}
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("set call state to [%s].", strCallState);
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("set call state to [%s].", strCallState);
|
|
|
return GetEntityBase()->GetFunction()->SetSysVar("CallState", strCallState);
|
|
|
}
|
|
|
|
|
@@ -628,6 +710,7 @@ void ACMCallFSM::s0_on_entry()
|
|
|
}
|
|
|
m_iFailedLastState = 0;
|
|
|
}
|
|
|
+
|
|
|
void ACMCallFSM::s0_on_exit()
|
|
|
{
|
|
|
m_bHangup = FALSE;
|
|
@@ -655,7 +738,7 @@ unsigned int ACMCallFSM::s0_on_event(FSMEvent* event)
|
|
|
//由指令模块触发呼叫
|
|
|
GetEntityBase()->GetFunction()->SetSysVar(SYSVAR_CALLTYPE, CALLTYPE_MOBILE); // 设置呼叫模式为手机呼叫
|
|
|
m_nSysCallType = 1;
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("start command call!");
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("start command call!");
|
|
|
}
|
|
|
else if (event->iEvt == USER_EVT_ASSISTCHAN_IDEL)
|
|
|
{
|
|
@@ -691,12 +774,12 @@ unsigned int ACMCallFSM::s0_on_event(FSMEvent* event)
|
|
|
m_CallingParam.nCallType = DOUBLERECORD_CALLTYPE;
|
|
|
//GetEntityBase()->GetFunction()->SetSysVar(SYSVAR_CALLTYPE,CALLTYPE_RECORD); // 设置呼叫模式为双录呼叫
|
|
|
m_nSysCallType = 0;
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("start double record call,call type is %d.", m_CallingParam.nCallType);
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("start double record call,call type is %d.", m_CallingParam.nCallType);
|
|
|
LogWarn(Severity_Low, Error_Debug, LOG_WARN_COUNTERCONNECT_DOUBLERECORDCALL,"begin double record call");
|
|
|
}
|
|
|
else if (event->iEvt == USER_EVT_STOPLOACALREMOTEVIDEO)
|
|
|
{
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("%s:%d, stop show local and remote video.", __FUNCTION__, __LINE__);
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("%s:%d, stop show local and remote video.", __FUNCTION__, __LINE__);
|
|
|
|
|
|
}
|
|
|
return 0;
|
|
@@ -716,7 +799,7 @@ unsigned int ACMCallFSM::s7_on_event(FSMEvent* event)
|
|
|
{
|
|
|
if (event->iEvt == USER_EVT_STOPLOCALVIDEO)
|
|
|
{
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("stop show local video");
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("stop show local video");
|
|
|
StopVideo();
|
|
|
}
|
|
|
else if (event->iEvt == USER_EVT_SIPPHONE_IDEL)
|
|
@@ -730,7 +813,7 @@ unsigned int ACMCallFSM::s7_on_event(FSMEvent* event)
|
|
|
|
|
|
void ACMCallFSM::s9_on_entry()
|
|
|
{
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("start liveness detection.");
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("start liveness detection.");
|
|
|
m_nLiveDetctionTime = 0;
|
|
|
ScheduleTimer(9, 2*LIVEDETECT_CONNECT_INTERVAL);
|
|
|
}
|
|
@@ -746,7 +829,7 @@ unsigned int ACMCallFSM::s9_on_event(FSMEvent* event)
|
|
|
if (event->iEvt == USER_EVT_STOPVIDEODISPLAY)
|
|
|
{
|
|
|
//ScheduleTimer(9,3000);
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("stop live detection display");
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("stop live detection display");
|
|
|
StopVideo();
|
|
|
LogEvent(Severity_Middle,LOG_EVT_RELEASELIVEDETECTION,"release live detection");
|
|
|
}
|
|
@@ -767,31 +850,16 @@ void ACMCallFSM::s8_on_entry()
|
|
|
{
|
|
|
//get call route,采用直接总行方式
|
|
|
if(FALSE == m_bIsPadDevice){ //大机
|
|
|
- if (m_strCallRouteIP.GetLength() != 0) {
|
|
|
- int icount = 0;
|
|
|
- call_info_t call_info;
|
|
|
- call_info.callroute_server_ip = m_strCallRouteIP;
|
|
|
- call_info.callroute_server_port = m_iCallRoutePort;
|
|
|
- call_info.szbranchno = m_strCallRouteBranchNo;
|
|
|
- call_info.szcaller_num = m_strTerminalId;
|
|
|
- call_info.szdest_num = m_strCallRouteAccessNo;
|
|
|
-
|
|
|
- do
|
|
|
- {
|
|
|
- m_pCallRouteList = get_callroute_list(&call_info);
|
|
|
- icount++;
|
|
|
- } while (!m_pCallRouteList && icount < CALLROUTE_MAX_TRY_COUNT);
|
|
|
-
|
|
|
- if (icount > 1){
|
|
|
- char strmsg[MAX_PATH] = {0};
|
|
|
- snprintf(strmsg, MAX_PATH, "request call route {%s:%d} %d times.", m_strCallRouteIP.GetData(), m_iCallRoutePort, icount);
|
|
|
- LogWarn(Severity_Low, Error_Debug, LOG_WARN_COUNTERCONNECT_CALLROUTE_TIMES, strmsg);
|
|
|
- }
|
|
|
+ if (0 == GetCallRouteList()) {
|
|
|
+ DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("get call route list success.");
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("get call route list failed.");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
int time = GetDelayTime();
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("get Delay time = %d",time);
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("get Delay time = %d",time);
|
|
|
|
|
|
if (time > 0){
|
|
|
ScheduleTimer(8,time*1000);
|
|
@@ -844,7 +912,7 @@ unsigned int ACMCallFSM::s10_on_event(FSMEvent* event)
|
|
|
}
|
|
|
else if (event->iEvt == USER_EVT_STOPLOACALREMOTEVIDEO)
|
|
|
{
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("%s:%d, hang up call and stop show local and remote video.", __FUNCTION__, __LINE__);
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("%s:%d, hang up call and stop show local and remote video.", __FUNCTION__, __LINE__);
|
|
|
PostEventFIFO(new FSMEvent(USER_EVT_HANGUP));
|
|
|
m_bHangup=TRUE;
|
|
|
StopVideo();
|
|
@@ -869,78 +937,82 @@ void ACMCallFSM::s11_on_entry()
|
|
|
if (FALSE == m_bIsPadDevice)
|
|
|
{
|
|
|
//get call route,采用直接总行方式
|
|
|
- if (m_strCallRouteIP.GetLength() != 0) {
|
|
|
- callurl_node_t *node = get_no_used_node(m_pCallRouteList);
|
|
|
-
|
|
|
- char callid_str[64] = { 0 };
|
|
|
- get_format_uuid(callid_str, 64);
|
|
|
-
|
|
|
- if (node != NULL){
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Begin Head Office Make Call!");
|
|
|
- m_LastSipError = MakeCall(node->strcallurl, CSimpleStringA::Format("sip:%s@%s;transport=UDP", node->strnewcallernum, ipstr),
|
|
|
- callid_str, m_CallingParam);
|
|
|
- m_iChanProxyPort[0] = node->uassistport;
|
|
|
- m_iChanProxyPort[1] = node->uassistport;
|
|
|
- m_strChanProxyIP[0] = node->strassistip;
|
|
|
- m_strChanProxyIP[1] = node->strassistip;
|
|
|
- node->bused = TRUE;
|
|
|
- }
|
|
|
- else{
|
|
|
- int icount = m_voipserver.size();
|
|
|
- if (icount > 0){
|
|
|
- int index = GetTickCount()%icount;
|
|
|
- char strcallurl[MAX_PATH] = {0};
|
|
|
- char strassistip[32] = {0};
|
|
|
- size_t uport = 0;
|
|
|
- if (0 == GetCallInfoFromConfig(strcallurl, MAX_PATH, strassistip, 32, &uport, m_voipserver[index].c_str())){
|
|
|
- char strassitinter[32] = {0};
|
|
|
- get_interger_netaddr(strassitinter, 32, strassistip);
|
|
|
- m_LastSipError = MakeCall(strcallurl, CSimpleStringA::Format("sip:%s#%s@%s;transport=UDP", m_strTerminalId.GetData(), strassitinter, ipstr),
|
|
|
- callid_str, m_CallingParam);
|
|
|
- m_iChanProxyPort[0] = uport;
|
|
|
- m_iChanProxyPort[1] = uport;
|
|
|
- m_strChanProxyIP[0] = strassistip;
|
|
|
- m_strChanProxyIP[1] = strassistip;
|
|
|
- char strmsg[MAX_PATH] = {0};
|
|
|
- snprintf(strmsg, MAX_PATH, "head office mode no more call router, use default config(call url is %s, assistip is %s).", strcallurl, strassistip);
|
|
|
- LogWarn(Severity_Low, Error_Debug, LOG_WARN_COUNTERCONNECT_CALLROUTE_CONFIG, strmsg);
|
|
|
- }
|
|
|
+ callurl_node_t *node = get_no_used_node(m_pCallRouteList);
|
|
|
+
|
|
|
+ char callid_str[64] = { 0 };
|
|
|
+ get_format_uuid(callid_str, 64);
|
|
|
+
|
|
|
+ if (node != NULL){
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Begin Head Office Make Call!");
|
|
|
+ m_LastSipError = MakeCall(node->strcallurl, CSimpleStringA::Format("sip:%s@%s;transport=UDP", node->strnewcallernum, ipstr),
|
|
|
+ callid_str, m_CallingParam);
|
|
|
+ m_iChanProxyPort[0] = node->uassistport;
|
|
|
+ m_iChanProxyPort[1] = node->uassistport;
|
|
|
+ m_strChanProxyIP[0] = node->strassistip;
|
|
|
+ m_strChanProxyIP[1] = node->strassistip;
|
|
|
+ node->bused = TRUE;
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ int icount = m_voipserver.size();
|
|
|
+ if (icount > 0){
|
|
|
+ int index = GetTickCount()%icount;
|
|
|
+ char strcallurl[MAX_PATH] = {0};
|
|
|
+ char strassistip[32] = {0};
|
|
|
+ size_t uport = 0;
|
|
|
+ char strserver[MAX_PATH] = { 0 };
|
|
|
+ snprintf(strserver, MAX_PATH, "%s", m_voipserver[index].c_str());
|
|
|
+ if (0 == GetCallInfoFromConfig(strcallurl, MAX_PATH, strassistip, 32, &uport, strserver)){
|
|
|
+ char strassitinter[32] = {0};
|
|
|
+ get_interger_netaddr(strassitinter, 32, strassistip);
|
|
|
+ m_LastSipError = MakeCall(strcallurl, CSimpleStringA::Format("sip:%s#%s@%s;transport=UDP", m_strTerminalId.GetData(), strassitinter, ipstr),
|
|
|
+ callid_str, m_CallingParam);
|
|
|
+ m_iChanProxyPort[0] = uport;
|
|
|
+ m_iChanProxyPort[1] = uport;
|
|
|
+ m_strChanProxyIP[0] = strassistip;
|
|
|
+ m_strChanProxyIP[1] = strassistip;
|
|
|
+ char strmsg[MAX_PATH] = {0};
|
|
|
+ snprintf(strmsg, MAX_PATH, "head office mode no more call router, use default config(call url is %s, assistip is %s).", strcallurl, strassistip);
|
|
|
+ LogWarn(Severity_Low, Error_Debug, LOG_WARN_COUNTERCONNECT_CALLROUTE_CONFIG, strmsg);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("GetCallInfoFromConfig failed!");
|
|
|
+ m_LastSipError = Error_Param;
|
|
|
}
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
- if (m_LastSipError!=Error_Succeed){
|
|
|
- m_nCurSipServer?(m_nCurSipServer=Error_Server):(m_nCurSipServer=BACK_SERVER);
|
|
|
- }
|
|
|
- m_nCurChanServer = BACK_SERVER;
|
|
|
-
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("head office make call result:0x%08x", m_LastSipError);
|
|
|
+ if (m_LastSipError!=Error_Succeed){
|
|
|
+ m_nCurSipServer?(m_nCurSipServer=Error_Server):(m_nCurSipServer=BACK_SERVER);
|
|
|
}
|
|
|
+ m_nCurChanServer = BACK_SERVER;
|
|
|
+
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("head office make call result:0x%08x", m_LastSipError);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
if (m_CallingParam.nCallType != NORMAL_CALLTYPE && m_CallingParam.nCallType != DOUBLERECORD_CALLTYPE)
|
|
|
{
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Begin Branch Make Distribute Call!");
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Begin Branch Make Distribute Call!");
|
|
|
m_LastSipError = MakeCall(m_nCurSipServer,m_CallingParam);
|
|
|
if (m_LastSipError!=Error_Succeed){
|
|
|
m_nCurSipServer?(m_nCurSipServer=Error_Server):(m_nCurSipServer=BACK_SERVER);
|
|
|
}
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("branch make call result:0x%08x", m_LastSipError);
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("branch make call result:0x%08x", m_LastSipError);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
if (NORMAL_CALLTYPE == m_CallingParam.nCallType){
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Begin Branch Make Normal Call!");
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Begin Branch Make Normal Call!");
|
|
|
}
|
|
|
else{
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("Begin Branch Make Record Call!");
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("Begin Branch Make Record Call!");
|
|
|
}
|
|
|
|
|
|
m_LastSipError = MakeCall(m_strHintCallNum.GetLength() > 0 ? (LPCSTR)m_strHintCallNum : (LPCSTR)m_strSIPCallNum[m_nCurSipServer],m_nCurSipServer);
|
|
|
if (m_LastSipError!=Error_Succeed){
|
|
|
m_nCurSipServer?(m_nCurSipServer=Error_Server):(m_nCurSipServer=BACK_SERVER);
|
|
|
}
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("branch make call result:0x%08x", m_LastSipError);
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("branch make call result:0x%08x", m_LastSipError);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -1025,7 +1097,7 @@ unsigned int ACMCallFSM::s11_on_event(FSMEvent* event)
|
|
|
}else{
|
|
|
LogWarn(Severity_Low, Error_Unexpect, LOG_WARN_COUNTERCONNECT_SIPCONNECT_TIMEOUT,"sipphone connect timeout, error server");
|
|
|
}
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("sip call timeout,release call");
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("sip call timeout,release call");
|
|
|
m_nSipErrorNum++;
|
|
|
DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_USER).setLogCode("QLR0402304Z80301").setResultCode("RTA3435")("sip connect failed!");
|
|
|
}
|
|
@@ -1043,7 +1115,7 @@ unsigned int ACMCallFSM::s11_on_event(FSMEvent* event)
|
|
|
}
|
|
|
else if (event->iEvt == USER_EVT_STOPLOACALREMOTEVIDEO)
|
|
|
{
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("%s:%d, hang up call and stop show local and remote video.", __FUNCTION__, __LINE__);
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("%s:%d, hang up call and stop show local and remote video.", __FUNCTION__, __LINE__);
|
|
|
PostEventFIFO(new FSMEvent(USER_EVT_HANGUP));
|
|
|
m_bHangup=TRUE;
|
|
|
StopVideo();
|
|
@@ -1064,7 +1136,7 @@ void ACMCallFSM::s12_on_entry()
|
|
|
Sleep(200);
|
|
|
if (m_LastAssistError == Error_Succeed)
|
|
|
{
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("begin start channel,m_nCurChanServer=%d",m_nCurChanServer);
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("begin start channel,m_nCurChanServer=%d",m_nCurChanServer);
|
|
|
if (m_CallingParam.nCallType == NORMAL_CALLTYPE && m_CallingParam.nCallType != DOUBLERECORD_CALLTYPE)
|
|
|
{
|
|
|
m_LastAssistError = StartChannel(m_nCurChanServer);
|
|
@@ -1079,13 +1151,13 @@ void ACMCallFSM::s12_on_entry()
|
|
|
// }
|
|
|
//}
|
|
|
}
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("start channel result:0x%08x", m_LastAssistError);
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("start channel result:0x%08x", m_LastAssistError);
|
|
|
if (m_LastAssistError != Error_Succeed)
|
|
|
{
|
|
|
DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("start channel failed:0x%08x,start hangup", m_LastAssistError);
|
|
|
HangupCall();
|
|
|
m_nCurChanServer?(m_nCurChanServer=Error_Server):(m_nCurChanServer=BACK_SERVER);
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("hangup call result:0x%08x", m_LastAssistError);
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("hangup call result:0x%08x", m_LastAssistError);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -1183,7 +1255,7 @@ unsigned int ACMCallFSM::s12_on_event(FSMEvent* event)
|
|
|
}
|
|
|
else if (event->iEvt == USER_EVT_STOPLOACALREMOTEVIDEO)
|
|
|
{
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("%s:%d, hang up call and stop show local and remote video.", __FUNCTION__, __LINE__);
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("%s:%d, hang up call and stop show local and remote video.", __FUNCTION__, __LINE__);
|
|
|
PostEventFIFO(new FSMEvent(USER_EVT_HANGUP));
|
|
|
m_bHangup=TRUE;
|
|
|
StopVideo();
|
|
@@ -1247,12 +1319,12 @@ unsigned int ACMCallFSM::s14_on_event(FSMEvent* event)
|
|
|
{
|
|
|
if (event->iEvt == USER_EVT_STOPLOACALREMOTEVIDEO)
|
|
|
{
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("%s:%d, stop show local and remote video.", __FUNCTION__, __LINE__);
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("%s:%d, stop show local and remote video.", __FUNCTION__, __LINE__);
|
|
|
StopVideoRender();
|
|
|
}
|
|
|
else if (event->iEvt == USER_EVT_STOP_RECORD_BROADCAST)
|
|
|
{
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("stop double record broadcast.");
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("stop double record broadcast.");
|
|
|
}
|
|
|
else if (event->iEvt == USER_EVT_SIPPHONE_IDEL)
|
|
|
{
|
|
@@ -1321,13 +1393,13 @@ unsigned int ACMCallFSM::s21_on_event(FSMEvent* event)
|
|
|
{
|
|
|
if(event->param1 == 21)
|
|
|
{
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("hangupcall timeout,release call");
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("hangupcall timeout,release call");
|
|
|
ScheduleTimer(210,RELEASEING_SIP_TIMEOUT);
|
|
|
ReleaseCall(0);
|
|
|
}
|
|
|
else if (event->param1 == 210)
|
|
|
{
|
|
|
- DbgWithLink(LOG_LEVEL_INFO, LOG_TYPE_SYSTEM)("release call timeout,restart sipphone");
|
|
|
+ DbgWithLink(LOG_LEVEL_DEBUG, LOG_TYPE_SYSTEM)("release call timeout,restart sipphone");
|
|
|
PostEventFIFO(new FSMEvent(USER_EVT_JMP_FAIL));
|
|
|
//RealSipErrorCheck();
|
|
|
LogEvent(Severity_Middle, EVENT_MOD_RELEASESIP_TIMEOUT,"restart sipphone");
|