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.

[参考译文] CC2652R7:在简单外设示例中使用 GapInit_connect ()函数

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1451903/cc2652r7-use-gapinit_connect-function-in-simple-peripheral-example

器件型号:CC2652R7
主题中讨论的其他器件: LAUNCHXL-CC26X2R1SysConfig

工具与软件:

尊敬的团队:

我正在使用 SimpleLink CC13xx CC26xx SDK (7.41.00.17)基于 simple_peripheral 示例构建的项目、并且将设备的配对模式更改为"发起配对请求"。  

现在、在我的手机首次连接到器件并绑定到器件之后、我希望我的器件能够在随后开机时自动重新连接到手机(例如无线扬声器和耳机)。 我是否可以使用 GapInit_connect()来执行此操作? 如果需要、我正在不知如何获取绑定的器件地址来使用此函数、您有什么建议吗?

非常感谢。

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

    您好!

    感谢您联系我们。 使用低功耗蓝牙时、只有中央设备可以发起连接。 通常、智能手机将充当中央设备、而扬声器或耳机等附件将充当外设。 要使 CC2652R7自动建立连接、应使 CC2652R7保持广播状态、而智能手机应具有某种可自动扫描并连接至 CC2652R7的应用程序。 您还可以实现某些附件配置文件(例如 HID)、这些配置文件会使智能手机在不使用自定义应用的情况下自动连接、但这些配置文件仅限于某些用例。

    有关更多信息、我强烈建议参考连接实验室:

    https://dev.ti.com/tirex/content/cc13xx_cc26xx_simplelink_academy_7_41_00_00/_build_cc13xx_cc26xx_simplelink_academy_7_41_00_00/source/ble5stack/ble_connections/ble_connections.html

    此致、

    1月

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

    感谢您提供的信息。

    对于您提到的附件配置文件(例如 HID)、我是否知道有任何 TI 相关的文档可了解更多信息?

    非常感谢!

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

    您好!

    没问题! 这会因操作系统而异、但您应该能够在开发人员论坛或开发人员文档中找到有关哪些服务具有 Android 和 iOS 本机支持的信息。

    此致、

    1月

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

    您好、Jan:

    在 GitHub (https://github.com/TexasInstruments/HOGP-BLE-HID-EXAMPLE)中找到了您的示例"HID over GATT 配置文件(HOGP)"、并尝试导入到 CCS。 但随后我发现无法构建工程、我正在使用 CCS12.8.1。

    请问是否有其他方法可以导入工程、例如通过"Resource Explorer"直接导入工程? 或者该示例与 CCS12.8、1和 CC2652R7不兼容?

    非常感谢!

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

    您好!

    很高兴您能找到这个示例! 我强烈建议阅读我为此示例编写的配套应用手册(链接如下):

    https://www.ti.com/lit/swra715

    表5.1列出了该特定示例的软件和硬件要求。 该示例是针对 SDK 5.10和 CCS 10.3更新 LAUNCHXL-CC26X2R1。 也就是说、您应该能够使用 SDK 中包含的迁移指南将示例迁移到最新的 SDK 和 CC2652R7。 迁移后、我希望该示例也能够在 R7器件上按预期工作。

    此致、

    1月

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

    您好、Jan:  

    如今、我尝试迁移"HID over GATT 配置文件(HOGP)"的示例。 似乎没有 自动连接到手机。 然后我尝试学习代码在'hiddev.c',我发现

    ' if (HidDev_BondCount()>0)

    //开始高占空比广播。
    Status = GapAdv_enable (advHandleHigh、GAP_ADV_ENABLE_OPTIONS _USE_MAX、0);
    HIDDEV_ASSERT (STATUS == SUCCESS);
    HIDAdvState = HID_ADV_STATE_HIGH;
    }

    如果发现有一个有界器件、它似乎会改变"hidAdvState"、但仍处于广播阶段。 所以、我觉得代码的哪一部分可以实现自动连接功能感到困惑。 请帮帮我。 非常感谢!

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

    您好!

    如果电话未自动连接、则 CC 设备可能未广播或未形成绑定。 您是否可以仔细检查配对是否已完成或您是否可以看到来自其他设备的广告?

    此致、

    1月

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

    您好、Jan:

    可能在我迁移示例时缺少一些器件。  

    对于:

    // Adverisement Set #1、初始
    //创建广播集#1并分配句柄
    Status = GapAdv_create (&HidDev_advCallback、&advParamsInitial、&advHandleInitial);
    HIDDEV_ASSERT (STATUS == SUCCESS);

    //加载由应用静态分配的设置#1的广播数据
    Status = GapAdv_loadByHandle (advHandleInitial、GAP_ADV_DATA_TYPE_ADV、
    sizeof (advData)、advData);
    HIDDEV_ASSERT (STATUS == SUCCESS);

    //加载应用静态分配的设置#1的扫描响应数据
    Status = GapAdv_loadByHandle (advHandleInitial、GAP_ADV_DATA_TYPE_SCAN_RSP
    sizeof (scanData)、scanData);
    HIDDEV_ASSERT (STATUS == SUCCESS);

    //为 set #1设置事件屏蔽
    Status = GapAdv_setEventMask (advHandleInitial, GAP_ADV_EVT_MASK_START_AFTER_ENABLE)
    | GAP_ADV_EVT_MASK_END_AFTER_DISABLE | GAP_ADV_EVT_MASK_SET_TERED);

    //更改设置#2、高电平
    //创建广播集#2并分配句柄
    Status = GapAdv_create (&HidDev_advCallback、&advParamsHigh 和&advHandleHigh);
    HIDDEV_ASSERT (STATUS == SUCCESS);

    //加载由应用静态分配的设置#2的广播数据
    Status = GapAdv_loadByHandle (advHandleHigh、GAP_ADV_DATA_TYPE_ADV、
    sizeof (advData)、advData);
    HIDDEV_ASSERT (STATUS == SUCCESS);

    //加载应用静态分配的设置#2的扫描响应数据
    Status = GapAdv_loadByHandle (advHandleHigh、GAP_ADV_DATA_TYPE_SCAN_RSP、
    sizeof (scanData)、scanData);
    HIDDEV_ASSERT (STATUS == SUCCESS);

    //为 set #2设置事件屏蔽
    状态= GapAdv_setEventMask (advHandleHigh、GAP_ADV_EVT_MASK_START_AFTER_ENABLE)
    | GAP_ADV_EVT_MASK_END_AFTER_DISABLE | GAP_ADV_EVT_MASK_SET_TERED);

    //更改设置#3、低电平
    //创建广播集#3并分配句柄
    Status = GapAdv_create (&HidDev_advCallback、&advParamsLow 和&advHandleLow);
    HIDDEV_ASSERT (STATUS == SUCCESS);

    //加载由应用静态分配的设置#3的广播数据
    Status = GapAdv_loadByHandle (advHandleLow、GAP_ADV_DATA_TYPE_ADV、
    sizeof (advData)、advData);
    HIDDEV_ASSERT (STATUS == SUCCESS);

    //加载应用静态分配的设置#3的扫描响应数据
    Status = GapAdv_loadByHandle (advHandleLow、GAP_ADV_DATA_TYPE_SCAN_RSP、
    sizeof (scanData)、scanData);
    HIDDEV_ASSERT (STATUS == SUCCESS);

    //为 set #3设置事件屏蔽
    状态= GapAdv_setEventMask (advHandleLow、GAP_ADV_EVT_MASK_START_AFTER_ENABLE)
    | GAP_ADV_EVT_MASK_END_AFTER_DISABLE | GAP_ADV_EVT_MASK_SET_TERED);

    //为集#1启用旧广播
    Status = GapAdv_enable (advHandleInitial, GAP_ADV_ENABLE_OPTIONS_USE_MAX , 0);
    HIDDEV_ASSERT (STATUS == SUCCESS);
    HIDAdvState = HID_ADV_STATE_INITIALIZE;

    我找不到"advData"和"scanData"的声明。 是否有器件丢失?

    并且我无法打开"hid_emu_kbd.syscfg"文件、CCS 12.8.1会显示"打开文件时遇到意外错误!  请确保文件位于有效且已打开的 CCS 工程的上下文中。  如果项目有错误、可能会阻止此文件打开。 这是否就是我未能成功运行此采样的原因?  

    非常感谢!

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

    您好!

    没问题! 我认为、advData 和 scanData 变量是在 SysConfig 创建的自动生成文件中声明的。 问题可能是由 SysConfig 错误造成的。 您能否确认工程中只有一个 SysConfig 文件、该文件作为本地副本放置在工程根目录中?

    此致、

    1月

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

    您好、Jan:

    我认为该工程中只有一个 SysConfig 文件:

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

    您好!

    明白了、我想我知道问题出在哪里。 我认为.syscfg 文件必须位于工程的根目录中。 您能否将我移动到 README.md 所在的根目录?

    此致、

    1月

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

    您好!

    我现在可以打开所有文件、学习代码后、我发现:

    //如果已连接且正常可连接、则开始广播。
    if ((HidDev_BondCount ()> 0)&&(pHidDevCfg->hidFlags 和 HID_FLAGS_NORMAL_CONNECTED)

    if (hidAdvState!= HID_ADV_STATE_NONE)

    国家统计局局长:国家统计局局长:国家统计局局长 Dev_Stop:
    }
    Status = GapAdv_enable (advHandleLow、GAP_ADV_ENABLE_OPTIONS _USE_MAX、0);
    HIDDEV_ASSERT (STATUS == SUCCESS);
    HIDAdvState = HID_ADV_STATE_LOW;
    }

    上述代码片段显示、如果 bondCount > 0、器件将在断开连接后再次广播。  

    之后设备并再次自动重新连接到手机? 如果需要、HID 配置文件在自动重新连接功能中发挥什么作用?

    您能帮我吗、非常感谢。

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

    另外、我发现、在我尝试添加一些显示消息进行调试后、如下所示:

    自动重新连接功能无法再正常工作、但连接和配对过程应该相同。

    还可以帮帮我吗? 非常感谢。

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

    您好!

    很高兴移动 syscfg 文件很有帮助! 默认情况下、如果已建立绑定、器件将在断开连接后广播。 然后、电话/计算机将能够识别广告来自先前配对的设备并尝试重新连接。

    我不知道为什么显示屏会中断重新连接。 设备是否挂起?

    此致、

    1月

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

    您好!  

    我想弄清楚。 但是、此示例中还有另一个问题:

    根据我的理解、如果配对模式为"等待配对请求"、则外围设备不应启动配对请求、这意味着应该不会出现请求手机配对的弹出窗口、对吧?

    但是在运行这个示例之后、当我尝试从手机连接到器件后、会出现一个弹出窗口、您能否解释一下背后的逻辑是什么?

    非常感谢!!!  

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

    您好!

    您的理解是正确的、外设不应发起请求、而不应启动弹出窗口。 我相信在 HID 示例中、中央设备(电话/PC/等)将成为启动配对并启动弹出窗口的设备。 这是因为手机将尝试访问需要配对的特性、这将启动配对过程。 在这种情况下,是导致配对过程开始的中心。

    此致、

    1月

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

    您好、Jan:

    我注意到在 Advertisement 数据的 syscfg 中有一个外观值:

    我发现此值与"分配号码文档"(分配号码| BluetoothRegistered技术网站)相关:

    我是否知道这与 NRF Connect 应用程序中的小图标显示有关?

     (NRF Connect 应用程序)

    但我试图将值更改为0x 3C1、小图标仍然显示鼠标而不是键盘。

    而图标显示在我的 iphone 中,它甚至只是一个蓝牙符号,而不是鼠标。

    我是否可以知道有任何方法可以更改图标外观?

      (iPhone 小工具)

    非常感谢!

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

    您好!

    我相信智能手机和智能手机应用程序所使用的标志将取决于他们对每种外观选项的解读方式。 我建议参考苹果开发人员指南、以了解他们如何决定在蓝牙小部件中使用哪个徽标。 它也可能是以前的 apperance 值被缓存并被应用程序或手机用来显示旧徽标而不是新徽标。

    此致、

    1月