你好,我们正在编写一个具有两个特征的服务,所有特征都具有128位UUID。此代码基于sample128示例,该示例仅显示服务中的一个特征。
我们将服务和特征添加到ATTM DB(使用attmdb_add_service和attmdb_add_attribute),并连接到BLE中央应用程序(在iOS上)。广告、连接和服务发现工作正常。然而,权限似乎是个问题。
与示例中一样,使用attmdb_svc_set_permission将初始权限设置为PERM(SVC, DISABLE)。然后,只有在enable_req_handler中,我们使用服务句柄(从attmdb_add_service获得)设置param->sec_lvl的权限。
我们使用的一个特征是指示,另一个特征是写。当先添加WRITE特性时,从中心应用程序编写它是没有问题的。但是,当第二次添加WRITE特征时,从中心应用程序写入失败,BLE嗅探器显示带有WRITE_NOT_PERMITTED (0x03)的ATT_Error_Response。
是否有办法为服务中的所有特征启用权限?
是否有一个例子,128位UUID有一个以上的特征在服务?
注意:在使用128位uuid之前,代码使用常规attm_svc_create_db API的16位uuid。在这种情况下,两个特征都正常工作。

嗨Eli.iser,
在SPOTA项目中(3.0.2或集成在3.0.4的接近报告应用程序中),我们在单个服务(SPOTA)中包含多个特性。
你能看一下那个例子并让我知道你的反馈吗?
非常感谢你的建议。我们使用的是SDK版本2.0.4.1(版本3与我们的评估板OTP不兼容),所以没有注意到这个例子。
在SPOTA项目中的配置帮助下,我们能够使uuid正确工作。