1. 收到新短信
L4层收到短信,向MMI_Task递交消息
l4c_sms_new_msg_text_lind()
ilm_ptr->msg_id = (kal_uint16) MSG_ID_MMI_SMS_DELIVER_MSG_IND;
注册到 mmi_frm_sms_new_sms_ind
CHISTIncRecvdSMS(); //更新短信计数器
mmi_frm_sms_convert_new_sms(msgInd, data) //转换短信数据convert L4 data to MMI data
mmi_frm_sms_add_new_sms(mmi_frm_sms_deliver_msg_struct *entry, U16 length, U8 *data) //并压入未读短信队列
mmi_frm_sms_new_sms()
2. 短信分类
新的短信信箱的类型为MMI_FRM_SMS_AWAITS
消息类型是:mmi_frm_sms_deliver_msg_struct
Mmi_frm_sms_msgbox_struct 保存到msgbox并设置信箱类型为MMI_FRM_SMS_UNREAD 并添加其索引到inbox
mmi_frm_sms_new_sms()
--à mmi_frm_sms_indicate_sms(index);
-à mmi_frm_sms_convert_mt_to_entry()
type = MMI_FRM_SMS_UNREAD;
-àmsgbox_index = mmi_frm_sms_add_sms_to_msgbox(entry, data->index, segment);
à entryindex = mmi_frm_sms_add_sms_entry(entry, index, thisseg);
à mmi_frm_sms_add_sms_to_list(entry, entryindex);
-à mmi_frm_sms_new_msg_ind(msgbox_index);
àmmi_frm_sms_interrupt_callback(MOD_MMI, PRT_MSG_ID_MMI_SMS_DELIVER_MSG_IND,(void*)data, MMI_FRM_SMS_OK);
à mmi_frm_sms_interrupt_handler[i].callback(inMsg, mod, result);
à 回调mmi_msg_handle_new_msg_ind(void *data, module_type mod, U16 result)
à mmi_msg_new_msg_ind(index);
3. 新短信提示
mmi_msg_new_msg_ind(index);
-à mmi_frm_sms_get_list_index(&type, &list_index, g_msg_cntx.msg_ind_index);
à mmi_frm_sms_get_sms_list_index(type, index, msgbox_index);
-àmmi_msg_entry_new_msg_ind(); //新短信查看入口
à mmi_nmgr_notify(MMI_NMGR_APP_SMS, MMI_NMGR_OPTION_USE_DEFAULT);
à mmi_nmgr_notify_common(type, flag, mmi_nmgr_entry_default);
à app->query_func() == mmi_msg_nmgr_query_sms_notify(void)
àinfo.left_softkey = STR_SCR6035_LSK;
àmmi_msg_check_new_msg_password_key_handler/
4. 读取短信
设置密码否
mmi_msg_check_new_msg_password_key_handler()
-àmmi_msg_check_new_msg_password();
YES
EntryNewScreen(SCR_ID_MSG_IND_CHECK, NULL, NULL, NULL);
SetLeftSoftkeyFunction(NewMsgPasswordCheck,KEY_EVENT_UP);
NO
mmi_msg_get_msg_new();
à mmi_msg_exit_inbox_list_dummy(); //设置【返回】跳转的位置
àmmi_msg_get_msg_req(MMI_FRM_SMS_APP_NOBOX, g_msg_cntx.msg_ind_index);
à mmi_frm_sms_read_sms(mmi_msg_get_msg_rsp, MOD_MMI, type, index, MMI_TRUE);
mmi_frm_sms_write_action(callback, mod_src, data, mmi_frm_sms_read_sms_req);
mmi_frm_sms_read_action();
(*currFuncPtr) (currFuncData); == mmi_frm_sms_read_sms_req(void *inMsg)
#ifndef __MMI_DUAL_SIM_MASTER__
mmi_frm_sms_read_sms_seg();
#else
MTPNP_PFAL_Read_SMS_Segment();
#endif
mmi_msg_get_msg_rsp
mmi_msg_entry_inbox_msg
mmi_msg_entry_outbox_msg()
mmi_msg_entry_simbox_msg()
mmi_msg_entry_default_msg()
5. 更新短信状态
mmi_frm_sms_read_sms()
mmi_frm_sms_set_sms_status(type, index, MMI_FRM_SMS_INBOX);
mmi_frm_sms_set_sms_status(U16 type, U16 index, U16 newtype)
msgindex = index;
mti = (mmi_frm_sms_msg_box[msgindex].msgtype & 0xf000);
mmi_frm_sms_msg_box[msgindex].msgtype = mti | newtype;
break;