关于GATT特性的问题

⚠️
你好。。谢谢你来参加论坛。令人兴奋的消息!我们现在正在移动到我们的新论坛平台,将提供更好的功能,并包含在主对话网站的过程。所有帖子和账号都已迁移。我们现在只接受新论坛上的流量-请在//www.wsdof.com/support. 我们将在未来几天内修复bug/优化搜索和标记。
5 posts / 0 new
最后一篇文章
德尚布
离线
最后一次见到:1年9个月前
已加入:2017-02-15 14:09
关于GATT特性的问题

你好,

我想实现一个GATT特性,智能手机发送读取查询,DA14680的答案是变量(在运行时更改)。所以我已经看了电池服务,以了解如何实现它。

电池服务的行为完全符合我自己的服务要求-您可以查询它并获得一个更改变量作为返回。但是,我的问题是什么(在文件sdk/ble services/src/bas.c中):
据我所知,当您发送读取查询时,它将由函数“handle\u Read\u req()”处理。但是,当我调试程序并在此函数中设置断点时,从智能手机发送读取查询到此特性时,断点永远不会达到/激活,但智能手机无论如何都会接收电池值。因此,如果您能够解释查询的答案是如何生成/发送的,那将是非常好的

我的问题背景:在我的应用程序中,一旦收到读取查询,DA14680需要在将变量作为响应发送之前执行一些算术运算,我想将这些操作放在句柄或回调函数中,但我不确定我可以使用哪个函数来处理这个问题。。。
我知道可以改变response-value via the ble_gatts_set_value()-function, but I'd like to call/use that function only in the event of a read-query, so to avoid polling that function and wasting computing power.

提前谢谢
飞利浦

设备:
MT\u对话框
离线
最后一次见到:2个月3周前
工作人员
已加入:2015-06-08 11:34
嗨,德桑布,

嗨,德桑布,

在580的情况下,从外围设备直接发送对电话设备的应答,堆栈将读取数据库值并以适当的值反馈电话。现在在5.0.4SDK中有一种方法可以捕获读取指示,请查看以下链接以了解更多详细信息https://support.dialog-semiconductor.com/gattcreadcmdind-da14580.

关于第二个问题,为了拥有处理与自定义配置文件交互的处理程序,您必须遵循allready实现概要文件的示例,让我们以bas概要文件的bas_Uinit()函数为例。您将看到,有一个结构,它将包含所有有关配置文件的信息,包括每个事件的处理程序(连接、读、写等)。因此,您必须为自定义配置文件实现类似的功能,并为结构的read\u req成员具有类似的回调函数,然后您必须使用ble\u service\u add()添加服务,以便管理器触发您的事件,您还可以在第7.2.2段中的UM-B-044 DA1468x Software Platform Reference.pdf中找到一些文档。通过每次执行上述操作,都会触发相应的处理程序。

谢谢你的对话

德尚布
离线
最后一次见到:1年9个月前
已加入:2017-02-15 14:09
Thank you for your answer,

谢谢你的回答,不幸的是我选择了错误的“类别”,我只是使用DA14680而不是580,所以我想知道你的答案第一部分是否也是对DA14680的?因为这就是我所经历的——所以我无法停止句柄\u read\u req()中的程序,因为读取查询是由堆栈处理的?

MT\u对话框
离线
最后一次见到:2个月3周前
工作人员
已加入:2015-06-08 11:34
嗨,德桑布,

嗨,德桑布,

不,这不代表68x系列,68x应该可以在中心试图从特性中读取时停止读取请求,但仍然需要为该特定特性实现handle_uread_ureq()函数,同时还需要在创建特性的同时启用该功能。因此,当使用ble_gatts\u add_characteristic()创建特性时,如果设置为gatts\u flag_CHAR_READ_ureq,则参数gatts\u flag_ut flags将重新路由到应用程序级别,并且您将能够在应用程序级别捕获请求,然后,您将不得不使用ble_ghts_uread_ucfm()手动发送确认值。

谢谢你的对话

德尚布
离线
最后一次见到:1年9个月前
已加入:2017-02-15 14:09
非常感谢你!!它

非常感谢你!!现在它就像一个魅力