2 android QMI机制---QMUX

原文:https://blog.csdn.net/u012439416/article/details/74276672?utm_source=blogxgwz0

2.QMUX

QMI Multiplexing Protocol(QMUX):QMI的复用协议

消息从控制点经过类似socket的线程传到QMI接口后,QMI负责对数据进行封装,加上QMUX消息的头,发送到QMUX层,

再通过QMUX层传到共享内存到BP侧。

2.1 QMUX消息的格式:

整个QMUX控制信道的结构如上图,

  I/FType:QMI将控制点数据封装后,发送到QMUX前,加的消息头,长度为一个byte,值通常为0x01,表示这个

消息为QMUX消息,如果是其他值,则为其他消息。

 Length: QMUX消息的长度,不包括I/F Type。

  ControlFlags:控制位,表示消息传输的方向。长度为1个byte,只有第7个bit是标志位,其他位为0,bit7=1说明

QMUX消息由服务端发送,bit7=0由控制点发送。

Clien ID: 控制点的标识,在控制点和服务端都需要赋值,当在服务端发出的消息Client ID的值为0xFF,表示该

消息为广播消息,由服务端主动发出,被所有控制点搜到。

QMUX SDU和TLV结构:

在整个控制信道的消息中,出去消息标识头I/F Type,和QMUX消息头,数据传输在QMUXSDU中完成,QMUX 

SDU里面的数据需要支持Type Length Value(TLV)的格式。

TLV格式的数据存放在QMI Service Message里面的Value中。

Control Flags:表示消息是请求、响应还是指示。Datasheet见文档。

TLV结构图:

2.2 QMUX消息类型:
1,请求:请求消息用于设置参数、查询参数值或配置指示的产生。请求消息由控制点产生,一个有效的请求

通常会产生来自服务的应答。

2, 响应:响应由服务产生,为回应接收到的请求。每个响应至少包含指示请求成功或失败的结果参数

以及错误状态。

3,指示:指示由服务端主动发出,为了让控制点知道底层状态的变更,类似于信号强度,掉网

Out of Service都是服务端主动发出给控制点的指示。

猜你喜欢

转载自blog.csdn.net/keyanting_2018/article/details/83542582