> ## 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® 传感中枢 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 将 SUID 与作为参数传递给此 API 的回调函数进行注册。

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

**语法**

```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`：失败时，即对于未注册的 SUID，所有回调函数均为 `nullptr`。 |

***

#### `sendRequest()`

此 API 以异步方式向 QSH 框架发送 protocol buffer（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://docs.qualcomm.com/doc/80-80023-7A/topic/overview.html#qualcomm-sensing-hub-apis)。

## 低功耗处理器 API

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

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

您可以使用低功耗处理器 API 创建符合 QSH 标准的算法和传感器驱动程序。有关更多信息，请参阅 [Qualcomm 传感中枢 API](https://docs.qualcomm.com/doc/80-80023-7A/topic/overview.html#qualcomm-sensing-hub-apis)。

**后续步骤**

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