赵阳 发表于 2019-7-5 10:33:18

协议栈配置central 和 peripheral uuid数目问题?以及主机发现从机服务发现问题?

本帖最后由 赵阳 于 2019-7-5 10:33 编辑

图1 设置定制UUID 数目
问题一:这个uuid数目是主机和从机一样吗?
问题二:如果从机有两个任务,设置为2,那主机设置为1,主机是不是发现不了其中一个服务?







图二 discovery all service   ANDdiscovery aspecific service
问题一:无论是官方的SDK 还是青风教程,主机代码和教程都只是针对定制服务,进行处理如下代码所示。
err_code = sd_ble_gattc_primary_services_discover(conn_handle,
                                                      SRV_DISC_START_HANDLE,
                                                   &(p_srv_being_discovered->srv_uuid));
没有对 Generic AccessGeneric AttributeDevice informationUnknown等服务进行描述,主机改怎样从从机发现这些服务,比如电池服务,不仅要发现电池服务还要发现电池服务的Generic Access服务里面的name????当然app软件nRF Connect做主机能全部发现从机的任何服务,这些在主机教程代码中,是怎样一个过程???是怎样发现全部服务的过程?????

按照流程图所示,修改了发现如下代码,但是就只能发现一个服务?????                                             
err_code = sd_ble_gattc_primary_services_discover(p_gap_evt->conn_handle,
                                                                  SRV_DISC_START_HANDLE,NULL);
问题二:图一与图二有没有间接联系?
问题三:希望青风能出一篇关于发现 discovery all service   ANDdiscovery aspecific service的教程




admin 发表于 2019-7-5 10:48:18

第一个问题:主机没有UUID的,主机只是需要判断发现的服务UUID是不是符合要求的,所有说没有要求数目一样。

第二个问题:发现服务过程是发现所有服务的过程,并不是只发现一个服务,主机教程里写的很清楚,发现完所有服务后,才触发回调事件。例子这个可以参考主机心电的例子,心电服务里有多个服务。

第三个问题:发现服务是找到属性参数,这个再主机串口教程里详细说明了。比如你说的电池服务,如下下图:,主机电池服务文件里就有基础数据发现回调。


最后:建议,把主机串口教程里的发现服务过程重新阅读一遍就理解了。

赵阳 发表于 2019-7-5 12:04:22

admin 发表于 2019-7-5 10:48
第一个问题:主机没有UUID的,主机只是需要判断发现的服务UUID是不是符合要求的,所有说没有要求数目一样。 ...

心电服务他们的Generic Access的UUID是1800,下面Device name 是0x2A00,描述符是read和write,,现在我要对这个名字进行改写,并保证其他心电服务也能工作。在主机代码中,我是不是要发现设备名字的uuid,确定它是0X2A00,然后进行读写?从哪个方向去做?

admin 发表于 2019-7-5 21:10:41

赵阳 发表于 2019-7-5 12:04
心电服务他们的Generic Access的UUID是1800,下面Device name 是0x2A00,描述符是read和write,,现在我要 ...

设备名字的UUID特征任何例子都是0x2A00,这个是默认的,要改名要把名字存到FLASH中后,在更改GAP名字设置,这个再4.0网盘里有例子,这个并不是服务。
页: [1]
查看完整版本: 协议栈配置central 和 peripheral uuid数目问题?以及主机发现从机服务发现问题?