Android 13中引入的超宽带 (UWB) 模块在HAL接口之上包含一个UWB协议栈,该协议栈采用FiRa规范。可以在支持的设备之间实现高度安全的精确测距。AOSP UWB Stack作为可选模块提供给设备制造商。
UWB模块对于设备制造商而言带来了以下好处:
- 提供适用于支持 UWB 的设备的完整 Android 原生UWB协议栈
- 提高了整个 Android 生态系统中 UWB 的质量和互操作性
- 针对新的FiRa用例和规范,提供更快、更灵活的支持
UWB模块的详细信息如下:
- Android 13中的AOSP中包含完整的UWB协议栈,该协议栈使用FiRa定义的UCI规范作为HAL接口。
- 支持系统应用(system app)设置自定义配置文件(custom profiles)。
- 包含一个系统API面,允许系统应用在测距会话中使用自定义配置。
- 包含用于公开RRO的基础架构,设备制造商可以使用RRO自定义协议栈的特性。
UWB协议栈架构
UWB协议栈框架由UWB设备商提供的协议栈以及AOSP模块,包含UWB Native Stack
、UWB Service
、UWB API面
以及相关库,具体组成如下图。
AOSP模块
AOSP UWB Stack(打包为可选模块com.google.android.uwb
)包含以下组件:
- UWB平台API面(Java)
- 代码位置:
packages/modules/Uwb/framework
处理<bootclasspath>
- 支持库
- 代码位置:
packages/modules/Uwb/service/support_lib
- 由符合FiRa定义的UwbService层和通用服务管理层(CSML)所定义的组件
- 代码位置:
packages/modules/Uwb/service
- Rust原生UCI层
- 代码位置:
external/uwb
- UWB HAL接口,基于由FiRa定义的UWB命令接口(UCI)规范
- 代码位置:
hardware/interfaces/uwb
供应商代码:vendor/<vendor-name>/uwb
对于供应商组件(UWB Vendor Stack),包含由UWB HAL供应商实现、UWB驱动程序和UWB设备。
对于UWB Native Stack而言,包括UWB硬件抽象层AIDL接口、UWB UCI协议栈、以及UWB JNI接口。
UWB的API面
UWB Stack包含用于系统应用和第三方应用的API面。
系统应用
设备制造商使用android.uwb.UwbManager
系统API允许系统应用进行低级别访问。要使用此API,系统应用必须使用支持库packages/modules/Uwb/service/support_lib
。
第三方应用
第三方应用使用Jetpack UWB公共API surface,androidx.core.uwb
。
依赖
UWB主线模块依赖以下内容:
- UWB芯片供应商的硬件抽象层(HAL)实现;
- 用于所有OOB交互的蓝牙协议栈;
- 用于所有安全服务交互的安全单元;
- 强制执行UWB运行时权限的核心框架。
验证
如需验证UWB实现,需要确保通过了/cts/tests/uwb
下的CTS测试。
https://source.android.com/docs/compatibility/cts
参考链接
1、Android文档,UWB。
2、模块化系统组件,超宽带,https://source.android.com/docs/core/connect/uwb。