低功耗BLE相关概念-笔录二

蓝牙ble的传输速率是指主从机每秒所传输的字节数。既然是传输速率那就涉及到时间和每次所传递包大小的问题。
    ble对于数据的传输有一个字节上的限制,默认情况下是20个字节,但并不是不可修改的。默认情况下mtu是23个字节(除去3个字节的标志位剩余为20个字节),主机完全可以通过调用BluetoothGatt#requestMtu(int mtu)来修改每个包所传输的字节数。
    同样,ble在属于传输时对于每个包之间的时间间隔也有一定的限制,大多数从机的连接时间间隔为7.5ms–4s(以1.25ms为一个单位,也就是6-0x0C80个单位)。对于连接间隔主机同样可以修改:调用BluetoothGatt# requestConnectionPriority(int connectionPriority)方法。其中connectionPriority有三个取值:

  • BluetoothGatt#CONNECTION_PRIORITY_LOW_POWER:低功耗,
    对应的连接时间间隔取值范围为:100ms–125ms(80–100个单位)。
    对应的从机延时取值为:2.5ms(2个单位)
    对应的监控超时取值为:20s(以10ms为一个单位);

  • BluetoothGatt#CONNECTION_PRIORITY_BALANCED:处于中等水平
    对应的连接时间间隔取值范围为:30ms–50ms(24–40个单位)。
    对应的从机延时取值为:0ms(0个单位)
    对应的监控超时取值为:20s();

  • BluetoothGatt#CONNECTION_PRIORITY_HIGH:高功耗
    对应的连接时间间隔取值范围为:11.25ms–15ms(9–12个单位)。
    对应的从机延时取值为:0ms(0个单位)
    对应的监控超时取值为:20s();

接下来看一下各个概念是什么意思??

  • 主机和从机:发起连接的设备是主机,接受连接请求的设备是从机

  • 客户端和服务器:展示“属性”的设备是服务器,与之配对的是客户端。换言之,获取信息的客户端提供信息的是服务器

  • 主机可以是客户端也可以是服务器端,同样从机可以做客户端也可以做服务器端

  • BLE协议和协议栈:协议指的是一种通信标准。比如规定第一个字节代表什么意思第二个字节又代表什么意思。而协议栈是具体的一些实现函数,开发人员调用协议栈函数进行通信(相当于各种API)

  • 连接事件:在两个ble设备的连接中使用调频机制,两个设备使用特定的信道收发数据,过段时间再使用新的信道(链路层处理信道切换),两个设备在信道切换后首发数据称为连接事件。即使没有数据收发两设备仍旧会交换链路层数据来维持连接。在一次连接事件中会不停的切换信道,所发送的数据包不止一个。

  • 连接间隔(Connection Interval):就是两个连接事件之间的间隔。主机开始发送数据到从机至下一次主机开始发送数据到从机之间的时间间隔。主从机之间的每次通信都是一个连接事件(但不同于第一次从机处于广播状态下主机连接从机)。以1.25ms为一个单位,一般取值是7.5ms–4s(6–3200)。

  • 从机延时(Slave latency):允许从机跳过一些连接事件。简单说就是我规定一个时间,在这次连接事件开始后到一定时间内,在这一段时间内从机不响应主机的任何消息。

  • 监控超时(Supervision Timeout):两个成功连接事件间的最大允许间隔。如果超过了这个时间而没有任何连接事件即没有任何数据交换则断开连接。以10ms为一个单位,一般取值范围是100ms–32s(10–3200)。

主机在发起连接之后会获取一个BluetoothGatt对象。

  • 主机主动读数据调用readCharacteristic方法,读之后会触发* onCharacteristicRead方法
  • 主机主动写数据调用writeCharacteristic方法,写之后会触发onCharacteristicWrite方法(可以进行下一次的写数据)
  • 主机被动获取到数据(从机通过notify方法发送数据),当监听到有数据过来时会触发 onCharacteristicChanged方法(但是要想该方法回调,必须在主机端程序中为要监听的characteristic设置notify:setCharacteristicNotification)
  • 主机修改mtu(一个包的字节)会触发onMtuChanged方法。

主机从机连接通信过程描述:

  • 主机开启蓝牙enable()
  • 主机扫描蓝牙startLeScan()( startLeScan(final UUID[]serviceUuids, final LeScanCallback callback) 可以扫描特定uuid的设备)
  • 主机connect连接蓝牙
  • 主机discoveryServices发现服务( 会回调onServicesDiscovered方法)
  • 进行通信
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值