This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

GAPRole_SetParameter返回错误问题

Other Parts Discussed in Thread: CC2541

你好:

软件:基于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设置过小导致的。