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.

[参考译文] CC2640R2F-Q1:在125kbps PHY 模式下、扩展广播上没有可编程数据、采用了#39;可扫描;#39;广播模式

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/646080/cc2640r2f-q1-there-is-no-adverdata-on-the-extended-advertisement-with-scannable-advertising-mode-during-125kbps-phy-mode

器件型号:CC2640R2F-Q1

尊敬的 TI 专家:

我正在开发 simplelink_cc2640r2_sdk_1_50_00_71 SDK 环境。

我正在尝试使用125kbps PHY 模式的扩展广播在广播包 PDU 上添加自定义值。

使用可连接广播模式时、我可以从 PDU 看到自定义广播值(advertisData)、但正在使用可扫描广播模式、广告值不在该模式上。

我应该更改什么以使用 advertData?

在可扫描模式情况下、有效载荷长度为何不是31?

请参阅以下捕获的以及我的配置。

 

 

 

/**

*远距离、可扫描、广播扩展的默认参数

*

#define GAPADV_PARAMS_AE_LON_RANGE_SCANN_ONLY{                                \

.eventProps = GAP_ADV_PROP_scannable、                               \

.primIntMin = 160、                                                      \

.primIntMax = 160、                                                      \

.primChanMap = GAP_ADV_CHAN_ALL、                                        \

.peerAddrType = ADDRTYPE_PUBLIC_OR_PUBLIC_ID、                          \

.peerAddr ={0xAA、0xAA、0xAA、0xAA、0xAA、 0xAA}、                    \

.filterPolicy = GAP_ADV_WL_POLICE_ANY_REQ、                              \

txPower = GAP_ADV_TX_POWER_NO_PRICE_\                               

.primPhy = GAP_ADV_PRIM_PHY_CODED_S8、                                  \

secPhy = GAP_ADV_SEC_PHY_CODED_S8、                                    \

.sid = 0\                                                                

 

//广播数据

静态 uint8_t advertData[]=

//标志:此字段将设备设置为使用常规可发现功能

//模式(无限期广播)而不是通用模式

//可发现模式(一次广播30秒)

0x02、  //此数据的长度

GAP_ADTYPE_FLAGS、

DEFAULT_DISCOVERABLE_MODE | GAP_ADTYPE_FLAGS_BREDR_NOT_SUPPORTED、

 

//服务 UUID,通知中央设备包含哪些服务

//中

0x03、  //此数据的长度

GAP_ADTYPE_16BIT_more、    //一些 UUID、但不是全部

LO_UINT16 (XXXPROFILE_SERV_UUID)、

HI_UINT16 (XXXPROFILE_SERV_UUID)、

 

//服务 UUID,通知中央设备包含哪些服务

//中

0x03、  //此数据的长度

GAP_ADTYPE_16BIT_more、    //一些 UUID、但不是全部

LO_UINT16 (throughput 服务_SERV_UUID)、

hi_uint16 (through_service_serv_UUID)、

 

0x03、  //此数据的长度

GAP_ADTYPE_16BIT_more、    //一些 UUID、但不是全部

LO_UINT16 (TEMP_SERVICE_SERV_UUID)、

HI_UINT16 (TEMP_SERVICE_SERV_UUID)、

 

0x05、  //此数据的长度

GAP_ADTYPE_MANUFACTURER_SPECIFIC,

0xFF、

0xFF、

0x00、  // advertData[19]

0x00、  //计数(0至12)      advertData[20]

};

 

      //使用远距离参数创建远距离设置#2

      GapAdv_params_t advParamLongRange = GAPADV_PARAMS_AE_LON_RANGE_SCANN_ONLY;// GAPADV_PARAMS_AE_LON_RANGE_CONN_USE_S8;// GAPADV_PARAMS_AE_LON_RANGE_SCANN_ONLY;// GAPADV_PARAMS_LEM_LET_ANT_RANGE_ANT_AE_ANT_RANGE_ANT_LLET_RANGE;// GAPADV_ANT_ANT_ANT_ANT_AN

 

      //创建广播集#2并分配句柄

      状态= GapAdv_create (&HufBLEPeripheral_advCallback、&advParamLongRange、

                              advHandleLongRange (&G);

      HUFPERIPHERAL_ASSERT (status == Success);

      

      display_printf (dispHandle、sp_row_status_1、0、"将扩展的可连接广播模式设置为#1");

 

      //加载应用静态分配的第2组广播数据

      状态= GapAdv_loadByHandle (advHandleLongRange、GAP_ADV_DATA_TYPE_ADV、

                                    sizeof (advertData)、advertData);

      HUFPERIPHERAL_ASSERT (status == Success);

 

      //加载由应用静态分配的第2组的扫描响应数据

      状态= GapAdv_loadByHandle (advHandleLongRange、GAP_ADV_DATA_TYPE_SCAN_RSP、

                                    sizeof (scanRspData)、scanRspData);

      HUFPERIPHERAL_ASSERT (status == Success);

 

      //为组#2设置事件掩码

      状态= GapAdv_setEventMask (advHandleLongRange、

                                    GAP_ADV_EVT_MASK_START_AFTER_ENABLE |  //*显示 GAP_EVT_ADV_START_AFTER_ENABLE 事件*/

                                    GAP_ADV_EVT_MASK_END_AFTER_DISABLE |    //*显示 GAP_EVT_ADV_END_AFTER_DISABLE *

                                    GAP_ADV_EVT_MASK_SET_TERMINATED);      //显示 GAP_EVT_ADV_SET_TERMINATED*

 

      //为组#2启用远距离广播

      状态= GapAdv_enable (advHandleLongRange、GAP_ADV_ENABLE_OPTIONS_USE_MAX、0);

      HUFPERIPHERAL_ASSERT (status == Success);

 

 

 

/**

*远距离、可连接、广播扩展的默认参数

*

#define GAPADV_PARAMS_AE_LON_RANGE_CONN_USE_S8{                      \

eventProps = GAP_ADV_PROP_CONNECTABLE、                                \

.primIntMin = 160、                                                      \

.primIntMax = 160、                                                      \

.primChanMap = GAP_ADV_CHAN_ALL、                                        \

.peerAddrType = ADDRTYPE_PUBLIC_OR_PUBLIC_ID、                          \

.peerAddr ={0xAA、0xAA、0xAA、0xAA、0xAA、 0xAA}、                    \

.filterPolicy = GAP_ADV_WL_POLICE_ANY_REQ、                              \

txPower = GAP_ADV_TX_POWER_NO_PRICE_\                              

.primPhy = GAP_ADV_PRIM_PHY_CODED_S8、                                  \

secPhy = GAP_ADV_SEC_PHY_CODED_S8、                                    \

.sid = 0\                                                                 

 

      //使用远距离参数创建远距离设置#2

      GapAdv_params_t advParamLongRange = GAPADV_PARAMS_AE_long_range_CONN_Using_S8;// GAPADV_PARAMS_AE_long_range_CONN_Using_S8;// GAPADV_PARAMS_AE_long_range_SCANN_ONLY;// GAPADV_PARAMS_ANT_LLET_RANGE_AD_ANT_AE_ANT_AE_ANT_LLET_RANGE_ANT_RANGE;// GAPADV_ANT_RANGE_ADANT_ANT_AN

 

      //创建广播集#2并分配句柄

      状态= GapAdv_create (&HufBLEPeripheral_advCallback、&advParamLongRange、

                              advHandleLongRange (&G);

      HUFPERIPHERAL_ASSERT (status == Success);

      

      display_printf (dispHandle、sp_row_status_1、0、"将扩展的可连接广播模式设置为#1");

 

      //加载应用静态分配的第2组广播数据

      状态= GapAdv_loadByHandle (advHandleLongRange、GAP_ADV_DATA_TYPE_ADV、

                                    sizeof (advertData)、advertData);

      HUFPERIPHERAL_ASSERT (status == Success);

 

      //加载由应用静态分配的第2组的扫描响应数据

      状态= GapAdv_loadByHandle (advHandleLongRange、GAP_ADV_DATA_TYPE_SCAN_RSP、

                                    sizeof (scanRspData)、scanRspData);

      HUFPERIPHERAL_ASSERT (status == Success);

 

      //为组#2设置事件掩码

      状态= GapAdv_setEventMask (advHandleLongRange、

                                    GAP_ADV_EVT_MASK_START_AFTER_ENABLE |  //*显示 GAP_EVT_ADV_START_AFTER_ENABLE 事件*/

                                    GAP_ADV_EVT_MASK_END_AFTER_DISABLE |    //*显示 GAP_EVT_ADV_END_AFTER_DISABLE *

                                    GAP_ADV_EVT_MASK_SET_TERMINATED);      //显示 GAP_EVT_ADV_SET_TERMINATED*

 

      //为组#2启用远距离广播

      状态= GapAdv_enable (advHandleLongRange、GAP_ADV_ENABLE_OPTIONS_USE_MAX、0);

      HUFPERIPHERAL_ASSERT (status == Success);

 

 

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

    您好,Ji Won,

    这在《蓝牙核心规范、蓝牙规范版本5.0 |第6卷、B 部分》第2.3.1.6章 AUX_ADV_IND 中进行了定义。 不允许可扫描的 AUX_ADV_IND 具有任何广播数据。 (应将相关数据作为扫描响应数据放入 AUX_SCAN_SRP 中。)

    (请注意、可扫描的定向和非定向数据包不允许使用"Adv Data"字段。)

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

    非常感谢您的准确指点。 如果是、能否使用包括 AdvData 在内的非连接模式?
    查看参考代码时、只有可连接和可扫描模式有效。
    请告诉我现在是否提供了非连接模式。

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

    根据下表、我在设置扩展参数命令时能够猜测正确的属性设置。

    //GAP 广播事件参数属性
    枚举 GapAdv_eventProps_t

     GAP_ADV_PROP_CONNECTABLE = BV (0)、 //!<可连接广播
     GAP_ADV_PROP_scannable =   BV (1)、 //!<可扫描广播
     GAP_ADV_PROP_DIO定向=    BV (2)、 //!<定向广播
     GAP_ADV_PROP_HDC =         BV (3)、 //!<高占空比定向广播
     GAP_ADV_PROP_LEGACTOR =      BV (4)、 //!<使用传统广播 PDU
     GAP_ADV_PROP_ANonymous =   BV (5)、 //!<从 PDU 中省略广播器的地址
     GAP_ADV_PROP_TX_POWER =    BV (6)  //!<在扩展头文件中包含 TxPower
                                         //!<广播 PDU
    };

    因此、我在下面定义了这种配置、我发出了非连接参数命令、并获得 了包括 AdvData 在内的非连接广播包。


    /**
    *远距离、非连接、广播扩展的默认参数
    *
    #define GAPADV_PARAMS_AE_LON_RANGE_NONCONN{\
    .eventProps = 0、\
    .primIntMin = 160、\
    .primIntMax = 160、\
    .primChanMap = GAP_ADV_CHAN_ALL、\
    .peerAddrType = ADDRTYPE_PUBLIC_OR_PUBLIC_ID、\
    .peerAddr ={0xAA、0xAA、0xAA、0xAA、0xAA、 0xAA}、\
    .filterPolicy = GAP_ADV_WL_POLICE_ANY_REQ、\
    txPower = GAP_ADV_TX_POWER_NO_PRICE_\
    .primPhy = GAP_ADV_PRIM_PHY_CODED_S8、\
    secPhy = GAP_ADV_SEC_PHY_CODED_S8、\
    .sid = 0\

    下面是我捕获的内容。

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

    目的是向 eventProps 位掩码添加所需的属性。 例如

    eventProps = GAP_ADV_PROP_DIOR定向| GAP_ADV_PROP_LEGACY_REGACY_FACT_LACGAP_PROP_LEGACT_LACGACT_PROP_

    很高兴你找到了一种广告你想要的方式!