你好
我想,我在文件里发现了一个错误custom_common.c
在一个函数中Int check_client_char_cfg(bool is_notification, struct gattc_write_cmd_ind const *参数)
.的条件F (param->length != sizeof(uint16_t))
是不正确的。
根据规范Bluetooth Core 4.1, vol.3, part G,章节3.3.3.3客户端特征配置在特征属性(UUID 0x2902)中可以写入以下值之一:0x0000(没有通知和指示),0x0001(通知ON)或0x0002(指示ON),即param->length = 1(字节)。但功能sizeof (uint16_t)
返回2(字节)。
因此,当我尝试记录1个字节以启用通知时,我有一个错误:Invalid_attribute_length。
我在SDK 3.0.6看到了这个问题
关键词:
设备:
我不知道你们是怎么数的,但是0x0002是两个字节。在小端序编码中是2后面跟着0。
是的,但是如果你通过连接管理器写值,你写1 (dec)或01(十六进制)。在标准条件下,此操作将失败。
尝试使用连接管理器运行示例ble_app_profile
嗨Chemax,
该值是16位的,所以条件是正确的,而您得到的是一个无效值,因为您只发送了一个字节。如果你想使用连接管理器,试着像这样显式发送两个字节"01 00".
由于MT_dialog
它的工作
而是0x0001(16位)和0x01(8位)的值。当我尝试写0x01或0x0001时,我没有看到区别。
实际上,在这两种情况下,只写入最低有效位
嗨CheMax,
这是Connection Manager应用的一个限制,每个数字都没有空格,连接管理器将它解释为一个单独的字节,这是它发送的,所以如果你发送0x01,你只发送一个字节,同样适用于发送0x0001。
由于MT_dialog