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:BLEAPPUTIL_SCAN_REQ_RECEIVED 不会被触发

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1468322/cc2340r5-bleapputil_scan_req_received-never-being-fired

器件型号:CC2340R5
主题中讨论的其他器件:SysConfig

工具与软件:

与此线程相同、我无法接收 BLEAPPUTIL_SCAN_REQ_RECEIVED 事件:

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1445199/cc2340r5-scan-request-from-central-device-issue

我正在使用 SDK 版本8.40.0.61 basic_ble_profiles 项目,唯一的修改是将 BLEAPPUTIL_SCAN_REQ_RECEIVED 添加到  peripheralAdvHandler  中,并将案例处理程序添加到 Peripheral_Adv handler()中。

BLEAppUtil_EventHandler_t peripheralAdvHandler =
{
    .handlerType    = BLEAPPUTIL_GAP_ADV_TYPE,
    .pEventHandler  = Peripheral_AdvEventHandler,
    .eventMask      = BLEAPPUTIL_ADV_START_AFTER_ENABLE |
                      BLEAPPUTIL_ADV_END_AFTER_DISABLE  |
                      BLEAPPUTIL_SCAN_REQ_RECEIVED
};

case BLEAPPUTIL_SCAN_REQ_RECEIVED:
{
    scanReq++;
    break;
}

我使用的是 TI 的 Simplink iOS 扫描应用、我知道扫描请求正在发生、因为我可以看到正确的本地名称-"Basic BLE project"。 如上所述、我将使用开箱即用的基本 BLE 配置文件、唯一的修改在上面的代码片段中、但下面是我的 SysConfig Broadcaster Configuration、以防出现任何问题:

感谢您提供的任何帮助。

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

    您好!

    感谢您联系我们。 我们会尽快答复您的问题。 与此同时、您能否确认 IDE 版本和 simplelink connect 版本?

    此致、

    1月

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

    您好、Jan:

    当然、没问题。

    Code Composer Studio 版本20.0.1.4

    SimpleLink Connect 版本1.3.8。 我已经尝试了 NRF Connect (2.7.15)和我自己的专有 iOS 应用程序,但 BLEAPPUTIL_SCAN_REQ_RECEIVED 从未被触发。

    -Rob

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

    我刚刚意识到 Code Composer Studio 有一个更新版本(20.0.2.5)、因此我进行了升级并再次尝试-仍然是相同的问题。

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

    Rob、您好!

    您能否请搜索 GAP_ADV_EVT_MASK、它应该在 gap_advertiser.h 文件中并共享启用的事件? 我希望它像这样:GAP_ADV_EVT_MASK_SCAN_REQ_NOTI。

    BR、

    David。

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

    尊敬的 David:

     bleaputil_init.c 中的 BLEAppUtil_initAdvSet ()将事件掩码设置为 GAP_ADV_EVT_MASK_ALL。 在我的 gap_advertiser.h 文件中、 将 GAP_ADV_EVT_MASK_ALL 设置为:

    typedef enum
    {
      /**
       * Enables / disables the @ref GAP_EVT_SCAN_REQ_RECEIVED event
       */
      GAP_ADV_EVT_MASK_SCAN_REQ_NOTI       = AE_NOTIFY_ENABLE_SCAN_REQUEST,
      /**
       * Enables / disables the @ref GAP_EVT_ADV_SET_TERMINATED event
       */
      GAP_ADV_EVT_MASK_SET_TERMINATED      = BV(1),
      /**
       * Enables / disables the @ref GAP_EVT_ADV_START_AFTER_ENABLE event
       */
      GAP_ADV_EVT_MASK_START_AFTER_ENABLE  = AE_NOTIFY_ENABLE_ADV_SET_START,
      /**
       * Enables / disables the @ref GAP_EVT_ADV_START event
       */
      GAP_ADV_EVT_MASK_START               = AE_NOTIFY_ENABLE_ADV_START,
      /**
       * Enables / disables the @ref GAP_EVT_ADV_END event
       */
      GAP_ADV_EVT_MASK_END                 = AE_NOTIFY_ENABLE_ADV_END,
      /**
       * Enables / disables the @ref GAP_EVT_ADV_END_AFTER_DISABLE event
       */
      GAP_ADV_EVT_MASK_END_AFTER_DISABLE   = AE_NOTIFY_ENABLE_ADV_SET_END,
      /**
       * Mask to enables / disable all advertising events
       */
      GAP_ADV_EVT_MASK_ALL                 = GAP_ADV_EVT_MASK_SCAN_REQ_NOTI |
                                             GAP_ADV_EVT_MASK_START_AFTER_ENABLE |
                                             GAP_ADV_EVT_MASK_START |
                                             GAP_ADV_EVT_MASK_END |
                                             GAP_ADV_EVT_MASK_END_AFTER_DISABLE |
                                             GAP_ADV_EVT_MASK_SET_TERMINATED,
    /// @cond NODOC
      /**
       * Used to set this to 16 bits for future events
       */
      GAP_ADV_EVT_MASK_RESERVED            = BV(15)
    /// @endcond // NODOC
    } GapAdv_eventMaskFlags_t;

    谢谢!

    Rob

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

    TI 能否在他们的终端上重现此问题? 我正在运行一个示例项目、只需对所有 TI 产品进行极少的修改。 应该很容易重现、然后探究实际的 BLE 专有代码、但我看不到、并弄清楚此处发生了什么情况。

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

    Rob、您好!

    我已经能够再现它现在和目前正在进行它。 请多多包涵。 我会尽快为您提供最新信息。

    BR、

    David。

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

    Rob、您好!

    我正在与专家团队一起寻找解决方案。 我想问一下您正在尝试在应用级别实施什么、以便我们看看是否有其他方法同时实现相同的行为?

    BR、

    David。

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

    尊敬的 David:

    好的、感谢您的帮助!

    以下是我使用 BLEAPPUTIL_SCAN_REQ_RECEIVED 的策略、以尽可能降低功耗、但在我的移动应用处于范围内时仍然保持连接:

    1. 最初使用信标(在1.022秒内广播)向我的移动应用发出 BLE 存在警报。
    2. 收到扫描请求的通知时、以100mS 的时间切换到正常的 BLE 服务广播、等待来自移动应用的连接事件
    3. 连接后、执行我需要执行的操作、然后断开连接、一小时后返回到步骤1

    假设扫描请求事件得到修复、此操作是否有效?

    谢谢!

    Rob

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

    Rob、您好!

    对于可以执行的一些额外操作来优化功耗、我建议查看此处: 优化低功耗蓝牙功耗。 我假设您描述的该机制将用于任何 BLE 器件(不仅是外设所期望的特定机制)、因为在这个过程下、器件在从任何器件接收到扫描请求时将更改 Adv 间隔。 我认为这会起作用、因为您打算考虑修复。 根据您的应用、我会建议另外几件事:

    1. 在器件获得连接请求后、使用 RSSI 评估接近度、然后选择缩短 Adv 间隔。 我建议查看该主题: https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1288568/launchxl-cc26x2r1-launchxl-cc26x2r1/4889751#4889751
    2. 一旦器件决定缩短广播间隔、在这些条件下器件将广播多长时间? 我建议不要看一看这里的有限广告: https://software-dl.ti.com/simplelink/esd/simplelink_lowpower_f3_sdk/8.40.00.61/exports/docs/ble5stack/ble_user_guide/html/ble-stack-5.x/gap-cc23xx.html?#limited-advertising

    我会尽快向您提供有关该问题的最新信息。

    BR、

    David。