cc2652设置双广播,连接后广播端怎样识别当前被连接的是哪个广播,如何获取
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.
不太理解您说的双广播,请问您具体怎么用的?您使用哪个 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 中。