本文对Android UWB服务层进行一定的分解与分析,首先可以粗略对com.android.server.uwb
包及其一些子包进行分析,其构成如下图所示:
其中:
- advertisement,为广播相关测距方式的实现与管理,通过类
UwbAdvertiseManager
来实现,支持单向测距,如One-way Ranging AOA测量。 - config,包括FiRa能力参数
CapabilityParam
,可以看到支持FiRa 1.0以及FiRa 2.0,同时支持CCC规范相关,关于Radar规范相关定义也一并包含在定义中。 - correction,提供了相关滤波、向量计算等校正相关的实现。
- data,定义了UWB相关能力、工作模式下相关的数据结构。
- discovery,定义了与蓝牙OOB相关的发现、参数协商相关的类。
- jni,本地相关接口实现,
NativeUwbManager.java
。 - multichip,提供了多芯片支持相关的实现。
- pm,ProfileManager,提供服务配置文件的管理,包括配置存储等。
- secure,提供会话安全相关的支持,包括CSML、ISO7816、OMAPI层等。
- util,提供UWB服务相关类。
此外,在com.android.server.uwb
这个包类还直接提供了如下的类(部分):
- UwbInjector,用于依赖项注入,尤其有助于模拟静态依赖项,Uwb apex挂载目录:
/apex/com.android.uwb
。 - UwbService,UWB系统服务,
UwbService extends SystemService
,实现UWB服务。 - UwbServiceCore,UWB协议栈核心,实现
INativeUwbManager
相关接口。 - UwbServiceImpl,实现
android.uwb.IUwbAdapter
binder服务。 - UwbSessionManager,UWB会话管理。
- UwbShellCommand,UWB Shell命令,可以通过
adb shell cmd uwb [args]
,当前提供了较多的UwbService方法,如help/status等。
从Android服务的整体框架以及相关数据的定义来看,UWB技术支持在接下来的开发中,将在现有的规范上在以下的一些方向上持续的增加支持:
1)多芯片的支持;
2)AoA的支持;
3)单向测距的支持;
4)UWB雷达应用的支持;
5)FiRa协议的升级,从V1.0升级到V2.0;
6)对于CCC协议的兼容与支持。