请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号: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; } } }
但数据包编号 仅递增一次。 当我调试它时,通过设置一个断点,我发现程序计数器只进入这个函数一次。 我如何动态更改广播包。 请在这方面提供帮助