GAPRole_SetParameter返回错误问题
你好:
软件:基于BLE-CC254x-1.4.0版本的SimpleBLEPeripheral例程(修改了按键和LCD显示),环境:IAR8.30.3;
硬件:基于CC2541的第三方模块
问题:LCD显示和按键正常,但启动后蓝牙没有发送广播数据,使用packet sniffer(USB-Dongle)没有抓到任何数据。
跟踪调试发现如下异常:
异常1:SimpleBLEPeripheral.C文件下 “SimpleBLEPeripheral_Init()”函数中的:
GAPRole_SetParameter( GAPROLE_SCAN_RSP_DATA, sizeof ( scanRspData ), scanRspData );
GAPRole_SetParameter( GAPROLE_ADVERT_DATA, sizeof( advertData ), advertData );
返回值为0x12(bleIncorrectMode: invalid profile role),之前的都是返回0x00的?
异常2:TI_BLE_Software_Developer's_Guide文档中(3.3.3小节,p16),调用GAP_DeviceInit后,会发送(GAP_MSG_EVENT,GAP_DEVICE_INIT_DONE_EVENT)消息,但调试发现GAPRole_ProcessEvent未收到该消息,同时,gapRole_state 一直处于GAPROLE_INIT状态。是不是由于问题1引起的?
谢谢!
nan,
异常1, 你的模块的默认role设置的是啥?peripheral还是central?
异常2, 应该是你异常1 中由于设置错误,导致初始化没有完成。
role设置如下,其中gapRole_profileRole值为0x04
static void gapRole_SetupGAP( void )
{
VOID GAP_DeviceInit( gapRole_TaskID,
gapRole_profileRole, 0,
gapRole_IRK, gapRole_SRK,
&gapRole_signCounter );
}
问题解决如下:
异常1:返回0x12应该是正常的,因为此时GAP_DeviceInit()还没有调用,device的role没有指定。另外,在后续GAP_DeviceInit完成后,gapRole_ProcessGAPMsg()会重新设定GAPROLE_SCAN_RSP_DATA和GAPROLE_ADVERT_DATA。
异常2:经查找是INT_HEAP_LEN设置过小导致的。