MTK短信Word文档下载推荐.docx

上传人:b****6 文档编号:21057842 上传时间:2023-01-27 格式:DOCX 页数:52 大小:38.60KB
下载 相关 举报
MTK短信Word文档下载推荐.docx_第1页
第1页 / 共52页
MTK短信Word文档下载推荐.docx_第2页
第2页 / 共52页
MTK短信Word文档下载推荐.docx_第3页
第3页 / 共52页
MTK短信Word文档下载推荐.docx_第4页
第4页 / 共52页
MTK短信Word文档下载推荐.docx_第5页
第5页 / 共52页
点击查看更多>>
下载资源
资源描述

MTK短信Word文档下载推荐.docx

《MTK短信Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《MTK短信Word文档下载推荐.docx(52页珍藏版)》请在冰豆网上搜索。

MTK短信Word文档下载推荐.docx

>

菜单

>

消息

收件箱

短信1-->

mmi_frm_sms_inbox_list[itemIndex]-->

smsIndex

短信2

[...]

短信n

短信箱(字串/屏幕)资源

[plutommi\mmi\Messages\MessagesInc\MessagesResourceData.h]

STR_INBOX_MENUENTRY//“收件箱”

STR_OUTBOX_MENUENTRY,//“发件箱”

SCR_ID_MSG_INBOX_LIST//收件箱屏

SCR_ID_MSG_OUTBOX_LIST,//发件箱屏幕

STR_SCR6028_CAPTION//“消息选单”

2、发短信

2.1、发送过程

SmsMoMtGuiInterface

SmsPsHandler

SMSCore

SMSMsg

1

mmi_msg_highlight_done

短信编辑[完成]

mmi_msg_entry_send_option

进入[发送选项]

2

mmi_msg_highlight_send_only

高亮[(仅)发送]选项

3

mmi_msg_send_msg_to_only_entry

进入[(仅)发送]选项

4

mmi_msg_send_msg_req

mmi_frm_sms_send_sms

mmi_frm_sms_write_action

mmi_frm_sms_read_action

5

mmi_frm_sms_pre_send_sms

6

mmi_frm_sms_send_sms_req

mmi_frm_sms_send_sms_seg

[......]

7

mmi_frm_sms_send_sms_rsp

mmi_msg_send_msg_rsp

HighlightWMessageHandler

回到[写短信]菜单项

2.2、发送过程详解:

2.2.1、短信编辑【完成】

短信编辑编辑【完成】后,按[完成]键盘进入发送选项单:

[SmsMoMtGuiInterface.c]

voidmmi_msg_highlight_done(void)

{

mmi_msg_highlight_generic(

STR_GLOBAL_OK,

IMG_GLOBAL_OK,

STR_GLOBAL_BACK,

IMG_GLOBAL_BACK,

mmi_msg_entry_send_option,

GoBackHistory);

[...]

}

进入[发送选项],将默认发送选项设为(仅)发送(SENDONLY):

voidmmi_msg_entry_send_option(void)

if(g_msg_cntx.sendMessageCase!

=SEND_CASE_SEND_FROM_OTHER_APP)

{

g_msg_cntx.sendMessageCase=SEND_CASE_SEND_ONLY;

/*reset*/

}

}

 

2.2.1、选择发送选项

以(仅)发送(SENDONLY)为例。

在高亮事件中注册ENTRY函数:

voidmmi_msg_highlight_send_only(void)

#ifdef__MMI_SEND_BY_SEARCH_NAME__

#else/*__MMI_SEND_BY_SEARCH_NAME__*/

mmi_msg_send_msg_to_only_entry,

#endif/*__MMI_SEND_BY_SEARCH_NAME__*/

2.2.2、进入【(仅)发送】选项

voidmmi_msg_send_msg_to_only_entry(void)

g_msg_cntx.msg_send_info.CurrSendSmsNumbers=0;

g_msg_cntx.msg_send_info.TotalSendSmsNumbers=1;

elseif(g_msg_cntx.sendMessageCase!

=SEND_CASE_SEND_FROM_PHB)

memset(g_msg_cntx.smsPhoneNumber,0,(MAX_DIGITS+1)*ENCODING_LENGTH);

mmi_msg_send_msg_req((U8*)g_msg_cntx.smsPhoneNumber,MMI_FRM_SMS_INVALID_INDEX,0);

2.2.3、设置短信发送请求标志

[SmsPsHandler.c]

voidmmi_msg_send_msg_req(U8*number,U16replyindex,U8hidenumscreen)

mmi_frm_sms_send_struct*sendData=OslMalloc(sizeof(mmi_frm_sms_send_struct));

memset((S8*)sendData,0,sizeof(mmi_frm_sms_send_struct));

#ifdef__MMI_UNIFIED_MESSAGE__

if(!

(mmi_um_get_current_msg_box_type()==UM_MSG_BOX_TYPE_UNSENT&

&

GetExitScrnID()==SCR_ID_MSG_OUTBOX_OPTION))

#else

if(GetMessagesCurrScrnID()!

=SCR_ID_MSG_OUTBOX_SEND_OPTION)

#endif

sendData->

sendrequire=MMI_FRM_SMS_SAVE_AFTER_FAIL;

/*ML:

tocontrolifwecanreleaseEMSornot*/

mmi_frm_sms_send_sms(mmi_msg_send_msg_rsp,MOD_MMI,sendData);

OslMfree(sendData);

2.3.4、注册短信发送回调函数

注册短信发送回调函数(callback,mmi_msg_send_msg_rsp),调用短信发送预处理函

数(action,mmi_frm_sms_pre_send_sms)

[SMSCore.c]

voidmmi_frm_sms_send_sms(PsFuncPtrU16callback,module_typemod_src,mmi_frm_sms_send_struct*sendData)

mmi_frm_sms_send_struct*data=OslMalloc(sizeof(mmi_frm_sms_send_struct));

memcpy((S8*)data,(S8*)sendData,sizeof(mmi_frm_sms_send_struct));

mmi_frm_sms_write_action(callback,mod_src,data,mmi_frm_sms_pre_send_sms);

U8mmi_frm_sms_write_action(PsFuncPtrU16callback,module_typemod_src,void*data,PsFuncPtrfunction)

mmi_frm_sms_action_structaction;

action.mod_src=mod_src;

action.data=data;

action.callback=callback;

action.action=function;

mmi_frm_sms_action_num++;

if(mmi_frm_sms_action_curr==MMI_FRM_SMS_INVALID_NUM)

mmi_frm_sms_read_action();

returnTRUE;

U8mmi_frm_sms_read_action(void)

PsFuncPtrcurrFuncPtr=mmi_frm_sms_action[mmi_frm_sms_action_head].action;

void*currFuncData=mmi_frm_sms_action[mmi_frm_sms_action_head].data;

mmi_frm_sms_action_num--;

if(currFuncPtr!

=NULL)

(*currFuncPtr)(currFuncData);

2.3.5、短信发送预处理

[SMSMsg.c]

voidmmi_frm_sms_pre_send_sms(void*inMsg)

{

mmi_frm_sms_send_struct*sendData=(mmi_frm_sms_send_struct*)inMsg;

[...]

mmi_frm_sms_free_sendsms_data();

sendSMS=OslMalloc(sizeof(mmi_frm_sms_send_struct));

memcpy((S8*)sendSMS,(S8*)sendData,sizeof(mmi_frm_sms_send_struct));

mmi_frm_sms_send_sms_req();

2.3.6、短信发送请求

voidmmi_frm_sms_send_sms_req(void)

/*checkSC:

getSCaddress,inMsgkeepstheflag*/

if((sendSMS->

sendcheck&

MMI_FRM_SMS_SC)!

=MMI_FRM_SMS_SC)

[...首次进入...]

return;

/*checkDA:

showinputscreen,inMsgkeepsthenumber*/

MMI_FRM_SMS_DA)!

=MMI_FRM_SMS_DA)

[...二次进入,弹出号码输入框...]

elseif((strlen((S8*)sendSMS->

number)==0)&

((sendSMS->

sendrequire&

MMI_FRM_SMS_REPLY)==0))

if(GetCurrScrnId()!

=SCR_ID_MSG_NUMBER)

mmi_frm_sms_entry_number();

sendSMS->

sendcheck=MMI_FRM_SMS_DA;

/*checkvalidityofDA*/

/*checkFDL:

whenFDNon*/

[...号码输入完毕,按[确认]到此...]

[...短信内容编码...]

result=mmi_frm_sms_pack_sms();

[...绘制发送短信发送界面...]

mmi_frm_sms_entry_send();

[...设置短信发送回调...]

SetProtocolEventHandler(mmi_frm_sms_send_sms_rsp,PRT_MSG_ID_MMI_SMS_SEND_MSG_RSP);

SetProtocolEventHandler(mmi_frm_sms_abort_sms_ind,PRT_MSG_ID_MMI_SMS_SEND_ABORT_START_IND);

[...(如果是长短信,循环)发送...]

for(i=0;

i<

j;

i++)

mmi_frm_sms_send_sms_seg();

voidmmi_frm_sms_send_sms_seg(void)

MMI_FRM_SMS_SEND_MSG_REQ_STRUCT*sendSms;

mmi_frm_sms_send_message(MOD_MMI,MOD_L4C,0,PRT_MSG_ID_MMI_SMS_SEND_MSG_REQ,(oslParaType*)sendSms,NULL);

2.3.7、短信发送回调

无论发送是否成功(或者[取消]),最后返回并高亮[写短信]菜单项:

HighlightWMessageHandler()。

voidmmi_frm_sms_send_sms_rsp(void*inMsg)

mmi_frm_sms_callback_action((void*)number,sendResult);

[SmsPsHandler.c]

voidmmi_msg_send_msg_rsp(void*number,module_typemod,U16result)

switch(result)

caseMMI_FRM_SMS_OK:

[...设置跳转节点...]

elseif(IsScreenPresent(SCR_ID_MSG_WRITE))

SetMessagesScrnIdToDelHistoryNodes(SCR_ID_MSG_WRITE);

[...删除历史屏幕,返回[写短信]...]

if(g_msg_cntx.msg_send_info.CurrSendSmsNumbers==g_msg_cntx.msg_send_info.TotalSendSmsNumbers)

DeleteMessagesHistoryNodes();

mmi_frm_sms_delete_screen_history();

3、收短信

3.1、短信接收过程

l4a_callback

MessagesMiscell

l4c_sms_new_msg_text_lind

[...]

mmi_frm_sms_new_sms_ind

mmi_frm_sms_new_sms

mmi_frm_sms_indicate_sms

mmi_frm_sms_new_msg_ind

mmi_msg_handle_new_msg_ind

mmi_msg_new_msg_ind

mmi_msg_entry_new_msg_ind

3.2、接收过程详解:

3.2.1、收到新短信

L4层收到短信,向MMI_Task递交消息。

[l4a_callback.c]

voidl4c_sms_new_msg_text_lind(...)

{

[…]

ilm_ptr->

msg_id=(kal_uint16)MSG_ID_MMI_SMS_DELIVER_MSG_IND;

/*Setthemessageid*/

//MSG_ID_MMI_SMS_DELIVER_MSG_IND被注册到mmi_frm_sms_new_sms_ind函数:

[SMSMsg.c]

voidmmi_frm_sms_set_protocol_event_handler(void)

SetProtocolEventHandler(mmi_frm_sms_new_sms_ind,PRT_MSG_ID_MMI_SMS_DELIVER_MSG_IND);

[…]

}

[ProtocolEvents.h]

#definePRT_MSG_ID_MMI_SMS_DELIVER_MSG_INDMSG_ID_MMI_SMS_DELIVER_MSG_IND

[…]

SEND_ILM(MOD_L4C,MOD_MMI,MMI_L4C_SAP,ilm_ptr);

MMI层收到新短信,更新短信计数器,转换短信数据,并压入未读短信队列。

短信过滤等操作放在CHISTIncRecvdSMS()之前。

[\plutommi\mmi\MiscFramework\MiscFrameworkSrc\SMSMsg.c]

voidmmi_frm_sms_new_sms_ind(void*inMsg)

if((1==IsBlockAndEmergencyOnly())

delete_pending_sms();

CHISTIncRecvdSMS();

/*convertL4datatoMMIdata*/

mmi_frm_sms_convert_new_sms(msgInd,data);

/*puttoawaitedlistlastentry,fromnowononlyprocessnewdataasawaitedlistlastentry*/

mmi_frm_sms_add_new_sms(data,msgInd->

no_msg_data,msgInd->

msg_data);

/*processnewsmsdata*/

mmi_frm_sms_new_sms();

3.2.2、短信分类

新短信的信箱类型为MMI_FRM_SMS_AWAITS,消息类型为mmi_frm_sms_deliver_msg_struct,必须转换为mmi_frm_sms_msgbox_struct类型,保存到全局的msgbox,并设置其信箱类型为MMI_FRM_SMS_UNREAD,添加其索引到inbox。

[\plutommi\mmi\MiscFramework\MiscFrameworkSrc\SMSCore.c]

voidmmi_frm_sms_new_sms(void)

caseMMI_FRM_SMS_AWAITS:

mmi_frm_sms_indicate_sms(index);

voidmmi_frm_sms_indicate_sms(U

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 韩语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1