Part Number:CC2640R2F
我使用SDK的是 simplelink_cc2640r2_sdk_5_30_00_03 里面的 ble5_simple_peripheral_cc2640r2lp_app 这个项目。
#define DEFAULT_ADVERTISING_INTERVAL_MIN 1600
#define DEFAULT_ADVERTISING_INTERVAL_MAX 1800
GapAdv_params_t advParamLegacy = GAPADV_PARAMS_LEGACY_SCANN_CONN;
// Create Advertisement set #1 and assign handle
status = GapAdv_create(&SimplePeripheral_advCallback, &advParamLegacy,
&advHandleLegacy);
// Load advertising data for set #1 that is statically allocated by the app
status = GapAdv_loadByHandle(advHandleLegacy, GAP_ADV_DATA_TYPE_ADV,
sizeof(advertData), advertData);
// Load scan response data for set #1 that is statically allocated by the app
status = GapAdv_loadByHandle(advHandleLegacy, GAP_ADV_DATA_TYPE_SCAN_RSP,
sizeof(scanRspData), scanRspData);
// Set event mask for set #1
status = GapAdv_setEventMask(advHandleLegacy,
GAP_ADV_EVT_MASK_START_AFTER_ENABLE |
GAP_ADV_EVT_MASK_END_AFTER_DISABLE |
GAP_ADV_EVT_MASK_SET_TERMINATED);
uint16_t advIntmin = DEFAULT_ADVERTISING_INTERVAL_MIN;
uint16_t advIntmax = DEFAULT_ADVERTISING_INTERVAL_MAX;
GapAdv_setParam(advHandleLegacy,GAP_ADV_PARAM_PRIMARY_INTERVAL_MIN,&advIntmin);
GapAdv_setParam(advHandleLegacy,GAP_ADV_PARAM_PRIMARY_INTERVAL_MAX,&advIntmax);
// Enable legacy advertising for set #1
status = GapAdv_enable(advHandleLegacy, GAP_ADV_ENABLE_OPTIONS_USE_MAX , 0);
这么设置广播间隔还是5-7ms,请问应该怎么处理?
Kevin Qiu1:
要更改广告间隔,需要修改 .primIntMin 和 .primIntMax,该变量的单位为 0.625 ms (160 = ~ 100 ms)
可以在 simple_peripheral.c 添加以下代码(修改为200ms):
/// Custom parameters for legacy, scannable, connectable advertising /// 200 ms advertising interval #define GAPADV_PARAMS_LEGACY_SCANN_CONN_200MS {\.eventProps = GAP_ADV_PROP_CONNECTABLE | GAP_ADV_PROP_SCANNABLE |\GAP_ADV_PROP_LEGACY,\.primIntMin = 320,\.primIntMax = 320,\.primChanMap = GAP_ADV_CHAN_ALL,\.peerAddrType = PEER_ADDRTYPE_PUBLIC_OR_PUBLIC_ID,\.peerAddr = { 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa },\.filterPolicy = GAP_ADV_WL_POLICY_ANY_REQ,\.txPower = GAP_ADV_TX_POWER_NO_PREFERENCE,\.primPhy = GAP_ADV_PRIM_PHY_1_MBPS,\.secPhy = GAP_ADV_SEC_PHY_1_MBPS,\.sid = 0\ }/// In simple_peripheral.c, change the above line to:// Temporary memory for advertising parameters for set #1. These will be copied// by the GapAdv moduleGapAdv_params_t advParamLegacy = GAPADV_PARAMS_LEGACY_SCANN_CONN_200MS;然后找到 GapAdv_params_t advParamLegacy = GAPADV_PARAMS_LEGACY_SCANN_CONN;将其改为:
GapAdv_params_t advParamLegacy = GAPADV_PARAMS_LEGACY_SCANN_CONN_200MS;
,
peng wang:
嗨,您好,您这种方法可以设置固定的广播间隔。如果我想在广播初期使用一种间隔,后面又使用另一种广播间隔,该如何设置呢?
期待您的回复。
祝好
,
Kevin Qiu1:
按照任务3中的步骤操作可以在运行时改变广播间隔:
https://dev.ti.com/tirex/content/simplelink_academy_cc13xx_cc26xxsdk_6_10_01_00/modules/ble5stack/ble_scan_adv_basic/ble_scan_adv_basic.html