你好,
我对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_characteristic_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-> handle = cmd->手柄+ 1;请用这个替换这条线gcmd-> handle = cmd->手柄;显然该函数正在请求和设置错误的句柄,这应该解决问题。
你好mt_dialog,
在这种情况下,当我调用ble_gatts_set_characteristic_prop()函数时,我应该给出特征句柄或属性值句柄吗?
我在SDK上做了改变,但我的问题仍然存在。- 如果我给出了特征句柄,则没有任何改变的情况不会改变- 如果我给出了属性值句柄,则更改权限,但也改变了特征uuid(它变成了16位UUID)
我尚未通过DK上的调试器在中央侧测试这一点只是为了检查权限是否更改,在中央设备上测试,我可以重现您的问题,看看你提到的内容,改变会影响uuid特征,仍在检查解决方案。您应该传递给函数的句柄是该值的属性。
感谢您的回答。如果您在有关于UUID问题的解决方案时,我会很高兴。
仍然没有来自SDK团队的新闻,这是一个适当的修复,但我相信我们已经找到了一个工作,以便能够在不搞乱UUID的情况下更改特征的权限和属性,而不是使用BLE_GATTS_SET_CHAROURY_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);//这将设置稍后将分配给该属性的正确属性和关联权属性。status = 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);status = 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_characteristic_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-> handle = cmd->手柄+ 1;请用这个替换这条线gcmd-> handle = cmd->手柄;显然该函数正在请求和设置错误的句柄,这应该解决问题。
谢谢mt_dialog.
你好mt_dialog,
在这种情况下,当我调用ble_gatts_set_characteristic_prop()函数时,我应该给出特征句柄或属性值句柄吗?
我在SDK上做了改变,但我的问题仍然存在。
- 如果我给出了特征句柄,则没有任何改变的情况不会改变
- 如果我给出了属性值句柄,则更改权限,但也改变了特征uuid(它变成了16位UUID)
谢谢
嗨apoudred,
我尚未通过DK上的调试器在中央侧测试这一点只是为了检查权限是否更改,在中央设备上测试,我可以重现您的问题,看看你提到的内容,改变会影响uuid特征,仍在检查解决方案。您应该传递给函数的句柄是该值的属性。
谢谢mt_dialog.
你好mt_dialog,
感谢您的回答。
如果您在有关于UUID问题的解决方案时,我会很高兴。
谢谢
嗨apoudred,
仍然没有来自SDK团队的新闻,这是一个适当的修复,但我相信我们已经找到了一个工作,以便能够在不搞乱UUID的情况下更改特征的权限和属性,而不是使用BLE_GATTS_SET_CHAROURY_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);//这将设置稍后将分配给该属性的正确属性和关联权属性。
status = 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);
status = attmdb_get_attribute(mcs_glob-> mc_descriptor,&elmt);
elmt.info.att-> perm = test_perm;
谢谢mt_dialog.
谢谢mt_dialog这是完美的。