非DDS卡发送彩信(MMS)业务流程介绍

发布于:2023-01-15 ⋅ 阅读:(741) ⋅ 点赞:(0)

前面文章分别介绍过彩信(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 switchfrom 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]

 


网站公告

今日签到

点亮在社区的每一天
去签到