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.

[FAQ] [参考译文] [常见问题解答] CC2642R:与定期广告列车同步(CC2642R / CC2652R7)

Guru**** 1821780 points
Other Parts Discussed in Thread: CC2642R, CC2652R, CC2652R7, SYSCONFIG
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1295835/faq-cc2642r-synchronizing-with-a-periodic-advertising-train-cc2642r-cc2652r7

器件型号:CC2642R
主题中讨论的其他器件: CC2652RCC2652R7SysConfig

您好!

以下是实现与 CC2642R、CC2652R 或 CC2652R7上的周期性广播列车同步的一些步骤。

本指南假定您针对所选器件使用 simple_central 示例。 本指南已在 SDK 7.10.00.98上进行了测试。

1-启用对"周期性广播同步"的支持

保存并关闭 SysConfig

3-在 SimpleCentral_processGapMsg ()中的 GAP_DEVICE_INIT_DONE_EVENT 下,确保 GAP 层不会滤除您感兴趣的广播包。 注释掉"temp16 = SCAN_FLT_PDU_CONNECTABLE_ONLY | SCAN_FLT_PDU_COMPLETE_ONLY;"行、并将其替换为"temp16 = SCAN_FLT_PDU_NONCONNECTABLE_ONLY;"。

4-(可选)通过在 SimpleCentral_processGapMsg ()中的 GAP_DEVICE_INIT_DONE_EVENT 的外壳末尾添加以下代码来自动触发扫描操作:

      // Automatically trigger scan
      GapScan_enable(0, 0, 0);

5-添加代码以创建与收到的广播的同步。 应在 SimpleCentral_processAppMsg ()中的"SC_EVT_ADV_REPORT"条件下添加以下代码:

      GapScan_Evt_AdvRpt_t* pAdvRpt = (GapScan_Evt_AdvRpt_t*) (pMsg->pData);

//// BEGIN
      if(0 != pAdvRpt->periodicAdvInt)
      {
          // this is a periodic advertisement
          GapScan_PeriodicAdvCreateSyncParams_t pSyncParams;

          pSyncParams.options = SCAN_PERIODIC_DO_NOT_USE_PERIODIC_ADV_LIST |
                                SCAN_PERIODIC_REPORTING_INITIALLY_ENABLED;
          pSyncParams.advAddrType = (uint8)pAdvRpt->addrType; // only ADDRTYPE_PUBLIC and ADDRTYPE_RANDOM are allowed
          osal_memcpy(pSyncParams.advAddress, pAdvRpt->addr, B_ADDR_LEN);
          pSyncParams.skip = 0; // should be between 0 and SCAN_PERIODIC_SKIP_MAX
          pSyncParams.syncTimeout = 1000; // synchronization timeout for the periodic advertising train is 1000*10ms = 10s
                                          // should be between SCAN_PERIODIC_TIMEOUT_MIN and SCAN_PERIODIC_TIMEOUT_MAX
          pSyncParams.syncCteType = SCAN_PERIODIC_CTE_TYPE_ALL;

          uint8_t status = GapScan_PeriodicAdvCreateSync(pAdvRpt->advSid, &pSyncParams);
          if(SUCCESS != status){
            // handle error
          }

          GapScan_disable("");

          break;
      }
//// END

      //Auto connect is enabled

6-声明一个易失性全局变量来计算接收到的广播数量。

volatile uint32_t numberOfReports = 0;

7-在 SimpleCentral_processGapMsg ()中,添加对以下情况的处理:GAP_SCAN_CREATE_SYNC_EVENT、GAP_SCAN_PERIOD_ADV_SYNC_EST_EVENT 和 GAP_SCAN_PERIOD_ADV_REPORT_EVENT:

    case GAP_SCAN_CREATE_SYNC_EVENT:
    {
        GapScan_PeriodicAdvEvt_t *pPkt = (GapScan_PeriodicAdvEvt_t *)pMsg;
        uint8_t status;

        if(pPkt->status == SUCCESS)
        {
          status = GapScan_enable(0, DEFAULT_SCAN_DURATION, 0);
          if(SUCCESS != status){
            // handle error
          }
        }
        break;
    }

    case GAP_SCAN_PERIODIC_ADV_SYNC_EST_EVENT:
    {
      GapScan_Evt_PeriodicAdvSyncEst_t *pPkt = (GapScan_Evt_PeriodicAdvSyncEst_t *)pMsg;
      uint8_t status;

      if(pPkt->status == SUCCESS)
      {
        status = GapScan_SetPeriodicAdvReceiveEnable(pPkt->syncHandle, 0x01);
        if(SUCCESS != status){
          // handle error
        }
      }

      break;
    }

    case GAP_SCAN_PERIODIC_ADV_REPORT_EVENT:
    {
      GapScan_Evt_PeriodicAdvRpt_t *pPkt = (GapScan_Evt_PeriodicAdvRpt_t *)pMsg;

      numberOfReports++;

      // Free report payload data
      if (pPkt->pData != NULL)
      {
        ICall_free(pPkt->pData);
      }

      break;
    }

8-构建和刷写设备

9-打开周期性广播器件

在调试模式下运行程序。 确保变量 numberOfReports 已添加到"Expressions"视图。

11-器件同步并报告广播事件:

注:如果已启用自动扫描启动(步骤4),则不会执行任何操作。 如果尚未启用自动扫描启动、则应使用双按钮菜单来触发扫描。

注2:即使启用了自动扫描启动(步骤4),也可能需要使用双按钮菜单重复此操作。

另请查看此主题、其中展示了如何将 CC2642R 或 CC2652R7器件设置为周期性广播器: https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1294888/faq-cc2642r-periodic-advertising-with-cc2642r-cc2652r7

我希望这将有所帮助、

此致、

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

    您好、Clement、

    非常好的帮助!

    Br、

    大卫。