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.

[参考译文] CC2340R5:I don'当我将值从中央器件 (cc1352) 写入外设 (cc2340) 时、不会收到任何通知

Guru**** 2644745 points

Other Parts Discussed in Thread: CC1352R, SYSCONFIG

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1554498/cc2340r5-i-don-t-get-any-notifications-when-i-write-the-value-from-central-cc1352-to-peripheral-cc2340

器件型号: CC2340R5
Thread 中讨论的其他器件: CC1352RSysConfig

工具/软件:

尊敬的专家:
目前、我正在使用基于 CC2340 的仪器以及 CC1352R (Central)、我修改了 simplecentral.c 中的代码、收到了以下日志

Dev_identified
正在连接到 DEV_ADDR...
连接至 0x40791213A330、scConnHandle=0x0000
数字连接数:1.
加密成功
Discovery_Case_called
DISCOVERY_FUNCTION_CALLED (conn=0x0000)
ExchangeMTU 在 conn=0x0000、status=0x00 时发送
GATT 消息:方法=0x03 status=0x00 state=1
DiscEvt:方法=0x03、状态=0x00、状态=1
MTU rsp OK→发现所有服务
已发送 DiscAllPrimaryServices on conn=0x0000、状态=0x00
MTU 大小:65
GATT 消息:方法=0x11 状态=0x00 状态=2
DiscEvt:方法=0x11、状态=0x00、状态=2
找到服务:start=0x0001 end=0x000B UUID=0x1800
找到服务:start=0x000C end=0x0010 UUID=0x180A
UUID BE (rsp):f000c0c0-0451-4000-b000-000000000000
目标 SVC 匹配@[0x0011..0x0016]
UUID BE (rsp):f000ffd0-0451-4000-b000-00000000
GATT 消息:方法=0x11 状态=0x1a 状态=2
DiscEvt:方法=0x11、状态=0x1a、状态=2
DiscAllChars [0x0011..0x0016] STATUS=0x00
GATT 消息:方法=0x09 状态=0x00 状态=3
DiscEvt:方法=0x09、状态=0x00、状态=3
char:declH=0x0012 valH=0x0013 props=0x08 uuid128=f000c0c1-0451-4000-b000-000000000000(写入)
char:declH=0x0014 valH=0x0015 props=0x10 uuid128=f000c0c2-0451-4000-b000-000000000000 (notify)
GATT 消息:方法=0x09 状态=0x1a 状态=3
DiscEvt:方法=0x09、状态=0x1a、状态=3
字符发现完成
CCCD 回退-> 0x0016
写入 CCCD @0x0016(启用通知)

如果需要、我可以通过私人消息共享我的代码。 请指导我如何解决问题。

注意:相关器件是基于 CC2340 的外设。 我无法检查连接日志、但设备与 NRF Connect 应用程序完美配合。 我有一个问题:通过连接时 NRF Connect 应用程序、它会提示输入密钥 、但在上述过程中、设备 不会触发 PASSKEY 功能 。 为什么会发生这种情况?



此致
Surya

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

    您好!

    如果 nRFConnect 应用程序工作正常、则问题可能来自 CC1352 中心。 您是否使用 SDK 中的示例启动您的项目? 关于 CC13XX_CC26XX SDK 的 GATT 用户指南的一章 提到您需要完成以下两点:
    GATT_RegisterForInd(selfEntity) 最初调用(这是在 SDK 的 SimpleCentral 示例的 SimpleCentral_init 函数中完成的)  
    ATT_HANDLE_VALUE_NOTI 在 GATT 处理程序中为事件添加过滤器(这是在 SDK 的 SimpleCentral 示例的 SimpleCentral_processGATTMsg 中完成的)
    -通过写入外围设备的 CCCD 特性启用通知。

    我建议您检查这些步骤是否在您的工程中完成。

    此外、nRFConnect 应用程序可能是因为 NRF 应用程序尝试在连接时读取所有特征以缓存其值。 如果某些特性有身份验证要求、这将提示输入密钥。  

    此致、
    Maxence

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

    亲爱的 Lea 
    感谢您的快速响应、

    1. 我正在处理:
      • Code Composer Studio:12.0.0
      • SDK:simplelink_cc13xx_cc26xx_sdk_7_40_00_77
      • 示例工程:simple_central_CC1352R1_LAUNCHXL_tirtos7_ticlang
    2. GATT_RegisterForMsgs (selfentity);
      此函数在 SimpleCentral_init 中提供

    3. 默认的 simple_central 示例中未处理 ATT_Handle_Value_Noti、但我已修改
      静态 void SimpleCentral_processGATTMsg (gattMsgEvent_t *pMsg) 如下所示:
    else if (pMsg->method == ATT_HANDLE_VALUE_NOTI)
        {
          attHandleValueNoti_t *n = &pMsg->msg.handleValueNoti;
          char line[3*ATT_MTU_SIZE+32];
          uint16_t off = 0;
          off += snprintf(line+off, sizeof(line)-off, "NOTI h=0x%04x len=%u: ", n->handle, n->len);
          for (uint16_t i = 0; i < n->len && off+3 < sizeof(line); i++)
            off += snprintf(line+off, sizeof(line)-off, "%02X ", n->pValue[i]);
          Display_printf(dispHandle, 0, 0, "%s", line);
        }
        else if (pMsg->method == ATT_HANDLE_VALUE_IND)
        {
          attHandleValueInd_t *ind = &pMsg->msg.handleValueInd;
          char line[3*ATT_MTU_SIZE+32];
          uint16_t off = 0;
          off += snprintf(line+off, sizeof(line)-off, "IND  h=0x%04x len=%u: ", ind->handle, ind->len);
          for (uint16_t i = 0; i < ind->len && off+3 < sizeof(line); i++)
            off += snprintf(line+off, sizeof(line)-off, "%02X ", ind->pValue[i]);
          Display_printf(dispHandle, 0, 0, "%s", line);
          ATT_HandleValueCfm(pMsg->connHandle);
        }

    如果我犯了错误、请指导我找到错误。

    此致
    Surya

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

    您好!

    是否通过将 0x01 0x00 写入通知特性的 CCCD 来启用通知?

    此致、
    Maxence

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

    嗨、 Lea 
    是的、我执行如下操作  

    测量输出

    SimpleCentral_processGatTDiscEvent


    IF case  
    Else if (discState == BLE_DISC_STATE_CHAR)

     {


    方向不同  

    // CCCD 可用时自动启用通知
       if (gCCCDHdl!= 0)
       {
        UINT8_t cccdVal[2]={0x010x00};// notify enable

        attWriteREQ_t 请求;
        Req.handle = gCCCDHdl
        Req.len  = sizeof (cccdVal);
        Req.pValue = cccdVal;
          sig = 0
        Req.cmd  = 0

        connList[connIndex].lastWriteKind = write_kind_cd;

        status_t s = GATT_WriteCharValue(scConnHandle、&req、self实体);
        if(s !=成功)
        {
         connList[connIndex].lastWriteKind = write_kinde_none;
         DISPLAY_printf (dispHandle、SC_ROW_CUR_CONN、0“CCCD 写入队列失败 (status=0x%02x)、s);
        }
        暴露
        {
         gLastWriteHdl = gCCCDHdl//<—Critical(严重)、以便 WriteRsp 路径知道
         Display_printf(dispHandle、SC_ROW_CUR_CONN、0、“写入 CCCD @0x%04x(启用通知)req.handle);
        }
       }

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

    您好、

    您是否可以使用嗅探器? 这对于我们了解外设是否实际发送通知非常有用。

    如果您没有监听器、还可以向我发送中央设备和外设的工程文件夹、假设它们都可以在 LaunchPad 上刷写、这样我就可以重现您的问题。

    如果外设和中央器件的代码无法在 2 个 LaunchPad 上运行、则可以尝试创建一个最小可重现示例并查看这些示例。

    此致、
    Maxence

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

    亲爱的 Lea 

    感谢您的持续支持。 我使用第三方外围设备进行了测试、因此没有外围设备的代码。 他们建议只使用 NRF 应用程序、这种应用程序可以正常使用。 但是、我正在尝试在基于 CC1352 的电路板(我们自己的器件)上实现相同的功能。 我可以共享我的完整项目文件以供您查看 — 请仔细阅读这些文件并指出任何错误或我可能遗漏的任何内容。

    此致、
    Surya

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

    您好、

    您可以在 E2E 论坛中将我添加为朋友、一旦我接受您的申请、您就可以在私人消息中向我发送您的代码。
    我将在 CC2340 的基本 Ble 示例上测试您的代码、并看看我是否可以重现您的问题。

    此致、
    Maxence

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

    您好、
    请接受朋友的请求。

    此致
    Surya

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

    您好、抱歉、我没有收到朋友的请求。 可以再试一次吗?

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

    嗨、 Lea 

    我已重新发送申请、请检查...



    此致
    Surya

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

    您好、

    我不会伤害你的。

    Kr、最大值

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

    您好、
    请检查个人信息、我已共享我的完整项目文件以供您查看。

    此致
    Surya

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

    你好、Surya、

    不幸的是、Maxence 在接下来的几周内不在办公室。 我可以帮你。“ 如果你可以给我发送你的项目,我可以尝试自己审查它!

    此致、

    Tarek D

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

    您好、 Tarek D 
    请接受朋友的请求。

    此致
    Surya

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

    你好、Surya、

    我已接受您的朋友请求。 请附加您的工程、以便我们可以对此进行进一步调试!

    此致、

    Tarek D

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

    尊敬的 Tarek D:
    请查看个人信息中的共享工程文件、告诉我是否犯了任何错误、并就如何解决问题提供建议。

    此致
    Surya

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

    你好、Surya、

    听起来不错! 我会看看它,然后回来给你。 期待星期二的更新!

    此致、

    Tarek D

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

    尊敬的 Tarek D 
    希望您检查了共享代码、请告诉我状态。

    此致
    Surya

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

    您好、 Tarek D 

    我的请求是否有任何更新????

    此致

    Surya

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

    你好、Surya、

    很抱歉耽误你的时间! 我能够查看您的代码、但恐怕代码修改得太多、无法与我们的通用 basic_ble 外设配合使用、因此需要自定义外设。

    由于您提到自己没有外设工程、您能给我发送.hex 或.out 文件吗?我可以使用这些文件刷写 CC2340 以便进一步分析此代码。

    此致、

    Tarek D

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

    您好、 Tarek D 

    • 请忽略我之前分享的代码。 我需要 CC1352 开机时自动开始扫描 、列出全部 已查找到的设备及其地址 发送连接请求 、执行 密钥配对 然后 读取广播数据 。 您可以以自己的风格提供一个工作示例、或逐步指导我实现这一目标。

    • 我没有 CC2340 外设代码。 仪器来自 第三方 、并且他们的公司策略不允许他们以任何格式共享固件。



      此致
      Surya

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

    你好、 Tarek D Lea 

    任何更新????



    此致
    Surya

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

    尊敬的 Tarek D 
    没关系—我过去 10 天没有收到回复、所以我想将 CC1352 外设移至 Raspberry Pi、并在线订购了一个;它目前正在传输中。 感谢您的答复。 您共享了 16 位 UUID 的步骤、但我的设备使用 128 位 UUID。 我将尝试修改 128 位 UUID 的代码、并告知您结果。 再次感谢您的建议。

    此致
    Surya

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

    您好:

    明白了! 128 位 UUID 所需的更改应该最少、但如果您有任何问题、请告知我。 再次,我为这里的延误道歉!

    此致、

    Tarek D

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

    您好、 Tarek D 
    按照指示、我尝试在中更改以下宏ti_ble_config.h

    // TRUE to filter discovery results on desired service UUID
    #define DEFAULT_DEV_DISC_BY_SVC_UUID    false

    我将其从更false改为true、但在我构建项目时会自动恢复更改。 我为该设置检查了 SysConfig 文件、但找不到该文件、因此我重新定义了中的宏simple_central.c

    #undef DEFAULT_DEV_DISC_BY_SVC_UUID
    #define DEFAULT_DEV_DISC_BY_SVC_UUID  true

    我在的末尾调用了扫描功能SimpleCentral_init()、并添加了一个else分支来处理没有目标 UUID 的设备:

    if (SimpleCentral_findSvcUuid128(pAdvRpt->pData, pAdvRpt->dataLen))
    {
        SimpleCentral_addScanInfo(pAdvRpt->addr, pAdvRpt->addrType);
        Display_printf(dispHandle, SC_ROW_NON_CONN, 0,
                       "Discovered: %s", Util_convertBdAddr2Str(pAdvRpt->addr));
    }
    else
    {
        char bdAddrStr[18];
        snprintf(bdAddrStr, sizeof(bdAddrStr), "%s", Util_convertBdAddr2Str(pAdvRpt->addr));
        Display_printf(dispHandle, 0, 0,
                       "NON_UUID_Discovered: %s:%s\r\n",
                       Util_convertBdAddr2Str(pAdvRpt->addr),
                       bdAddrStr);
    }
    

    输出仅打印地址。 已清除的日志(已删除控制序列)如下所示。

    Initialized
    Num Conns: 0
    ID Addr: 0xFCA89BECB290
    RP Addr: 0x46D282B625F4
    *Simple Central*
    Stop Discovering
    Discovering...
    NON_UUID_Discovered: 0x4340E9CD877A:0x4340E9CD877A
    NON_UUID_Discovered: 0x49724D900285:0x49724D900285
    NON_UUID_Discovered: 0x40791213A330:0x40791213A330
    NON_UUID_Discovered: 0x707F5D1604C8:0x707F5D1604C8
    NON_UUID_Discovered: 0x77FA82DD2698:0x77FA82DD2698
    NON_UUID_Discovered: 0x50DAE68BE6AC:0x50DAE68BE6AC
    RP Addr: 0x424704CFDBEE

    注意: 在之前的代码中、找到已知设备地址后、我们调用以下命令以连接并获取 UUID 详细信息:

    if (knownPeerFound)
    {
        knownPeerFound = false;
    
        uint8_t pairMode = GAPBOND_PAIRING_MODE_INITIATE;
        GAPBondMgr_SetParameter(GAPBOND_PAIRING_MODE, sizeof(uint8_t), &pairMode);
        uint8_t bondingEnabled = TRUE;
        GAPBondMgr_SetParameter(GAPBOND_BONDING_ENABLED, sizeof(uint8_t), &bondingEnabled);
    
        eraseBondByAddr(knownPeerAddrType, knownPeerAddr);
    
        status_t status = GapInit_connect(knownPeerAddrType & MASK_ADDRTYPE_ID,
                                          knownPeerAddr,
                                          DEFAULT_INIT_PHY,
                                          CONNECTION_TIMEOUT);
    
        if (status == SUCCESS)
        {
            Display_printf(dispHandle, 0, 0, "Connecting to FM_ADDR...");
        }
        else
        {
            Display_printf(dispHandle, 0, 0, "Connect failed");
        }
    
        break;
    }
    

    请检查并告诉我接下来应该做什么。 我的已知器件地址是  

    0x40791213A330、它列在日志中。



    此致
    Surya

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

    你好、Surya、

    我很抱歉、但我认为我不太理解您的问题。 如果您正在查找订阅通知的事件序列、它将如下所示:

    1. 连接到外设
    2. 使用 GATT_DiscPrimaryServiceByUUID() 启动服务发现
    3. 之前的函数将导致接收  ATT_FIND_BY_TYPE_VALUE_RSP 事件。 在此事件内部、使用 GATT_DiscAllChars 发起特征发现
    4. 之前的函数将导致接收  ATT_READ_BY_TYPE_RSP。 在此事件中、使用 GATT_DiscAllCharDescs 查找所需特性的所有描述符
    5. 之前的函数将导致接收 ATT_FIND_INFO_RSP。 在这里、您将使用 GATT_WriteCharValue 向 CCCD 写入 0x0001 以订阅通知

    我在上一次回复中加入了所有相关代码。 请使用它作为起点、进行必要的更改以与 GATT 配置文件进行交互。 BLE 规范在这里也将是一个非常有价值的资源。

    此致、

    Tarek D

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

    尊敬的 Tarek D 

    感谢您的建议。 我将解释我需要什么。

    我尝试连接到基于 CC2340 的流量计、该流量计使用带密钥的安全连接。

    GapScan_enable(0, 0, 0);在结束时调用SimpleCentral_init()、以便在系统通电时列出设备。 在中处理广告SimpleCentral_processAppMsg()case SC_EVT_ADV_REPORT:

    由于我在 SysConfig 中找不到该宏、因此我按如下方式重新定义了该宏:

    #undef DEFAULT_DEV_DISC_BY_SVC_UUID
    #define DEFAULT_DEV_DISC_BY_SVC_UUID true

    通过这项更改、我发现设备并像这样处理它们:

    if (SimpleCentral_findSvcUuid128(pAdvRpt->pData, pAdvRpt->dataLen))
    {
      SimpleCentral_addScanInfo(pAdvRpt->addr, pAdvRpt->addrType);
      Display_printf(dispHandle, SC_ROW_NON_CONN, 0, "Discovered: %s", Util_convertBdAddr2Str(pAdvRpt->addr));
    }
    else
    {
      char bdAddrStr[18];
      snprintf(bdAddrStr, sizeof(bdAddrStr), "%s", Util_convertBdAddr2Str(pAdvRpt->addr));
      Display_printf(dispHandle, 0, 0, "NON_UUID_Discovered: %s:%s\r\n", Util_convertBdAddr2Str(pAdvRpt->addr), bdAddrStr);
    
      if (strcmp(bdAddrStr, FM_ADDR) == 0)
      {
        GapScan_disable();
        GapInit_connect(pAdvRpt->addrType & MASK_ADDRTYPE_ID, pAdvRpt->addr, DEFAULT_INIT_PHY, 0);
        Display_printf(dispHandle, SC_ROW_NON_CONN, 0, "Auto connecting to %s", bdAddrStr);
        SimpleCentral_addScanInfo(pAdvRpt->addr, pAdvRpt->addrType);
      }
    }
    

    我手动调用连接 API、如上所示。 然后我获得GAP_LINK_ESTABLISHED_EVENT并看到已连接的消息Num Conns: 1 ()。

    然后、代码进入SimpleCentral_processPairState()并到达GAPBOND_PAIRING_STATE_ENCRYPTED分支:

    else if (state == GAPBOND_PAIRING_STATE_ENCRYPTED)
    {
      if (status == SUCCESS)
      {
        Display_printf(dispHandle, SC_ROW_CUR_CONN, 0, "Encryption success");
        uint16_t pairConn = pPairData->connHandle;
        bStatus_t pairStatus = GAPBondMgr_Pair(pairConn);
    
        if (pairStatus == SUCCESS)
        {
          Display_printf(dispHandle, SC_ROW_CUR_CONN, 0, "Pairing initiated on connHandle=0x%04x", pairConn);
        }
        else
        {
          Display_printf(dispHandle, SC_ROW_CUR_CONN, 0, "Pairing initiation failed, GAPBondMgr_Pair returned=0x%02x", pairStatus);
        }
    
        Display_printf(dispHandle, SC_ROW_CUR_CONN, 0, "pPairData->connHandle=0x%04x pPairData->status=0x%02x",
                       pPairData->connHandle, pPairData->status);
      }
      else
      {
        Display_printf(dispHandle, SC_ROW_CUR_CONN, 0, "Encryption failed: %d", status);
      }
    
      GAPBondMgr_GetParameter(GAPBOND_PAIRING_MODE, &pairMode);
    
      if ((autoConnect) && (pairMode == GAPBOND_PAIRING_MODE_INITIATE))
      {
        SimpleCentral_autoConnect();
      }
    }
    


    我修改了此函数来处理配对、但配对失败。

    您能指导我如何使用密钥启动连接并与 CC2340 流量计完全配对吗? 具体而言、我需要以下方面的建议:

    • 配对过程中应在何处/如何提供密钥。

    • 实施所需的任何 GAPBondMgr 配置或回调。

    • 导致此流程中配对失败的典型错误(例如,配对模式错误,IO 功能设置缺失,地址类型不匹配)。

    提前感谢您的帮助。

    此致、
    Surya

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

    尊敬的团队:
    请回答我的疑问!!!!

    此致
    Surya

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

    你好、Surya、

    我在这里有点困惑、因为默认示例应该支持开箱即用的配对。 请确保在 SysConfig 中的 GapBondMgr 设置内选中“Bonding"框“框、并确保其中一个器件启动配对请求。

    此致、

    Tarek D

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

    尊敬的 Tarek D 

    GAPBondMgr在 SysConfig 中已启用、但它没有自动启动。 请告知我如何手动启动配对。 此外、如何获得connHandleGAPBondMgr_Pair()函数所需的连接句柄 ()?

    请查看我之前的答复、其中我解释了、分步说明了我尝试过的内容以及失败的地方。



    此致
    Surya

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

    你好、Surya、

    每个连接通常有 1 个 connHandle。 这些寄存器通常可以在发生 GATT 事件或发生连接时从收到的数据中找到并提取。 请参考我之前提供的代码作为示例。

    至于开始配对,我已经在我的终端测试,它的工作正常. 请确保其他设备可以接受配对请求。

    此致、

    Tarek D

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

    尊敬的 Tarek D :

    我收到了 aGAP_LINK_ESTABLISHED_EVENT、可以numConn = 1从下面的处理程序中查看和器件地址。 但是、我不确定如何检索connHandle该连接的。 您能否确认获取或映射设备连接句柄的正确方法(或指出我应该从事件结构中读取连接句柄的位置)?

    连接到 0x40791213A330
    数字连接数:1.

    作为参考、我使用的处理程序是GAP_LINK_ESTABLISHED_EVENT中的情况SimpleCentral_processAppMsg()

    谢谢、
    Surya

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

    你好、Surya、

    每个 BLE 连接只有 1 个连接句柄。 如开箱即用 simple_central 示例所示、下面介绍了如何检索 connHandle。

    我相信您在进行更改时会不小心将其删除。

    此致、

    Tarek D

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

    尊敬的 Tarek D 
    我得到的 connhandle 为 0、但我得到了以下日志

    连接至 0x40791213A330、scConnHandle=0x0000
    数字连接数:1.

    请让我知道我需要做什么来获得正确的连接手柄

    提前感谢

    Surya

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

    你好、Surya、

    我在这里看不到问题。 对于首次建立连接、连接句柄应为 0x0000。 它随每个连接而递增。 您所做的是正确的。

    请创建新主题、如有任何有关新主题的问题、因为这对社区有帮助!

    此致、

    Tarek D