Android 9 中的 WLAN 往返时间 (RTT) 功能容许设备测量与其余支持设备的距离:不管它们是接入点 (AP) 仍是 WLAN 感知对等设备(若是设备支持 WLAN 感知)。此功能基于 IEEE 802.11mc 协议,使应用可以使用准确性更高的定位功能和加强的感知功能。android
示例和来源
要使用此功能,请采用在 Android 开源项目 (AOSP) 中提供的 WLAN 硬件接口设计语言 (HIDL)。在 Android 8.0 中,HIDL 取代了以前使用的硬件抽象层 (HAL) 结构,以便经过指定收集到接口和软件包的类型和方法调用来简化实现流程。框架
借助 WLAN HIDL 使用 WLAN RTT 功能:hardware/interfaces/wifi/1.0
或更高版本。性能
您能够参考旧版 WLAN HAL 来了解它与新 HIDL 接口之间的关系:hardware/libhardware_legacy/+/master/include/hardware_legacy/rtt.h。单元测试
实现
要实现 WLAN RTT,您必须提供框架和 HAL/固件支持:测试
-
框架:google
- AOSP 代码
- 启用 WLAN RTT:须要功能标记
-
WLAN RTT (IEEE 802.11mc) HAL 支持(意味着固件支持)spa
要实现此功能,请采用 WLAN HIDL,另外还要启用功能标记:设计
-
在位于
device/<oem>/<device>
的device.mk
中,修改PRODUCT_COPY_FILES
环境变量,以便支持 WLAN RTT 功能:codePRODUCT_COPY_FILES += frameworks/native/data/etc/android.hardware.wifi.rtt.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.rtt.xml
除此之外,实现此功能所需的全部内容都会包含在 AOSP 中。orm
随机分配 MAC 地址
为增强隐私保护,在 WLAN RTT 事务期间使用的 MAC 地址必须是随机分配的地址,即不得与 WLAN 接口的原生 MAC 地址一致。不过,有一种例外状况:若是某个设备与 AP 相关联,则此设备可能会使用与其相关联的 MAC 地址来处理与此 AP 或其余 AP 之间的任何 RTT 事务。
验证
这项功能有适用的 Android 兼容性测试套件 (CTS) 测试。CTS 会检测什么时候启用了这项功能,并会自动包含相关测试。您也可使用供应商测试套件 (VTS) 和 acts/sl4a(用于执行扩展程序集成测试的测试套件)来测试此功能。
单元测试
使用如下测试执行 WLAN RTT 软件包测试:
服务测试:
% ./frameworks/opt/net/wifi/tests/wifitests/runtests.sh -e package
com.android.server.wifi.rtt
Manager 测试:
% ./frameworks/base/wifi/tests/runtests.sh -e package android.net.wifi.rtt
集成 (ACTS) 测试
acts/sl4a 测试套件(在 /tools/test/connectivity/acts/tests/google/wifi/rtt/README.md
中有相应说明)提供了功能测试、性能测试和压力测试。
CTS
这项功能有适用的 Android 兼容性测试套件 (CTS) 测试。CTS 会检测什么时候启用了这项功能,并会自动包含相关测试。支持 WLAN RTT (IEEE 802.11mc) 的接入点必须位于被测设备的覆盖范围内。
您可使用如下命令触发 CTS 测试:
% atest WifiRttTest
校准
为了确保 WLAN RTT 可以正常运行,802.11mc 协议中返回的距离的精确度应在关键绩效指标 (KPI) 范围内(理想状况下)。对于所列带宽出现的 90% 的 CDF 错误,针对距离估算值建议的 KPI 具备如下容差:
- 80MHz:2 米
- 40MHz:4 米
- 20MHz:8 米
为确保正确实现功能,您必须进行校准测试。
您能够经过如下方式来实现这项测试:经过不断增长距离,比较地面真实距离和 RTT 估算距离。若是真实距离和 RTT 估算距离基本一致,则您应该针对已知已进行 RTT 校准的设备验证解决方案。距离校准应在下列条件下进行测试:
- 大型开放实验室或没有大量金属物体(金属物体可能会致使多路径异常高发)的走廊。
- 视线 (LOS) 路线/路径至少要延长 25 米。
- 从路线一端到另外一端以每次增长 0.5 米的方式标记。
- 选择一个位于路线一端的位置来安装支持 RTT 的接入点(位于地面以上 20 厘米处);一个可移动支架(也位于地面上方 20 厘米处),用于沿路线移动 Android 手机(或接受测试的其余 Android 移动设备),可移动支架应与每隔 0.5 米出现的标记对齐。注意:这项重复性任务可由小型机器人来完成,也能够由人工操做员来完成。
- 每一个标记处应记录 50 个距离结果,同时应记录相应标记距离接入点的距离。应在每一个标记位置处计算统计信息(例如距离均值和方差)。
您能够根据第 5 步中的结果绘制一个图表,其中 X 轴为地面真实距离,Y 轴为估算距离,以及一条估算出的最合适的回归路线。理想的设备校准会产生一条梯度为 1.0 的线,且 Y 轴的误差为 0.0 米。若是这些值的误差落在相应带宽的 KPI 范围内,则这些误差是可接受的。若是结果超过 KPI 范围,则应该从新校准设备功能,以使结果符合 KPI 规范。