• CH579/CH57x蓝牙主机使用注意事项


    BLE主机的连接到收发数据的过程

    BLE的连接过程,一般的典型过程是按照 "扫描>连接>服务发现>使能cccd>发送接收数据"

    1,扫描

    这里的扫描,就是主机端开启扫描后,去得到从机的广播数据,能够得到的数据有:

    • MAC地址
    • 31字节广播或者扫描回复数据(名称,自定义信息都在这里面,通常需要做解析)
    • 信号强度

    在扫描时候,我们既然可以得到这些数据,我们就可以根据这些来决定哪些从机是我们需要连接的从机,比如通过名称,或者自定义的信息

    2,连接

    这里的连接,实际上是根据上面扫描过程中,得到的MAC地址以及MAC地址类型进行连接

    3,service和characteristic的发现

    连上以后,要进行相关的service和characteristic发现,来得到行营的GATT handle,因为通信时候,要根据这些handle来收发数据,类似以太网的TCP/UDP 端口号之类的

    4,使能cccd(开启notify)

    这里的使能CCCD, 是当从机的characteristic具备notify/indicate主动发数据给主机的属性时候,这时候主机端往往需要主动去使能这些,否则从机不能够主动发送(当然从机也可以在本机主动开启)

    5,接收或者发送数据

    write/write_no_respone

    通常是主机对从机的操作,主机给从机发数据一般用这个命令,这一步依赖上面查到的gatt handle,当然,如果是事先知道这些handle,是可以直接发送,而不需要进行service和characteristic的发现
    其中write_no_respone 不需要从机协议栈回复,这样连接开销小一些,在要求速度的场景,往往使用这个.

    read

    通常是主机对从机的操作,这一步依赖上面查到的gatt handle,当然,如果是事先知道这些handle,是可以直接发送,而不需要进行service和characteristic的发现

    notify /indicate

    通常这是从机对主机的操作,从机给主机发送数据一般用这个命令,由于主机是被动接收,所以接收时候往往是根据回掉函数得到相应的数据
    但是notify /indicate 往往需要事先使能cccd从机那边才能够发送出来数据,所以根据实际情况,来执行 使能cccd(开启notify)
    根据上面查到的characteristic value的gatt handle 用wrtie
    其中notify不需要主机协议栈回复,这样连接开销小一些,在要求速度的场景,往往使用这个

  • 相关阅读:
    Linux上查找
    Linux进程
    Linux重定向
    Linux上常用的基本命令
    LInux上返回到切换目录前的目录
    【网络知识之一】4/7层网络模型
    【操作系统之十五】iptables黑白名单、自定义链、网络防火墙、常用动作
    【操作系统之十四】iptables扩展模块
    【操作系统之十三】Netfilter与iptables
    【操作系统之十二】分支预测、CPU亲和性(affinity)
  • 原文地址:https://www.cnblogs.com/iot-fan/p/13607209.html
Copyright © 2020-2023  润新知