你好,
我对SDK配对有一个问题。电路板上的软件正在等待配对请求。智能手机应用程序连接到电路板并开始配对请求。Dialog板的IO能力被配置为“仅显示”。
因此,目前手机可以使用电路板显示的PIN码进行配对请求,并且它可以正常工作。但问题是,手机也可以做配对请求没有PIN码,它也工作。是否有可能仅接受与PIN码的配对请求,并拒绝其他人?
谢谢,安迪
嗨apoudret,
你说手机不用针就能连接是什么意思?例如,如果设备要求你提供一个大头针,而你只是从手机端忽略它,那么设备仍然保持连接,直到你发出断开连接?或者设备会在几秒钟后断开?设备将接受连接,如果implemenation需要安全的安全请求连接时,会发生如果链接的安全需求不匹配,设备的需求,它就会断开,你可以作为一个例子的bms项目SDK,它需要通过关键,如果设备在30秒内没有收到配对响应,它将断开连接。
由于MT_dialog
我的BLE服务中的特征是使用权限ATT_PERM_WRITE_ENCRYPT而不是ATT_PERM_WRITE_AUTH创建的。正因为如此,一些设备可以在不输入PIN码的情况下配对(“只是工作”配对)。
不过我还有一个问题。有时我希望用户能够在没有配对的情况下写出这个特征,有时我希望他能够在配对的情况下这样做。我尝试使用函数ble_gatts_set_characteristic_prop来更改特性的权限(在att_perm_write和att_perm_write_auth之间切换)。但是,当我这样做时,我的特征变得无效。例如,如果我检查nrf connect,我可以看到特征uuid更改。因为这个智能手机无法找到特征(因为它抬头使用它的UUID)。当使用ble_gatts_set_charactertic_prop时有什么我应该知道的吗?初始的UUID是一个128位的UUID,在这个函数调用之后,它变成了一个16位的UUID。
我正在寻找解决这个问题的方法:是否有可能摧毁我的服务并再次创建它?
似乎函数ble_gatts_set_characteristic_prop()和ble_gatts_get_characteristic_prop()(在1.0.12 SDK)上有问题,我正在与SDK团队一起检查,我会尽快让您知道更多信息.据我所知,没有有效的API,这将允许您在运行时期间使用所需的权限轻松地破坏和重新创建数据库,我也与团队一起检查。
谢谢你的回答,如果你有更多关于这个问题(或解决方法)的信息时能给我回复就太好了。
关于这个我已经开了一个内部ticket,我得到SDK团队的答复后会尽快回复。
您是否对此问题有任何更新?
谢谢
没有,仍然没有来自SDK团队的消息,这可能需要一段时间。
刚有一些反馈意见,请在以下职能下进行以下更改:
在上述函数中,你会发现以下代码行:
gcmd-> handle = cmd->手柄+ 1;请用这个替换这条线gcmd - >处理= cmd - >处理;显然,该函数请求并设置了错误的句柄,这应该可以解决这个问题。
你好mt_dialog,
在这种情况下,当我调用ble_gatts_set_characteristic_prop()函数时,我应该给出特征句柄或属性值句柄吗?
我在SDK上做了改变,但我的问题仍然存在。-如果我给特征句柄,什么也不会发生,权限不会改变-如果我给属性值句柄,权限会改变,但特征UUID也会改变(变成一个16位UUID)
我没有测试这个中央一侧只有通过调试器在DK检查权限是否改变,测试在一个中央设备我可以复制你的问题,看看你提及,UUID的变化影响的特点,还检查解决方案。应该传递给函数的句柄是值的属性。
谢谢mt_dialog.
感谢您的回答。如果您有关于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_uuid_len);//这将设置正确的属性和权限,稍后将被分配给属性。status = attmdb_get_attribute(mcs_glob-> mc_var_value_h,&elmt);//获取属性elmt.info.att - >烫= 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 - >烫= test_perm;
谢谢MT_dialog,这是完美的工作。
嗨apoudret,
你说手机不用针就能连接是什么意思?例如,如果设备要求你提供一个大头针,而你只是从手机端忽略它,那么设备仍然保持连接,直到你发出断开连接?或者设备会在几秒钟后断开?设备将接受连接,如果implemenation需要安全的安全请求连接时,会发生如果链接的安全需求不匹配,设备的需求,它就会断开,你可以作为一个例子的bms项目SDK,它需要通过关键,如果设备在30秒内没有收到配对响应,它将断开连接。
由于MT_dialog
你好,
我的BLE服务中的特征是使用权限ATT_PERM_WRITE_ENCRYPT而不是ATT_PERM_WRITE_AUTH创建的。正因为如此,一些设备可以在不输入PIN码的情况下配对(“只是工作”配对)。
不过我还有一个问题。有时我希望用户能够在没有配对的情况下写出这个特征,有时我希望他能够在配对的情况下这样做。
我尝试使用函数ble_gatts_set_characteristic_prop来更改特性的权限(在att_perm_write和att_perm_write_auth之间切换)。但是,当我这样做时,我的特征变得无效。例如,如果我检查nrf connect,我可以看到特征uuid更改。因为这个智能手机无法找到特征(因为它抬头使用它的UUID)。
当使用ble_gatts_set_charactertic_prop时有什么我应该知道的吗?初始的UUID是一个128位的UUID,在这个函数调用之后,它变成了一个16位的UUID。
我正在寻找解决这个问题的方法:是否有可能摧毁我的服务并再次创建它?
嗨apoudret,
似乎函数ble_gatts_set_characteristic_prop()和ble_gatts_get_characteristic_prop()(在1.0.12 SDK)上有问题,我正在与SDK团队一起检查,我会尽快让您知道更多信息.据我所知,没有有效的API,这将允许您在运行时期间使用所需的权限轻松地破坏和重新创建数据库,我也与团队一起检查。
由于MT_dialog
谢谢你的回答,如果你有更多关于这个问题(或解决方法)的信息时能给我回复就太好了。
嗨apoudret,
关于这个我已经开了一个内部ticket,我得到SDK团队的答复后会尽快回复。
由于MT_dialog
你好,
您是否对此问题有任何更新?
谢谢
嗨apoudret,
没有,仍然没有来自SDK团队的消息,这可能需要一段时间。
由于MT_dialog
嗨apoudret,
刚有一些反馈意见,请在以下职能下进行以下更改:
在上述函数中,你会发现以下代码行:
gcmd-> handle = cmd->手柄+ 1;请用这个替换这条线gcmd - >处理= cmd - >处理;显然,该函数请求并设置了错误的句柄,这应该可以解决这个问题。
由于MT_dialog
你好mt_dialog,
在这种情况下,当我调用ble_gatts_set_characteristic_prop()函数时,我应该给出特征句柄或属性值句柄吗?
我在SDK上做了改变,但我的问题仍然存在。
-如果我给特征句柄,什么也不会发生,权限不会改变
-如果我给属性值句柄,权限会改变,但特征UUID也会改变(变成一个16位UUID)
谢谢
嗨apoudret,
我没有测试这个中央一侧只有通过调试器在DK检查权限是否改变,测试在一个中央设备我可以复制你的问题,看看你提及,UUID的变化影响的特点,还检查解决方案。应该传递给函数的句柄是值的属性。
谢谢mt_dialog.
你好mt_dialog,
感谢您的回答。
如果您有关于UUID问题的解决方案时能回复我,我会很高兴。
谢谢
嗨apoudret,
仍然没有来自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_uuid_len);//这将设置正确的属性和权限,稍后将被分配给属性。
status = attmdb_get_attribute(mcs_glob-> mc_var_value_h,&elmt);//获取属性
elmt.info.att - >烫= test_perm;//为目标属性设置一组新的权限。
我希望这将有所帮助。
由于MT_dialog
谢谢mt_dialog,你的解决方法就像魅力一样。
你知道对描述符也能做同样的事吗?
嗨apoudret,
差不多,我这边的描述是这样的:
test_perm = perm_to_rwperm (ATT_PERM_READ_AUTH);
status = attmdb_get_attribute(mcs_glob-> mc_descriptor,&elmt);
elmt.info.att - >烫= test_perm;
由于MT_dialog
谢谢MT_dialog,这是完美的工作。