2.3 QTIL GAIA命令和确认
前面2.2讲了每个数据包(报文包)里的数据的含义。每一个这样的报文包从主机(例如手机里的APP)发出去后,设备在收到并检查上述的规则检查是有效的后,就回送给主机一个确认(ACK)的报文。ACK报文的结构与命令报文的结构相同。仅仅将 “命令ID”字段中的值为初始命令的最高位更改为“1”。
例如,如果主机发送一个报文,报文中包含的 “命令ID”是0x0001(即0000 0000 0000 0001),那么设备回复的确认报文中该处就是:0x8001(即1000 0000 0000 0001)。
命令可以由连接的任何一方发起,也就是说即可以主机发给设备,设备回复确认报文,也可以设备主动发给主机,主机回复确认报文。
由于实现和资源的限制,发起者可以发送多个命令,而不必等待每个命令得到确认。 因此,多个QTIL GAIA数据包可以在较低的级别(例如L2CAP、USB)组合成一个数据包,从而减少了协议开销。 QTIL GAIA协议没有规定按顺序接收确认。
按照惯例,ACK包的有效载荷的第一个八位字节包含一个状态值(参见下表QTIL GAIA命令状态码)。这个状态码或者状态值,用来表示命令是否执行成功或者失败的原因。 这不是协议强制要求的,供应商自己的命令可能