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通信过程中用于传递特定上下文信息的数据结构,它们通常不跨进程传递,仅在MMI Task内部使用。 总之,精通MTK嵌入式编程意味着要深入理解MMI和L4间的通信机制,掌握硬件驱动的编写,熟悉上层...
本文旨在为初学者和开发者提供一个全面的理解框架,涵盖MMI(Man-Machine Interface)的整体构架、各模块功能以及与L4(Layer 4)之间的通信机制。 1. MMI的整体构架 MMI是用户界面与底层硬件通信的重要桥梁,它的...
### MMI架构和编写实例 #### 一、MTK软件架构概览 MTK(MediaTek)作为一家全球领先的芯片设计公司,在移动通信领域拥有广泛的应用和技术积累。在介绍MMI架构之前,首先需要对MTK的整体软件架构有一个基本了解。 ...
L4作为MMI(Man Machine Interface,人机接口)/AT(Application Terminal,应用终端)和协议栈之间的适配层,其核心作用在于提供了一个桥梁,使得高层的应用能够更加便捷地与底层的通信协议进行交互。这一层的存在...
2. **协议事件**:这类事件用于底层和MMI任务之间的通信。例如,当有来电时,L4会产生INCOMING_CALL_EVENT,而MMI应用程序可能会生成CALL_ACCEPT_EVENT以响应接听电话。 3. **定时器事件**:定时器事件是由预定的...
4. **系统任务实例**:例如,System NVRAM任务、L4任务、MMI任务以及更多的任务,这些任务构成了MMI架构的基础。 二、任务结构与信息 1. **任务结构**:`sys_comp_config_tbl`和`custom_comp_config_tbl`数组中的`...
在运行时,MMI使用操作系统的任务队列进行通信,例如MMI队列,用于处理不同任务间的消息传递。 **网络模拟器/L4NS/L4队列** 网络模拟器部分,如L4NS(L4 Network Simulator),可能涉及到L4网络协议栈,L4队列用于...
- **L4层**:这是MMI与协议栈之间的适配层,主要包括L4A(用于转换来自上层的原始消息为功能调用)和L4C(协调所有L4模块以服务于上层)。 - **其他关键组件**: - **ATCI**(AT Command Interpreter):负责解析AT...
其中,RMI(远程MMI)负责PC端与协议栈间的通信,通过AT命令进行数据交互。L4层作为MMI/AT与协议栈之间的适配层,扮演了关键的桥梁角色。L4A(Layer4 Adaptation)用于将上层发送的原始数据转换为功能调用,而L4C...
它通过定义一套API供应用层调用,实现了不同层级之间的通信和交互。 3. **UI Layer(用户界面层)**:该层包含了与用户界面相关的所有函数,负责呈现图形用户界面以及处理用户的输入操作等。 4. **MMI Queue(人机...
4. **MMI Queue**:这是一个关键的通信机制,协议栈或L4层将事件写入MMI Queue,然后由MMI Task读取。这确保了事件的有序处理和传输。 5. **L4/NS Queue**:MMI Task将处理后的事件写入L4/NS Queue,供L4任务或网络...
4. **MMI Queue** (MMI队列): 用于通信协议栈或L4层向MMI任务传递事件。事件被写入MMI队列,然后由MMI任务读取并处理。 5. **L4/NS Queue** (L4/网络模拟器队列): MMI任务将事件写入此队列,供L4任务或网络模拟器...
MMI与L4层(Linux第四层)进行通信,主要通过消息队列来完成这种交互。L4层则负责对底层硬件(如处理器和驱动程序)进行抽象封装。 MMI的核心框架位于`plutommi\`目录下,主要包括消息管理和窗口管理等基本功能。这...
### MTK开发平台手机开发实例知识点详解 #### 标题:MTK开发平台 手机开发实例 ...通过深入理解MMI Queue、L4/NSQueue等机制,以及掌握平台提供的API和工具,开发者可以更高效地进行手机应用程序的开发。
MMI主要与L4层交互,而L4层则负责封装底层硬件如处理器和驱动程序等。 #### 架构层次划分 - **Software Architecture (MTK)**: MTK的整体软件架构。 - **MMI Architecture**: 具体指明MMI架构如何嵌入到MTK的软件...
Remote MMI允许通过AT命令进行通信,L4作为适配层,Drivers负责设备驱动,而PS/L1则涉及GSM物理层和协议栈的高层部分,如L2和L3,为应用程序提供GSM/GPRS服务。MMI作为人机交互界面,分为应用层、框架层和用户界面层...
- **如何通信**:L4层与MMI之间的通信主要依赖于MMIQueue机制,即通过特定的消息队列来传递数据和指令。 - **通信数据**:通信数据通常包含控制指令、状态信息和用户输入等。 - **侦听消息**:MMI可以通过监听...
Remote MMI(RMI)允许通过串口和协议栈进行通信,L4作为适配层,Drivers处理各种设备驱动,而PS/L1中的L1是GSM的物理层,直接与信号数据打交道。此外,MMI则为人机交互界面,包含文字和图形界面,分为Application ...