HID Sensor Hub 与传感器框架

HID Sensor Hub 与传感器框架

1. 定位

HID Sensor Usage Tables 可描述 accelerometer、gyro、ALS、magnetometer、temperature 等。hid-sensor-hub.c 解析 sensor collection 并把不同 usage 暴露给 consumer。

2. 架构

1
2
3
4
5
6
ISH/SFH/USB HID sensor transport
-> HID Core
-> hid-sensor-hub
-> MFD child / HID sensor helper
-> IIO or other sensor class
-> userspace

具体 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
2
3
find /sys/bus/iio/devices -maxdepth 2 -type f
cat /sys/bus/hid/devices/*/uevent
dmesg | grep -Ei 'hid-sensor|sensor-hub|ish|sfh'

HID raw report、sensor hub 字段和最终 IIO channel 是三层,需要逐层核对。

文章互动

阅读 --

留言

0 条留言

正在加载留言…