- QSH 客户端 API
- 传感器 API
- 核心框架
- 预先实现的平台传感器
- 供应商实现的传感器
- 测试模块
| 术语 | 描述 |
|---|---|
| 传感器(Sensor) |
|
| 传感器实例(Sensor instance) |
|
| 传感器唯一标识符(SUID) | 每个传感器的唯一 128 位 ID。 |
| 服务(Service) | 为常用实用程序提供同步接口的模块。 |
| 数据流(Data stream) | 客户端与数据源之间的唯一连接。 |
| 请求(Request) | 客户端发送给传感器的配置消息(参见 sns_request.h 文件)。 |
| 事件(Event) | 传感器实例生成的异步输出数据消息(参见 sns_sensor_event.h 文件)。 |
| Nanopb | 用 ANSI C 实现的小代码体积协议缓冲区(protocol buffer)。 |
图:QSH 架构
-
应用处理器软件模块
- 客户端应用程序:它包含 application main() 或入口函数,在应用处理器侧与 QSH 客户端 API 交互。
- QSH 客户端 API:它提供高层 API 来访问 QSH 提供的服务。它通过抽象系统复杂性并专注于应用逻辑来简化应用开发。有关更多信息,请参阅 Qualcomm® 感知中枢 API。
-
低功耗处理器软件模块
- 客户端管理器:客户端管理器负责低功耗处理器与应用处理器之间的所有通信。下表描述了客户端管理器的关键功能:
| 功能 | 描述 |
|---|---|
| 转换传入请求 | 客户端管理器接收传入请求,并将其转换为 QSH 能够理解的 nanopb 协议缓冲区格式。有关更多信息,请参阅 QSH 中的 Nanopb 协议缓冲区。 |
| 转换传出指示 | 客户端管理器从 QSH 接收事件消息,并将这些事件消息转换为 QSH 外部可理解的 nanopb 协议格式的传出指示。有关更多信息,请参阅 QSH 中的 Nanopb 协议缓冲区。 |
| 保证批处理选项 | 如果客户端指定了某些批处理(本地存储/累积)选项,客户端管理器会确保满足这些批处理选项。客户端管理器检查数据是否按照客户端指定的方式进行分组和发送,从而确保符合相应标准。 |
- 服务管理器:QSH 通过服务管理器提供同步服务。传感器和传感器实例使用回调连接到服务管理器。
adsp_proc/qsh_platform/inc/sns_service.h 文件列出了 QSH 服务。构建过程会下载 adsp_proc 仓库。有关更多信息,请参阅软件构建文档。下表描述了对设备驱动至关重要的关键 QSH 服务。
表:QSH 服务
| QSH 服务 | 描述 |
|---|---|
| 流服务(Stream service) |
|
| 属性服务(Attribute service) |
|
| 诊断服务(Diagnostic service) |
|
| 事件服务(Event service) |
|
| 电源轨服务(Power rail service) |
|
| 同步 COM 端口(SCP)服务 |
|
| 通用 IO(GPIO)服务 |
|
| 孤岛服务(Island service) |
|
| 文件系统服务(File system service) |
|
- 平台传感器:QSH 提供某些内置传感器,用于平台或硬件特定的抽象,供其他传感器和传感器实例使用。下表描述了平台传感器:
| 平台传感器 | 描述 |
|---|---|
| 注册表传感器(Registry sensor) |
|
| 定时器传感器(Timer sensor) |
|
| 中断传感器(Interrupt sensor) |
|
| 异步 COM 端口(ASCP)传感器 |
|
| SUID 查找传感器(SUID lookup sensor) |
|
| 测试传感器(Test sensor) |
|
- QSH 实用工具:QSH 为传感器和传感器实例提供了多个辅助实用工具。所有实用工具都位于
adsp_proc/qsh_platform/inc/utils目录中。下表描述了关键的 QSH 实用工具:
| QSH 实用工具 | 描述 |
|---|---|
| Nanopb 编码/解码 |
|
| 传感器实用工具(Sensor utils) |
|
| 属性实用工具(Attribute utils) |
|
| 内存实用工具(Memory utils) |
|
| 数学实用工具(Math utils) |
|
| Printf 实用工具(Printf utils) |
|
- 操作系统抽象(OSA)为操作系统服务提供统一接口,抽象平台特定的实现。
| 操作系统抽象(OSA) | 描述 |
|---|---|
| 线程管理 |
|
| 信号处理 |
|
| 互斥与同步 |
|
- 平台抽象层(PAL)为传感器驱动和框架组件提供硬件及平台特定的抽象。
| 平台抽象层(PAL) | 描述 |
|---|---|
| GPIO 抽象 |
|
| I2C/SPI 总线抽象 |
|
| 中断处理 |
|
| 时钟与电源管理 |
|
| 寄存器访问 |
|
| UART/串行通信 |
|
传感器与传感器实例
QSH 将传感器实现划分为两个逻辑单元:传感器和传感器实例。-
传感器是异步数据的生产者、消费者,或生产者与消费者的组合。
- 每个传感器可以拥有一个或多个传感器实例。
- 向传感器请求数据会导致创建传感器实例或共享现有的传感器实例。
-
传感器按需创建传感器实例。
- 传感器管理其对应实例的生命周期和配置,并向其客户端发送配置更新和初始状态事件。
- 每个传感器实例以特定的客户端配置运行。
- 物理传感器的传感器实例对传感器硬件进行编程,使其以所需的配置运行。
- 供应商必须以尽可能少的传感器实例来满足所有客户端请求。
- 传感器实例生成数据流并将其发送给所有活动的客户端。
-
多个传感器可以共享和配置单个传感器实例。这种操作模式常见于硬件传感器的组合驱动(combo driver),例如:
- 加速度计和陀螺仪
- 接近传感器和环境光传感器

