本文主要是介绍MMI 和L4通信【转】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
MMI 和L4通信
博客分类: MTK EXT C C++ C# 数据结构
1.1. 如何通信
- Send/Receive messages thru the message Queue.
- #define OslMsgSendExtQueue msg_send_ext_queue
- #define OslReceiveMsgExtQ receive_msg_ext_q
- SetProtocolEventHandler(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 buffer
- oslPeerParaPtr *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_HDR
- kal_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 info
- Ex: typedef struct {
- PEER_BUFF_HDR
- void *ptr;
- } mmi_example;
这篇关于MMI 和L4通信【转】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!