请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:CC2340R5-Q1 主题中讨论的其他器件:CC2340R5、 SysConfig
工具与软件:
我不熟悉 BLE、正在使用 CC2340R5 Launchpad 以及 Basic_BLE 项目。 我希望每50秒就广播一次数据、并且每个广播数据包中的数据包数量都会递增。 因此、我将 SysConfig 设置从外设更改为广播设备。 下图是我的 SysConfig 设置。

为了改变广播数据、我按照培训模块的步骤、在 app_broadcaster .c 文件中进行了如下更改
void Broadcaster_AdvEventHandler(uint32 event, BLEAppUtil_msgHdr_t *pMsgData)
{
switch(event)
{
case BLEAPPUTIL_ADV_START_AFTER_ENABLE:
{
MenuModule_printf(APP_MENU_ADV_EVENT, 0, "Adv status: Started - handle: "
MENU_MODULE_COLOR_YELLOW "%d" MENU_MODULE_COLOR_RESET,
((BLEAppUtil_AdvEventData_t *)pMsgData)->pBuf->advHandle);
/** New Code **/
BLEAppUtil_AdvEventData_t * pkt = (BLEAppUtil_AdvEventData_t *)pMsgData;
if (pkt->pBuf->advHandle == broadcasterAdvHandle_1)
{
bStatus_t status = FAILURE;
status = GapAdv_prepareLoadByHandle(broadcasterAdvHandle_1, GAP_ADV_FREE_OPTION_DONT_FREE);
if (status != SUCCESS)
for(;;); // Loop
advData1[0] = 0x02;
advData1[1] = GAP_ADTYPE_FLAGS;
advData1[2] = GAP_ADTYPE_FLAGS_BREDR_NOT_SUPPORTED | GAP_ADTYPE_FLAGS_GENERAL;
advData1[3] = 0x03; // length of this data
advData1[4] = GAP_ADTYPE_MANUFACTURER_SPECIFIC;
advData1[5] = MACaddress[5];
advData1[6] = MACaddress[4];
advData1[7] = MACaddress[3];
advData1[8] = MACaddress[2];
advData1[9] = MACaddress[1];
advData1[10] = MACaddress[0];
if(packet_no<=255)
packet_no++;
else
packet_no=0;
advData1[11] = packet_no.;
broadcasterAdvHandler.eventMask = BLEAPPUTIL_ADV_END_AFTER_DISABLE;
| BLEAPPUTIL_ADV_SET_TERMINATED;
| BLEAPPUTIL_SCAN_REQ_RECEIVED;
status = GapAdv_loadByHandle(broadcasterAdvHandle_1,
GAP_ADV_DATA_TYPE_ADV,
ADV_MAX_LEN,
advData1);
if (status != SUCCESS)
for(;;);
/** End New Code **/
}
break;
}
case BLEAPPUTIL_ADV_END_AFTER_DISABLE:
{
MenuModule_printf(APP_MENU_ADV_EVENT, 0, "Adv status: Ended - handle: "
MENU_MODULE_COLOR_YELLOW "%d" MENU_MODULE_COLOR_RESET,
((BLEAppUtil_AdvEventData_t *)pMsgData)->pBuf->advHandle);
break;
}
default:
{
break;
}
}
}
但数据包编号 仅递增一次。 当我调试它时,通过设置一个断点,我发现程序计数器只进入这个函数一次。 我如何动态更改广播包。 请在这方面提供帮助