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

# Qualcomm® 传感中心 API

Qualcomm® 传感中心 (QSH) 接口可用于基于硬件、基于软件、预先存在的或任何其他符合 QSH 的传感器。QSH 框架在低功耗处理器上运行，并在应用处理器上公开 API。这些 API 包括以下内容：

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

## 应用处理器 API

QSH 在应用处理器上提供功能 API 以解决特定的传感器用例。

***

### QSH 客户端 API

QSH 客户端 API 提供了一个接口，使客户端代码能够访问 QSH 功能并开发端到端的传感器应用。QSH 支持以下 API：

***

#### `getSession()`

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

**语法**

```cpp theme={null}
ISession* getSession();
```

**参数** — 无。

**响应**

| 返回值         | 描述                            |
| ----------- | ----------------------------- |
| `ISession*` | `ISession`：成功时；`nullptr`：失败时。 |

***

#### `open()`

此 API 启动使用 `getSession()` API 创建的客户端会话。`open()` API 建立并设置客户端与 QSH 框架之间的通信。客户端必须在每个会话中只调用此函数一次。

**语法**

```cpp theme={null}
int open();
```

**参数** — 无。

**响应**

| 返回值   | 描述                   |
| ----- | -------------------- |
| `int` | `0`：成功打开会话；`-1`：失败时。 |

***

#### `setCallBacks()`

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

要取消设置已注册 SUID 的回调，您可以为所有三个回调函数：`respCallBack`、`errorCallBack` 和 `eventCallBack` 传递 `nullptr`。为所有回调函数传递 `nullptr` 会对未注册的 SUID 产生错误。

**语法**

```cpp theme={null}
virtual int setCallBacks(suid suid, respCallBack respCB, errorCallBack errorCB, eventCallBack eventCB) = 0;
```

**参数**

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

**响应**

| 返回值   | 描述                                               |
| ----- | ------------------------------------------------ |
| `int` | `0`：成功时；`-1`：失败时，如果所有回调函数为 `nullptr`，对未注册的 SUID。 |

***

#### `sendRequest()`

此 API 异步向 QSH 框架发送协议缓冲 (proto) 编码消息。proto 编码消息包含由 SUID 标识的传感器的指令或配置设置。

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

**语法**

```cpp theme={null}
virtual int sendRequest(suid suid, string message) = 0;
```

**参数**

| 参数      | 名称        | 描述                   |
| ------- | --------- | -------------------- |
| `input` | `suid`    | 要为其发送请求的传感器的唯一 SUID。 |
| `input` | `message` | 要发送的 proto 编码请求消息。   |

**响应**

| 返回值   | 描述                                                                        |
| ----- | ------------------------------------------------------------------------- |
| `int` | `0`：成功时；`-1`：失败时，原因为以下之一：用户尝试通过已关闭的会话发送请求；编码消息大小超过允许的大小；由于通道相关问题导致发送消息失败。 |

***

#### `close()`

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

**语法**

```cpp theme={null}
void close();
```

**参数** — 无。

**响应**

| 返回值    | 描述 |
| ------ | -- |
| `void` | 无。 |

***

有关更多信息和示例代码，请参阅 [使用 QSH 客户端 API 开发应用](./develop_app)。

### QSH 直接通道 API

QSH 直接通道 API 为高速率应用提供低延迟传感器数据通道。直接通道 API 使用 FastRPC 接口，该接口绕过标准处理器间通信 (IPC) 机制以实现更快的通信。有关更多信息，请参阅 [Qualcomm 传感中心 API](https://dragonwingdocs.qualcomm.com/Addendum-docs/Sensors/addendum/Sensors-overview#qualcomm-sensing-hub-apis)。

## 低功耗处理器 API

低功耗处理器 API 提供对以下内容的访问：

* QSH 框架资源，例如服务和实用程序。
* 核心功能，例如诊断接口和计时器。

您可以使用低功耗处理器 API 创建符合 QSH 标准的算法和传感器驱动。有关更多信息，请参阅 [Qualcomm 传感中心 API](https://dragonwingdocs.qualcomm.com/Addendum-docs/Sensors/addendum/Sensors-overview#qualcomm-sensing-hub-apis)。

**后续步骤**

* [应用和低功耗处理器软件](./software)
