> ## Documentation Index
> Fetch the complete documentation index at: https://dragonwingdocs.qualcomm.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 概述

Qualcomm® 片上系统（SoC）包括运行 Linux 操作系统的应用处理器、低功耗应用数字信号处理器（aDSP）以及其他处理器。低功耗处理器运行实时操作系统（RTOS），使用 QSH 框架处理传感器数据流。aDSP 为 QSH 操作提供以下支持：

* 可配置为串行总线的 GPIO：串行外设接口（SPI）、集成电路总线（I<sup>2</sup>C）、改进型 I<sup>2</sup>C（I<sup>3</sup>C）和通用异步收发器（UART）。
* 低功耗模式下的串行总线。
* 专用本地内存，在 QSH 中也称为 island。

QSH 提供了一个使用来自各种传感器数据的框架。传感器数据在 IoT、游戏、健康和健身等领域非常有用。

一台设备可以拥有多个同类型的传感器。例如，翻盖手机在两个平面上各放置一个加速度计。发布的属性和能力可区分每个加速度计传感器。QSH 客户端 API 允许您访问平台上传感器的可用性、属性和能力。使用相同的 QSH 客户端 API 从 QSH 框架获取传感器数据。

QSH 框架 API 包括 QSH 客户端 API 和传感器 API，用于执行以下与传感器相关的任务：

* 识别开发套件上可用的传感器。
* 使用属性确定传感器能力，例如支持的采样率、最大量程、制造商、功耗要求和分辨率。
* 根据配置采集并提供数据，从而以指定的采样率启用传感器。

QSH 框架提供对基于硬件和基于软件的传感器的访问。

## 基于硬件的传感器

基于硬件的传感器是物理传感器，通过直接测量特定环境属性来采集数据，例如加速度、磁场、气压、湿度、光照和角速度。

下表列出了 QSH 框架支持的基于硬件的传感器：

<table>
  <thead>
    <tr><th>传感器名称</th><th>传感器类型</th><th>描述</th><th>Proto API</th></tr>
  </thead>

  <tbody>
    <tr><td>加速度计</td><td><code>accel</code></td><td>测量施加到设备的 3 个物理轴（x、y 和 z）上的加速度，单位为米/秒平方（m/s<sup>2</sup>）</td><td><code>sns\_accel.proto</code></td></tr>
    <tr><td>陀螺仪</td><td><code>gyro</code></td><td>测量设备围绕 3 个物理轴（x、y 和 z）中每个轴的旋转速率，单位为弧度/秒（rad/s）</td><td><code>sns\_gyro.proto</code></td></tr>
    <tr><td>传感器温度</td><td><code>sensor\_temperature</code></td><td>测量传感器的温度，单位为摄氏度（°C）</td><td><code>sns\_sensor\_temperature.proto</code></td></tr>
    <tr><td>磁力计</td><td><code>mag</code></td><td>测量 3 个物理轴（x、y 和 z）上的环境磁场，单位为微特斯拉</td><td><code>sns\_mag.proto</code></td></tr>
    <tr><td>接近传感器</td><td><code>proximity</code></td><td>测量物体的接近程度并提供<em>近/远</em>事件</td><td><code>sns\_proximity.proto</code></td></tr>
    <tr><td>环境光</td><td><code>ambient\_light</code></td><td>测量环境光照度，单位为勒克斯（lx）</td><td><code>sns\_ambient\_light.proto</code></td></tr>
    <tr><td>气压</td><td><code>pressure</code></td><td>测量环境空气压力，单位为百帕（hPa）</td><td><code>sns\_pressure.proto</code></td></tr>
    <tr><td>湿度</td><td><code>humidity</code></td><td>测量相对环境湿度，单位为百分比（%）</td><td><code>sns\_humidity.proto</code></td></tr>
    <tr><td>环境温度</td><td><code>ambient\_temperature</code></td><td>提供环境室温，单位为摄氏度（°C）</td><td><code>sns\_ambient\_temperature.proto</code></td></tr>
    <tr><td>霍尔</td><td><code>hall</code></td><td>测量磁场并提供磁体<em>近/远</em>指示</td><td><code>sns\_hall.proto</code></td></tr>
    <tr><td>电容式接近传感器</td><td><code>sar</code></td><td>利用电容变化检测人体接近并报告<em>近/远</em>事件</td><td><code>sns\_sar.proto</code></td></tr>
  </tbody>
</table>

## 基于软件的传感器

基于软件的传感器，也称为虚拟传感器，是从一个或多个物理传感器采集数据并生成预期输出的算法。常见示例包括：

* 重力
* 计步器
* 游戏旋转矢量（GRV）

下表列出了 QSH 框架支持的基于软件的传感器：

<table>
  <thead>
    <tr><th>传感器名称</th><th>传感器类型</th><th>Proto API</th><th>描述</th></tr>
  </thead>

  <tbody>
    <tr><td>绝对运动检测器</td><td><code>amd</code></td><td><code>sns\_amd.proto</code></td><td><ul><li>当设备处于绝对静止状态时报告静止状态事件。例如，设备放置在静止物体上，如书桌或桌子。</li><li>当设备从绝对静止转变为运动状态时报告运动状态事件。例如，设备被从书桌或桌子上拿起。</li><li>使用加速度计运动检测中断来降低功耗。</li></ul></td></tr>
    <tr><td>相对运动检测器</td><td><code>rmd</code></td><td><code>sns\_rmd.proto</code></td><td>当设备相对于重力方向没有明显移动时报告静止状态。</td></tr>
    <tr><td>显著运动检测器（SMD）</td><td><code>sig\_motion</code></td><td><code>sns\_sig\_motion.proto</code></td><td><ul><li>在检测到可能导致用户位置变化的显著运动时触发。例如，步行、骑车，或乘坐行驶中的汽车、长途客车或火车。</li><li>以下示例不会触发显著运动：设备在口袋中而人保持静止。设备在桌子上且桌子轻微晃动。</li><li>报告模式：单次响应，通知后传感器自动禁用自身。</li></ul></td></tr>
    <tr><td>计步器</td><td><code>pedometer</code></td><td><code>sns\_pedometer.proto</code></td><td>向客户端报告步数。</td></tr>
    <tr><td>步伐检测器</td><td><code>step\_detect</code></td><td><code>sns\_step\_detect.proto</code></td><td>检测步伐并为每一步生成一个事件。</td></tr>
    <tr><td>倾斜检测器</td><td><code>tilt</code></td><td><code>sns\_tilt.proto</code></td><td>每次发生倾斜时生成一个事件。在 2 秒窗口内，平均重力方向自激活或传感器上次生成事件以来至少变化 35 度，即定义为一次倾斜事件。</td></tr>
    <tr><td>倾斜唤醒</td><td><code>tilt\_to\_wake</code></td><td><code>sns\_tilt\_to\_wake.proto</code></td><td>当拿起的设备处于特定的俯仰角和横滚角范围内时，检测明显的设备旋转手势事件。</td></tr>
    <tr><td>陀螺仪校准</td><td><code>gyro\_cal</code></td><td><code>sns\_gyro\_cal.proto</code></td><td><ul><li>一种用于陀螺仪的低功耗动态校准算法。</li><li>已在来自不同供应商的多种陀螺仪器件上完成验证。</li></ul></td></tr>
    <tr><td>磁力计校准</td><td><code>mag\_cal</code></td><td><code>sns\_mag\_cal.proto</code></td><td><ul><li>一种用于磁力计传感器的低功耗动态校准算法。</li><li>已在来自不同供应商的多种磁力计器件上完成验证。</li></ul></td></tr>
    <tr><td>游戏旋转矢量（GRV）</td><td><code>game\_rv</code></td><td><code>sns\_game\_rv.proto</code></td><td><ul><li>报告设备相对于未指定坐标系的方向。</li><li>通过对加速度计和陀螺仪读数的积分获得方向。因此，y 轴指向任意参考方向而不是北方。</li></ul></td></tr>
    <tr><td>重力/线性加速度</td><td><code>gravity</code></td><td><code>sns\_gravity.proto</code></td><td><ul><li>提供指示重力方向和大小的三维矢量。</li><li>确定设备在空间中的相对方向。</li></ul></td></tr>
    <tr><td>持续静止检测器</td><td><code>persist\_stationary\_detect</code></td><td><code>sns\_persist\_stationary\_detect.proto</code></td><td>当设备静止至少 5 秒时报告事件。</td></tr>
    <tr><td>持续运动检测器</td><td><code>persist\_motion\_detect</code></td><td><code>sns\_persist\_motion\_detect.proto</code></td><td>当设备运动至少 5 秒时报告事件。</td></tr>
    <tr><td>设备方向</td><td><code>device\_orient</code></td><td><code>sns\_device\_orient.proto</code></td><td>报告设备处于纵向模式还是横向模式。</td></tr>
    <tr><td>地磁旋转矢量</td><td><code>geomag\_rv</code></td><td><code>sns\_geomag\_rv.proto</code></td><td>报告设备相对于东、北、上（ENU）坐标系的方向；通过对加速度计和磁力计读数的积分获得。</td></tr>
    <tr><td>旋转矢量（RV）</td><td><code>rotv</code></td><td><code>sns\_rotv.proto</code></td><td><ul><li>报告设备相对于 ENU 坐标系的方向。</li><li>与地磁旋转矢量不同，此传感器使用陀螺仪。</li><li>通过对加速度计、陀螺仪和磁力计读数的积分获得方向。</li></ul></td></tr>
    <tr><td>设备位置分类器</td><td><code>device\_position\_classifier</code></td><td><code>sns\_dpc.proto</code></td><td>提供设备位置信息，指明设备处于水平位置还是相对于水平面成一定角度。</td></tr>
    <tr><td>活动识别算法</td><td><code>activity\_recognition</code></td><td><code>sns\_activity\_recognition.proto</code></td><td>确定相对静止状态和分类，例如步行、跑步、骑车、汽车、非机动车和机动车。</td></tr>
    <tr><td>距离界限</td><td><code>distance\_bound</code></td><td><code>sns\_distance\_bound.proto</code></td><td><ul><li>以米为单位跟踪距离，并在设备走完请求的距离时向客户端报告。</li><li>在设备到达最终距离之前，客户端可以随时查询累计距离。</li></ul></td></tr>
  </tbody>
</table>

**后续步骤**

* [架构](./architecture)
