你好,
我想实现一个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.
提前谢谢
飞利浦
设备:
嗨,德桑布,
在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中找到一些文档。通过每次执行上述操作,都会触发相应的处理程序。
谢谢你的对话
谢谢你的回答,不幸的是我选择了错误的“类别”,我只是使用DA14680而不是580,所以我想知道你的答案第一部分是否也是对DA14680的?因为这就是我所经历的——所以我无法停止句柄\u read\u req()中的程序,因为读取查询是由堆栈处理的?
嗨,德桑布,
不,这不代表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()手动发送确认值。
谢谢你的对话
非常感谢你!!现在它就像一个魅力