对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系统服务,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协议的兼容与支持。