- QSH 客户端 API
- 传感器 API
- 核心框架
- 预实现的平台传感器
- 供应商实现的传感器
- 测试模块
| 术语 | 描述 |
|---|---|
| 传感器 |
|
| 传感器实例 |
|
| 传感器唯一标识符 (SUID) | 每个传感器的唯一 128 位 ID。 |
| 服务 | 为常见实用程序提供同步接口的模块。 |
| 数据流 | 客户端与数据源之间的唯一连接。 |
| 请求 | 客户端发送给传感器的配置消息(参见 sns_request.h 文件)。 |
| 事件 | 传感器实例生成的异步输出数据消息(参见 sns_sensor_event.h 文件)。 |
| Nanopb | 用 ANSI C 实现的一种小代码大小的协议缓冲。 |
图:QSH 架构
-
应用处理器软件模块
- 客户端应用:它有 application main() 或 entry function,与应用处理器端的 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 服务 | 描述 |
|---|---|
| 流服务 |
|
| 属性服务 |
|
| 诊断服务 |
|
| 事件服务 |
|
| 电源轨服务 |
|
| 同步 COM 端口 (SCP) 服务 |
|
| 通用 IO (GPIO) 服务 |
|
| Island 服务 |
|
| 文件系统服务 |
|
- 平台传感器:QSH 为其他传感器和传感器实例提供某些内置的平台或硬件特定抽象传感器。下表介绍了平台传感器:
| 平台传感器 | 描述 |
|---|---|
| Registry 传感器 |
|
| Timer 传感器 |
|
| Interrupt 传感器 |
|
| 异步 COM 端口 (ASCP) 传感器 |
|
| SUID 查找传感器 |
|
| Test 传感器 |
|
- QSH 实用程序:QSH 为传感器和传感器实例提供多个辅助实用程序。所有实用程序都位于
adsp_proc/qsh_platform/inc/utils目录中。下表介绍了关键的 QSH 实用程序:
| QSH 实用程序 | 描述 |
|---|---|
| Nanopb encode/decode |
|
| Sensor utils |
|
| Attribute utils |
|
| Memory utils |
|
| Math utils |
|
| Printf utils |
|
- OS 抽象 (OSA) 提供了操作系统服务的统一接口,抽象了平台特定的实现。
| OS 抽象 (OSA) | 描述 |
|---|---|
| 线程管理 |
|
| 信号处理 |
|
| 互斥与同步 |
|
- 平台抽象层 (PAL) 为传感器驱动和框架组件提供硬件和平台特定的抽象。
| 平台抽象层 (PAL) | 描述 |
|---|---|
| GPIO 抽象 |
|
| I2C/SPI 总线抽象 |
|
| 中断处理 |
|
| 时钟与电源管理 |
|
| 寄存器访问 |
|
| UART/串行通信 |
|
传感器和传感器实例
QSH 将传感器实现划分为两个逻辑单元:传感器和传感器实例。-
传感器是异步数据的生产者、消费者,或者是生产者和消费者的组合。
- 每个传感器可以具有一个或多个传感器实例。
- 任何向传感器请求数据的操作都会导致创建传感器实例或共享现有传感器实例。
-
传感器根据需要创建传感器实例。
- 传感器管理其对应实例的生命周期和配置,并向其客户端发送配置更新和初始状态事件。
- 每个传感器实例以特定的客户端配置运行。
- 物理传感器的传感器实例对传感器硬件进行编程,以要求的配置运行。
- 供应商必须以最少数量的传感器实例服务所有客户端请求。
- 传感器实例生成并向所有活动客户端发送数据流。
-
许多传感器可以共享和配置单个传感器实例。这种操作模式常见于硬件传感器的组合驱动,例如:
- 加速度计和陀螺仪
- 接近传感器和环境光传感器

