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.

[参考译文] CCS/LAUNCHXL-CC2650:将 GATT 与其他服务结合使用的多角色(非简单配置文件)

Guru**** 2595800 points


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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/607828/ccs-launchxl-cc2650-multi-role-using-gatt-with-other-services-not-simple-profile

器件型号:LAUNCHXL-CC2650

工具/软件:Code Composer Studio

你好

多角色允许 GATT 使用 simple_profile 读取/写入字符。

1、如何修改它、以便它可以发现 simple_profile 和我创建的其他一些配置文件?

2.如何使用其他配置文件读取\写入 char 以外的其他类型?

3.假设多 角色处理器 GATTMsg 中的配置文件相同、如何区分它们?

谢谢

Amit

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

    有关添加服务的一般信息,请参阅 :software-dl.ti.com/.../gatt.html

    1.您可以使用 GATT_DiscAllPrimaryServices()或 GATT_DiscPrimaryServiceByUUUUID()。

    2.我不明白你的意思,你能更具体吗?

    3.您必须使用标记来了解您在流程中的位置,例如 discState。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    嗨、Marie、

    1.为了使用我自己的服务而不是简单配置文件,我应该在多角色中更改什么?

    我现在正在尝试将简单配置文件替换为我的配置文件。
    我基本上会将 SIMPLEPROFILE_SERV_UUID 更改为 advertData 中以及 multi_role_processGATTDiscEvent()中的所有位置中的服务 UUID。
    由于某种原因,discInfo 中的服务句柄(svcStartHdl 和 svcEndHdl)不能获得值,pMsg->method =ATT_ERROR_RSP,因此我没有发现任何 Svc。

    2.如果我想为每个连接广播并发现多个服务,我应该怎么做?
    我应该更改 advertData 吗? 磁盘信息? 还有事吗?

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

    Amit、您好!

    在连接中、从器件和主器件都是多角色吗?

    您需要添加服务功能、您需要初始化 CCC 等、请参阅:

    2.如果使用 GATT_DiscAllPrimaryServices(),则会发现所有主服务。 您将需要在 multi_role_processGATTDiscEvent 中处理生成的 ATT 事件。(请参阅蓝牙核心规范4.4.1了解所有主要服务( )

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

    嗨、Marie、

    我有2个多角色。 在每个连接中、一个是主器件、另一个是从器件。

    我添加了该服务。

    1.如果我想用另一个服务替换简单服务,我需要做哪些更改?

    例如 advertData[]:

    我是否应该简单地将 serv UUID 更改为我的服务的 UUID?

    我还应该在哪里进行此类更改?

    2.如果我想 为每个连接进行广播并发现多个服务,我该如何做?

    如何更改 advertData[],以便它包含2个或更多服务?

    除了 GATT_DiscPrimaryServiceByUUID 函数之外、我还应该更改其他内容吗?

    谢谢

    Amit

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

    Amit、您好!

    除非需要、否则不必更改广播数据。 由于 simple_central 只希望使用 simple Profile 发现其他器件、因此在 SimpleCentral 扫描器件时会处理广播数据。

    我不认为 multi_role 会查看发现的设备的广播数据。

    如果以正确的方式添加您的服务,则中央(例如 multi_role)应该能够使用 GATT_DiscAllPrimaryServices()发现它们。

    您可以尝试使用应用程序或 BLE Device Monitor 来查看您添加的服务是否显示。

    2.如果您要广播此服务,则可以将其添加到广播数据的末尾(请记住更改长度):

    //广播数据(最大大小= 31字节、尽管这是
    //在广播时最好保持短接以节省功耗)
    静态 uint8_t advertData[]=
    {
    //标志:此字段将器件设置为使用常规可发现
    //模式(无限期广播)而不
    是常规//可发现模式 (一次广播30秒)
    0x02、//此数据
    GAP_ADTYPE_FLAGS 的长度、
    DEFAULT_DISCOVERABLE_MODE | GAP_ADTYPE_FLAGS_BREDR_NOT_SUPPORTED、
    
    //服务 UUID,通知中央设备包含哪些服务
    
    //在此外设0x05中,//此数据
    GAP_ADTYPE_16BIT 的长度,等等 //一些 UUID,但不是全部
    LO_UINT16 (SIMPLEPROFILE_SERV_UUID)、
    HI_UINT16 (SIMPLEPROFILE_SERV_UUID)、
    LO_UINT16 (MyProfile_SERV_UUID)、
    HI_UINT16 (MyProfile_SERV_UUID)、HI_UINT16 (MyProfile_SERV_UUID)、
    
    }; 

    如果要发现添加的服务的特性,则还必须更改此特性。 如果您查看已在 multi_role 中的代码、您会有一个配方。

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

    如果我想使用 GATT_DiscPrimaryServiceByUUID 发现我的新服务该怎么办?
    除了在函数调用中更改 UUID 之外、我还应该更改 advertData 吗?
    还有什么其他我应该改变的地方吗? 因为出于某种原因、它对我来说还不起作用、也许我犯了其他一些错误。

    我将尝试 GATT_DiscAllPrimaryServices 解决方案。

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

    Adv 数据与 GATT_DiscPrimaryServiceByUUUUUUUID()无关,因此您无需更改它。 只需在特征发现中更改为 GATT_DiscPrimaryServiceByUUID 提供的 UUID。

    您能否向 BLE Device Monitor 或 BTool 检查服务是否存在?