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

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

在此示例中,客户端应用程序可以针对 SUID 查询、属性查询和流式传输活动使用不同的传感器会话。它也可以对所有活动使用同一个会话;但是,必须妥善处理同步。 客户端应用程序可以向 aDSP 发送各种请求,如下所示:
  1. SUID 查询,检索指定传感器的 SUID: a. 通过使用新的 sessionFactory() 类调用 getSession() API 来创建 SUID 接口。请求 SUID 是任何用例中获取所请求数据类型 SUID 的第一个也是最重要的请求。
    b. 通过调用 open() API 打开已创建的会话接口。
    c. 通过调用 setCallBacks() API 设置回调,并处理 SUID 活动的响应、事件或错误。
    d. 通过调用 sendRequest() API,创建并发送针对指定数据类型 SUID 的 Pb 编码请求消息。
    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 秒,并打印接收到的传感器事件。
有关常见问题的故障排查,请参阅”调试”。 有关更多信息,请参阅 QSH 直接通道 API 工作流