Qualcomm Enhanced SDK (QESDK) API参考(2)
1.2 QESDK 原生 API 概述
QESDK NDK 库提供用于注册 Android 应用程序包 (APK)、验证相应许可证文件以及调用子系统 API 的主要方法。
-
qesdk_init
此 API 已弃用。使用 qesdk_initEx。通过用户提供的许可证密钥初始化 QESDK 会话。qesdk_initEx 会触发针对 QESDK 的鉴权调用,如果鉴权成功,则返回 QESDK 服务句柄;如果鉴权失败,则返回 NULL。 -
qesdk_initEx
通过用户提供的许可证密钥初始化 QESDK 会话。qesdk_initEx 会触发针对 QESDK 的鉴权调用,如果鉴权成功,则返回 QESDK 服务句柄;如果鉴权失败,则返回 NULL。每个会话只调用一次此 API。 -
Qesdk 事件回调
需要在 qesdk_init 调用期间注册为回调。客户端应实现该回调,以便在注册的服务不可用时调用。具体调用方式为传递参数,即失败服务的 opcodes 和 subsystems[] 组合。 -
qesdk_deinit
终止由应用程序发起的 QESDK 连接。在应用程序退出后或通过显式调用 qesdk_deinit 函数终止 QESDK 连接。通过 QESDK 框架注册的任何 API 回调都将取消。 -
单个子系统 init 和 de-init
应用程序可以独立初始化和注销服务。 -
QESDK 结构体
-
QESDK 枚举
已弃用。 -
函数执行
已弃用。介绍用于调用子系统 API 的函数执行 API。 -
示例代码
1.2.1 qesdk_init
此 API 已弃用。使用 qesdk_initEx。通过用户提供的许可证密钥初始化 QESDK 会话。qesdk_initEx 会触发针对 QESDK 的鉴权调用,如果鉴权成功,则返回 QESDK 服务句柄;如果鉴权失败,则返回 NULL。
qesdk_handle_t qesdk_init(
char* license,
size_t license_size,
fwk_event_callback cb
)
注释:
每个会话只调用一次此 API。
参数
-
license
许可证文件内容 -
license_size
许可证 blob 的大小 -
cb
用于通知应用程序子系统已断开连接的回调。
回调格式如下:
typedef void (*fwk_event_callback)(uint32_t opcodes, uint32_t subsystems[]);
- opcode - 断开连接的子系统的操作码。
- subsystems - 操作码列表:断开连接的子系统。
返回结果
qesdk_handle_t
成功时返回 QESDK 服务句柄,出错时返回 NULL。
1.2.2 qesdk_initEx
通过用户提供的许可证密钥初始化 QESDK 会话。qesdk_initEx 会触发针对 QESDK 的鉴权调用,如果鉴权成功,则返回 QESDK 服务句柄;如果鉴权失败,则返回 NULL。每个会话只调用一次此 API。
qesdk_handle_t qesdk_initEx(char* license, size_t license_size,
fwk_event_callback cb)
参数
参数 | 说明 |
---|---|
License | 许可证文件内容 |
license_size | 许可证 blob 的大小 |
Cb | 用于通知应用程序子系统已断开连接的回调。 回调格式如下: typedef void (*fwk_event_callback)(uint32_t opcodes, uint32_t subsystems[]);
|
返回结果
返回结果 | 说明 |
---|---|
qesdk_handle_t | 成功时返回 QESDK 服务句柄,出错时返回 NULL。 |
1.2.3 Qesdk 事件回调
需要在 qesdk_init 调用期间注册为回调。客户端应实现该回调,以便在注册的服务不可用时调用。具体调用方式为传递参数,即失败服务的 opcodes 和 subsystems[] 组合。
typedef void (*fwk_event_callback)(
uint32_t opcodes,
uint32_t subsystems[]
)
参数
-
opcodes
包含不可用的操作码 -
subsystems
包含不可用的子系统 ID
如果操作码为 0,应用程序应再次初始化所有服务,这是因为操作码 0 表示 QESDK 框架因意外问题而重新启动。
如果操作码为非零值,则应再次初始化与该操作码对应的服务。
操作码 | 服务 |
---|---|
11 | Modem |
19 | 性能 |
17 | 传感器 |
24 | 位置 |
如果 Java/原生使用相同的服务,则给定的服务端(取消初始化)将相应通知原生/Java。
例如:如果某个服务在 Java 和原生 API 中均已初始化,并在原生 API 中将该服务的会话取消初始化,则该行为将在 Java 中触发 QESDK 框架事件回调应用程序。反之亦然。
1.2.4 qesdk_deinit
终止由应用程序发起的 QESDK 连接。在应用程序退出后或通过显式调用 qesdk_deinit 函数终止 QESDK 连接。通过 QESDK 框架注册的任何 API 回调都将取消。
qesdk_error_t qesdk_deinit(
qesdk_handle_t qesdk_handle
)
参数
qesdk_handle
QESDK 服务句柄
返回结果
qesdk_error_t
- SUCCESS - 取消注册成功
- FAILED - 取消注册失败
1.2.5 单个子系统 init 和 de-init
应用程序可以独立初始化和注销服务。
init
<Subsystemclass>.init() – 参数和返回值与 init 调用中的相同。
例如:
- Java
ModemManager.init( [String license], IQesdkEventCallBack cb )
- 原生
SensorsManager.init(char* license, size_t license_size, fwk_event_callback cb)
deinit
<Subsystemclass>.deinit() – 参数和返回值与 deinit 调用中的相同。
例如:
- Java
ModemManager.deinit()
- 原生
SensorsManager.deinit()
1.2.6 QESDK 结构体
Struct bnry_blb_t
成员 | 说明 |
---|---|
size_t |
|
uint8_t * |
|
1.2.7 QESDK 枚举
- qesdk_error_t enum
指示 QESDK 原生 API 调用的错误代码。
枚举值| | |
0 | 成功 |
1 | 失败 |
- qesdk_type_t enum
包含 QESDK 原生库支持的数据类型。
枚举值 |
---|
NONE |
INT8 |
FIRSTTYPE = INT8 |
INT16 |
INT32 |
INT64 |
UINT8 |
UINT16 |
UINT32 |
UINT64 |
STRING |
BOOL |
LASTTYPE = BOOL |