你好,
我有一个关于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_feattic_prop()和ble_gatts_get_feattic_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_feattic_prop()和ble_gatts_get_feattic_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这是完美的。