微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > GAPRole_SetParameter返回错误问题

GAPRole_SetParameter返回错误问题

时间:10-02 整理:3721RD 点击:

你好:

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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top