BLE GATT写入无效属性值时,如何返回合规错误响应?
BLE布尔特征写入无效值的错误码选择
首先明确:针对单字节但非0x00/0x01的无效写入值,蓝牙核心规范v5.3的ATT_WRITE_REQ预定义错误码里确实没有完全匹配的选项:
0x13(Value Not Allowed)不在WRITE_REQ的有效错误码列表中,不能使用0x06(Request Not Supported)语义不符,不适用0x0D(Invalid Attribute Value Length)仅用于长度不符合要求的场景,你已经用它处理超1字节的写入,不能混用
这种情况下,推荐使用厂商自定义错误码,也就是ATT错误码中0x80~0xFF的区间。你可以在这个范围内选一个自定义码(比如0x81),并在你的应用文档中明确其含义为“无效的布尔值(仅允许0x00/0x01)”。
另外,也有部分厂商会退而求其次使用0x0D,但这属于语义上的妥协,不符合规范中该错误码的定义,不建议这么做,容易造成客户端误解。
内容的提问来源于stack exchange,提问作者LWChris
相关产品推荐
相关产品推荐

