你好,
我有一个关于SDK配对的问题。我们董事会上的软件正在等待配对请求。一个智能手机应用程序连接到板子并开始配对请求。对话板的IO功能配置为“仅显示”。
所以目前手机可以做配对请求使用PIN码显示的板,它工作正确。但问题是手机也可以在没有PIN码的情况下进行配对请求,也可以使用它。是否可能只接受带PIN码的配对请求而拒绝其他配对请求?
谢谢,安迪
嗨apoudred,
你是什么意思,手机能够在没有PIN的情况下连接?例如,如果设备询问您的PIN且您只需从手机侧忽略它仍然保持连接,直到您发出断开连接?或者设备将在几秒钟后断开连接?设备将接受连接,如果恳求需要安全性,则连接安全请求时将发生在连接时,如果链接的安全要求与设备的要求不匹配,则可以将其断开连接,以便为BMS项目进行示例。如果设备在30秒内未在30秒内未能接收配对响应,则SDK也将需要传递键。
谢谢mt_dialog.
使用权限ATT_PERM_WRITE_ENCRYPT而不是ATT_PERM_WRITE_AUTH创建我的BLE服务中的特征。由于此,某些设备可以在不进入PIN码(“只是作品”配对)配对。
但是我有另一个问题。有时我希望用户能够在没有配对的情况下写下这个特征,有时我希望他能够才能在他配对时执行此操作。我尝试使用函数ble_gatts_set_charactertic_prop来更改特性的权限(在ATT_PERM_WRITE和ATT_PERM_WRITE_AUTH之间切换)。然而,当我这样做时,我的特性就失效了。例如,如果我用nRF Connect检查,我可以看到特征UUID发生了变化。因此,智能手机无法再找到该特征(因为它使用它的UUID查找它)。使用ble_gatts_set_characteristic_prop时是否有什么我应该知道的?初始UUID是128位UUID,并且在此函数调用后,它变为16位UUID。
我正在寻找这个问题的解决方法:是否有可能销毁我的服务并再次创建它?
似乎有一些错误的函数ble_gatts_set_characteristic_prop()和ble_gatts_get_characteristic_prop()(在1.0.12 SDK上),我正在与SDK团队检查这个,我会让你知道,一旦我得到了更多的信息。据我所知,没有有效的API,将允许您轻松地破坏和重新创建数据库这一次使用所需的权限在运行时,我也检查这与团队。
谢谢您的回答,如果您在有关此问题的信息(或解决方法)时,如果您可以回复我,这将是非常好的。
我已经发出了一个内部机票,我会尽快回复SDK团队的答案。
你能否介绍有关情况?
谢谢
不,仍然没有SDK团队的消息,这可能需要一段时间。
刚刚有一些反馈,请对以下功能做以下更改:
在上面的函数中,您将找到以下代码行:
Gcmd ->句柄= cmd->句柄+ 1;请用这行代替那行gcmd-> handle = cmd->手柄;显然该函数正在请求和设置错误的句柄,这应该解决问题。
你好MT_dialog,
在这种情况下,当我调用ble_gatts_set_charactertic_prop()函数时,我应该给出特征句柄还是属性值句柄?
我做了你对SDK的改变,但我的问题仍然存在。- 如果我给出了特征句柄,则没有任何改变的情况不会改变- 如果我给出了属性值句柄,则更改权限,但也改变了特征uuid(它变成了16位UUID)
我尚未通过DK上的调试器在中央侧测试这一点只是为了检查权限是否更改,在中央设备上测试,我可以重现您的问题,看看你提到的内容,改变会影响uuid特征,仍在检查解决方案。您应该传递给函数的句柄是该值的属性。
由于MT_Dialog
谢谢你的回答。如果您在有关于UUID问题的解决方案时,我会很高兴。
仍然没有消息从SDK团队对此进行适当的修复,但我相信,我们已经找到了一个工作,以便能够改变权限和属性的特征,而不搞坏UUID,不要使用ble_gatts_set_charactertic_prop()函数,请检查下面3行代码,以更改特性的权限和属性。
att_perm_type test_perm;struct attm_elmt elmt;
test_perm = prop_to_rwperm(gatt_prop_read | gatt_prop_write | gatt_prop_notify)|perm_to_rwperm(att_perm_read_auth | att_perm_write)|(perm_uuid_128 << perm_pos_uuuid_len);//这将设置稍后将分配给该属性的正确属性和关联权属性。状态= attmdb_get_attribute(mcs_glob->mc_var_value_h, &elmt);/ /获取属性elmt.info.att-> perm = test_perm;//为目标属性设置一组新的权限。
我希望这能有所帮助。
谢谢MT_dialog,您的解决方案非常有效。你知道是否可以在描述符上完成同样的事情吗?
差不多,我有这个描述符的这一点:
test_perm = perm_to_rwperm(att_perm_read_auth);状态= attmdb_get_attribute(mcs_glob->mc_descriptor, &elmt);elmt.info.att-> perm = test_perm;
谢谢mt_dialog这是完美的。
嗨apoudred,
你是什么意思,手机能够在没有PIN的情况下连接?例如,如果设备询问您的PIN且您只需从手机侧忽略它仍然保持连接,直到您发出断开连接?或者设备将在几秒钟后断开连接?设备将接受连接,如果恳求需要安全性,则连接安全请求时将发生在连接时,如果链接的安全要求与设备的要求不匹配,则可以将其断开连接,以便为BMS项目进行示例。如果设备在30秒内未在30秒内未能接收配对响应,则SDK也将需要传递键。
谢谢mt_dialog.
你好,
使用权限ATT_PERM_WRITE_ENCRYPT而不是ATT_PERM_WRITE_AUTH创建我的BLE服务中的特征。由于此,某些设备可以在不进入PIN码(“只是作品”配对)配对。
但是我有另一个问题。有时我希望用户能够在没有配对的情况下写下这个特征,有时我希望他能够才能在他配对时执行此操作。
我尝试使用函数ble_gatts_set_charactertic_prop来更改特性的权限(在ATT_PERM_WRITE和ATT_PERM_WRITE_AUTH之间切换)。然而,当我这样做时,我的特性就失效了。例如,如果我用nRF Connect检查,我可以看到特征UUID发生了变化。因此,智能手机无法再找到该特征(因为它使用它的UUID查找它)。
使用ble_gatts_set_characteristic_prop时是否有什么我应该知道的?初始UUID是128位UUID,并且在此函数调用后,它变为16位UUID。
我正在寻找这个问题的解决方法:是否有可能销毁我的服务并再次创建它?
嗨apoudred,
似乎有一些错误的函数ble_gatts_set_characteristic_prop()和ble_gatts_get_characteristic_prop()(在1.0.12 SDK上),我正在与SDK团队检查这个,我会让你知道,一旦我得到了更多的信息。据我所知,没有有效的API,将允许您轻松地破坏和重新创建数据库这一次使用所需的权限在运行时,我也检查这与团队。
谢谢mt_dialog.
谢谢您的回答,如果您在有关此问题的信息(或解决方法)时,如果您可以回复我,这将是非常好的。
嗨apoudred,
我已经发出了一个内部机票,我会尽快回复SDK团队的答案。
谢谢mt_dialog.
你好,
你能否介绍有关情况?
谢谢
嗨apoudred,
不,仍然没有SDK团队的消息,这可能需要一段时间。
谢谢mt_dialog.
嗨apoudred,
刚刚有一些反馈,请对以下功能做以下更改:
在上面的函数中,您将找到以下代码行:
Gcmd ->句柄= cmd->句柄+ 1;请用这行代替那行gcmd-> handle = cmd->手柄;显然该函数正在请求和设置错误的句柄,这应该解决问题。
谢谢mt_dialog.
你好MT_dialog,
在这种情况下,当我调用ble_gatts_set_charactertic_prop()函数时,我应该给出特征句柄还是属性值句柄?
我做了你对SDK的改变,但我的问题仍然存在。
- 如果我给出了特征句柄,则没有任何改变的情况不会改变
- 如果我给出了属性值句柄,则更改权限,但也改变了特征uuid(它变成了16位UUID)
谢谢
嗨apoudred,
我尚未通过DK上的调试器在中央侧测试这一点只是为了检查权限是否更改,在中央设备上测试,我可以重现您的问题,看看你提到的内容,改变会影响uuid特征,仍在检查解决方案。您应该传递给函数的句柄是该值的属性。
由于MT_Dialog
你好MT_dialog,
谢谢你的回答。
如果您在有关于UUID问题的解决方案时,我会很高兴。
谢谢
嗨apoudred,
仍然没有消息从SDK团队对此进行适当的修复,但我相信,我们已经找到了一个工作,以便能够改变权限和属性的特征,而不搞坏UUID,不要使用ble_gatts_set_charactertic_prop()函数,请检查下面3行代码,以更改特性的权限和属性。
att_perm_type test_perm;
struct attm_elmt elmt;
test_perm = prop_to_rwperm(gatt_prop_read | gatt_prop_write | gatt_prop_notify)|perm_to_rwperm(att_perm_read_auth | att_perm_write)|
(perm_uuid_128 << perm_pos_uuuid_len);//这将设置稍后将分配给该属性的正确属性和关联权属性。
状态= attmdb_get_attribute(mcs_glob->mc_var_value_h, &elmt);/ /获取属性
elmt.info.att-> perm = test_perm;//为目标属性设置一组新的权限。
我希望这能有所帮助。
谢谢mt_dialog.
谢谢MT_dialog,您的解决方案非常有效。
你知道是否可以在描述符上完成同样的事情吗?
嗨apoudred,
差不多,我有这个描述符的这一点:
test_perm = perm_to_rwperm(att_perm_read_auth);
状态= attmdb_get_attribute(mcs_glob->mc_descriptor, &elmt);
elmt.info.att-> perm = test_perm;
谢谢mt_dialog.
谢谢mt_dialog这是完美的。