当特征最大长度为0时,没有收到写请求

⚠️
大家好. .谢谢你来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台,它将提供更好的功能,包含在主对话网站中。所有岗位和账户都已迁移。我们现在只接受新论坛的流量-请在上面发布任何新帖子//www.wsdof.com/support.我们将在未来几天修复bug /优化搜索和标记。
8个帖子/ 0个新
最后发表
apoudret
离线
最后看到:1年7个月前
加入:2017-09-22 08:33
当特征最大长度为0时,没有收到写请求

你好,

我已经将我的设备配置为外设。它提供了一个服务,该服务包含一个具有READ+WRITE权限的特征符和一个描述符。
特性和描述符的最大长度为0,并带有GATTS_FLAG_CHAR_READ_REQ标志,因为我使用请求而不是属性存储。

当远程设备连接到外设并读取或写入描述符时,它工作正常,我得到一个BLE_EVT_GATTS_READ_REQ/BLE_EVT_GATTS_WRITE_REQ事件。
当远程设备试图读取该特征时,我还会得到BLE_EVT_GATTS_READ_REQ事件。
然而,当远程设备试图写入特征时,我没有得到任何事件。

如果我增加特征的最大长度,它工作,但我认为这将分配额外的内存,我不打算使用。
我想知道这是否是一个SDK?因为它可以正确地与描述符一起工作,并且在读取特征时也可以工作(并且我可以发送带有数据的答案)。

最好的问候,
安迪

设备:
PM_Dialog
离线
最后看到:1周16小时前
工作人员
加入:2018-02-08 11:03
嗨apoudret,

嗨apoudret,

你能让我知道你在你的项目中使用哪些服务吗?你有定制服务吗?强烈建议可写特性的最大长度不等于零。当您写入一个特征时,您将获得一个事件,如果长度为0,您将无法获得它。所以,请尝试改变特征的最大长度,如果你能得到事件,让我知道。请注意,这不是SDK的问题。

谢谢,PM_Dialog

apoudret
离线
最后看到:1年7个月前
加入:2017-09-22 08:33
你好,

你好,

这确实是一种定制服务。
为什么SDK的这种限制只存在于特征而不存在于描述符?我还没有在其他sdk (ESP32/TI)中看到过这种限制。
我想指定最大长度会占用额外的内存。我不会使用这个内存,因为我不想使用属性存储,而是写请求。是否有一个等效的BLE_EVT_GATTS_READ_REQ标记写入?

谢谢,
安迪

PM_Dialog
离线
最后看到:1周16小时前
工作人员
加入:2018-02-08 11:03
嗨apoudret,

嗨apoudret,

我正在搜索你的问题,我会尽快给你一个正确的答案。

谢谢,PM_Dialog

apoudret
离线
最后看到:1年7个月前
加入:2017-09-22 08:33
你好PM_Dialog,

你好PM_Dialog,

你能否介绍有关情况?

最好的问候,
安迪

PM_Dialog
离线
最后看到:1周16小时前
工作人员
加入:2018-02-08 11:03
嗨apoudret,

嗨apoudret,

抱歉耽搁了,我是想重复你的问题。如前所述,如果描述符的最大长度等于零,您将同时收到写和读请求。对于这些特征,如果最大长度等于零,则只会得到读请求,而不会得到写请求。这不是SDK的限制,但这是BLE堆栈处理特征的最大长度的方式。如果你想要得到一个写请求,特征的最大长度应该等于或大于1。关于你的第二个问题,没有任何与BLE_EVT_GATTS_READ_REQ标记等价的写入

谢谢,PM_Dialog

apoudret
离线
最后看到:1年7个月前
加入:2017-09-22 08:33
你好,

你好,

是的,这是你的BLE堆栈的一个限制,它是你的SDK的一部分。我在标准BLE核心规范中没有看到任何提及这一限制。
我应该考虑为泛型描述符使用哪个最大长度值?

最好的问候,
安迪

PM_Dialog
离线
最后看到:1周16小时前
工作人员
加入:2018-02-08 11:03
嗨apoudret,

嗨apoudret,

描述符的最大长度没有标准值。最大长度取决于描述符的实现。

谢谢,PM_Dialog