详细设计说明书短消息.doc_第1页
详细设计说明书短消息.doc_第2页
详细设计说明书短消息.doc_第3页
详细设计说明书短消息.doc_第4页
详细设计说明书短消息.doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

短消息短消息短消息短消息 详细设计说详细设计说详细设计说详细设计说明明明明书书书书 MTK-M3 项目组 康佳通信科技开发中心软件所 2005 年 5 月 8 日 目录目录 修改历史修改历史3 1 整体结构及功能描述整体结构及功能描述.4 2 关键数据结构说明关键数据结构说明.5 3 主要存储分配主要存储分配.8 4 4 各子模块实现及主要算法说明各子模块实现及主要算法说明.8 4.1 初始化 8 4.2 短消息常见功能实现 .10 421 短消息的发送10 4.2.2 短消息的接收 12 4.2.3 短消息的保存 13 4.2.4 短消息的删除 14 4.2.5 编辑短消息 15 4.3 附加的一些 SMS 功能15 4.4 短消息设定17 5 5 内部调用的主要函数说明内部调用的主要函数说明.17 6 6 模块提供的外部接口函数说明模块提供的外部接口函数说明.19 7 7 主要信号说明主要信号说明.19 8 8 相关文档文件相关文档文件.20 修改历史修改历史 时间时间修改人修改人版本版本修改内容修改内容 2005-4-22张成卫1.0创建初始版本 1 整体结构及功能描述整体结构及功能描述 说明该程序应具有的功能,可采用IPO图(即输入一处理一输出图)的形式或文字描述。 短消息部分的整体结构如下图所示: SMS 大体分为以下几层:UI 层,PS 层以及架构在这两层之上的一些模块 (Setting,Ems,CB,Miscell 等)。其中 UI 层其实是 mmi 层,是用户和 ms 交互的接口层,而 Ps 层 则是与底层 PS 进行交互的接口层,其它的模块都是在这两层的基础上建立起来的。 SMS 上下层之间的协作通过上层调用下层的 ps 层接口函数来通信,比如说上层要实现一 个发送一个消息的操作,它就要调用底层对应的提供的封装好的相应的发送消息的函数接口。 在这些封装好的接口函数中,通过发送消息来实现最终的消息发送等操作。 SMS 部分的功能包括以下这些方面: 1, 初始化过程。当从 L4 收到 SMS 准备就绪的 ind 后,开始进行更新 CB 频道信息,取 得当前有效的 SC 号码,以及取得当前信箱的状态信息等。当这些动作做完之后, MMI SMS 才算是达到一个稳定状态,并且用户可以进入信箱列表,信息设定,CB 菜 单,以及发送 message 等。 2, 短消息的一些常见功能,例如短消息的发送,接收,删除,保存等等。另外就是短消 息的这些常见的操作的组合操作了,如删除全部,就是不停的循环直至所有的消息都 Message Application UI SmsMoMtGuiInterface.c Engine SmsPshandler.c Setting SmsSettings GuiInterface. c EMS EmsMiscel l.c CB Cellbroa dcast Smsmiscell Messages Miscell.c 被删除掉;以及群组发送等功能,就是循环发送给一个数组中的所有的号码。 3, 短消息一些附加的功能,比如:输入法,文本格式,插入一些图片,铃声,以及一些 预定义的信息等。这些附加的功能信息在 SMS 部分的功能也是非常重要的,MT6219 支持 EMS 等。 4, 短消息的设定模块,这个模块中包括 Profile 设定(包括 SC 号设定等),以及 common 变量设定,存储介质设定以及偏爱的传输网络设定等。 从下层的角度看,大致可以分成一下这些模块: 对短信的编辑;对短信的保存,以及对短信的各种操作等。 其中的编辑指的就是对短信息的各种加工操作,包括修改文本格式,插入 object 对象, 图片,铃声等等;短信息的保存操作主要是指收件箱和发件箱,收件箱主要是接收外部发来的 消息,而发件箱则主要是保存从本机上发送出去的消息,这些消息可以是由于 ms 用户选择得 在发送同时保存或者是由于消息没有成功发送而强制进行保存;对短信的各种操作例如有对短 信的删除,全部删除,取出其中的号码等。 2 关键数据结构关键数据结构说明说明 说明与本模块相直接关联的主要数据类型、主要常量、主要全局变量等。 保存 sms 环境变量的数据结构类型: typedef struct S32 currHiliteIndex;/当前高亮的消息当前高亮的消息 index S32 currBoxIndex;/当前的当前的 Box U16 MessagesScrnIdToDelHistoryNodes;/从那个从那个 screenId 开始删除开始删除 History U16 MessagesScrnIdDelUptoHistoryNodes;/删除到那个删除到那个 HistoryNode U16 msg_ind_index;/消息索引消息索引 U16 msg_ind_chat_index;/chat 中的消息索引中的消息索引 U8 msg_ind_in_idle;/是否处于是否处于 idle 状态状态 U8 msg_ind_after_call;/是否要处在是否要处在 call 后处理后处理 U8 msg_class0_ind;/是否属于是否属于 class0 类的消息类的消息 U8 msg_full_ind;/msg 空间是否已满空间是否已满 U8 msg_exceed_ind;/msg 空间是否已超出空间是否已超出 U8 msg_deliver_ind;/msg 已经传输已经传输 U8 msg_waiting_ind;/是否有等待处理的消息是否有等待处理的消息 U8 msg_init; /init to be false U8 number_from_phb; /init to be 0 S8smsPhoneNumber (MAX_DIGITS+1)*ENCODING_LENGTH;/sms 的目的号的目的号 码码 #ifdef _MMI_MESSAGES_TEMPLATE_ S8* templates NUM_TEMPLATES ;/存放所有的存放所有的 templates 的起始地址的起始地址 S8scratchTemplRec NVRAM_SMS_TEMPL_RECORD_SIZE+ENCODING_LENGTH ;/每次暂存的一条每次暂存的一条 Templ #endif S8* numbersList MAX_USE_NUMBERS ;/存放从存放从 msg 中取得的号码中取得的号码 U8 PhbSmsInterfaceState; /MMI_PHB_SMS_INTERFACE /sms 中用到中用到 phb 时状态时状态 MMI_SEND_ONLY. msg_display_list_enumtoDisplayMessageList; /显示显示 MsgList 的情况的情况: 可以为可以为 TO_DISPLAY_MESSAGE_LIST_NONE /TO_DISPLAY_MESSAGE_LIST_INBOX 等等. msg_send_case_enum sendMessageCase;/发送消息的方式发送消息的方式: 可以是可以是 SEND_CASE_SEND_ONLY.等等 msg_send_save_status_enum sendSaveStatus;/发送保存状态,已发送成功发送保存状态,已发送成功? 保存成功保存成功? msg_status_enum msg_status; /init to be MSG_STATUS_NOT_READY /消息当前状态消息当前状态 msg_waiting_ind_struct msg_waiting_infoMAX_WAITING_LINE_NUM; /init to zero /等待处理的消息信息等待处理的消息信息 msg_class0_msg_struct* msg_class0_p; /init to NULL /class0 类消息指针类消息指针 msg_deliver_report_struct* msg_deliver_reportMAX_STATUS_REPORT_NUM; /init to NULL /msg 的发送报告的发送报告_ _ _ 信息信息 #if defined(_MMI_MESSAGES_SEND_BY_GROUP_) | defined(_MMI_MESSAGES_SEND_TO_MANY_) msg_send_many_struct msg_send_info;/Send By Group 和和 Send To Many 情况下的情况下的 消息发送的纪录信息消息发送的纪录信息 #endif #if defined(_MMI_SMART_MESSAGE_MT_) | (defined(_MMI_SMART_MESSAGE_MO_) #endif msg_context_struct; msg_context_struct g_msg_cntx; /上面这个全局变量 g_msg_cntx 是用来保存纪录 sms 的上下文环境变量的关键结构变量; /在整个 sms 的运行期间其着非常重要的作用 另外一个比较重要的全局变量就是 msg_msgbox_info_struct msgbox_info; 这个全局变量是纪录所有的 inbox 和 outbox 的相关信息的,并且要注意的是: inbox,outbox 以及 awaitlist 都是在同一个队列中,这个 msgbox_info 全剧变量是纪录 所有的消息的一个结构数组。 下面这个数据结构是暂存发送的数据的: 在 sms 中一个信息可能比较长,由几个子片段信息组成(一个子信息长度固定),在一个消 息发送出去之前,暂存在这个变量中。 typedef struct unsigned chartotalSegments ;/总共有多少个子片段总共有多少个子片段 unsigned charpresentSegments ; /当前的片段当前的片段 unsigned charnextSegment ;/一个一个发送时下一个发送的片段一个一个发送时下一个发送的片段 unsigned chardcs;/编码方法编码方法_有有 gsm_7bit,8_bit,ucs2 等等 unsigned charudhi;/User Data Header Indicator 用户信息头标记用户信息头标记 unsigned charmti;/ Message Type Identifier 消息类型标记消息类型标记 unsigned charst;/Status 消息处理状态报告;详细的取值范围见消息处理状态报告;详细的取值范围见smsal_st_enum /枚举类型中的定义枚举类型中的定义 / Params for Sending only char*phNumber ;/发送的目的号码发送的目的号码 unsigned charnumber(20+2)*2;/ unsigned charstatus ;/状态信息状态信息 unsigned chartimestamp6;/时间戳时间戳 /prepare for new interface, 0416 unsigned shortmsgboxindex;/msgBox 中的纪录索引中的纪录索引 / Take a contiguous buffer so that we can re-use! /下边这几个域是用来保存用户的下边这几个域是用来保存用户的 msg 中的信息的中的信息的 unsigned charTPUDMMI_SMS_MAX_MSG_SEG * 160;/最长保存信息最长保存信息 unsigned char*TPUD_pMMI_SMS_MAX_MSG_SEG;/每个每个 seg 信息的指信息的指 真真 unsigned charTPUDLenMMI_SMS_MAX_MSG_SEG;/每一个每一个 seg 中信息中信息 的长度的长度 /MTK Joy added for error SIM handler, 10/07 unsigned charTPUD_udhiMMI_SMS_MAX_MSG_SEG;/对每一个对每一个 seg 保保 存一个用户信息的头标记存一个用户信息的头标记 unsigned shortl4indexMMI_SMS_MAX_MSG_SEG;/l4 层中的每一个层中的每一个 msg_seg 对应的索引对应的索引 PendingSaveSendDataStruct; 对应这个数据结构,定义的一个全局变量: PendingSaveSendDataStruct PendingSaveSendData; 这个也是一个非常重要的全局变量,它里边暂保存了当前正要待发送的数据信息的相关信 息,为下面调用底层的发送消息的命令提供了一个数据暂存空间,当 L4 层向协议栈发送 出消息时,就从这个结构中取相应的数据,然后发送消息。 特别注意的是: 在 sms 中 inbox,outbox,以及 awaitbox 这些并不是单独分开的,它们是实际上的一个队 列,而采用动态分界的方法来区分的,outbox 在前面,inbox 在后边,在 save 的时候,首 先 save 到 outbox 中,然后后边的所有的 msgentry 依次网后面移一个单位。 由 totoaloutbox 和 totalinbox 来分别动态的决定发件箱和收件箱的范围。 在 delete 时,如果 delete 掉 outbox 或者 inbox 中的某一个,那么后面的一次网前移动 一个 msgentry 单位。 3 主要存储分配主要存储分配 说明:根据需要,说明本模块的存储分配。 在 NVRAM 中主要的存储空间分配: NVRAM_EF_SMS_LID 所占的空间大小为:31*84 其中 record_size = 84 numberOfRecords = 31 NVARM_EF_SMS_CB_SMS_LID 所占的空间大小为:30*94 其中 NVRAM_SMS_CB_MSG_CONTENT 纪录 CB_MSG 的内容 NVRAM_EF_SMS_CB_SMS_INFO_LID 所占的空间大小为:20 纪录 NVRAM_SMS_CB_MSG_INFO 信息的 NVRAM_EF_SMS_CB_CHNL_LID 所占的空间大小 352 NVRAM_EF_EMS_MY_PICTURE_NAME_LID 空间大小 140 NVRAM_EF_EMS_MY_ANIMATION_NAME_LID 空间大小 140 NVRAM_EF_EMS_MY_MELODY_NAME_LID 空间大小 140 4 4 各子模块实现及主要算法说明各子模块实现及主要算法说明 说明:用图表(例如流程图、判定表等)辅以必要的说明来表示本程序的逻辑流程。详细说 明本程序所选用的算法,具体的计算公式和计算步骤。 4.14.1 初始化初始化 下面用流程图来说明本程序的逻辑流程: 开始 首先注册好对应的消息处理函数,当 PRT_MSG_ID_MMI_SMS_READY_IND 消息从 L4 层到送来时,调用对应的 mmi_msg_handle_ready_ind()函数来处理对应的这 个消息 首先,分别得到 Inbox 和 OutBox 以及 DraftBox 对应的 listSize,即分别得到了收件箱,发件箱以及草稿箱中纪录条目 多少。 然后设置对应的 hint(提示信息)包括 totalInbox,totalOutBox 以及 totalDraftBox 中的信息数目,以便后面显示用。 更新 MsgMenuList。 看 inbox,outbox 还是 draftbox 曾经出现? 如果是 inbox 曾经出现 的话,那么就进入 inbox_list 的 scrn 下。 并且同时在进入 inbox_list 下同时,调用 mmi_msg_inbox_list_get _item()得到 inbox_list 下 的 items 并显示出来。 如果是 outbox 曾经出现 的话,那么就进入 outbox_list 的 scrn 下 并同时在进入 outbox_list 下同时,调 用 mmi_msg_outbox_list_ge t_item()得到 outbox_list 下的 items 并显示出来。 如果是 draftbox 曾经出 现的话,那么就进入 draftbox_list 的 scrn 下 并同时在进入 draft_list 下同时,调用 mmi_msg_draftbox_list_g et_item()得到 draftbox_list 下的 items 并显示出来。 结束 在短消息中初始化时另外一个重要的工作要做的就是:生成 MailBoxList 并显示出来。显 示 MailBoxList 之前必须先要生成这个 List 首先。在这个 List 中用户可以看到所有完整的已收 到的 inbox 中的信息,和所有在 outbox 中保存的信息。这样在 inbox 中不完整的信息将会被 hidden 隐藏起来。 构造用来显示的 MailboxList 时,inboxList 不仅包括 inbox 还有 awaitList 中的信息。所有 的 inbox,outbox 以及 awaited 消息总共共享一个 list 结构,他们总和加起来不会超过这个 mailbox 的大小。 4.24.2 短消息常见功能实现短消息常见功能实现 4 42 21 1 短消息的发送短消息的发送 下面是短消息发送流程: 首先,发送一个短消息前必须首先检查当前 active 的 SC 号码(服务中心号码)是否为空, 如果是空的,那么 sms 就不会发送这个消息而只是将它保存起来。 然后检查 FDN 是否开启,如果它是开启的状态时还要首先检查 SC 号码与 DA 目的号码 地址是否都在 FDL 中;如果 FDN 没有开启,那么就直接发送,如果 FDN 开启并且不是 SC 和 DA 都在 FDL 中,那么要保存起来不发送。 当发送 SMS 时候,首先要将它压缩成合适的格式,因为 SMS 可以有多个 Seg;发送时只 要当所有的 Seg 返回的结果都没有错时才任务发送成功;否则,当所有的 seg 返回的结果都到 达时,如果其中的一个没有成功,就通知 user 发送不成功。 开始 首先检查 SC 是否为空? N Y Save sms 检查是否 FDN 开启? 发送 PRT_MSG_ID_MMI_SMS _FDN_CHECK_REQ 命令 进行 FDL 检查,根据 返回的消息 PRT_MSG_ID_MMI_SMS _FDN_CHECK_RSP 对应 信息知道 SC 和 DA 是 否都在 FDL 中 N N 对于待发送的消息进行打包 pack 记下所有的 seg 数为 m, 把这所有的 m 个 seg 作为一个整体发送出 去,在发送时每次发送一个 seg,调用 PRT_MSG_ID_MMI_SMS_SEND_MSG_R EQ 循环 进行, 直到 m 全 部发 送 NY 接收到SEND_MSG_RSP 消息,然后判断该消息 是否成功 设置对应的 SEND_STATUS 为 SEND_FAIL 已发送的消息个数计数器+ 然后看期待回应的消息的是否 全部到达? N Y 判断 SEND_STATUS 是否 为 FAIL 情况? Y N 是否需要对信息进行保存? Y N SAVE SMS 对信 息进行保 存 4.2.2 短消息的接收短消息的接收 Inform User 信息已经成功发送,不是 send_to_many 和 send_to_group 情况时, 需要删除 Edit_Buffer 结束 开始 收到 new_msg_ind 消息,说明有的消息到来 对应的 nvram 中计数 sms 到来的量+1 查看 sms 中的 total_seg 是否为 0 或者 total_segcurr_seg 或者 total_seg=curr_seg=max_seg+1? y n 说明短消息已经完整,开始进行下面的工作 看是否 curr_screen 处于 inbox_list 下,如果是,那么 要更新 inbox_list 并且要通知用户新的消息到来 到 awaited_list 队列中查找,看有没有和这个 list 当 中的相匹配的,如果有,然后再查看看它是否完整。 如果完整的话,把它从 awaitBoxList 中删掉,加入到 inBoxList 中。 如果不完整的话,加入到 awaitBoxList 中,等待后面来 的其他 seg 段的消息。并且同时开启一个 timer,如果当这 个 timer 时间 out 时还没有后续其他消息到来的话,那么就从 awaitBoxList 中删掉,并且添加到 inboxList 中。 这是 sms 接收过程的简略流程图。 4.2.3 短消息的保存短消息的保存 短消息的保存比较简单,他所做的工作就是首先把 sms 进行打包,然后对所有的 segments 一个一个的进行保存工作。 下面是保存短消息的流程图: 对上面流程图的解释: 即当第一个 seg 的 SET_MSG_RSP 消息收到时,看返回消息是否 Success,如果不是,那 么直接通知用户保存消息有错误发生,然后退出。 如果是,那么还要看是否所有的 segs 都已经成功的进行 SET_MSG 的动作: 如果没有,那么继续对后面的未保存的 seg 消息调用前面的那个发送消息 PRT_MSG_ID_MMI_SMS_SET_MSG_REQ,要求进行 SMS 的保存动作; 如果全部都已经成功的保存,那么首先要对于那个 SMS_EDIT_BUFF 进行 Release 动 作,然后再通知 user 已经成功的保存了 sms。 开始 对 sms 进行打包,调用 mmi_frm_sms_pack_sms()将 sms 所 有的 segs 合并在一起,并记下所有 的 total_seg 发送PRT_MSG_ID_MMI_SMS_SET_MSG_REQ 消息给 L4 层对 sms 中的每一个 seg 分别 进行保存 得到 SET_MSG_RSP 消息,根据返回的结 果是否 success,决定下面进行怎样操作? 这中间也有一个循环的过程,即只有当所 有的 seg 消息都保存返回 success 时候,才 release buffer 并且通知 user。 否则当其中一个不是 success 时,就通知 用户有错误发生。 4.2.4 短消息的删除短消息的删除 当删除一个消息时,是对所有 sms 中的所有 segs 一个一个进行删除的,每个 seg 都调用 删除短消息的命令,每次删除时都会返回一个对应的状态信息,如果其中一个的删除返回状态 为非 success 的话,那么就终止后面的删除动作;否则,全部的返回状态都是 success,说明整 个消息的删除是成功的,然后更新对应的 mailbox 中的 num 和 list 状态信息。 下面是短消息的删除流程图: 开始删除 假如说一个 sms 中的 segments 的数目是 m 个 首先取出其中 seg 最小的一个,向 L4 层发送下面 PRT_MSG_ID_MMI_SMS_DEL_MSG_REQ 消息,等待删除 的返回结果 判断返回消息是否是 Success? N 直接终止后面的删除动 作,结束。 Y 判断是否所有的 Seg 都已 经删除? N Y 更新对应的 mailbox 中的 num 和 list,这个过程也是通过发送消息 来实现的。 分别是 PRT_MMI_GET_SMS_NUM_REQ 和 PRT_MMI_GET_SMS_LIST_REQ 消息。 然后根据返回的信息,更新 mailbox 中的对应的状态信息。 关于删除所有的 inbox 或 outbox 中的信息,根据不同的 mailbox 设置不同的 delete_flag。 在 deleteAll 的 rsp 到来之后,看是否 success,然后得到 mailbox 的 number 和 list 并更新对应的 mailbox 的状态。对于 inbox 情况,通知 user 并且如果在删除时来了新的短消息,那么还要判 断如果在 list 中有任何 record,就设置 icon 提示用户有信息的消息。 其它的象发送消息给很多人send_to_many 以及群组发送消息 send_by_group 等这些情况, 其实 send_to_many 就是根据选定的要求发送的号码数组,一个一个的调用发送短消息的接口 函数进行发送;send_by_group 类似,只不过 group 在这应该是 send_to_many 的特殊情况。 4.2.5 编辑短消息编辑短消息 这里短消息支持彩信,图片,声音,动画等都支持,因此在编辑短消息时,允许用户输入 字符,插入 objects 对象,以及可以选择文本格式等。 编辑文本时,每次输入一个字符时首先要检查在 inputbox 中是否还有剩余空间(特别注意 当字符有扩展字符时,应该把对应的剩余长度减 1。 当长度满足时,检查字符类型。如果是 ucs2 编码而且当前 dcs(编码类型)为 GSM 7_bit 时, 要设置 DCS 为 UCS2。 如果上面设置 OK,添加这个字符进去然后看结果是否 OK。如果不,提示音响起通知用 户。 添加对象 Object 时,要看这个 Object 对象的格式是否能够被 MMI SMS 识别。 如果能识别,添加这个 Object。但结果很可能出错,有可能由于空间不足等原因导致添加 不成功。如果不成功的话,要提示 user 没有添加成功;当然成功的添加也要提示 user。 选择文本格式时,如果用户选择了一种字体大小和 style,这个 font 格式会被纪录下来, 下次重新进入输入文本框下时,这个文本格式就要被设置成前面记录下来的文本格式,后面输 入字符时全部按照当前设置好的当前这个文本格式来。 对齐方式,在每一个 paragraph 的开头添加的。记下当前的文本格式设置并且检查这个文 本格式是否允许被输入。 如果可以,设置当前 alignment 已经改变的标志。下次重新进入文本输入框时,文本格式 这些设置的值将会重新被更新成新的值。 4.34.3 附加的一些附加的一些 SMSSMS 功能功能 SMS 的一些附加功能,包括短消息的格式 Format 的设定,字体 Font 的大小以及 style 的 设定,新的段落 new_paragraph 的划分,以及还可以插入一些铃声,图片,简单的动画等等, 这些是 EMS 支持的。 其实这些也就是短信的编辑的过程,下面看看这个 输入 Text 时: 结束 开始 插入 object 时: 首先判断剩余 space 是否够用? 检查字符的类型,如果字符类型是 UCS2 而当 前 DCS 并不是 ucs2 时,设置当前的 dcs 为 ucs2。 y n 看结果 result 是否为 ok? Y N 把这个 char 添加到 ems 的 text_buffer 中,按照 当前的 text_format 和 allign_format。 后面这两个量是量个全局变量来保存的,当下 次重新进入文本输入框时,按照保存的这些 text_format 以及 alignt_romat 输入。 结束 开始 首先看这个 object 的类型是否 能够被识别? Y N Load_Object 把这个对象载入到 Ems 中 由于 object 栈的空间可能造成返回 fail 结果 把结果 result 返回给 user 4.44.4 短消息设定短消息设定 短消息设置部分包括 模式设定,状态设定,存储位置设定,信息优先网络传送设定等。 这个部分比较简单,实际就是把这些设定好的数值保存在 nvram 中。 模式设定,包括设置 SC 地址(服务中心号码)以及最大有效期,消息类型,模式名称等等。 模式设定编辑完成之后,通过向 l4 层发送消息来进行模式设定值的保存,这个消息是 PRT_MMI_SMS_SET_SC_ADDR_REQ 以及 PRT_MMI_SET_POST_PARAMS_REQ 消息, 然后返回该消息对应的响应信息。 状态设定,状态设定包括设定一些是否发送报告,以及返回发送路径等等;这些设定得实现 跟模式设定相似也是发送相应的消息。 后面的存储位置设定跟优先传送网络的设定,实现也是相同,只是发送的消息不一样,发送 消息后,把对应的得值保存在 NVRAM 中的对应位置,供后发送消息时用。 5 5 内部调用的主要函数说明内部调用的主要函数说明 说明本函数的实现,参数赋值和调用方式。 void mmi_msg_send_msg_req (U8* number, U16 replyindex, U8 hidenumscreen) /本函数实现发送消息的请求,即当要进行回复消息或者发送消息时调用的 /其中的参数说明: /number-要发送的目的号码 /replyIndex-回复时哪一条消息索引,如果不是回复时,本选项置为 / MMI_FRM_SMS_INVALID_INDEX /hidenumscreen-BOOL 值标志是否隐藏显示发送目的号码,1:隐藏,0:显示 /对于本函数的调用一般不是直接调用的,都是封装在消息回复,仅发送消息,发送且保存等 /这些函数中的,而这些函数都是事先注册好了一些 HilightHandler,当对应的 menu 被高亮 /度显示时,会调用这些 handler,在这些 HilightHandler 中注册好了 lsk 及 rsk 对应的处 理 /函数,当按下 LSK 时(一般都是左键),就会调用这些封装起来的函数,从而调用这个 /mmi_msg_send_msg_req()请求。 结束 voidvoid mmi_msg_save_msg_req(void)mmi_msg_save_msg_req(void) /本函数实现了保存短消息 /参数:无 /其实这个函数跟上面的函数调用方式相似,也是被封装在一些特定的函数中,这里就是被封 /装在 mmi_msg_save_msg_to_entry 中,而这个函数实现被注册为一个特定的 save menu 的 /HilightHandler 中的,然后当这个特定的 menu 被高亮显示时,就是执行到这个函数。 voidvoid mmi_msg_send_and_save_msg_reqmmi_msg_send_and_save_msg_req (U8*(U8* number,number, U16U16 replyindex)replyindex) /本函数实现的是发送并保存消息的请求。 /参数说明: /number-是发送消息的目的号码 /replyIndex-是在回复消息时的回复消息的索引 /函数调用跟前面的相似。 下面还有很多的调用方式类似的函数: voidvoid mmi_msg_save_msg_after_send_reqmmi_msg_save_msg_after_send_req (U8(U8 status,status, void*void* number)number) /本函数实现在发送之后保存短消息的请求 /参数说明: /status-发送的返回状态,是否成功 /number-发送的目的地号码 voidvoid mmi_msg_search_phbmmi_msg_search_phb (void)(void) /本函数实现搜索电话簿得到需要的号码 /参数说明:无 /调用方式,直接调用,它是被封装在 mmi_msg_phone_number_empty()里边的,这个函数就是 /当 InputBox 为 Empty 时被注册好的回调函数;在 sms 文本输入编辑框中,当文本框中没有内 /容时,左软键被注册为这个 mmi_msg_search_phb()函数。 /当左软件被按下时,调用这个函数进入 phb 中的 list 查找用户想要的号码。 voidvoid mmi_msg_send_msg_to_manymmi_msg_send_msg_to_many (void)(void) /本函数实现的是一次发送给多个目的号码的情况 /参数说明:无 /调用方式-跟前面其它的调用相似。 /它的实现实际上就是对这 many 个号码(最大支持 10 个号码)调用前面的发送消息请求的函数 /mmi_msg_send_msg_req。当向第一个 smsPhbNumber 发送完消息之后,在对应的返回结果回 /来时,会调用对应的 mmi_msg_send_msg_rsp()函数,它就会查看看是否给所有的目的号码都 /发送出去消息了,如果还有没有发送出去的,那么就继续调用 mmi_msg_send_msg_req 函数 对/后面的号码进行发送。 /如果全部的都发送完了,那么就 ReleaseEMSEditBuffer(),删除 screenNodes 结束。 voidvoid mmi_msg_send_msg_to_groupmmi_msg_send_msg_to_group (U16(U16 cnt,cnt, U16*U16* PhbIndex)PhbIndex) /本函数实现的是发送消息给一个群组的情况 /参数说明: /cnt-群组中的号码的个数 /PhbIndex-存储 Phb 中群组号码索引的数组 /本函数实际上跟 many 的实现方式类似,在此不再详述。 /本函数的调用,这部分功能跟 phb 部分联系比较紧,首先是注意到这个函数 /mmi_msg_send_msg_by_group() ,这个函数是要事先注册好对应的 menu 的 HilightHandler,/然后当这个 menu 被高亮显示时,调用这个函数,而在这个函数中又调用了 phb 里边提供的接/口函数 mmi_phb_sms_enter_send_by_group

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论