微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > 例程SimpleBLECentral里面的一些回调函数的参数是这么传递的?

例程SimpleBLECentral里面的一些回调函数的参数是这么传递的?

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

就比如这个  static void simpleBLECentralEventCB( gapCentralRoleEvent_t *pEvent )。我用这个例程添加了串口打印,通过串口输入1 开始扫描,

在这个函数simpleBLECentralEventCB( gapCentralRoleEvent_t *pEvent ) 里面的   case GAP_DEVICE_INFO_EVENT:里面的

if ( simpleBLEFindSvcUuid( SIMPLEPROFILE_SERV_UUID,
pEvent->deviceInfo.pEvtData,
pEvent->deviceInfo.dataLen ) )
{
// LCD_WRITE_STRING( " 668 GAP_DEVICE_INFO_EVENT ", HAL_LCD_LINE_1 );
simpleBLEAddDeviceInfo( pEvent->deviceInfo.addr, pEvent->deviceInfo.addrType );
}

通过串口打印知道   simpleBLEFindSvcUuid   是返回假的。 所以就没有办法simpleBLEAddDeviceInfo()  添加设备了。

进去simpleBLEFindSvcUuid() 看到:

adLen = *pData++;
adType = *pData;
// If AD type is for 16-bit service UUID
if ( adType == GAP_ADTYPE_16BIT_MORE || adType == GAP_ADTYPE_16BIT_COMPLETE )     是因为这个if () 为假造成的。

我想看 pData 里面到底是什么内容 使之为假,所以我找到 gapCentralRoleEvent_t *pEvent 这个参数。 

问题来了: 

                回调函数的参数是怎么传递的。 还有我怎么找不到 pEvent  这个变量是在哪里赋值或者改变 的。 

hainong,

这是比较UUID的一个过滤。

默认的SimpleBLECentral 工程只会连接SimpleBLEPeripheral 设备。

这段代码是过滤central查找到设备的代码,通过比较SIMPLEPROFILE_SERV_UUID 这个UUID 来实现。

如果你的外设不带这个service, 那么返回就会是假,那么你的central设备就无法连上你的外设。

当然,你可以通过修改central代码来实现和你的外设连接。

真的是太感谢了,我这样说你知道我的外设不是烧录SimpleBLEPeripheral 工程。  我直接把simpleBLEFindSvcUuid()注释掉了就可以了。

1、还有什么方法可以改呢?主设备跟外设备要改的的话。主设备跟外设(比如让外设带这个service)分别要改哪部分。?

2、回调函数的参数是这么传递的。就是说,原型只说明了函数名跟,跟参数类型还有参数名字,那这个参数的值是在哪里定义的,在哪里赋值的。 我用ctrl+shitf+f  找不到这个参数相关的地方。然道封装起来了。不可见?

 

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

网站地图

Top