首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BlueNRG蓝牙:读取中心设备名称

BlueNRG蓝牙:读取中心设备名称
EN

Stack Overflow用户
提问于 2021-07-14 06:41:25
回答 1查看 258关注 0票数 2

我在我的外围设备上使用STM BlueNRG芯片,连接后我想读取连接中央设备(android手机)的名称。

我想我可以在注册为hci回调的user_notify例程中直接这样做。

代码语言:javascript
复制
  /* Initialize the Host-Controller Interface */
  hci_init(user_notify, NULL);

因此,在EVT_LE_CONN_COMPLETE事件中,我使用中心设备提供的句柄,并使用aci_gatt_read_using_charac_uuid()读取我认为具有设备名称的特性(UUID0x2a00)。

代码语言:javascript
复制
case EVT_LE_META_EVENT:
    {
      evt_le_meta_event *evt = (void *)event_pckt->data;
      switch(evt->subevent){
      case EVT_LE_CONN_COMPLETE:
        {
          evt_le_connection_complete *cc = (void *)evt->data;
                    GAP_ConnectionComplete_CB(cc->peer_bdaddr, cc->handle);
                    uint16_t uuid = 0x2a00;
                    resp = aci_gatt_read_using_charac_uuid(cc->handle, 0, 1, UUID_TYPE_16, (uint8_t*)&uuid);
                    LOG("GATT read status: %d", resp);

          enqueEvent(EVENT_BLE_CONNECTED);
        }
        break;
      }
    }

长话短说,这不管用。首先我不确定的是,什么是start_handleend_handle参数的aci_gatt_read_using_charac_uuid(),它返回ERR_INVALID_HCI_CMD_PARAMS

有人能在这里亮点光吗?

更新

同样令我困惑的是,函数aci_gatt_read_using_charac_uuid()BlueNRG程序设计指南中没有引用。

update2

我将函数调用更改为aci_gatt_read_using_charac_uuid(cc->handle, 0x0001, 0xffff, UUID_TYPE_16, (uint8_t*)&uuid);,但仍然得到了ERR_INVALID_HCI_CMD_PARAMS。哪一个参数可能是无效的?uuid存在,如果我使用带有蓝牙的BlueNRG图形用户界面,我可以读取设备名称。

update3

有没有人使用过这个功能,或者以某种方式从中央设备中读取一个特性?我非常感谢你的帮助或暗示。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-29 07:18:33

事实证明,BlueNRG API中有两个bug。

bluenrg_aci_const.h文件中,OCF代码OCF_GATT_READ_USING_CHARAC_UUID应该是0x119而不是0x109。在aci_gatt_read_using_charac_uuid()函数的实现中,缺少一个关于事件的设置:

代码语言:javascript
复制
rq.event = EVT_CMD_STATUS;

修补他们解决了这个问题。

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

https://stackoverflow.com/questions/68373235

复制
相关文章

相似问题

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