mtk-短信通信.doc_第1页
mtk-短信通信.doc_第2页
mtk-短信通信.doc_第3页
mtk-短信通信.doc_第4页
mtk-短信通信.doc_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

mtk学习开发归档021. MMI 和L4通信1.1. 如何通信Send/Receive messages thru the message Queue.#define OslMsgSendExtQueue msg_send_ext_queue #define OslReceiveMsgExtQ receive_msg_ext_qSetProtocolEventHandler(FuncCB, msg_id);1.2. 通信数据typedef struct ilm_struct oslModuleType oslSrcId; / Source module ID.oslModuleType oslDestId; / Destination module ID.oslMsgType oslSapId; / service access point.oslMsgType oslMsgId; / message name ID.oslParaType *oslDataPtr; /local parameter bufferoslPeerParaPtr *oslPeerBuffPtr; /peer buffer pointer ilm_struct;1.3. 如何从MMI Queue中侦听消息OslReadCircularQ(&Message);OslReceiveMsgExtQ(mmi_qid, &mmi_message);1.4. 如何在MMI 队列中写入消息当NVRAM接收到其他消息时:OslWriteCircularQ(&ilm_ptr);1.5. 如何从L4C接听消息注册一个消息回调函数SetProtocolEventHandler(FuncCB, msg_id);1.6. 如何向L4C发送消息2. 构建一个本地参数指针3. 将请求数据填充进本地参数指针中。4. 给结构体ilm_struct赋值。5. 向L4C发送消息。消息信息 = 头信息 + 数据信息Local parameter Header info: #define LOCAL_PARA_HDR kal_uint8 ref_count; kal_uint16 msg_len;peer buffer parameter Header info : #define PEER_BUFF_HDR kal_uint16 pdu_len; kal_uint8 ref_count; kal_uint8 pb_resvered; kal_uint16 free_header_space; kal_uint16 free_tail_space;2.7. 本地参数:(local parameter)Header info + Data info: 例如:typedef struct LOCAL_PARA_HDRkal_uint8 volume_type;kal_uint8 volume_level; mmi_eq_set_volume_req_struct;2.8. 如何创建本地参数:(动态分配内存)OslConstructDataPtr(sizeof(mmi_at_alarm_query_res_req_struct);2.9. 何时释放本地参数当L4接收到消息并处理完成后,会自动释放参数。OslFreeDataPtr(sizeof(mmi_at_alarm_query_res_req_struct);Peer buffer parameter:Header info + Data infoEx: typedef struct PEER_BUFF_HDRvoid *ptr; mmi_example;strtok 与 strpbrk C2008-04-20 18:35一、strpbrk: 调用格式:result = strpbrk(source-string, searching-string) 用途:在源字符串(source-string)中找出最先含有搜索字符串(searching-string)中的任一字符的位置并返回,若找不到则返回空指针。 注意:返回值是指向源字符串的指针,所以在使用返回结果的时候,请确保源字符串的有效性。 举MSDN中的例子: 数据: char string100 = The 3 men and 2 boys ate 5 pigsn; char *result; 调用: result = strpbrk( string, 0123456789 );/在string中找出最先出现09中某一个字符的位置 printf( 1: %sn, result+ ); result = strpbrk( result, 0123456789 ); printf( 2: %sn, result+ ); result = strpbrk( result, 0123456789 ); printf( 3: %sn, result ); 输出的结果是: 1. 3 men and 2 boys ate 5 pigs/最先发现3 2: 2 boys ate 5 pigs/最先发现2,注意这时开始源串是上一次的结果的下一位置,即跳过了数字3,下同 3: 5 pigs/最先发现5 二、strtok: 用法:token = strtok(source-str,seperator-str) 用途:在source-str中找出以seperator-str中的字符为分隔的字符串,即是源串中除去了含有分隔串中的所有字符后余下的一段段的字符串,每调用一次找到一串,找不到则返回空串。 注意:返回值是指向源串的指针,所以同样要保证源串的有效性,此外,每次调用返回找到的子串的时候都会把源串中该子串的尾部字符(原来是搜索串中的某一字符)修改成0字符。还有一个要注意的是,这个函数使用全局的静态缓冲区(函数自己的静态buffer),所以在某一个线程里不要同时调用这个函数来处理两个字符串,否则极易出现不正常的结果,正确的处理方法是先找出一个字符串中的所有子串,然后才转到处理另一个字符串。多线程之间则不会出现这种干扰。 同样举MSDN中的例子: 数据准备: char string = A stringtof ,tokensnand some more tokens; char seps = ,tn; char *token; 调用示例: token = strtok( string, seps ); while( token != NULL ) /* While there are tokens in string */ printf( %sn, token ); /* Get next token: */ token = strtok( NULL, seps ); /*注意到上面这个NULL,它表明的是从上次调用结果中strtok自有的缓冲区中继续取出余下的子串*/ 显示结果: A /此时string1=0,原先为空格 string of tokens and some more tokens转MTK发送短信的核心代码(当你按下发送键。 如果你想,你可以通过自己添加一个菜单,菜单按下就可以发特制的短信,这个是最终简洁版。如果你还不会添加菜单,看我的另一篇关于菜单的教程。这个结构体中自由编辑的项一半包括一个收件人的电话号码和短信内容。你可以像函数开头事先声明两个字符串(呵呵,使用的时候把smsnumber改一下,否则我会收到很多短信的 )void mmi_fastmsg_entry(void) char * smsnumber char * content=Hello,This is a real Message!; mmi_sms_send_msg_req_struct* sendSms; sendSms = (mmi_sms_send_msg_req_struct*) OslConstructDataPtr(sizeof(*sendSms); sendSms-ref_count = 1; sendSms-msg_len = sizeof(mmi_sms_send_msg_req_struct); sendSms-profile = 0; sendSms-reply_index = 0xffff; sendSms-dest.type = CSMCC_DEFAULT_ADDR_TYPE; memset(S8*)sendSms-dest.number, 0, MAX_CC_ADDR_LEN); strcpy(S8*)sendSms-dest.number, smsnumber); sendSms-dest.length = strlen(smsnumber); sendSms-para = 0; memset(S8*)sendSms-sc_addr.number, 0xff, MAX_CC_ADDR_LEN); sendSms-sc_addr.length = 0xff; sendSms-sc_addr.type = 0xff; sendSms-vp = 0xff; sendSms-pid = 0xff; sendSms-udhi = 0; sendSms-dcs = SMSAL_DEFAULT_DCS; memset(S8*)sendSms-msg, 0, SMSAL_MAX_MSG_LEN); strcpy(S8*)sendSms-msg, content); sendSms-length = strlen(content); sendSms-seq_num = 0; sendSms-mms_mode = 0; SetProtocolEventHandler(bsn_sms_send_sms_rsp, PRT_MSG_ID_MMI_SMS_SEND_MSG_RSP);/PRT_MSG_ID_MMI_SMS_SEND_MSG_RSP mmi_frm_sms_send_message(MOD_MMI, MOD_L4C, 0, PRT_MSG_ID_MMI_SMS_SEND_MSG_REQ, (oslParaType *)sendSms, NULL)

温馨提示

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

评论

0/150

提交评论