# 接口

Source: [https://docs.qualcomm.com/doc/80-70015-7SC/topic/qsh_api_reference.html](https://docs.qualcomm.com/doc/80-70015-7SC/topic/qsh_api_reference.html)

本指南描述的某些 QSH 接口包含重要的 QSH 函数、类、方法和数据结构。这些 QSH 接口可用于任何类型的基于硬件、基于软件、预先存在的或任何其他符合 QSH 标准的传感器。

QSH 框架在低功耗处理器上运行，并在应用处理器上公开 API。QSH 客户端 API 用于应用程序，QSH 传感器 API 用于在低功耗处理器上开发新传感器。

## 应用处理器的 QSH 客户端 API

Source: [https://docs.qualcomm.com/doc/80-70015-7SC/topic/qsh_api_reference.html](https://docs.qualcomm.com/doc/80-70015-7SC/topic/qsh_api_reference.html)

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

**getSession()**

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

**语法**

    ISession* getSession();Copy to clipboard

**参数**

无。

**响应**

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

**Open()**

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

**语法**

    int open();Copy to clipboard

**参数**

无。

**响应**

| **返回结果** | **说明** |
| --- | --- |
| `int ` | `0`：已成功打开会话<br><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>                                <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>                                <br>`-1`：失败时，原因为：<ul class="ul" id="client_interface_apis__ul_qsw_dzh_4cc_rajearor_08-30-24-2017-12-484"><br>                                    <li class="li">用户尝试通过已关闭的会话发送请求</li><br><br>                                    <li class="li">编码消息的大小超出允许的大小</li><br><br>                                    <li class="li">由于通道相关问题导致发送消息失败</li><br><br>                                </ul> |

**Close()**

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

**语法**

    void close();Copy to clipboard

**参数**

无。

**响应**

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

更多信息和示例代码，参见[示例](https://docs.qualcomm.com/bundle/publicresource/topics/80-70015-7/samples.html)。

## 低功耗处理器 API

Source: [https://docs.qualcomm.com/doc/80-70015-7SC/topic/qsh_api_reference.html](https://docs.qualcomm.com/doc/80-70015-7SC/topic/qsh_api_reference.html)

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

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

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

Last Published: Dec 03, 2024

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