2024年4月17日发(作者:)

mtk学习开发归档02

1.

MMI 和L4通信

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;