【Telephony 】【Call】VILTE失败挂断问题(MTK)

小孤蓝课堂开课拉,现在是实践时间!
bug很多!你很忙的!解不完,根本解不完!
还是那句话,遇到问题先问是不是,先确认问题有效性,提高解问题效率要三步走:是不是?是什么?为什么?

BUG:DUT fails to initiate call to off net No. through video call option for BSNL operator.

用MO直接拨VILTE给MT,视频通话连接失败直接挂断了。而后提了需求,要求失败后能够自动转语音通话
问题背景:必现问题、印度、MTK平台、Android 13
问题思路:
1)检查挂断原因2)针对运营商修改挂断后的代码流程

1、检查AP侧挂断原因

检查AP侧的挂断原因能够排除一些常见的挂断情况。 直接搜索关键字:“onCallStateChanged、DisconnectCause”,不同平台打印略有差异。例如,如果是因对方正忙而断线,我们能在这里收到,“BUSY”。拨打电话受到限制(例如在飞行模式下拨号)而断开连接。我们能在这里收到"RESTRICTED"。
在这里插入图片描述
https://developer.android.com/reference/android/telecom/DisconnectCause 这是谷歌官方手册,更详细的在DisconnectCause.java类里面。
从AP日志中看出,这个问题挂断的原因是"REMOTE","REMOTE"的出现可能有两个原因:一是网络信号不对,二是对方主动挂断。
在这里插入图片描述

我们需要确认"UNKNOW"的原因以及"REMOTE"挂断的原因。这里显示是对方主动挂断,这不符合我们测试出来的实际结果,MT还未接通如何挂断?
所以我们需要往下看Modem侧的日志看看网络返回了什么状态码。

2、检查Modem侧挂断原因

日志关键字,480错误:

Reason: SIP;cause= 480;text= “Temporarily Unavailable”
m=video 0 RTP/AVP 114 115
[NW->MS][P1][S1]SIP/2.0 487 Request Terminated

在这里插入图片描述
这是常见的SIP 错误码文档:
https://blog.csdn.net/yetyongjin/article/details/115460237
在这里插入图片描述
本问题挂断的SIP 状态码返回的是480,这个应答说明请求已经抵达MT机器,但基于某种原因被叫方不能处理。我们收到480错误后,执行487 CANCEL 请求,取消这个未完成的INVITE 应答。这也能对上为什么APlog中打印的挂断原因是因为"REMOTE"
所以,问题出现在MT 机器上,MT 机器不是情况我们不了解。后来检查发现,MT 机器是不支持视频通话的,所以我们项目机器无法与它视频通话。但是客户要求要做到连接失败能够自动转语音通话。

3、修改方案

我们向MTK 平台厂商咨询了问题情况,MTK原生基线不支持这个运营商的自动转volte。
我们针对BSNL运营商配置了一项配置:retry_video_as_voice_on_failure
这个修改取决于网络返回的错误代码,当发出VILTE 呼叫时,我们从视频端口(video port = 0)NW 收到480,等待NW 发送下一条消息。当NW 向我们发送487 请求终止(10 秒后)确认无法进行视频通话时,立即发起retry volte通话。

  • 27
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值