前面文章分别介绍过彩信(MMS)流程和双卡DDS切换功能,本篇重点介绍非DDS卡进行彩信业务流程,方便大家理解。
(11条消息) 彩信功能介绍_Jack(Li)的博客-CSDN博客
在彩信功能介绍文章中,我们知道MMS业务priority默认config高于default data,非DDS卡下载由MT SMS触发。在进行MMS业务时,app发送NetworkRequest中携带目标SUBID信息,在TNF中匹配上对应的SIM卡。
(11条消息) 双卡双待手机DDS切换功能介绍_Jack(Li)的博客-CSDN博客
文章中介绍了DDS自动和手动切换方式。
MMS会触发DDS自动切换,区别于DDS的手动切换,并没有将LTE capability切到临时高优先级业务的SIM卡,通过InformDdsToRil与ALLOW_DATA之间的组合来区分场景,只有当Allow_data与informDdsToRil一致时,才将4G的capability全部switch到同一张SIM。
参考代码
qcril_qmi_nas.c void qcril_qmi_nas_request_allow_data
(
const qcril_request_params_type *const params_ptr,
qcril_request_return_type *const ret_ptr
)
{
else if( ( qmi_ril_is_multi_sim_feature_supported() &&
(!strncmp(prop_val, "dsds", QMI_RIL_SYS_PROP_LENGTH_MULTI_SIM )) &&
(nas_common_info.dsds.is_default_data_set == TRUE ) &&
(nas_common_info.dsds.default_data_instance_id != qmi_ril_get_process_instance_id()) &&(!NAS_CACHE_IS_ENTRY_VALID(nas_dms_cached_info.max_active_data_subs) ||
(1 == nas_dms_cached_info.max_active_data_subs))
) || ( qmi_ril_is_multi_sim_feature_supported() &&
(!NAS_CACHE_IS_ENTRY_VALID(nas_dms_cached_info.max_active_data_subs) ||
(1 == nas_dms_cached_info.max_active_data_subs)) )
)
{
if (!NAS_CACHE_IS_ENTRY_VALID(nas_cached_info.is_default_data_subs) ||
(0 == nas_cached_info.is_default_data_subs) ||
(NAS_CACHE_IS_ENTRY_VALID(nas_cached_info.dds_type) && (NAS_DDS_TYPE_PERMANENT_V01 == nas_cached_info.dds_type)))
{
res = qcril_qmi_nas_send_data_subscription_request(NAS_DDS_DURATION_TEMPORARY_V01);
QCRIL_LOG_ESSENTIAL("DDS change triggered because of MMS in DSDS.. res %d", res);
}
参考Log
SUB0为DDS卡,SUB1为副卡,彩信通过SUB1发送。
//MMS app request MMS networkRequest to CS
MmsService: sendMessageMmsService: [SendRequest@1be6253] MmsNetworkManager: start new network request
ConnectivityService: requestNetwork for Request from uid/pid:1001/8297 for NetworkRequest [ id=26, legacyType=-1, [ Transports: CELLULAR Capabilities: MMS&NOT_RESTRICTED&TRUSTED&NOT_VPN Specifier: <2>] ]//phoneSwitch handle
PhoneSwitcherNetworkRequstListener: got request NetworkRequest [id=26,legacyType=-1,[Transports:CELLULAR Capabilities:MMS&NOT_RESTRICTED&TRUSTED&NOT_VPN Specifier: <2>]] with score 0
TelephonyNetworkFactory[1]: got request NetworkRequest [ id=26, legacyType=-1, [ Transports: CELLULAR Capabilities: MMS&NOT_RESTRICTED&TRUSTED&NOT_VPN Specifier: <2>] ] with score 0
PhoneSwitcher: InformDdsToRil rild= 0, DDS=0
PhoneSwitcher: InformDdsToRil rild= 1, DDS=0
//PS ability switch, from SUB0 -> SUB1
RILJ : [6806]> RIL_REQUEST_ALLOW_DATA allowed: false [SUB0]
RILJ : [6807]> RIL_REQUEST_ALLOW_DATA allowed: true [SUB1]
RILJ : [6806]< RIL_REQUEST_ALLOW_DATA [SUB0]
RILJ : [6807]< RIL_REQUEST_ALLOW_DATA [SUB1]
//setup pdp on SUB1
RILJ:[6857]> SETUP_DATA_CALL 2 0 cmwap 0 IPV4V6 [SUB1]
RILJ:[6857]< SETUP_DATA_CALL DataCallResponse: {version=11 status=0 retry=-1 cid=0 active=2 type=IPV4V6 ifname=rmnet_data0 mtu=1500 addresses=[10.138.193.14/30] dnses=[211.136.112.50,211.136.150.66] gateways=[10.138.193.13] pcscf=[]} [SUB1]
//MMS
MmsService: [SendRequest@1be6253] MmsNetworkManager: start new network request
MmsService: NetworkCallbackListener.onAvailable: network=129
MmsService: [SendRequest@1be6253] APN name is cmwap
MmsService: [SendRequest@1be6253] Loading APN using name cmwap
MmsService: [SendRequest@1be6253] HTTP: POST http://mmsc.monternet.com[25], proxy=10.0.0.172:80, PDU size=6689
MmsService: [SendRequest@1be6253] HTTP: User-Agent=Android-Mms/2.0
MmsService: [SendRequest@1be6253] HTTP: UaProfUrl=http://www.google.com/oha/rdf/ua-profile-kila.xml
MmsService: [SendRequest@1be6253] HTTP: 200 OKMmsService: [SendRequest@1be6253] HTTP: response size=43
MmsService: [SendRequest@1be6253] MmsNetworkManager: release, count=0
MmsService: getAutoPersisting
MmsService: Schedule requests pending on SIM
MmsServiceBroker: getCarrierConfigValues() by com.android.messaging
//recovery original pdp state after MMS finished
TelephonyNetworkFactory[1]: onReleaseNetworkFor NetworkRequest [ id=26, legacyType=-1, [ Transports: CELLULAR Capabilities: MMS&NOT_RESTRICTED&TRUSTED&NOT_VPN Specifier: <2>] ]
RILJ : [6872]> RIL_REQUEST_ALLOW_DATA allowed: false [SUB1]
RILJ : [6873]> RIL_REQUEST_ALLOW_DATA allowed: true [SUB0]
RILJ : [6872]< RIL_REQUEST_ALLOW_DATA [SUB1]
RILJ : [6873]< RIL_REQUEST_ALLOW_DATA [SUB0]
RILJ : [6927]> SETUP_DATA_CALL 14 0 cmnet 0 IPV4V6 [SUB0]
RILJ : [6927]< SETUP_DATA_CALL DataCallResponse: {version=11 status=0 retry=-1 cid=0 active=2 type=IPV4V6 ifname=rmnet_data0 mtu=1500 addresses=[10.172.13.248/28] dnses=[211.136.112.50,211.136.150.66] gateways=[10.172.13.249] pcscf=[]} [SUB0]