CC2541支持Broadcaster Multi-Role吗?
通过查看TI的文档中说CC2541在建立连接之后,还能继续广播,如下图:
添加步骤(工程:BLE-CC254x-1.4.1.43908b->SimpleBLEPeripheral):
1.IAR工具中修改宏:xPLUS_BROADCASTER ---> PLUS_BROADCASTER ;
2.通过IAR去掉peripheral.c&peripheral.h的包含,添加包含peripheralBroadcaster.c&perpherialBroadcaster.h;
编译不通过,我又修改了:
3.修改了peripheralBroadcaster.c中包含的头文件hci.h ----> hci_tl.h;
4.添加perpherialBroadcaster.h中缺失的宏GAPROLE_ADVERTISING_NONCONN...;
编译通过了,运行发现没有任何广播包的发出:
5.修改应用程序中包含的头文件:peripheral.h ----> peripheralBroadcaster.h,发现同样的没有广播发出,没有任何效果;
跟踪调试发现gapRole_state状态在我调用GAPRole_SetParameter启用广播的时候,gapRole_state的值始终等于0,即为GAPROLE_INIT;
在GAPRole_ProcessEvent中收到的系统消息,HCI_GAP_EVENT_EVENT事件的Status始终等于0xff。
想请教一下各位大神,我整个过程哪里出了问题,或者说应该怎么使用CC2541的Broadcaster Multi-Role的功能呢?
GAPROLE_ADVERT_ENABLED 这个值有没有设置为true?
设置成了true了~由于gapRole_state的状态值始终为0,所以,
// Turn on Advertising
if ( (gapRole_state == GAPROLE_STARTED)
|| (gapRole_state == GAPROLE_WAITING )
|| (gapRole_state == GAPROLE_WAITING_AFTER_TIMEOUT) )
{
VOID osal_set_event( gapRole_TaskID, START_ADVERTISING_EVT );
}这段程序始终无法执行打开的动作。
找到一种更简单的方法,就是直接只添加PLUS_BROADCASTER,文件还是使用peripheral.c&peripheral.h两个文件,既简单又粗暴,而且效果测试还不错。
Broadcaster Role Multi 相关文章: