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.

CC2652R: CC2652

Part Number: CC2652R

cc2652设置双广播,连接后广播端怎样识别当前被连接的是哪个广播,如何获取

  • 已为您询问TI工程师,稍后会给您回复

  • 不太理解您说的双广播,请问您具体怎么用的?您使用哪个 SDK 版本以及哪个示例项目作为基础?

  • simplelink_cc13x2_26x2_sdk_5_20_00_52_ rtls_demo_patch_v1_0_1,

     GapAdv_create(&multi_role_advCB, &advParams1,
                    &advHandle);
    
      // Load advertising data for set #1 that is statically allocated by the app
      GapAdv_loadByHandle(advHandle, GAP_ADV_DATA_TYPE_ADV,
                          sizeof(advData1), advData1);
    
      // Load scan response data for set #1 that is statically allocated by the app
      GapAdv_loadByHandle(advHandle, GAP_ADV_DATA_TYPE_SCAN_RSP,
                          sizeof(scanResData1), scanResData1);
    
      // Set event mask for set #1
      GapAdv_setEventMask(advHandle,
                          GAP_ADV_EVT_MASK_START_AFTER_ENABLE |
                          GAP_ADV_EVT_MASK_END_AFTER_DISABLE |
                          GAP_ADV_EVT_MASK_SET_TERMINATED);
    
      BLE_LOG_INT_TIME(0, BLE_LOG_MODULE_APP, "APP : ---- GapAdv_enable", 0);
      // Enable legacy advertising for set #1
      status = GapAdv_enable(advHandle, GAP_ADV_ENABLE_OPTIONS_USE_MAX , 0);
      
      
      
      
      
       GapAdv_create(&multi_role_advCB, &advParams2,
                    &advHandle1);
    
      // Load advertising data for set #1 that is statically allocated by the app
      GapAdv_loadByHandle(advHandle1, GAP_ADV_DATA_TYPE_ADV,
                          sizeof(advData2), advData2);
    
      // Load scan response data for set #1 that is statically allocated by the app
      GapAdv_loadByHandle(advHandle, GAP_ADV_DATA_TYPE_SCAN_RSP,
                          sizeof(scanResData2), scanResData2);
    
      GapAdv_setEventMask(advHandle1,
                          GAP_ADV_EVT_MASK_START_AFTER_ENABLE |
                          GAP_ADV_EVT_MASK_END_AFTER_DISABLE |
                          GAP_ADV_EVT_MASK_SET_TERMINATED);
    
      BLE_LOG_INT_TIME(0, BLE_LOG_MODULE_APP, "APP : ---- GapAdv_enable", 0);
    
      status = GapAdv_enable(advHandle1, GAP_ADV_ENABLE_OPTIONS_USE_MAX , 0);

    通过这种方式开启两个广播,当广播连接后广播端如何识别当前被连接的是哪个广播,如果是多连接又该如何区分呢。

  • 当 GAP 层传递事件时(即触发 multi_role_advCB 时),广告集的句柄在结构内传递。

    这可以在开箱即用的 simple_peripheral 示例中看到,其中函数 SimplePeripheral_advCallback() 将由 SimplePeripheral_processAdvEvent 处理的事件 SP_ADV_EVT 入队。在SimplePeripheral_processAdvEvent()中可以看到正在显示的广告集的句柄。您可以使用相同的方法来检测哪个广告集正在触发 multi_role_advCB。

    当前被连接的是哪个广播,如果是多连接又该如何区分呢。

    当广告集因连接而终止时,堆栈将触发 GAP_EVT_ADV_SET_TERMINATED。有效负载具有已终止的广告句柄以及连接句柄。如果广告由于连接而结束,那么您可以检查传入的连接句柄。如果它有效(即不是LL_INVALID_CONNECTION_ID),您将知道哪个连接终止了广告。在这种情况下,解析有效载荷也显示在 simple_peripheral 中。