首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BlueNRG只允许已知设备连接

BlueNRG只允许已知设备连接
EN

Stack Overflow用户
提问于 2021-10-06 12:46:59
回答 1查看 135关注 0票数 0

我有一个带有STM BlueNRG芯片的BLE外围设备.我使用的是蓝色API。外围设备通常应该是可发现的,但只有已知的设备才允许连接。

我认为我可以通过在bdaddr回调中检查中央设备的EVT_LE_CONN_COMPLETE来实现这一点,并且根据地址是否已知,我将允许连接。此外,我将有一种配对模式,在这种模式中,我接受所有不可中断的连接请求,并将新的中心设备添加到已知设备的列表中。

代码语言:javascript
复制
  case EVT_LE_CONN_COMPLETE:
    {
      evt_le_connection_complete *cc = (void *)evt->data;
      /*TODO: check if peer address is listed or if HMI accepts new pairing
       * If in pairing mode, add device to the list and accept connection, otherwise
       * go through list and if not found, refuse connection.*/
      if(acceptNewPairing){
          LOG("CR from %d:%d:%d:%d:%d:%d", cc->peer_bdaddr[0], cc->peer_bdaddr[1], cc->peer_bdaddr[2], cc->peer_bdaddr[3], cc->peer_bdaddr[4], cc->peer_bdaddr[5]);
          GAP_ConnectionComplete_CB(cc->peer_bdaddr, cc->handle);         
      }
  }
  break;

我的问题是,bdaddr不是常量,而是经过一段时间后变化的,所以我不对中央设备进行调整。我怎样才能克服这个问题?最著名的蓝牙设备提供的实现这一功能的正确方法是什么?

更新:

似乎可以使用该函数来实现这种行为。

代码语言:javascript
复制
hci_le_add_device_to_white_list(uint8_t bdaddr_type, tBDAddr bdaddr);

在此之后,即使我将可发现性设置为WHITE_LIST_FOR_ALL,设备也是可发现的。我现在的问题是,白名单似乎不是持久的,如果我重新启动设备,我必须再次进入配对模式才能看到它。有人知道我怎样才能拯救白名单吗?

aci_gap_configure_whitelist()是做什么的?因为如果我调用这个函数,我的白名单就会被删除。

Update2:

在STM文档PM0257中。3.10.1)我找到了一个关于我正在寻找的程序的参考。因此,我认为这是向前迈出的一步。问题是在我的bluenrg中不存在引用的函数aci_gap_add_device_to_resolving_list。知道我该用什么代替吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-27 08:15:55

通过使用WHITE_LIST_FOR_ONLY_SCAN属性来解决aci_gap_set_discoverable()函数的问题,而只有绑定的设备才能连接。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69465988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档