微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > IAR编译出错,请教下到底是啥原因?

IAR编译出错,请教下到底是啥原因?

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

错误:

Error[e46]: Undefined external "GAP_UpdateLinkParamReq::?relay" referred in simpleBLEPeripheral ( E:\...\Projects\ble\SimpleBLEPeripheral\

CC2540DB\CC2540\Obj\simpleBLEPeripheral.r51 )

其他信息:

头文件已包含,然后直接调用的这个函数,为什么不成功?

gap.h文件中有定义这个函数啊,

extern bStatus_t GAP_UpdateLinkParamReq( gapUpdateLinkParamReq_t *pParams );

gap.h的头文件也已经包含在编译选项中:

$PROJ_DIR$\..\..\..\..\Components\ble\include

不知道是哪儿的问题了,谢谢解答~

看了下文档

This command can only be used when the local device’s role is Master,估计是这个原因吧~

admsadm,

没错。

slave的话你用这个去:GAPRole_SendUpdateParam()

Hi,Yan

谢谢你的热心解答,上诉那个问题已经解决。

但是我使用这个函数设置广播时间的时候,我进行抓包,对比广播的时间好像不太正确。

比如,我设置一个最大最小广播值均为800,也就是800*1.25 = 1000ms,实际却是1268ms这个样子;

设置一个最大最小广播值均为2400,也就是2400*1.25= 3000ms,实际上却是100ms这个样子,你没看错!

我想你混淆了广播间隔和连接间隔的概念,广播间隔的unit为625us,连接间隔的unit才为1.25ms。

楼上对的,在SimpleBLEperipheral工程中如下设置。

// 广播状态 的广播间隔 (units of 625us, 160=100ms 800=500ms)
#define DEFAULT_ADVERTISING_INTERVAL 800

// 设置广播间隔
{
uint16 advInt = DEFAULT_ADVERTISING_INTERVAL;

GAP_SetParamValue( TGAP_LIM_DISC_ADV_INT_MIN, advInt );
GAP_SetParamValue( TGAP_LIM_DISC_ADV_INT_MAX, advInt );
GAP_SetParamValue( TGAP_GEN_DISC_ADV_INT_MIN, advInt );
GAP_SetParamValue( TGAP_GEN_DISC_ADV_INT_MAX, advInt );
}

你抓包的广播间隔这么长,不对。可否把设置广播间隔的代码传上来,看一下

wenzhong ,你好

我的本意是设置广播间隔,没看清楚这个函数的意义就设置了,疏忽了!

谢谢。不过广播设置请看我这个帖子,我疑惑的是广播周期只能在初始化的时候设置,其他地方设置无效~

难度不能动态设置么?

Hi,hua huamao

我在SimpleBLEPeripheral_ProcessEvent层SBP_START_DEVICE_EVT事件中设置过

if(events & SBP_START_DEVICE_EVT)

{

...

unt16 advIntervalMin = 1600 ; 
uint16 advIntervalMax = 1600 ; 
uint8 advType = HCI_CONNECTABLE_UNDIRECTED_ADV;
uint8 ownAddrType = HCI_PUBLIC_DEVICE_ADDRESS; 
uint8 directAddrType = HCI_PUBLIC_DEVICE_ADDRESS; 
uint8 *directAddr = NULL;
uint8 advChannelMap = HCI_ADV_CHAN_38;
uint8 advFilterPolicy = HCI_ADV_WL_POLICY_ANY_REQ;

HCI_LE_SetAdvParamCmd(advIntervalMin,advIntervalMax,advType,ownAddrType,
directAddrType,directAddr,advChannelMap,advFilterPolicy ); 
HCI_LE_SetAdvEnableCmd(HCI_ENABLE_ADV);

...

return (events ^ APP_DEBUG_TEST_EVT);

}

http://www.deyisupport.com/question_answer/wireless_connectivity/bluetooth/f/103/t/67888.aspx

这个是我发的帖子

http://www.deyisupport.com/question_answer/wireless_connectivity/bluetooth/f/103/p/22810/120797.aspx#120797

这个是我参考的一个帖子。

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

网站地图

Top