This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 多角色实现

Guru**** 2589245 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1396734/multi-role-implementation

器件型号:CC2652P-4

工具与软件:

大家好!

我是 TI 蓝牙的初学者。
目前、我第一次尝试使用 TI 的芯片来处理 BLE 相关项目。
关于多角色项目的信息有限。 因此、我想提出几个问题。

我有两个多角色器件、其中删除了双按钮菜单。
我将使用来自主机的命令来控制 CC2652P-4、以启用或禁用 BLE 广播或发送 GATT 读取/写入命令。

目前、我的设计只允许一个连接、在multi_role_doConnect触发时、它始终连接到第一个发现的器件。


1.如何使用multi_role_doGattRead和发送或接收multi_role_doGattWrite
  例如、类似于"1234567890abcdefghijklmnopqrstuvwxyz"的字符串。
  我是否必须将其拆分为块、例如0x01、0x02?

在该示例中、有5组 UUID 可用于读取和写入。
如何控制multi_role_doGattWrite写入哪个 UUID?

bool multi_role_doGattWrite(uint8_t index)
{
  status_t status;
  uint8_t charVals[4] = { 0x00, 0x55, 0xAA, 0xFF }; // Should be consistent with
                                                    // those in scMenuGattWrite
  attWriteReq_t req;

  req.pValue = GATT_bm_alloc(mrConnHandle, ATT_WRITE_REQ, 1, NULL);

  if ( req.pValue != NULL )
  {
    uint8_t connIndex = multi_role_getConnIndex(mrConnHandle);

    // connIndex cannot be equal to or greater than MAX_NUM_BLE_CONNS
    MULTIROLE_ASSERT(connIndex < MAX_NUM_BLE_CONNS);

    req.handle = connList[connIndex].charHandle;
    req.len = 1;
    charVal = charVals[index];
    req.pValue[0] = charVal;
    req.sig = 0;
    req.cmd = 0;

    status = GATT_WriteCharValue(mrConnHandle, &req, selfEntity);
    if ( status != SUCCESS )
    {
      GATT_bm_free((gattMsg_t *)&req, ATT_WRITE_REQ);
    }
  }

  return (true);
}

此致、

新手

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    感谢您联系我们。 在特性中应写入/读取的长度不应超过特性的长度。 如果长度更长、那么我建议提前进行拆分。

    要写入特定的特征、您需要执行服务和特征发现以查找适当的句柄。 使用句柄、如果为特征设置的权限允许执行这些操作、则可以读取和写入给定的特征。

    此致、

    1月