MMI 和L4通信


1.1.       如何通信

C代码   收藏代码
  1. Send/Receive messages thru the message Queue.  
  2. #define OslMsgSendExtQueue  msg_send_ext_queue  
  3. #define OslReceiveMsgExtQ    receive_msg_ext_q  
  4. SetProtocolEventHandler(FuncCB, msg_id);  

1.2.       通信数据


C代码   收藏代码
  1. typedef struct ilm_struct {  
  2. oslModuleType oslSrcId; // Source module ID.  
  3. oslModuleType oslDestId; // Destination module ID.  
  4. oslMsgType oslSapId; // service access point.  
  5. oslMsgType oslMsgId; // message name ID.  
  6. oslParaType *oslDataPtr; //local parameter buffer  
  7. oslPeerParaPtr *oslPeerBuffPtr; //peer buffer pointer  
  8. } ilm_struct;  

1.3.       如何从MMI Queue中侦听消息

C代码   收藏代码
  1. OslReadCircularQ(&Message);  
  2. OslReceiveMsgExtQ(mmi_qid, &mmi_message);  

1.4.       如何在MMI 队列中写入消息

当NVRAM接收到其他消息时:
C代码   收藏代码
  1. OslWriteCircularQ(&ilm_ptr);  

1.5.       如何从L4C接听消息

注册一个消息回调函数
SetProtocolEventHandler(FuncCB, msg_id);
1.6.      如何向L4C 发送消息

2.        构建一个本地参数指针
3.        将请求数据填充进本地参数指针中。
4.        给结构体ilm_struct赋值。
5.        向L4C发送消息。
消息信息 = 头信息 + 数据信息
C代码   收藏代码
  1. Local parameter Header info:  
  2.  #define LOCAL_PARA_HDR \  
  3. kal_uint8 ref_count; \  
  4. kal_uint16 msg_len;  
  5. peer buffer parameter Header info :  
  6.  #define PEER_BUFF_HDR \  
  7. kal_uint16 pdu_len; \  
  8. kal_uint8 ref_count; \  
  9. kal_uint8 pb_resvered; \  
  10. kal_uint16 free_header_space; \  
  11. kal_uint16 free_tail_space;  

2.7.  本地参数:(local parameter)

Header info + Data info:
例如:
C代码   收藏代码
  1. typedef struct {  
  2. LOCAL_PARA_HDR  
  3. kal_uint8 volume_type;  
  4. kal_uint8 volume_level;  
  5. } mmi_eq_set_volume_req_struct;  

2.8.  如何创建本地参数:(动态分配内存)
C代码   收藏代码
  1. OslConstructDataPtr(sizeof(mmi_at_alarm_query_res_req_struct);  

2.9.  何时释放本地参数

当L4接收到消息并处理完成后,会自动释放参数。
C代码   收藏代码
  1. OslFreeDataPtr(sizeof(mmi_at_alarm_query_res_req_struct);  
  2. Peer buffer parameter:  
  3. Header info + Data info  
  4. Ex: typedef struct {  
  5. PEER_BUFF_HDR  
  6. void *ptr;  
  7. } mmi_example;  

你可能感兴趣的:(通信)