Qualcomm Enhanced SDK (QESDK) API参考(2)

本文详细介绍了QualcommEnhancedSDK(QESDK)的原生API,包括qesdk_init、qesdk_initEx的使用,事件回调机制,qesdk_deinit的终止功能,以及如何独立管理子系统和处理结构体与枚举。重点在于API的初始化过程和错误处理机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


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[]);
  • opcode - 断开连接的子系统的操作码。
  • 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 框架因意外问题而重新启动。

如果操作码为非零值,则应再次初始化与该操作码对应的服务。

操作码服务
11Modem
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
  • 数据 blob 的大小
uint8_t *
  • 指向 uint8_t blob 数据的指针

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值