# QSH API

介绍 QSH 接口以及重要的 QSH 函数、类、方法和数据结构。

QSH 接口可用于任何类型的基于硬件、基于软件、预先存在的或任何其他符合 QSH 标准的传感器。

QSH 框架在低功耗处理器上运行，并在应用处理器上公开 API。这些 API 包括以下内容：

- 用于应用开发的 QSH 客户端 API 和各种功能 API。
- 用于在低功耗处理器上创建新传感器的传感器 API。

## 应用处理器 API

QSH 在应用处理器上提供各种功能 API，以满足不同用例的特定需求。

### QSH 客户端 API

QSH 客户端 API 为客户端代码提供了一个简单易用的接口，允许使用 QSH 功能并开发端到端传感器用例。QSH 支持以下 API：

**getSession()**

该 API 创建一个 `ISession` 的实例并返回指向该实例的指针。

**语法**

ISession* getSession();
    Copy to clipboard

**参数**

无。

**响应**

| **返回** | **说明** |
| --- | --- |
| `ISession*` | `ISession`：成功时<br><br><br>`nullptr`：失败时 |

**Open()**

此 API 启动使用 `getSession()` 创建的客户端会话。它在客户端与 QSH 框架之间部署和建立通信。客户端只能对每个会话调用此函数一次。

**语法**

int open();
    Copy to clipboard

**参数**

无。

**响应**

| **返回** | **说明** |
| --- | --- |
| `int` | `0`：已成功打开会话<br><br><br>`-1`：失败时 |

**setCallBacks()**

对于指定的 SUID，此 API 允许用户为使用 `open()` 打开的会话中所收到的响应、错误和事件设置回调。此 API 通过作为参数传递给此 API 的回调函数注册 SUID。

要取消已注册 SUID 的回调函数，用户可以为所有三个回调函数（`respCallBack`、`errorCallBack` 和 `eventCallBack`）传递 `nullptr`。对于任何未注册的 SUID，若为所有回调函数传递 `nullptr`，将会导致错误。

**语法**

virtual int setCallBacks(suid suid, respCallBack respCB, errorCallBack errorCB, eventCallBack eventCB) = 0;
    Copy to clipboard

**参数**

| **参数** | **名称** | **说明** |
| --- | --- | --- |
| `input` | `suid` | 正在为其设置回调函数的传感器的唯一 SUID。 |
| `input` | `respCB` | 响应回调函数。 |
| `input` | `errorCB` | 错误回调函数。 |
| `input` | `eventCB` | 事件回调函数。 |

Note

如果有未定义或不需要的回调函数，则客户端可以传递 `nullptr`。

**响应**

| **返回** | **说明** |
| --- | --- |
| `int` | `0`：成功时<br><br><br>`-1`：失败时 — 所有回调函数均是 `nullptr`（对于未注册的 SUID）。 |

**sendRequest()**

此 API 向 QSH 框架异步发送协议缓存 (proto) 编码的消息。此协议缓存编码的消息包含通过 SUID 标识的传感器的说明或配置设置。

如果用户使用 `setCallBacks()` 为指定的 SUID 设置回调指针，则将从 QSH 框架接收响应、事件或响应和事件的组合。

**语法**

virtual int sendRequest(suid suid, string message) = 0;
    Copy to clipboard

**参数**

| **参数** | **名称** | **说明** |
| --- | --- | --- |
| `input` | `suid` | 将发送请求的传感器的唯一 SUID。 |
| `input` | `message` | 要发送的 proto 编码请求消息。 |

**响应**

| **返回** | **说明** |
| --- | --- |
| `int` | `0`：成功时<br><br><br>`-1`：失败时，原因为：<br><ul class="simple"><br><li><p>用户尝试通过已关闭的会话发送请求</p></li><br><li><p>编码消息的大小超出允许的大小</p></li><br><li><p>由于通道相关问题导致发送消息失败</p></li><br></ul> |

**Close()**

此 API 关闭传感器会话，并终止客户端与 QSH 框架之间的通信。客户端必须在会话结束时调用此函数以释放资源并避免内存泄漏。

**语法**

void close();
    Copy to clipboard

**参数**

无。

**响应**

| **返回** | **说明** |
| --- | --- |
| `void` | 无 |

有关更多信息和示例代码，请参见[使用 QSH 客户端 API 开发应用](https://docs.qualcomm.com/doc/80-70018-7SC/topic/samples.html#sample1)。

### QSH 直接通道 API

QSH 直接通道 API 为高速率应用提供低延迟传感器数据通道。直接通道 API 使用 fastRPC 接口，绕过标准处理器间通信 (IPC) 机制以实现更快的通信。有关更多信息，请参见 [Qualcomm Linux Sensors Guide - Addendum](https://docs.qualcomm.com/bundle/resource/topics/80-70018-7A/overview.html) 中的 [QSH API](https://docs.qualcomm.com/bundle/resource/topics/80-70018-7A/qsh_api_reference.html)。

Note

[Qualcomm Linux Sensors Guide - Addendum](https://docs.qualcomm.com/bundle/resource/topics/80-70018-7A/overview.html) 适用于具有授权访问权限的许可用户。

## 低功耗处理器 API

低功耗处理器 API 提供以下内容的权限：

- QSH 框架资源，例如服务和实用工具
- 核心功能，如诊断接口和定时器

您可以使用低功耗处理器 API 创建符合 QSH 标准的算法和传感器驱动程序。此信息可供对 Qualcomm Linux 附带的专有软件具有完全访问权限的许可用户使用。有关更多信息，请参见 [Qualcomm Linux Sensors Guide - Addendum](https://docs.qualcomm.com/bundle/resource/topics/80-70018-7A/overview.html) 中的 [QSH API](https://docs.qualcomm.com/bundle/resource/topics/80-70018-7A/qsh_api_reference.html)。

Note

[Qualcomm Linux Sensors Guide - Addendum](https://docs.qualcomm.com/bundle/resource/topics/80-70018-7A/overview.html) 适用于具有授权访问权限的许可用户。

Last Published: Apr 26, 2025

[Previous Topic
QSH 架构](https://docs.qualcomm.com/bundle/publicresource/80-70018-7SC/topics/architecture.md) [Next Topic
软件](https://docs.qualcomm.com/bundle/publicresource/80-70018-7SC/topics/software.md)