找回密码
 注册
搜索
查看: 1178|回复: 5

[讨论] 请教关于mtk的彩信,消息传递机制问题。

[复制链接]
发表于 2011-6-24 14:31:21 | 显示全部楼层 |阅读模式
具体的问题是这样子。

在unifiedmessage这个模块里面,当手机上的彩信存储容量达到上限的时候,再次保存或者发送彩信时,除了提示彩信容量达到上限,还会提示“无效的消息ID(Invalid Message ID)”。分析代码流程得出结论如下:


MMI_task()->
  ProtocolEventHandler()->
    mmi_frm_execute_current_protocol_handler()->
      mmi_umms_get_content_rsp()->    (这个函数分析是用于读取彩信的内容)
        mmi_umms_receive_get_content_rsp()->
          mmi_umms_get_content_for_msg_info()->
            mmi_umms_show_error_pop_up()    (这个函数是用popup框来提示用户。)

由于看到这里mmi_umms_get_content_rsp()这个函数被系统调用了,于是猜测应该对应的mmi_umms_get_content_req()函数应该是被调用过。于是在该函数处设置了breakpoint,但是发现重复上述操作,并未执行mmi_umms_get_content_req()函数。由此怀疑是否是消息传递发生错误,所以导致mmi_umms_get_content_rsp()这个函数被错误地调用到。由于对于mtk的消息传递机制还不是很了解,所以想请教一下,在mtk的消息传递机制中消息的发送和接收的具体流程。
我认为这里mmi_umms_get_content_rsp()函数被调用到,应该是系统在MMI_task()里面还是得到了和这个函数匹配的MSGID,但是这个MSGID究竟是在什么地方发送到MMI_task()的,一时还没有很好的思路来定位,我想如果找到这个地方,这个问题应该就迎刃而解了。希望各位可以帮忙解答一下,如果我自己分析的有问题,请用力拍砖!

谢谢!
发表于 2011-6-27 12:28:27 | 显示全部楼层
学些了!!
点评回复

使用道具 举报

 楼主| 发表于 2011-6-27 09:49:07 | 显示全部楼层
以下是引用iamyushaopeng在2011-6-25 15:24:47的发言:
不一定需要执行mmi_umms_get_content_req才会导致其他模块响应消息回来执行mmi_umms_receive_get_content_rsp(),其他模块发给mmi模块的任何消息只要是msg_id是MMA_APP_ID_MMS_APP都会回来执行这个函数,你需要在所有发送这个消息id的地方加trace或者在模块之间的消息通讯函数设置断点才能找到发起请求消息的地方,明白?


OK。非常感谢谢谢。
点评回复

使用道具 举报

 楼主| 发表于 2011-6-27 09:46:59 | 显示全部楼层
谢谢~~~
点评回复

使用道具 举报

发表于 2011-6-25 15:24:47 | 显示全部楼层
不一定需要执行mmi_umms_get_content_req才会导致其他模块响应消息回来执行mmi_umms_receive_get_content_rsp(),其他模块发给mmi模块的任何消息只要是msg_id是MMA_APP_ID_MMS_APP都会回来执行这个函数,你需要在所有发送这个消息id的地方加trace或者在模块之间的消息通讯函数设置断点才能找到发起请求消息的地方,明白?
点评回复

使用道具 举报

发表于 2011-6-24 22:25:13 | 显示全部楼层
mmi_umms_get_content_rsp()
应该注册到一个MSG ID吧,那就搜这个MSG ID是哪里发出,为什么发出就好啦。
提示invalid message ID是没有更新UM里的消息列表吧。
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2024-12-26 22:18 , Processed in 0.044909 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表