6个员额/ 0个新员额
最后发表
CheMax
离线
最后看到:3年9个月前
加入:2015-01-12 07:03
启用通知和指示

你好

我想,我在文件里发现了一个错误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看到了这个问题

关键词:
设备:
Joacimwe
离线
最后看到:1年10个月前
大师
加入:2014-01-14 06:45
我不知道你怎么数

我不知道你们是怎么数的,但是0x0002是两个字节。在小端序编码中是2后面跟着0。

CheMax
离线
最后看到:3年9个月前
加入:2015-01-12 07:03
是的,但是如果你写

是的,但是如果你通过连接管理器写值,你写1 (dec)或01(十六进制)。在标准条件下,此操作将失败。

尝试使用连接管理器运行示例ble_app_profile

MT_dialog
离线
最后看到:6个月3个星期前
工作人员
加入:2015-06-08 34
嗨Chemax,

嗨Chemax,

该值是16位的,所以条件是正确的,而您得到的是一个无效值,因为您只发送了一个字节。如果你想使用连接管理器,试着像这样显式发送两个字节"01 00".

由于MT_dialog

CheMax
离线
最后看到:3年9个月前
加入:2015-01-12 07:03
它的工作

它的工作

而是0x0001(16位)和0x01(8位)的值。当我尝试写0x01或0x0001时,我没有看到区别。
实际上,在这两种情况下,只写入最低有效位

MT_dialog
离线
最后看到:6个月3个星期前
工作人员
加入:2015-06-08 34
嗨CheMax,

嗨CheMax,

这是Connection Manager应用的一个限制,每个数字都没有空格,连接管理器将它解释为一个单独的字节,这是它发送的,所以如果你发送0x01,你只发送一个字节,同样适用于发送0x0001。

由于MT_dialog