LE Coded PHY和LE Uncoded PHY

低功耗蓝牙 5.0 协议中,定义两种调制方式,强制的调制方式(1 Msym/s 调制)使用一个shaped, binary FM去减小传输的复杂度。符号速率是 1 Msym/s,另一种可选的调制方案( 2 Msym/s) 是类似的,但使用了 2 Msym/s的符号速率。

在 1 Msym/s 调制方式支持两种 PHY:
(1) LE Uncode PHY,传输速率就为 1 Mb/s。
(2) LE Coded PHY,信息数据编码方式,传输速率为 125 kb/s或者500 kb/s。

在 2 Msym/s 调制方式下支持单一 PHY:
LE 2MPHY,信息数据不编码,传输速率就为 2 Mb/s。

相对于早先的蓝牙协议标准来说,LE Coded PHY 和 LE 2M PHY 是新增加的。其中 LE Coded PHY 中引入了 FEC 编解码以及 Pattern Mapper 和 Demapper 部分, 以降低传输速率,增加接收机复杂度为代价,使得蓝牙设备能更远距离的传输信号,从而更好地适应物联网应用。

### Android 中 PHY_LE_CODED 配置与使用 在蓝牙低功耗 (Bluetooth Low Energy, BLE) 技术中,PHY_LE_CODED 是一种物理层编码方式,旨在提高远距离通信的可靠性。对于 Android 设备而言,在 API Level 28 及以上版本支持此功能。 #### 支持条件 为了确保设备能够正常启用并使用 `PHY_LE_CODED` 编码模式,需满足以下两个前提条件之一[^1]: - 设备运行的是 Android P(API level 28) 或更高版本; - 应用程序已获得 `ACCESS_FINE_LOCATION` 权限,并且启用了位置服务。 #### 获取当前使用的 PHY 类型 应用程序可以通过调用 `getPhy()` 方法来查询连接状态下所采用的具体 PHY 类型。该方法返回一个包含 TX RX 物理信道类型的对象实例。 ```java // 假设 bleGatt 已经建立好了一个有效的 GATT 连接 bleGatt.getPhy(); ``` #### 设置期望的 PHY 参数 通过调用 `setPreferredPhy(int txPhy, int rxPhy, int phyOptions)` 函数可以指定希望使用的发射端(TX)接收端(RX)物理层参数以及选项位掩码。当设置为 `PHY_LE_CODED` 时,则表示请求开启 Coded PHY 模式。 ```java if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { bluetoothGatt.setPreferredPhy( BluetoothDevice.PHY_LE_1M_MASK | BluetoothDevice.PHY_LE_CODED_MASK, BluetoothDevice.PHY_LE_1M_MASK | BluetoothDevice.PHY_LE_CODED_MASK, BluetoothDevice.PHY_OPTION_NO_PREFERRED); } ``` 上述代码片段展示了如何同时尝试配置 1Mbit/s Coded 的双模工作状态。如果硬件不支持其中任何一个选项,则会自动选择最接近的一个替代方案。 #### 处理回调事件 每当发生任何关于 PHY 层面的变化时,都会触发相应的广播意图或接口回调函数。开发者应该监听这些变化以便及时作出响应处理。 ```java @Override public void onPhyUpdate(BluetoothGatt gatt, int txPhy, int rxPhy, int status){ super.onPhyUpdate(gatt,txPhy,rxPhy,status); Log.d(TAG,"TX Phy:"+translatePhy(txPhy)+",RX Phy:"+translatePhy(rxPhy)); } private String translatePhy(int phyType){ switch(phyType){ case BluetoothDevice.PHY_LE_1M: return "LE 1M"; case BluetoothDevice.PHY_LE_2M: return "LE 2M"; case BluetoothDevice.PHY_LE_CODED: return "LE CODED"; default: return "Unknown"; } } ``` 这段 Java 代码实现了对不同 PHY 类型名称转换的功能,并记录日志信息用于调试目的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值