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

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
8个帖子/ 0新
最后一篇
Apoudret.
离线
最后一次露面:1年5个月前
加入:2017-09-22 08:33.
在特征最大长度为0时没有收到的写请求

你好,

我已将我的设备配置为外设。它提供了一个服务,其中包含一个特征和描述符,它们都具有读取+写入权限。
创建特性和描述符,以最大长度为0和Gatts_flag_char_read_req标志,因为我使用请求而不是属性存储。

当远程设备连接到外设并读取或写入描述符时,它可以正常工作,我得到一个ble_evt_gatts_read_req / ble_evt_gatts_write_req事件。
当远程设备尝试读取特性时,我也会得到ble_evt_gatts_read_req事件。
但是当远程设备尝试写入特性时,我没有任何事件。

如果我增加了它的特性的最大长度,但我假设这将分配我不打算使用的额外存储器。
我想知道这是一个sdk吗?因为它与描述符合理,所以它还在读取特性时工作(并且我可以使用数据发送答案)。

此致,
安迪

设备:
PM_DIALOG.
离线
最后一次露面:3天8小时前
职员
加入:2018-02-08 11:03
嗨apoudred,

嗨apoudred,

您能否让我知道您使用的项目?你有自定义服务吗?强烈建议可写特性的最大长度不等于零。当您写入特征时,您将恢复一个事件,如果长度为0,则无法获得它。因此,请尝试更改特征的最大长度,并告诉我是否能够获取活动。请注意,这不是SDK的问题。

谢谢,PM_DIALOG.

Apoudret.
离线
最后一次露面:1年5个月前
加入:2017-09-22 08:33.
你好,

你好,

确实这是一个自定义服务。
为什么SDK的这种限制只存在于特征而不是描述符?我没有看到与其他SDK(ESP32 / TI)的限制。
我猜指定最大长度会占用额外的内存。我不会使用此内存,因为我不想使用属性存储但写请求。是否有相当于BLE_EVT_GATTS_READ_REQ标志用于写作?

谢谢,
安迪

PM_DIALOG.
离线
最后一次露面:3天8小时前
职员
加入:2018-02-08 11:03
嗨apoudred,

嗨apoudred,

我正在寻找你的问题,我会尽快回复你的合适答案。

谢谢,PM_DIALOG.

Apoudret.
离线
最后一次露面:1年5个月前
加入:2017-09-22 08:33.
你好pm_dialog,

你好pm_dialog,

您是否对此问题有任何更新?

此致,
安迪

PM_DIALOG.
离线
最后一次露面:3天8小时前
职员
加入:2018-02-08 11:03
嗨apoudred,

嗨apoudred,

抱歉延迟,我正试图复制你的问题。如果描述符的最大长度等于零,则您将获得写入和读取请求,如您所提到的那样。在特征的情况下,如果最大长度等于零,则只需只读读取请求,而不是写请求。这不是SDK的限制,但这是BLE堆栈处理特性的最大长度的方式。如果要获得写入请求,则特性的最大长度应等于或超过1.关于您的第二个问题,没有等效的ble_evt_gatts_read_req标志进行写入

谢谢,PM_DIALOG.

Apoudret.
离线
最后一次露面:1年5个月前
加入:2017-09-22 08:33.
你好,

你好,

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

此致,
安迪

PM_DIALOG.
离线
最后一次露面:3天8小时前
职员
加入:2018-02-08 11:03
嗨apoudred,

嗨apoudred,

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

谢谢,PM_DIALOG.