高通语音专题---电话会议流程和日志分析

1  电话会议整体流程

        以下呼叫流程和日志分析描述了UE中的呼叫会议过程

         前提条件: UE1 保持 UE2 并与 UE3 通话。

  • a  当 UE1 收到开始会议的请求时,它会将与 UE3 的当前通话置于保持状态。
  • b  UE1 通过发送到会议统一资源标识符 (URI) 的 INVITE 消息创建会议。
  • c  UE1 向会议服务器发送 REFER 消息,其中包含要添加到会议的 UE 的 URI。 在这种情况下,它是 UE2。
  • d  UE2 收到来自会议服务器的 INVITE 消息,并且 UE1 收到关于在会议服务器上从 UE2 收到的 100 Trying 和 200 OK 消息的 NOTIFY 指示。
  • e  UE1收到UE2已接受与会议服务器通话的Notify消息后,结束与UE2的通话。
  • f  重复图 4-19 的步骤 3a 到 5b,将 UE3 添加到电话会议中。

        注意 :在此设置过程结束时,每个 UE 都与进行媒体复用的会议服务器进行独立的点对点呼叫。

2  电话会议详细流程及log分析

0  前提条件 -- 完成电话添加

        关键字:QMI --> Service_VOICE

        UE1 和 UE2 之间的 VoIP 呼叫处于 HOLD 状态,并且 UE1 和 UE3 之间有一个发起的 VoIP 呼叫正在通话中。

        关于电话添加的详细内容,请单独参考

08:59:25.980013	[0x1544]	QMI_MCS_QCSI_PKT
packetVersion = 2
V2 {
   MsgType = Indication                                         //通话状态上报
   Service_VOICE {												//QMI关键字:Service_VOICE
      ServiceVOICEV2 {
         voice_all_call_status {
            voice_all_call_status_indTlvs[0] {
               Type = 0x01
               Length = 15
               call_info {
                  num_of_instances = 2
                  call_info[0] {
                     call_id = 2
                     call_state = CALL_STATE_CONVERSATION		//UE1和UE3处于CONVERSATION(通话)状态
                     call_type = CALL_TYPE_VOICE_IP
                  }
                  call_info[1] {
                     call_id = 1
                     call_state = CALL_STATE_HOLD				//UE1和UE2处于HOLD状态
                     call_type = CALL_TYPE_VOICE_IP
                  }
               }
            }
            voice_all_call_status_indTlvs[3] {
               remote_party_number {
                  num_instances = 2                             //当前有2路通话
                  remote_party_number[0] {
                     call_id = 2								//第2路通话(UE3)信息
                     number_pi = PRESENTATION_NUM_ALLOWED
                     number_len = 1
                     number = { 
                        +, 9, 0, 5, 4, 6, 1, 8, 
                        2, 9, 0, 9, 4
                     }
                  }
                  remote_party_number[1] {
                     call_id = 1								//第1路通话(UE2)信息
                     number_pi = PRESENTATION_NUM_ALLOWED
                     number_len = 11
                     number = { 
                        0, 5, 5, 2, 6, 2, 9, 8, 
                        9, 2, 0
                     }
                  }
               }
            }
         }
      }
   }
}

1  UI通过QMI请求电话会议

        关键字:QMI --> Service_VOICE

08:59:31.512797	[0x1544]	QMI_MCS_QCSI_PKT
packetVersion = 2
V2 {
   MsgType = Request												//电话会议请求消息
   ServiceId = VOICE
   MinorRev = 106                                                   //请求消息ID
   Service_VOICE {													//语音通话关键字:Service_VOICE
      ServiceVOICEV2 {
         voice_manage_ip_calls {
            voice_manage_ip_calls_reqTlvs[0] {
               sups_type {
                  sups_type = VOIP_SUPS_TYPE_MAKE_CONFERENCE_CALL	//电话会议请求标志信息
               }
            }
         }
      }
   }
}

2  CM 通过 QMI 接收请求。 CM通知IMS暂停UE1和UE3之间的通话

        关键字:Call Manager|IMS

08:59:31.513099          Call Manager/High        [          cmipcall.c   5583] =CM= IP CALLCMD: cmd=3, as_id=0, is_ims_cap_on_sub=1
08:59:31.513099          Call Manager/High        [           cmipapp.c   6372] =CM= CM->IMS: CMIPAPP: Send cmd MPTY to app 2, as_id 0
08:59:31.513099          IMS/High                 [          qipcallh.c  36470] qipcallh_process_call_request: eCallCbType = 13
08:59:31.513984          IMS/High                 [     qpDplCallCtrl.c   7957] qpDplCallCtrlReportInd: eRptNameType = 606
08:59:31.513984          Call Manager/High        [            cmtask.c  10965] =CM= CM<< IP cmd:606
08:59:31.513984          Call Manager/High        [          cmipcall.c   4265] =CM= IP RXD: CALL_HOLD, id=5, as_id=0

3  QMI 向 UI 指示两个呼叫都处于保持状态

        关键字:QMI --> Service_VOICE

08:59:32.187003	[0x1544]	QMI_MCS_QCSI_PKT
packetVersion = 2
V2 {
   MsgType = Indication								//通话状态上报
   Service_VOICE {									//QMI关键字:Service_VOICE
      ServiceVOICEV2 {
         voice_all_call_status {
            voice_all_call_status_indTlvs[0] {
               call_info {
                  num_of_instances = 2
                  call_info[0] {
                     call_id = 2
                     call_state = CALL_STATE_HOLD	//UE1和UE3处于HOLD状态
                     call_type = CALL_TYPE_VOICE_IP
                  }
                  call_info[1] {
                     call_id = 1
                     call_state = CALL_STATE_HOLD	//UE1和UE2处于HOLD状态
                     call_type = CALL_TYPE_VOICE_IP
                  }
               }
            }
            voice_all_call_status_indTlvs[2] {
               remote_party_number {
                  num_instances = 2					//当前有2路通话
                  remote_party_number[0] {			//第2路通话(UE3)信息
                     call_id = 2
                     number_len = 13
                     number = { 
                        +, 9, 0, 5, 4, 6, 1, 8, 
                        2, 9, 0, 9, 4
                     }
                  }
                  remote_party_number[1] {			//第1路通话(UE2)信息
                     call_id = 1
                     number_len = 11
                     number = { 
                        0, 5, 5, 2, 6, 2, 9, 8, 
                        9, 2, 0
                     }
                  }
               }
            }
         }
      }
   }
}

4  IMS收到多方通话请求

        关键字:Call Manager|IMS

08:59:32.205990          Call Manager/High        [           cmipapp.c   5350] =CM= CM->IMS: CMIPAPP: Sending IP orig, sys_mode 256, app_id 2 pi 0 orig call_id 7, call_type 1, as_id 0
08:59:32.207005          IMS/High                 [          qipcallh.c  36470] qipcallh_process_call_request: eCallCbType = 0

CM 向 QMI 指示“电话会议发起状态”发送到 UI  -->  中间态可忽略

        关键字:QMI --> Service_VOICE

08:59:32.206003	[0x1544]	QMI_MCS_QCSI_PKT
packetVersion = 2
V2 {
   MsgType = Indication									//通话状态上报
   Service_VOICE {										//QMI关键字Service_VOICE
      ServiceVOICEV2 {
         voice_all_call_status {
            voice_all_call_status_indTlvs[0] {
               Type = 0x01
               Length = 22
               call_info {
                  num_of_instances = 3
                  call_info[0] {						//UE1和电话会议处于发起(ORIGINATING)状态
                     call_id = 3
                     call_state = CALL_STATE_ORIGINATING
                     call_type = CALL_TYPE_VOICE_IP
                  }
                  call_info[1] {						//UE1和UE3处于HOLD状态
                     call_id = 2
                     call_state = CALL_STATE_HOLD
                     call_type = CALL_TYPE_VOICE_IP
                  }
                  call_info[2] {						//UE1和UE2处于HOLD状态
                     call_id = 1
                     call_state = CALL_STATE_HOLD
                     call_type = CALL_TYPE_VOICE_IP
                  }
               }
            }
            voice_all_call_status_indTlvs[2] {
               remote_party_number {
                  num_instances = 3						//当前有3路通话
                  remote_party_number[0] {				//第3路通话-电话会议
                     call_id = 3
                     number_len = 5
                     number = { m, m, t, e, l }
                  }
                  remote_party_number[1] {				//第2路通话(UE3)信息
                     call_id = 2
                     number_len = 13
                     number = { 
                        +, 9, 0, 5, 4, 6, 1, 8, 
                        2, 9, 0, 9, 4
                     }
                  }
                  remote_party_number[2] {				//第1路通话(UE2)信息
                     call_id = 1
                     number_len = 11
                     number = { 
                        0, 5, 5, 2, 6, 2, 9, 8, 
                        9, 2, 0
                     }
                  }
               }
            }
         }
      }
   }
}

5  IMS通过框架发出邀请消息连接会议服务器

        关键字:OTA --IMS

08:59:32.226002          IMS SIP Message          Length: 2543
	Direction = UE_TO_NETWORK
	Message ID = IMS_SIP_INVITE
	Response Code = INFORMAL_RESPONSE (0)
08:59:32.257032          IMS SIP Message          Length:  464
	Direction = NETWORK_TO_UE
	Message ID = IMS_SIP_INVITE
	Response Code = TRYING (100)
08:59:32.626005          IMS SIP Message          Length: 1445
	Direction = NETWORK_TO_UE
	Message ID = IMS_SIP_INVITE
	Response Code = OK (200)

6  CM 向 QMI 指示电话会议的状态以发送到 UI

        关键字:Call Manager|IMS --> qipcall_process_messages_from_qimfif

        关键字 qipcall_process_messages_from_qimfif 是将SIP消息中的关键信息过滤出来的信息

08:59:32.627995          IMS/High                 [           qipcall.c   1565] qipcall_process_messages_from_qimfif: Rxed Connected - Incoming Established
08:59:32.632005          Call Manager/High        [           cmipapp.c   4078] =CM= IMS_RPT: RPT name 617
08:59:32.632005          Call Manager/High        [            cmtask.c  10965] =CM= CM<< IP cmd:617

7  QMI 将指示发送到 UI

        关键字:QMI --> Service_VOICE

08:59:32.632007	[0x1544]	QMI_MCS_QCSI_PKT
packetVersion = 2
V2 {
   MsgType = Indication									//通话状态上报
   Service_VOICE {										//QMI关键字Service_VOICE
      ServiceVOICEV2 {
         voice_all_call_status {
            voice_all_call_status_indTlvs[0] {
               call_info {
                  num_of_instances = 3
                  call_info[0] {						//UE1和电话会议处于通话(CONVERSATION)状态
                     call_id = 3
                     call_state = CALL_STATE_CONVERSATION
                     call_type = CALL_TYPE_VOICE_IP
                  }
                  call_info[1] {						//UE1和UE3处于HOLD状态
                     call_id = 2
                     call_state = CALL_STATE_HOLD
                     call_type = CALL_TYPE_VOICE_IP
                  }
                  call_info[2] {						//UE1和UE2处于HOLD状态
                     call_id = 1
                     call_state = CALL_STATE_HOLD
                     call_type = CALL_TYPE_VOICE_IP
                  }
               }
            }
            voice_all_call_status_indTlvs[3] {
               remote_party_number {
                  num_instances = 3						//当前有3路通话
                  remote_party_number[0] {				//第3路通话-电话会议
                     call_id = 3
                     number_len = 5
                     number = { m, m, t, e, l }
                  }
                  remote_party_number[1] {				//第2路通话(UE3)信息
                     call_id = 2
                     number_len = 13
                     number = { 
                        +, 9, 0, 5, 4, 6, 1, 8, 
                        2, 9, 0, 9, 4
                     }
                  }
                  remote_party_number[2] {				//第1路通话(UE2)信息
                     call_id = 1
                     number_len = 11
                     number = { 
                        0, 5, 5, 2, 6, 2, 9, 8, 
                        9, 2, 0
                     }
                  }
               }
            }         
         }
      }
   }
}

8  一旦与会议服务器的通话建立,UE 会发送一条Refer 消息将UE2 添加到电话会议中。

        关键字:OTA --IMS

08:59:32.758080          IMS SIP Message          Length: 1624	//UE请求将 UE2 添加到电话会议
	Direction = UE_TO_NETWORK
	Message ID = IMS_SIP_REFER
	Response Code = INFORMAL_RESPONSE (0)
08:59:32.816001          IMS SIP Message          Length:  579	//网络回复接受
	Direction = NETWORK_TO_UE
	Message ID = IMS_SIP_REFER
	Response Code = ACCEPTED (202)

9  UE1 到 UE2 的呼叫结束状态指示给 QMI 通知给 UI 

        关键字:Call Manager|IMS --> qipcallh_chg_state_to_null   /  OTA --IMS

08:59:33.123021          IMS/High                 [          qipcallh.c   9199] [qipcallh_chg_state_to_null] [call_id: 5] [state: 14], end_reason = 0, end_request_type = 2
08:59:33.123033          IMS VoLTE Session End    Length:  271
	Terminating Uri = tel:05526298920;phone-context=ims.mnc003.mcc286.3gppnetwork.org
	End Cause = MO initiated
08:59:33.139010          IMS/Medium               [qipcall_indication.c    611] qipcall_call_end_rpt_ind: call_id=5, state=1, cause=0, error code=-1, sip error code=0, emerg_srv_cat=0
08:59:33.139010          Call Manager/High        [           cmipapp.c   4078] =CM= IMS_RPT: RPT name 605
08:59:33.139010          Call Manager/High        [            cmtask.c  10965] =CM= CM<< IP cmd:605
08:59:33.139010          Call Manager/High        [          cmipcall.c   3600] =CM= AS_ID 0, IP RXD: CALL_END, end_cause=0, client_end_cause=-1, call_id=5, call_state=3, is_lte_hard_failure=0

10  UE1 到 UE2 呼叫的状态通过 QMI 指示给 UI

        关键字:QMI --> Service_VOICE

08:59:33.140039	[0x1544]	QMI_MCS_QCSI_PKT
packetVersion = 2
V2 {
   MsgType = Indication									//通话状态上报
   Service_VOICE {										//QMI关键字Service_VOICE
      ServiceVOICEV2 {
         voice_all_call_status {
            voice_all_call_status_indTlvs[0] {
               Type = 0x01
               Length = 22
               call_info {
                  num_of_instances = 3
                  call_info[0] {						//UE1和电话会议处于通话(CONVERSATION)状态
                     call_id = 3
                     call_state = CALL_STATE_CONVERSATION
                     call_type = CALL_TYPE_VOICE_IP
                  }
                  call_info[1] {						//UE1和UE2处于HOLD状态
                     call_id = 2
                     call_state = CALL_STATE_HOLD
                     call_type = CALL_TYPE_VOICE_IP
                  }
                  call_info[2] {						//UE1和UE2处于END状态
                     call_id = 1
                     call_state = CALL_STATE_END
                     call_type = CALL_TYPE_VOICE_IP
                  }
               }
            }
            voice_all_call_status_indTlvs[3] {
               remote_party_number {
                  num_instances = 3						//当前有3路通话
                  remote_party_number[0] {				//第3路通话-电话会议
                     call_id = 3
                     number_len = 5
                     number = { m, m, t, e, l }
                  }
                  remote_party_number[1] {				//第2路通话(UE3)信息
                     call_id = 2
                     number_len = 13
                     number = { 
                        +, 9, 0, 5, 4, 6, 1, 8, 
                        2, 9, 0, 9, 4
                     }
                  }
                  remote_party_number[2] {				//第1路通话(UE2)信息
                     call_id = 1
                     number_len = 11
                     number = { 
                        0, 5, 5, 2, 6, 2, 9, 8, 
                        9, 2, 0
                     }
                  }
               }
            }
         }
      }
   }
}

11  UE发送refer消息将UE3加入电话会议

        关键字:OTA --IMS

08:59:33.138184          IMS SIP Message          Length: 1578		//UE请求将 UE3 添加到电话会议
	Direction = UE_TO_NETWORK
	Message ID = IMS_SIP_REFER
	Response Code = INFORMAL_RESPONSE (0)
08:59:33.208057          IMS SIP Message          Length:  579		//网络回复接受
	Direction = NETWORK_TO_UE
	Message ID = IMS_SIP_REFER
	Response Code = ACCEPTED (202)

12  UE3加入会议后,IMS发送SIP BYE消息结束与UE3的通话

        关键字:OTA --IMS

08:59:33.944150          IMS SIP Message          Length:  601	//网络下发BYE消息
	Direction = NETWORK_TO_UE
	Message ID = IMS_SIP_BYE
	Response Code = INFORMAL_RESPONSE (0)
08:59:33.948069          IMS SIP Message          Length:  678	//UE回复网络OK
	Direction = UE_TO_NETWORK
	Message ID = IMS_SIP_BYE
	Response Code = OK (200)

13  UE1 到 UE3 的呼叫结束状态被指示给 QMI 以通知给 UI

        关键字:Call Manager|IMS --> qipcallh_chg_state_to_null   /  OTA --IMS

08:59:33.948984          IMS/High                 [          qipcallh.c   9199] [qipcallh_chg_state_to_null] [call_id: 6] [state: 14], end_reason = 0, end_request_type = 3
08:59:33.949006          IMS VoLTE Session End    Length:  213
	Terminating Uri = sip:+905527068232@ims.mnc003.mcc286.3gppnetwork.org
	End Cause = MT initiated
08:59:33.950990          IMS/Medium               [qipcall_indication.c    611] qipcall_call_end_rpt_ind: call_id=6, state=1, cause=0, error code=-1, sip error code=0, emerg_srv_cat=0
08:59:33.950990          Call Manager/High        [           cmipapp.c   4078] =CM= IMS_RPT: RPT name 605
08:59:33.950990          Call Manager/High        [            cmtask.c  10965] =CM= CM<< IP cmd:605
08:59:33.950990          Call Manager/High        [          cmipcall.c   3600] =CM= AS_ID 0, IP RXD: CALL_END, end_cause=0, client_end_cause=-1, call_id=6, call_state=3, is_lte_hard_failure=0
08:59:33.963004          QMI_MCS_QCSI_PKT         Length:   59

14  UE1 到 UE3 呼叫的状态通过 QMI 指示给 UI

        关键字:QMI --> Service_VOICE

08:59:33.951003	[0x1544]	QMI_MCS_QCSI_PKT
packetVersion = 2
V2 {
   MsgType = Indication									//通话状态上报
   Service_VOICE {										//QMI关键字Service_VOICE
      ServiceVOICEV2 {
         voice_all_call_status {
            voice_all_call_status_indTlvs[0] {
               call_info {
                  num_of_instances = 2
                  call_info[0] {						//UE1和电话会议处于通话(CONVERSATION)状态
                     call_id = 3
                     call_state = CALL_STATE_CONVERSATION
                     call_type = CALL_TYPE_VOICE_IP
                  }
                  call_info[1] {						//UE1和UE3处于END状态
                     call_id = 2
                     call_state = CALL_STATE_END
                     call_type = CALL_TYPE_VOICE_IP
                  }
               }
            }
            voice_all_call_status_indTlvs[3] {
               remote_party_number {
                  num_instances = 2						//当前有2路通话
                  remote_party_number[0] {				//第3路通话-电话会议
                     call_id = 3
                     number_len = 5
                     number = { m, m, t, e, l }
                  }
                  remote_party_number[1] {				//第2路通话(UE3)信息
                     call_id = 2
                     number_len = 13
                     number = { 
                        +, 9, 0, 5, 4, 6, 1, 8, 
                        2, 9, 0, 9, 4
                     }
                  }
               }
            }
         }
      }
   }
}

15  IMS 向 CM 发送电话会议状态的指示

        关键字:IMS --> QIPCALLE_TRANSFER_STATE_CONFERENCE

08:59:33.962995          IMS/High                 [qipcall_conf_and_transfer_call.c   5110] QIPCALLE_TRANSFER_STATE_CONFERENCE status = 1, participants added = 2

16  CM 收到电话会议的指示并发送到 QMI 以通知 UI

        关键字:Call Manager

08:59:33.962995          Call Manager/High        [          cmipcall.c   4625] =CM= IP RXD: SUPS_CONF, sups_type=5, num_part=2, participant=0xfb09aa40 id=7, rpt asubs_id=0, is_ims_cap_on_sub=1

17  QMI 指示对 UI 的管理调用的结果

        UE1 电话会议状态通过 QMI 指示给 UI  -->  中间态可忽略

        关键字:QMI --> Service_VOICE

08:59:33.963004	[0x1544]	QMI_MCS_QCSI_PKT
packetVersion = 2
V2 {
   MsgType = Indication										//通话状态上报
   Service_VOICE {											//QMI关键字Service_VOICE
      ServiceVOICEV2 {
         voice_all_call_status {
            voice_all_call_status_indTlvs[0] {				//UE2和UE3加入电话会议,电话会议处于通话(CONVERSATION)状态
               call_info {
                  num_of_instances = 1
                  call_info[0] {
                     call_id = 3
                     call_state = CALL_STATE_CONVERSATION
                     call_type = CALL_TYPE_VOICE_IP
                  }
               }
            }
            voice_all_call_status_indTlvs[3] {
               remote_party_number {
                  num_instances = 1						//当前只有1路通话
                  remote_party_number[0] {				//第3路通话-电话会议
                     call_id = 3
                     number_len = 5
                     number = { m, m, t, e, l }
                  }
               }
            }
         }
      }
   }
}

        关键字:QMI --> Service_VOICE

08:59:33.963004	[0x1544]	QMI_MCS_QCSI_PKT
packetVersion = 2
V2 {
   MsgType = Response									//电话会议请求响应
   ServiceId = VOICE
   MinorRev = 106										//请求消息ID
   Service_VOICE {
      ServiceVOICEV2 {
         voice_manage_ip_calls {
            voice_manage_ip_calls_respTlvs[0] {
               resp {
                  result = QMI_RESULT_SUCCESS			//电话会议请求成功
                  error = QMI_ERR_NONE
               }
            }
         }
      }
   }
}
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
高通平台稳定性是指在高通处理器上运行的操作系统和应用程序的稳定性。然而,有时候由于一些特殊情况,可能会出现中断风暴而导致系统崩溃。 中断风暴是指由于某些硬件或软件问题,中断请求过于频繁,超出系统处理能力的范围,从而导致系统无法正常运行。这会导致系统进入一种无限处理中断请求的循环状态,最终可能导致系统panic。 在高通平台上,中断控制器负责管理和协调中断请求的处理。当有中断请求发生时,中断控制器会将其传递给处理器,并相应地进行中断服务程序的处理。 然而,如果系统中存在某个硬件或驱动程序的问题,可能会导致中断请求的频率过高,超出系统处理能力的范围。这可能是由于硬件故障、驱动程序错误或应用程序错误等原因引起的。 当中断请求过于频繁时,处理器无法及时处理所有请求,导致系统陷入中断处理的循环,无法继续正常运行。最终,系统可能会因为无法处理中断请求而panic,即系统崩溃。 为避免中断风暴导致panic,开发人员应该严格测试和调试硬件、驱动程序和应用程序,确保其在高通平台上的稳定性。同时,及时修复和更新可能存在的问题,并优化中断处理机制,以提高系统的稳定性和性能。 总而言之,高通平台的稳定性分析中应注意中断风暴可能导致系统panic的情况。通过合理优化中断处理机制、修复和更新问题,可以提高系统的稳定性,确保正常运行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值