MMI_TASK相关

来源:互联网 发布:知乎 说话人 编辑:程序博客网 时间:2024/06/07 19:46

/*****************************************************************************
 * FUNCTION
 *  mmi_frm_fetch_msg_from_extQ_to_circularQ
 * DESCRIPTION
 *  fetch the message from external queue and put
 *  in the circular queue.
 *  (*) Need to set my_index & mmi_ext_qid before using
 *  this function
 * PARAMETERS
 *  void
 * RETURNS
 *  1 - the message is invalid, and discard the message
 *  0 - the message is valid

*****************************************************************************/

由这个函数注释我们可以知道,有两个队列,一个是外部队列,一个是循环队列

 

查看公司提供的文档了解是有三种队列:

 

nExternal queue(Inter-task queue, mod to mod(In the diff task))
nReseive message:               OslReceiveMsgExtQ(receive_msg_ext_q)

n

Send message:                     OslMsgSendExtQueue(msg_send_ext_queue)

 
nInternal queue(Intra-task queue, mod to mod(In the same task))
nReseive message: receive_msg_int_q
n
n
nCircular queue(MMI only, default size 30)
nReseive message (From MMI Task): OslReadCircularQ
nSend message (For NVRAM Access): OslWriteCircularQ
n
Send message: msg_send_int_queue

--------------------------------------------------------------------------------------------------------

 

n如何向L4层发消息:
nStep1: Construct a local parameter buffer.
nStep2: Assign required values into local parameter buffer.
nStep3: Send out the message to  the L4C module.
n
 
---------------------------------------------------------------------------------------------------------
MMI_TASK函数结尾处有这样的代码:
 
default:
                                ProtocolEventHandler(
                                    (U16) Message.oslMsgId,
                                    (void*)Message.oslDataPtr,
                                    (int)Message.oslSrcId,
                                    (void*)&Message);
                                break;
 
也就是从外部队列里取出的消息除了特殊的消息,其他的默认的消息就放在这里面执行了。
OslMsgSendExtQueue(&Message);

n
nInternal queue(Intra-task queue, mod to mod(In the same task))
nReseive message:                      receive_msg_int_q
nSend message:                         msg_send_int_queue
n
nCircular queue(MMI only, default size 30)
nReseive message (From MMI Task):         OslReadCircularQ
nSend message (For NVRAM Access):        OslWriteCircularQ
n
---------------------------------------------------------------------------------------------------------
原创粉丝点击