Skip to main content
SessionClient 示例应用展示了如何使用 QSH 客户端 API 开发应用。默认情况下,此示例应用构建在设备上的 /usr/bin 目录下。有关完整的代码示例,请参阅 <workspace>/build-qcom-wayland/workspace/sources/sensinghub/sensing-hub/examples/SessionClient/SessionClient.cpp 文件。 下图显示了流式传输加速度计传感器的调用流程以及 QSH 客户端 API 的用法。
Figure : Call flow to stream a specified sensor

图:流式传输指定传感器的调用流程

在此示例中,客户端应用可以为 SUID 查询、属性查询和流式传输活动使用不同的传感器会话。它也可以为所有活动使用相同的会话;但是,必须适当地处理同步。 客户端应用可以按如下方式向 aDSP 发送各种请求:
  1. SUID 查询,检索指定传感器的 SUID: a. 通过使用新的 sessionFactory() 类调用 getSession() API 为 SUID 创建接口。请求 SUID 是任何用例中为获取所请求数据类型的 SUID 的首要且重要的请求。
    b. 通过调用 open() API 打开创建的会话接口。
    c. 通过调用 setCallBacks() API 设置回调,并为 SUID 活动处理响应、事件或错误。
    d. 通过调用 sendRequest() API 创建并发送一个 Pb 编码的请求消息以获取指定数据类型的 SUID。
    e. 在收到所请求数据类型的 SUID 事件后,通过调用 close() API 关闭会话并删除它。
  2. 属性请求,检索指定传感器的属性: a. 通过使用新的 sessionFactory() 类调用 getSession() 为属性创建接口会话。请求属性对于获取任何用例所请求数据类型的能力都很重要。
    b. 通过调用 open() API 打开创建的会话接口。
    c. 通过调用 setCallBacks() 设置回调,并为属性活动处理响应、事件或错误。
    d. 通过调用 sendRequest() API 创建并发送一个用于指定数据类型属性的 Pb 编码配置请求。
    e. 在收到所请求数据类型的属性事件后,通过调用 close() API 关闭会话。
  3. 传感器流式传输,流式传输传感器并接收数据事件: a. 通过使用新的 sessionFactory() 类调用 getSession() 为流式传输传感器创建接口会话。在此,请求传感器数据是任何用例中所请求数据类型的最后阶段。
    b. 通过调用 open() API 打开创建的会话接口。
    c. 通过调用 setCallBacks() 设置回调,并为流式传输活动处理响应、事件或错误。
    d. 通过调用 sendRequest() API 创建并发送一个用于指定数据类型传感器流式传输的 Pb 编码配置请求,最终允许所请求的传感器。
    e. 在事件回调中处理样本,并等待指定的测试持续时间。
  4. 停止传感器流式传输客户端,通过发送禁用请求停止流式传输: a. 调用 sendRequest() API。
    b. 在收到所请求数据类型的流式传输事件后,通过调用 close() API 关闭会话。
以下代码片段显示了 SessionClient 示例应用的输出。它允许加速度计传感器以 10 Hz 采样率和 2 秒批处理周期运行 10 秒,并打印接收到的传感器事件。
要故障排除常见问题,请参阅 Debug。 有关更多信息,请参阅 QSH 直接通道 API 工作流。