原文: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都是服务端主动发出给控制点的指示。