Other Parts Discussed in Thread: SYSCONFIG, ENERGYTRACE
器件型号: CC2340R5
Thread 中讨论的其他器件: SysConfig、 ENERGYTRACE
尊敬的专家:
我有一个同时使用中央设备和广播设备角色的项目。 我要将广播间隔设置为 3000ms 并使用 100 字节扩展数据包。
我尝试将间隔设置为 3000ms、但它无法按预期工作。 能否就此提供一些指导?
CCS 版本:20.4.0.13__1.10.0

请在下面找到我的代码和 SysConfig 配置。
*****************************************************************************/
#if defined( HOST_CONFIG ) && ( HOST_CONFIG & ( BROADCASTER_CFG ) )
//*****************************************************************************
//! Includes
//*****************************************************************************
#include "ti_ble_config.h"
#include "ti/ble/app_util/framework/bleapputil_api.h"
#include "ti/ble/app_util/menu/menu_module.h"
#include <app_main.h>
//*****************************************************************************
//! Prototypes
//*****************************************************************************
void Broadcaster_AdvEventHandler(uint32 event, BLEAppUtil_msgHdr_t *pMsgData);
//*****************************************************************************
//! Globals
//*****************************************************************************
static uint8_t test_ccnt = 0;
BLEAppUtil_EventHandler_t broadcasterAdvHandler =
{
.handlerType = BLEAPPUTIL_GAP_ADV_TYPE,
.pEventHandler = Broadcaster_AdvEventHandler,
.eventMask = BLEAPPUTIL_ADV_START_AFTER_ENABLE |
BLEAPPUTIL_ADV_END |
BLEAPPUTIL_ADV_END_AFTER_DISABLE
};
//! Store handle needed for each advertise set
uint8 broadcasterAdvHandle_1;
const BLEAppUtil_AdvInit_t broadcasterInitAdvSet1 =
{
/* Advertise data and length */
.advDataLen = 0,//sizeof(advData1),
.advData = NULL,//advData1,
/* Scan respond data and length */
// .scanRespDataLen = 0,
// .scanRespData = NULL,
.scanRespDataLen = sizeof(scanResData1),//0,
.scanRespData = scanResData1,//NULL,
.advParam = &advParams1
};
const BLEAppUtil_AdvStart_t broadcasterStartAdvSet1 =
{
/* Use the maximum possible value. This is the spec-defined maximum for */
/* directed advertising and infinite advertising for all other types */
.enableOptions = GAP_ADV_ENABLE_OPTIONS_USE_MAX,
.durationOrMaxEvents = 0
};
//*****************************************************************************
//! Functions
//*****************************************************************************
/*********************************************************************
* @fn Broadcaster_AdvEventHandler
*
* @brief The purpose of this function is to handle advertise events
* that rise from the GAP and were registered in
* @ref BLEAppUtil_RegisterGAPEvent
*
* @param event - message event.
* @param pMsgData - pointer to message data.
*
* @return none
*/
void Broadcaster_AdvEventHandler(uint32 event, BLEAppUtil_msgHdr_t *pMsgData)
{
switch(event)
{
case BLEAPPUTIL_ADV_START_AFTER_ENABLE:
{
MenuModule_printf(APP_MENU_ADV_EVENT+5, 0, "Adv status: Started - handle: "
MENU_MODULE_COLOR_YELLOW "%d" MENU_MODULE_COLOR_RESET,
((BLEAppUtil_AdvEventData_t *)pMsgData)->pBuf->advHandle);
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;
}
case BLEAPPUTIL_ADV_END:
MenuModule_printf(APP_MENU_ADV_EVENT+5, 0, "Adv EEEEEEEs: Started - handle: "
MENU_MODULE_COLOR_YELLOW "%d Count = %d" MENU_MODULE_COLOR_RESET,
((BLEAppUtil_AdvEventData_t *)pMsgData)->pBuf->advHandle, test_ccnt++);
/** 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
uint8_t ADV_DATA2_LEN = (111 - 7);
//uint8_t *advData2 = ICall_malloc(ADV_DATA2_LEN);
uint8_t advData2[104] = {0};
advData2[0] = (ADV_DATA2_LEN - 1);
advData2[1] = GAP_ADTYPE_MANUFACTURER_SPECIFIC;
//Company Identifier
advData2[2] = 0x0d;
advData2[3] = 0x00;
for(uint8_t i = 0; i<100; i++)
advData2[4 + i] = (i + 1);
// broadcasterAdvHandler.eventMask = BLEAPPUTIL_ADV_START_AFTER_ENABLE |
// BLEAPPUTIL_ADV_END | // <--- new dynamic advertising.
// BLEAPPUTIL_ADV_END_AFTER_DISABLE;
status = GapAdv_loadByHandle(broadcasterAdvHandle_1, // broadcasterAdvHandle_1 ,broadcasterAdvHandler.pEventHandler
GAP_ADV_DATA_TYPE_SCAN_RSP, //GAP_ADV_DATA_TYPE_SCAN_RSP , GAP_ADV_DATA_TYPE_ADV ,BLEAPPUTIL_GAP_ADV_TYPE,
ADV_DATA2_LEN,
advData2);
if (status != SUCCESS)
for(;;);
/** End New Code **/
}
break;
default:
{
break;
}
}
}






