你好,
我正在使用SDK 10.0.4.66.2的DA1469X芯片(基本上我也在那个板上的DEV板上测试这个问题)。我的问题是,当我用一个特定的特征添加我的自定义服务时,苏达特功能停止为我工作。结果在Dialog的Suota应用程序中,尽管我看到了我的设备(我可以连接到它)我看不到任何设备信息(来自DIS的数据,就像制造商一样,型号,固件版本和软件版本),也是固件更新未开始,留下来在0个数据包发送。
因此,我的自定义服务UUID是0xFFFD,并且特征uuid 0x2a28 - uuids是我需要实现的特征,所以我无法改变它们。我添加的方式就是这样的方式:
uint16_t m_service_revision_handle = 0;ATT_UUID_T UUID;uint16_t num_attr = ble_gatts_get_num_attr(0,1,0);静态const16_t u2f_service_uuid = 0xFFFD;static const16_t some_uuid = 0x2a31;static const16_t错误_uuid = 0x2a28;BLE_UUID_CREATE16(U2F_SERVICE_UUID,&UUID);ble_gatts_add_service(&uuid,gatt_service_primary,num_attr);BLE_UUID_CREATE16(错误_UUID,&UUID);BLE_GATTS_ADD_CHARACTION(&UUID,GATT_PROP_READ,ATT_PERM_READ,20,GATTS_FLAG_CHAR_READ_REQ,//标志仅具有GATTS_FLAG_CHAR_READ_REQ 0,&M_SERVICE_REVISION_HANDLE); ble_gatts_register_service( &m_service_revision_handle, 0 );
有趣的事情是,如果我将特征uuid从0x2a28更改为Ex。0x2a31一切正常好。
我使用此附加服务编写了pxp_reporter_task.c文件,使Suota不可运行。我正在附加文件,这样您就可以替换在SDK的PXP_Reporter(Project / DK_Apps / Demos / PXP_Reporter)中的示例项目中的一个。[由于在附件中我只能添加PDF文件,您需要从其扩展中删除.pdf]
有人可以看看那个并帮助我解决这个问题吗?为什么这个特殊的特征uuid导致偶像不起作用?它不仅仅与对话框的Android应用程序一起工作,它将与其他任何东西一起工作吗?预先感谢您的帮助
关键词:
设备:
麦迪塞克,
谢谢你的问题。您能否分享我的代码来创建自定义服务,以便复制您的问题?此外,您还有一个PDF文件,但我无法打开它,所以我建议您zip zip并再次附加它。关于UUID,它不是使用相同的UUID的最佳实践 - 0x2a28在DIS配置文件中使用。与此同时,我建议你带走DA1469X自定义蓝牙服务来自我们支持网站的教程,展示如何实现自定义服务。
我做了一个简短的演示,其中使用了2个相同的16位UUID,它正常工作。为此,问题可能与UUID无关 - 但让我们检查您使用的代码!
使用0x2a28 uuid时,只有upota功能有问题?
谢谢,PM_DIALOG.
你好,
在附件中,我通过添加我的自定义字符来发送我占用的pxp_reporter示例项目。
是的,这是正确的,从我只能看到偶像功能没有操作。我检查了使用NRFConnect应用程序可用的服务,并且一切都看起来很好,但是使用Suota应用程序的Suota无法正常工作。它可以是您的Android应用程序中的错误吗?
你确定,uuid的特征应该是独一无二的吗?即使表征在不同的服务中,即使是不同的服务(喜欢我和我的自定义)?
谢谢,Mcisek.
麦迪塞克,
谢谢你为我提供这个项目。让我检查一下并尝试重现你的问题。我会尽快回复你。
谢谢,PM_DIALOG.
麦迪塞克,
0x2a28用于DIS服务以定义“软件修订字符串”特性,因此不建议在自定义服务中使用。UUID代表普遍唯一的ID,所以我建议你没有2个相同的uuids。自定义服务应该有一个128bit uuid而不是16bit uuid。根据您的代码,自定义服务的UUID为0xFFFD,但如果与BLE通用移动应用程序连接,则会看到它会自动转换为随机128bit UUID。使用0x2a28时,自定义服务包含“软件修订字符串”特征。然而,在DIS服务时,在之前提到的差异是相同的特征。只要您拥有与Suota Mobile应用程序连接的设备,您将看到应用程序使用“软件修订字符串”,以便定义“软件修订版”。通常,“软件修订”应具有“1.0.0.1”值。请检查sw_version.h头文件和sw_version定义。为此,预计当您的自定义特征的UUID是0x2A28时,它将无法执行课题 - 我也将其复制。 When using 0x2A31 UUID, you are able to perform SUOTA because this UUID is not used by the DIS service. However, this UUID is used by the SCPS service for defining the “Scan Refresh” characteristic, but the SCPS service is not used in the PXP reporter example, so that’s why the procedure runs as expected.
我的建议将遵循DA1469X自定义蓝牙服务用于创建自定义服务,然后使用UUID进行不使用的自定义特征。
在您的初始帖子中,您提到您无法更改UUID,所以我可以知道是否存在任何特定原因?
谢谢,PM_DIALOG.
谢谢您的回答。我无法更改UUID的原因是我需要实现这里描述的FIDO U2F服务:https://fidoalliance.org/specs/fido-u2f-v1.2-ps-20170411/fido-u2f -bt-protocol-v1.2-ps-20170411.html#u2f-service.在第6.1章中。这是WERID,他们决定使用与DIS中相同的UUID(我猜是最受欢迎的服务之一)。
麦迪塞克,
您是否通过您自己的U2F服务实施了?位于SDK10的可用服务,位于SDK \ interfaces \ BLE \ Services \ Include SDK路径。我检查了代码,在您的自定义服务中,该特性是“软件修订字符串”。此外,您无法使用U2F服务作为自定义服务,因为它由Bluetooth SIG定义为DIS服务。UUID,可以是官方采用的BLE服务的16位,这些BLE服务由蓝牙SIG合格,或者它可以是128位,用于无限制的自定义服务。如果您发现任何答案有用,请将其标记为已接受。
谢谢,PM_DIALOG.