蓝牙嗅探和NRF51822主机透传主流程

1、主机派发函数ble_evt_dispatch 内新增加了三个派发函数:ble_db_discovery_on_ble_evt(&m_ble_db_discovery, p_ble_evt);//蓝牙数据发现事件ble_nus_c_on_ble_evt(&m_ble_nus_c,p_ble_evt);//串口主机连接事件on_ble_evt(p_ble_evt); //蓝牙处理应用事件派发这三个函数是整个蓝牙主从交互,蓝牙主从连接的处理函数,也是必须详细理解的,这三个函数的.
摘要由CSDN通过智能技术生成

最近公司分派了一个项目,让我用一款国产的蓝牙MCU和一个血糖仪进行蓝牙通信获取血糖值,这款国产蓝牙MCU和NRF51822代码上绝大多数很相似,所以先在nrf51822上进行验证。

一、熟悉血糖仪的蓝牙通信流程

     血糖仪厂商有一款APP和它进行蓝牙通信,我暂时不清楚里面的通信细节,所以需要先进行蓝牙嗅探。蓝牙嗅探大体步骤是先打开手机的“开发者模式”,然后打开进入“开发者选项”,选择“启用蓝牙HCI信息收集日志”,接着打开血糖仪配对的手机APP,按正常APP操作流程配对血糖仪,获取到血糖值,这样后我们就可以去获取安卓系统下蓝牙具体操作的日志了。再次进入“开发者选项”,点击“错误报告”,选择“互动式报告”就可以了,等待压缩包生成。我们想要的日志在压缩包FS\data\misc\bluetooth\logs目录下。

    a、打开Wireshark,将btsnoop_hci.log文件拖进去,然后一直下拉找到有血糖仪蓝牙名的一组通信日志,如下

   b、打开nrf connect,搜索血糖仪的蓝牙名,并连接,查看相关蓝牙服务和所属信息

c、通过wireshark里的日志,我们发现,需要先对,主设备进行CCCD配置,然后,发送0x01配置“Notification”属性

d、通过血糖仪原厂给到的协议,我们对比发现“主机”在发送给对应的UUID相关数据后,血糖仪就返回了相应的血糖值

e、在获取到相应流程后我们也可以按照日志里的步骤通过nrf connect验证下

二、在熟悉了相应的透传流程后,我们通过nrf51822进行代码验证

SDK:nRF51_SDK_10.0.0_dc26b5e     例程:examples\ble_central\ble_app_multilink_central

1、主机派发函数ble_evt_dispatch 内新增加了三个派发函数:

ble_db_discovery_on_ble_evt(&m_ble_db_discovery, p_ble_evt);//蓝牙数据发现事件
ble_nus_c_on_ble_evt(&m_ble_nus_c,p_ble_evt);//串口主机连接事件
on_ble_evt(p_ble_evt);  //蓝牙处理应用事件派发

这三个函数是整个蓝牙主从交

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值