大家好、
以下是客户的请求:
客户按照 SimpleLink TM CC13x2/CC26x2 SDK BLE5-Stack 用户指南2.02.01.00中定期广播部分的步骤来编写外设代码。

但是、主机中央器件无法接收 由 GapAdv_SetPeriodicAdvData 函数设置的周期性 Adv 数据、但可以接收由 GapAdv_loadByHandle 设置的数据。 外围设备配置的定期广播部分的代码段如下所示。 他检查了每个函数返回的状态、所有函数都返回成功。
// Periodic Advertising Intervals
#define PERIDIC_ADV_INTERVAL_MIN 160
#define PERIDIC_ADV_INTERVAL_MAX 160
/// Non-Connectable & Non-Scannable advertising set
#define GAPADV_PARAMS_AE_NC_NS { \
.eventProps = 0, \
.primIntMin = 160, \
.primIntMax = 160, \
.primChanMap = GAP_ADV_CHAN_ALL, \
.peerAddrType = PEER_ADDRTYPE_PUBLIC_OR_PUBLIC_ID, \
.peerAddr = { 0x74, 0xD2, 0x85, 0xD4, 0x63, 0xB4 }, \
.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 = 1 \
}
static uint8 advHandleNCNS; // Non-Connactable & Non-Scannable
static uint8_t periodicData[] =
{
'P',
'e',
'r',
'i',
'o',
'd',
'i',
'c',
'A',
'd',
'v'
};
#define GAPADV_DATA_PERIODIC_ADV { \
.operation = GAPADV_PERIODIC_ADV_DATA_COMPLETE, \
.dataLength = sizeof(periodicData), \
.pData = periodicData \
}
// Advertisement data
static uint8_t advertData[] =
{
0x0C, // Length of this data
GAP_ADTYPE_LOCAL_NAME_SHORT, // Type of this data
'P',
'e',
'r',
'i',
'o',
'd',
'i',
'c',
'A',
'd',
'v',
0x02, // length of this data
GAP_ADTYPE_FLAGS,
GAP_ADTYPE_FLAGS_GENERAL | GAP_ADTYPE_FLAGS_BREDR_NOT_SUPPORTED,
};
// Create non connectable & non scannable advertising set #3
GapAdv_params_t advParamNonConn = GAPADV_PARAMS_AE_NC_NS;
// Create Advertisement set #3 and assign handle
status = GapAdv_create(&SimplePeripheral_advCallback, &advParamNonConn, &advHandleNCNS);
// Load advertising data for set #3 that is statically allocated by the app
status = GapAdv_loadByHandle(advHandleNCNS, GAP_ADV_DATA_TYPE_ADV,
sizeof(advertData), advertData);
// Set event mask for set #3
status = GapAdv_setEventMask(advHandleNCNS,
GAP_ADV_EVT_MASK_START_AFTER_ENABLE |
GAP_ADV_EVT_MASK_END_AFTER_DISABLE |
GAP_ADV_EVT_MASK_SET_TERMINATED);
// Enable non connectable & non scannable advertising for set #3
status = GapAdv_enable(advHandleNCNS, GAP_ADV_ENABLE_OPTIONS_USE_MAX , 0);
// Set Periodic Advertising parameters
GapAdv_periodicAdvParams_t perParams = {PERIDIC_ADV_INTERVAL_MIN,
PERIDIC_ADV_INTERVAL_MAX, 0x40};
status = GapAdv_SetPeriodicAdvParams(advHandleNCNS, &perParams);
GapAdv_periodicAdvData_t periodicDataParams = GAPADV_DATA_PERIODIC_ADV;
status = GapAdv_SetPeriodicAdvData(advHandleNCNS, &periodicDataParams);
// Enable the periodic advertising
status = GapAdv_SetPeriodicAdvEnable(1, advHandleNCNS);
您能帮助检查这个问题吗? 谢谢。
谢谢。 此致、
Nick

