社区导航

 
查看: 869|回复: 6

[蓝牙BLE] 有关BlueNRG的 beacon应用。

[复制链接]

20

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2018-4-8 23:53:34 | 显示全部楼层 |阅读模式
    项目背景:所有终端全是BlueNRG,没有android。一个广播,另外10个倾听广播(不关心数据信息,不用连接)。
   1, 广播设备甲进行beacon广播,甲设备指定成Peripheral外围设备有问题吗?
   2,另外10个BlueNRG 乙类设备passive scanning 甲设备的广播信息。函数aci_gap_start_general_discovery_proc()的解释是启动主动扫描的,请问那个函数可以启动 passive scanning?
   3,启动扫描后,什么时候能得到广播信息?得到的scanning result 是不是自动存储于Advertising_Report_t结构中?
   4,这种一个广播,10个倾听的模式采用Beacon的方式可以吗?
   谢谢指教!



回复

使用道具 举报

5201

TA的帖子

9

TA的资源

版主

Rank: 6Rank: 6

发表于 2018-4-9 12:54:42 | 显示全部楼层
1、可以使用Peripheral,不过最好用Broadcaster和Observer,乙类设备使用Observer,甲类设备使用Broadcaster
2、aci_gap_start_general_discovery_proc用于控制乙类设备进入接收模式
3、通过实现hci_le_advertising_report_event函数来接收甲类设备广播的数据,数据存在Advertising_Report数组中
4、1个设备广播可以无数个设备监听,Broadcaster和Observer或者Peripheral和Central都可以实现,Beacon只是按照对应的格式将广播数据进行包装,你可以使用Beacon格式,也可以使用其它格式

点评

再请教版主几个问题: Q1:调试中发现BlueNRG的beacon项目中Device_Init()函数内的 aci_gap_init(ROLE, 0x00, 0x08, &service_handle, &dev_name_char_handle, &appearance_char_handle); 的参数ROLE=01(Peripher  详情 回复 发表于 2018-4-10 01:21
指点的很详细!多谢  详情 回复 发表于 2018-4-9 14:04
虾扯蛋


回复

使用道具 举报

20

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2018-4-9 14:04:34 | 显示全部楼层
littleshrimp 发表于 2018-4-9 12:54
1、可以使用Peripheral,不过最好用Broadcaster和Observer,乙类设备使用Observer,甲类设备使用Broadcaste ...

指点的很详细!多谢


回复

使用道具 举报

20

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2018-4-10 01:21:11 | 显示全部楼层
本帖最后由 yys3210 于 2018-4-10 01:25 编辑
littleshrimp 发表于 2018-4-9 12:54
1、可以使用Peripheral,不过最好用Broadcaster和Observer,乙类设备使用Observer,甲类设备使用Broadcaste ...

再请教版主几个问题:
Q1:调试中发现BlueNRG的beacon项目中Device_Init()函数内的 aci_gap_init(ROLE, 0x00, 0x08, &service_handle, &dev_name_char_handle, &appearance_char_handle);  的参数ROLE=01(Peripheral)时Packet Sniffer能抓到广播数据;当ROLE=0x02( broadcaster)时就没有广播数据了。
  
   准备扫描部分函数如下:
   aci_gap_start_observation_proc(160,160,0,0,0,0);//启动扫描
   hci_le_advertising_report_event(1,Test_Advice);//得到广播数据.
  //Test_Advice定义:Advertising_Report_t  Test_Advice[10]; //10是随便写的,不写数则编译错误

  Q2:hci_le_set_scan_parameters(0,160,160,0,0);与aci_gap_start_observation_proc(160,160,0,0,0,0);两个函数的原型基本相同,二者有大的区别吗?
  Q3:hci_le_set_scan_parameters(0,160,160,0,0);
         hci_le_set_scan_enable(1,0);
         上面两句与aci_gap_start_observation_proc功能能等价吗?
  Q4:启动扫描后,执行函数hci_le_advertising_report_event即可就能得到广播数据?而不用等待产生了类似中断标志后,才运行该函数后加载广播数据到结构参数体中?
  Q5:函数hci_le_advertising_report_event库文件中描述第一参数为什么指定就是“1”而不能是其他大于1的数?
  第二个参数是个结构体数组Advertising_Report[],是不是该函数可以同时扫描多个广播?每个广播的event分别存储于Advertising_Report[ ]对应的结构体中?
  这样第一个参数是整数 i,则结构体数组就相应的为Advertising_Report[ i ],能这样理解吗?

点评

Broadcaster和Observer我试了一下 像你说的将aci_gap_init函数中的GAP_PERIPHERAL_ROLE改成GAP_BROADCASTER_ROLE后 在执行aci_gap_set_discoverable会报错 Error in aci_gap_set_discoverable() 0x000c google过  详情 回复 发表于 2018-4-10 13:59


回复

使用道具 举报

5201

TA的帖子

9

TA的资源

版主

Rank: 6Rank: 6

发表于 2018-4-10 13:59:42 | 显示全部楼层
yys3210 发表于 2018-4-10 01:21
再请教版主几个问题:
Q1:调试中发现BlueNRG的beacon项目中Device_Init()函数内的 aci_gap_init(ROLE,  ...

Broadcaster和Observer我试了一下
像你说的将aci_gap_init函数中的GAP_PERIPHERAL_ROLE改成GAP_BROADCASTER_ROLE后
在执行aci_gap_set_discoverable会报错
Error in aci_gap_set_discoverable() 0x000c
google过,没找到Broadcaster和Observer的例程,也没找到相关资料
试过aci_gap_set_broadcast_mode和aci_gap_set_non_connectable 同样报错
Error in aci_gap_set_broadcast_mode 0x0042
Error in aci_gap_set_non_connectable 0x000c

如果使用Peripheral和Central方式可以在初始化时执行aci_gap_start_general_discovery_proc函数
通过实现hci_le_advertising_report_event函数接收广播数据
收到广播后hci_le_advertising_report_event会被调用
读取Advertising_Report[n].Data可以得到对应的广播数据

点评

请教虾哥:蓝牙规范4.0 P1739页有如下图: 图中所示,BlueNRG在Broadcaster及Observer角色时,其device name等是被禁止的,这样的话设置Broadcaster或Observer时是不是就不能用aci_gap_init()函数了?那么需要怎么来  详情 回复 发表于 2018-5-15 02:50
虾扯蛋


回复

使用道具 举报

20

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2018-5-15 02:50:33 | 显示全部楼层
littleshrimp 发表于 2018-4-10 13:59
Broadcaster和Observer我试了一下
像你说的将aci_gap_init函数中的GAP_PERIPHERAL_ROLE改成GAP_BROADCAS ...

请教虾哥:蓝牙规范4.0 P1739页有如下图:
图中所示,BlueNRG在Broadcaster及Observer角色时,其device name等是被禁止的,这样的话设置Broadcaster或Observer时是不是就不能用aci_gap_init()函数了?那么需要怎么来设置BLE的Broadcaster或Observer角色啊?
7.jpg

点评

我觉得aci_gap_init的role参数既然可以选择Broadcaster和Observer就应该能用  详情 回复 发表于 2018-5-15 10:13


回复

使用道具 举报

5201

TA的帖子

9

TA的资源

版主

Rank: 6Rank: 6

发表于 2018-5-15 10:13:55 | 显示全部楼层
yys3210 发表于 2018-5-15 02:50
请教虾哥:蓝牙规范4.0 P1739页有如下图:
图中所示,BlueNRG在Broadcaster及Observer角色时,其device  ...

我觉得aci_gap_init的role参数既然可以选择Broadcaster和Observer就应该能用
虾扯蛋


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456

GMT+8, 2018-9-19 23:43 , Processed in 0.227106 second(s), 16 queries , Gzip On, Redis On.

快速回复 返回顶部 返回列表