你好呀,
我想实现一个gatt特征,智能手机向读取查询和da14680的答案带有变量的值(在运行时更改)。所以我看过电池服务,了解如何实现它。
电池服务表现得完全正如我想要自己的服务 - 您可以查询它并获得更改变量作为返回。但是,困扰我(在文件sdk / ble-services / src / bas.c中):
据我所知,当您发送读取查询时,它会由函数“handle_read_req()”处理。但是,当我调试程序并在此函数中设置断点时,将读取查询从智能手机发送到此特征,从未达到/激活断点,但无论如何智能手机接收电池值。因此,如果您可以解释查询的答案如何生成/发送,则会很好。:-)
背景技术:在我的应用程序中,一旦收到读取查询,DA14680需要在将变量发送到响应之前执行一些算法,并且我想在句柄或回叫函数中放置这些操作,但我不确定我可以使用哪种功能......
我理解,可以通过BLE_GATTS_SET_VALUE() - 函数来更改响应值 - 但我想仅在读取查询的情况下调用/使用该功能,从而避免轮询该功能并浪费计算力量。
提前致谢
菲利普
设备:
嗨dsandbue,
从外围设备的回复从外围设备直接从堆栈发送,在580的情况下,堆栈将读取数据库值并通过适当的值反馈手机。现在在5.0.4 SDK中有一种方法可以捕捉阅读指示,请查看以下链接以获取更多详细信息https://support.dialog-semicondiondiondum/gattcreadcmdind-da14580。
关于您的第二个问题,为了具有将处理与自定义配置文件的交互的处理程序,您必须遵循已有已实现的配置文件的示例,允许遵循BAS配置文件的BAS_INIT()函数。您将看到它有一种结构,它将容纳有关配置文件的所有信息,包括每个事件的处理程序(连接,读取,写入等)。因此,您必须为自定义配置文件实施类似的东西,并为您的stap_req成员带来类似的回调函数,在此之后,您必须使用BLE_SERVICE_ADD()添加该服务,以便管理器触发您的服务事件,您还能够在UM-B-044 DA1468X软件平台参考文档中找到一些文档.pdf在第7.2.2段中。每次都会进行上面的读/写等要求,请求相应的处理程序将被触发。
谢谢mt_dialog.
谢谢你的答案,不幸的是我选择了错误的“类别”,我只需使用DA14680而不是580,所以我想知道你的答案的第一部分是否为DA14680是真的?因为这就是我遇到的 - 所以我无法停止句柄_req_req()中的程序,因为读取查询被堆栈处理了?
嗨dsandbue,
不,这没有袖点为68倍的家庭,其中68倍,一旦中央尝试从您的特征读取,就应该能够停止读取请求,但仍然需要为该特定特征实现Handle_Read_req()函数而且您还需要在创建特征时启用该功能。因此,在使用ble_gatts_add_charactery()创建特性时,参数gatts_flag_t标志如果设置为gatts_flag_char_read_req将重新路由对应用程序级别的请求,并且您将能够在应用程序级别捕获请求,然后您必须发送确认使用BLE_GATTS_READ_CFM()手动手动。
谢谢mt_dialog.
非常感谢你!!它现在就像一个魅力。:-)