客户端和服务模型
QMI 采用客户端/服务模型。一个客户端可以与多个服务通信,一个服务也可以为多个客户端提供服务。通信有两种形式:- 请求与响应 —— 客户端发送一次操作请求,并将响应与该请求进行匹配。
- 指示(Indication) —— 在客户端注册以接收某类事件之后,服务发送非请求触发的事件。
QMI 消息格式
QMI 消息由一个小的头部和一系列带类型的字段组成。每个字段由一个类型标签标识,因此接收方知道预期接收什么数据。这种格式使得同一消息结构可以用于请求、响应和指示,无需为每种情形分别手写编码器。编解组与传输分离
编解码库负责在你的代码所使用的 C 结构与 QMI 线路格式之间进行转换。接口库管理 QMI 句柄、服务连接、回调和消息传输。将这些职责分开,使得驱动可以只描述一次其数据,然后对请求、响应和指示复用同一个编解码器。并发与时延
编解码器不访问全局共享状态,可以在没有编解码器级锁的情况下使用。接口库使用互斥锁保护共享资源。QMI 消息应保持足够短,以满足客户端的时延要求;对于耗时较长或较慢的操作,应设计显式的异步完成,而不是无限期地保持同步请求打开。后续步骤
- Client API —— 创建客户端、连接到服务并发送请求
- Service API —— 注册服务并处理客户端请求
- Examples —— 查看请求/响应和指示交换的工作方式

