Android CTS Verifier Sensor Test Cases (5)
来源:互联网 发布:西安vb舞蹈工作室官网 编辑:程序博客网 时间:2024/04/30 09:34
4. CTS Sensor Batching Tests
该项测试将依次测试Accelerometer, Magnetic Field, Orientation, Gyroscope, Pressure, Gravity, Rotation Vector, Magnetic Field Uncalibrated, Game Rotation Vector, Gyroscope Uncalibrated, Linear Acceleration, Geomagnetic Rotation Vector 等 Virtual Sensor 在 Fastest 和 50Hz data rate下的batching 和 flush 功能。这些 sensor 类型都是 continuous,另外还有 on-change 和 special 类型的 sensor 将在另外一个Batching测试项中测试。CTS Sensor Batching Tests 只涉及系统醒着的场景,系统休眠的相关测试将在其他用例中包含。
一些有用的背景知识:
目前按照 sensor 的连接方式可以分为两大类,一类是 sensor 直接通过 I2C/SPI 总线与 CPU 通信即
AP(Application Processor)方案;另一类是 sensor 连接在 MCU 上,MCU 上运行 Sensor
Driver, Firmware 甚至 Fusion Algorithm,MCU 再与CPU通信,这类方案称为 Sensor Hub
方案。两类方案最明显的一个区别是AP方案中,当系统进入休眠时,将无法获取 sensor 的数据和状态,而且在不唤醒系统的前提下不能对
sensor 进行任何操作;Sensor Hub 方案中由于 MCU 的存在,在系统进入休眠时,MCU 可以继续对 sensor
进行操作,也可以根据特定的需求去唤醒系统。Batching
的目的是系统在该模式下,sensor产生的数据会临时保存在硬件的FIFO中,等时间到了,再一起上报给HAL。在这一段时间内,系统可以去处理其他事情或进入休眠,从而到达降低功耗的目的。如果没有硬件的 FIFO 或者方案不支持 batching 功能,那么 HAL 上报的 sensorList 结构体的
fifoReservedEventCount 和 fifoMaxEventCount 字段必须置为 0. 否则 batching 和
suspend 相关的测试会失败。此种情况,batching 等价于 setDelay, max_report_latency_ns 参数对
HAL 不起作用。
代码解析:
private static final int BATCHING_PERIOD = 10; // 10 secprivate static final int RATE_50HZ = 20000; // 20 msprivate static final int RATE_FASTEST = SensorManager.SENSOR_DELAY_FASTEST;private static final int BATCHING_PADDING_TIME_S = (int) Math.ceil(BATCHING_PERIOD * 0.1f + 2); // batching时间到后,CTS 允许的等待数据上报到 APK 的时间隙(time slot), 据猜测应该是考虑到系统从睡眠中恢复需要时间。/* 对每个 sensor 做 fastest, 50Hz 的 batching 和 flush 测试 */public void testAccelerometer_fastest_batching() throws Throwable { runBatchingSensorTest(Sensor.TYPE_ACCELEROMETER, RATE_FASTEST, BATCHING_PERIOD);}public void testAccelerometer_50hz_batching() throws Throwable { runBatchingSensorTest(Sensor.TYPE_ACCELEROMETER, RATE_50HZ, BATCHING_PERIOD);}public void testAccelerometer_fastest_flush() throws Throwable { runFlushSensorTest(Sensor.TYPE_ACCELEROMETER, RATE_FASTEST, BATCHING_PERIOD);}public void testAccelerometer_50hz_flush() throws Throwable { runFlushSensorTest(Sensor.TYPE_ACCELEROMETER, RATE_50HZ, BATCHING_PERIOD);}。。。/* 基本的 batching 测试 */private void runBatchingSensorTest(){ int maxBatchReportLatencyUs = (int) TimeUnit.SECONDS.toMicros(maxBatchReportLatencySec); int testDurationSec = maxBatchReportLatencySec + BATCHING_PADDING_TIME_S; 。。。 operation.addVerification( EventBasicVerification.getDefault( environment, TimeUnit.SECONDS.toMicros(testDurationSec)));}
EventBasicVerification 对收到的数据进行基本的验证,如有无数据,sensor类型,时间戳同步,数据的standard deviation.
测试失败:
- “Failed due to (insufficient events $number/400)”,没有收到数据,或数据少于期待的个数;
- “Standard deviation out of range: stddev =”, 数据没有校准,或测试时设备没有静止;
- “Failed due to wrong sensor observed, “, HAL上报了错误的 sensor 数据;
EventBasicVerification.java
SensorBatchingTests.java
- Android CTS Verifier Sensor Test Cases (5)
- Android CTS Verifier Sensor Test Cases (1)
- Android CTS Verifier Sensor Test Cases (2)
- Android CTS Verifier Sensor Test Cases (3)
- Android CTS Verifier Sensor Test Cases (4)
- Android CTS Verifier Sensor Test Cases (6)
- Android CTS Verifier Sensor Test Cases (7)
- CTS Verifier NFC Test
- CTS Verifier test
- CTS Verifier apk 测试失败Sensor Batching test failed(关于时间戳的问题)
- cts verifier Policy Serialization Test
- CTS Sensor Batching Test
- CTS Verifier:Wi-Fi Direct Test
- cts-verifier Data Backup Test测试步骤
- [CTS Verifier]Notification Package Priority Test
- cts-verifier Data Backup Test测试步骤
- CTS Verifier:Widget Framework Test如何测试?
- mt6735[CTS Verifier][Test Method] Camera Orientation
- Android接收UDP TS流实现边缓存边播放
- python学习
- python SQL注入的解决办法
- cocos2dx 2.13 android studio配置
- C语言条件编译及编译预处理阶段
- Android CTS Verifier Sensor Test Cases (5)
- LeetCode -- 63 Unique Paths II
- 林达华推荐有关机器学习的数学书籍
- 文件封装格式总结
- H5 -input datalist属性
- 摄像机成像模型
- Mysql5.7忘记root密码及mysql5.7修改root密码的方法
- history.go与history.back的用法和区别
- 51Nod-1333-无聊的数学家们