HID Sensor Hub 与传感器框架
1. 定位
HID Sensor Usage Tables 可描述 accelerometer、gyro、ALS、magnetometer、temperature 等。hid-sensor-hub.c 解析 sensor collection 并把不同 usage 暴露给 consumer。
2. 架构
1 | ISH/SFH/USB HID sensor transport |
具体 IIO sensor driver通常位于 drivers/iio/,不全部位于 drivers/hid/。
3. Sensor collection
每个 Physical/Application collection 可形成 sensor hub 子设备。关键字段:
- sensor type usage;
- data fields;
- report state;
- power state;
- report interval;
- sensitivity/change threshold;
- timestamp。
4. Feature
配置常通过 Feature report:
- reporting state;
- power state;
- report interval;
- sensitivity;
- batch/flush(依设备)。
数据通常从 Input report 分发给注册 callback。
5. hid-sensor-custom
为没有标准专用 consumer 的 custom sensor 提供较通用接口。启用它不代表所有 vendor sensor 都自动获得稳定 ABI,仍需理解 usage 和数据格式。
6. Intel/AMD transport
intel-ish-hid/、amd-sfh-hid/ 通过平台固件/IPC 创建虚拟 HID sensor device。这些目录在本树存在,但 RK3588 ARM64 通常不构建或不适用。
7. RK3588 边界
RK3588 板载 IMU/光感常通过普通 I2C/SPI IIO 驱动,而非 HID sensor hub。判断依据应为 DTS compatible 和最终 .config,不能因 hid-sensor-hub.c 存在就认为板载传感器走 HID。
USB/Bluetooth 外接 sensor 仍可能走 HID。
8. 并发
- raw report 可能在 IRQ/transport thread;
- consumer callback不能执行不允许的睡眠;
- feature request需要与 PM/stop 串行;
- unregister 前停止 report 并等待 callback;
- timestamp 要区分设备时间与 host arrival。
9. 调试
1 | find /sys/bus/iio/devices -maxdepth 2 -type f |
HID raw report、sensor hub 字段和最终 IIO channel 是三层,需要逐层核对。
正在加载留言…