微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > BLECentral能发现 BLEPeripheral 的 scanRspData数据吗

BLECentral能发现 BLEPeripheral 的 scanRspData数据吗

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

我看 central.c 里面怎么没有 scan 的操作呢,抓包的时候也没有看到 ADV_SCAN_REG 的请求,但是我的手机发现BLEPeripheral的时候有这个请求的,请问这个有没有,我应该怎么做才能让BLECentral显示BLEPeripheral设备的名字呢?

应该可以通过读

typedef struct
{
osal_event_hdr_t hdr; //!< GAP_MSG_EVENT and status
uint8 opcode; //!< GAP_DEVICE_INFO_EVENT
uint8 eventType; //!< Advertisement Type: @ref GAP_ADVERTISEMENT_REPORT_TYPE_DEFINES
uint8 addrType; //!< address type: @ref GAP_ADDR_TYPE_DEFINES
uint8 addr[B_ADDR_LEN]; //!< Address of the advertisement or SCAN_RSP
int8 rssi; //!< Advertisement or SCAN_RSP RSSI
uint8 dataLen; //!< Length (in bytes) of the data field (evtData)
uint8 *pEvtData; //!< Data field of advertisement or SCAN_RSP
} gapDeviceInfoEvent_t;

里面的数据获取

central没有发起scan_rsp 直接就发的connect——rsp连接Peripheral了,怎么让central发起scan_rsp呢?你看看我抓包的数据是不是这样,这个结构体的数据我

看过,只有Peripheral的广播包里面的数据,central扫描的时候只是接受了Peripheral的广播包,但是没有发起scan_rsp ,central怎么发scan_rsp 包?

您简单告诉我central怎么发送SCAN_RSP的请求就可以,我应该调用哪个api?

请问您的Central设备的BD Address是FFFFFFFFFFFF吗?Central设备是不是以前连接过Peripheral设备?

Central设备在scan enable的时候会发送ADV_SCAN_REQ

我的是FFFFFFFFFFFF,但是我抓包从来没有抓到ADV_SCAN_REQ这个啊,您能告诉我scan调用的api是哪个吗?

scan enable 在哪儿?

麻烦您先回答一下我的问题,然后再问我

在SimpleBLECentral的例程里,有让Central设备进入scan状态的代码,在simpleBLECentral_HandleKeys函数里面处理向上的按钮的代码。

按完向上的按钮之后Central设备进入scan状态,但是只是接受Peripheral的advertisement 并没有发送SCAN_RSP的请求,我想知道怎么让Central发送SCAN_RSP请求,调用哪个API。

您就不能简单告诉我调用哪个API吗?这么问来问去时间都浪费了

Central设备是Scan的发起方,不发送SCAN_RSP 而是发送SCAN_REQ

应该发送 SCAN_REQ,名字我写错了不好意思, 你能不能告诉我发送这个要调用的哪个 API,我抓包确实没有抓到Central发送的SCAN_REQ包,您能给我抓一个看看吗?最简单的就是你告诉我调用哪个API就行了

在CC2540EM板上,跑SimpleBLECentral的Demo code按向上的按钮,Central设备会发SCAN_REQ出来,

图中AdvA设备是我的keyfob设备,在发Advertisement广播包

如果您抓不到包,也请确认一下,您在Central的code里面,command发送的channel是不是和sniffer设置的是一样的,我这里使用的是channel39.

设备发ADV_IND包用的channel和你发  SCAN_REQ 用的是同一个,我能抓到设备的ADV_IND,那就表明我的channel没有问题,如果central发送了SCAN_REQ 我就应该能抓到,现在确实我是没有抓到。

您就不能告诉我central发送SCAN_REQ 包是调用的那个API吗?

我问了您好多次了,您就不能直接点回答一下这个问题吗?

在simpleBLECentral.c可以看到,bStatus_t GAPCentralRole_StartDiscovery( uint8 mode, uint8 activeScan, uint8 whiteList );

最后会调到 bStatus_t GAP_DeviceDiscoveryRequest( gapDevDiscReq_t *pParams )吧。

确实调用了这个 GAP_DeviceDiscoveryRequest  这个我也看到了,但是确实没有抓到 ADV_SCAN_REG包啊,怎么回事,这个是发起ADV_SCAN_REG请求的API吗?

抓到ADV_SCAN_RSP包了,但是 GAP_DEVICE_INFO_EVENT 进入这个事件处理的时候传进来的deviceInfo 里面没有收到的scanRspData数据呢?

您好,现在找到解决的方法了吗?怎样才能让集中器模式下的蓝牙模块直接输出其他外设的ScanRspData或AdvertData数据呢?有相应的api吗?最近弄这个挺苦恼的,麻烦指教下,谢谢!

你好,我看到你最终目的是想让BLECentral设备显示Peripheral设备的名字。这个问题我以前做过回答,请参见http://www.deyisupport.com/question_answer/wireless_connectivity/bluetooth/f/103/p/77735/192056.aspx#192056

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

网站地图

Top