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

本文档详细介绍了QualcommEnhancedSDK(QESDK)的6.3版本,涵盖了通用位置API、回调、枚举和结构体,包括精确定位、NTRIP客户端配置、应用程序校正数据处理以及回调机制等,适用于OEM开发者进行高精度定位应用开发。

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


6.3 通用位置 API、回调、枚举和结构体

6.3.1 通用位置函数

requestPreciseLocationUpdates
启动米级精度的精确定位跟踪会话。

requestPreciseLocationUpdates( )

在这里插入图片描述

Note
当 minIntervalMillis 设置为 0 时,只要数据准备就绪,就会调用回调,即引擎支持的最短间隔。
目前 minIntervalMillis 设为任何其他值都会在内部默认为 1 秒,精确定位会话以 1 秒的间隔运行。

在这里插入图片描述

removePreciseLocationUpdates
停止正在进行的精确位置会话。

removePreciseLocationUpdates()

在这里插入图片描述

registerLocationCapabilitiesCallback
注册以接收在 LocationCapabilities 枚举中定义的位置模块功能。
Previous

registerLocationCapabilitiesCallback( )

在这里插入图片描述

6.3.2 原生 NTRIP 客户端 API

这些 API 配置并使用原生 NTRIP 客户端向精确定位引擎 (eDGNSS/RTK) 提供校正数据

Note
仅允许 OEM 应用程序运行这些 API。缺少 OEM 权限将返回 EDGNSS_LOCATION_STATUS_FAILURE_UNSUPPORTED。OEM 应用程序需要在 Android manifest 文件中声明 com.qualcomm.qti.permission.ACCESS_PRECISE_LOCATION_API 用户权限,以调用原生 NTRIP 配置 API。

updateNTRIPGGAConsent
为原生 NTRIP 客户端授予权限,使其可以与 NTRIP 服务器共享 GGA NMEA。如果 NTRIP 服务器不需要 GGA NMEA 数据,则用户无需接受 GGA NMEE 许可。如果 NTRIP 服务器需要 GGA NMEA 数据,用户应接受获取校正数据的许可。仅允许 OEM 应用程序运行此 API。

updateNTRIPGGAConsent( )

在这里插入图片描述

enablePPENtripStream
在定位模块中启用原生 NTRIP 客户端。一次只需要一个 OEM 应用程序配置 NTRIP 原生客户端。

enablePPENtripStream( )

在这里插入图片描述

disablePPENtripStream
禁用原生 NTRIP 服务器。仅允许 OEM 应用程序运行此 API。

disablePPENtripStream( )

在这里插入图片描述

6.3.3 应用程序校正数据 API

这些 API 用于将应用程序注册为校正数据源,并在请求时注入校正后的数据。

registerAsCorrectionDataSource
将应用程序注册为精确定位引擎的校正数据提供程序。这是应用程序请求精确位置更新时必须调用的 API。

deRegisterAsCorrectionDataSource
删除作为校正数据提供程序的应用程序。一旦作为校正数据提供程序的应用程序被删除,就无法再请求精确的位置更新。

injectCorrectionData
注入校正数据以供精确定位引擎使用。

6.3.4 位置回调

ILocationReportCallback
此回调接收位置字段作为参数。

ILocationCapabilitiesCallback
此回调接收功能掩码作为参数。

ICorrectionStreamingControlCallback
此回调接收启动或停止向精确定位引擎传输校正数据的请求作为参数。收到此回调时,应用程序必须根据参数值来选择开始或停止校正数据注入。

6.3.5 位置枚举

6.3.5.1 位置状态

Note
RTK 子系统用 RTK 替换 EDGNSS。

说明
EDGNSS_LOCATION_STATUS_SUCCESS操作成功
EDGNSS_LOCATION_STATUS_FAILURE无法预见的内部错误。
EDGNSS_LOCATION_STATUS_FAILURE_UNSUPPORTED操作不受支持。
EDGNSS_LOCATION_STATUS_FAILURE_INVALID_ARGS指定的参数值无效。
EDGNSS_LOCATION_STATUS_FAILURE_MISSING_CBA回调缺失。
EDGNSS_LOCATION_STATUS_FAILURE_NO_CORRECTION_DATA应用程序尚未注册为校正数据源(通过 registerAsCorrectionDataSource)。
EDGNSS_LOCATION_STATUS_FAILURE_MISSING_PERMISSION应用程序缺少一项或多项强制性权限。
6.3.5.2 LocationQuality

Note
RTK 系统用 RTK 替换 EDGNSS 时使用。

枚举值说明
EDGNSS_LOCATION_QUALITY_STANDALONE仅使用卫星信号计算的位置。
EDGNSS_LOCATION_QUALITY_DGNSS使用卫星信号和 eDGNSS 技术计算的位置。
EDGNSS_LOCATION_QUALITY_FLOAT使用卫星信号和 RTK 技术计算的位置;浮点型。
Note不适用于 EDGNSS 子系统
EDGNSS_LOCATION_QUALITY_FIXED不适用。
6.3.5.3 CorrectionDataType
枚举值
CORRECTION_DATA_TYPE_EDGNSS
CORRECTION_DATA_TYPE_RTK
6.3.5.4 LocationCapabilities
枚举值整数值
PP_LOCATION_CAPABILITIES_EDGNSS_BIT1
PP_LOCATION_CAPABILITIES_RTK_BIT2
6.3.5.5 LocationFlagsBits
枚举值整数值
PP_LOCATION_HAS_LAT_LONG_BIT1
PP_LOCATION_HAS_ALTITUDE_BIT2
PP_LOCATION_HAS_SPEED_BIT4
PP_LOCATION_HAS_BEARING_BIT8
PP_LOCATION_HAS_ACCURACY_BIT16
PP_LOCATION_HAS_VERTICAL_ACCURACY_BIT32
PP_LOCATION_HAS_SPEED_ACCURACY_BIT64
PP_LOCATION_HAS_BEARING_ACCURACY_BIT128
PP_LOCATION_HAS_ELAPSED_REAL_TIME_BIT256
PP_LOCATION_HAS_ELAPSED_REAL_TIME_UNC_BIT512

6.3.6 支持类和结构体

位置报告

位置类 (Java) / pp_rtk_Location 结构体(原生)

Note
精度字段指示 +/- 对应的值。

在这里插入图片描述

6.4 代码示例

Java
需要导入

import com.qualcomm.qti.qesdkIntf.IQesdk;
import com.qualcomm.qti.qesdk.QesdkStatusException;
import com.qualcomm.qti.qesdk.Location.PP_eDGNSSUDT;
import com.qualcomm.qti.qesdk.Location.PP_RTKUDT;
import com.qualcomm.qti.qesdk.Location.IPP_RTKCBs;
import com.qualcomm.qti.qesdk.Location.IPP_eDGNSSCBs;
import com.qualcomm.qti.qesdk.Location.PP_RTKEnums;
import com.qualcomm.qti.qesdk.Location.PP_RTKManager;
import com.qualcomm.qti.qesdk.Location.PP_eDGNSSEnums;
import com.qualcomm.qti.qesdk.Location.PP_eDGNSSManager;

声明需要对象

private IQesdk mQesdkManager;
private PP_eDGNSSManager mPpeEdgnssManager;
private PP_RTKManager mPpeRtkManager;

创建 QESDK 管理器实例并进行初始化

mQesdkManager = IQesdk.createInstance(this);
int statusId = qesdkManager.init(eventCallbackHandler);

根据需要创建 eDGNSS 或 RTK 管理器实例

mPpeEdgnssManager = new PP_eDGNSSManager(mQesdkManager);
mPpeRtkManager = new PP_RTKManager(mQesdkManager);

设置回调

IQesdkEventCallBack eventCallbackHandler = new IQesdkEventCallBack() {
      @Override
      public void onEvent(int opcode, int[] subsys) {
      // Handle QESDK event
      }
      };
      
      // For Checking eDGNSS/ RTK precise positioning Capabilities 
      private IPP_eDGNSSCBs.ILocationCapabilitiesCallback locationCapabilitiesCallback = new IPP_eDGNSSCBs.ILocationCapabilitiesCallback() {
      @Override
      public void onValues(long l) {
      // Check precise positioning Capabilities
      }
      };
      
      
      // For controlling correction data streaming to Precise Positioning engine
      private IPP_eDGNSSCBs.ICorrectionStreamingControlCallback streamingControlCallback = new IPP_eDGNSSCBs.ICorrectionStreamingControlCallback() {
      @Override
      public void onValues(PP_eDGNSSEnums.CorrectionStreamingState correctionStreamingState) {
      // Start or Stop correction data streaming as requested
      }
      };
      
      // For handling location reports
      private IPP_eDGNSSCBs.ILocationReportCallback eDgnssLocationReportCallback = new IPP_eDGNSSCBs.ILocationReportCallback() {
      @Override
      public void onValues(PP_eDGNSSUDT.Location location) {
      // Handle eDGNSS location report callback
      }
      };
      
      private IPP_RTKCBs.ILocationReportCallback rtkLocationReportCallback = new IPP_RTKCBs.ILocationReportCallback() {
      @Override
      public void onValues(PP_RTKUDT.Location location) {
      // Handle RTK location report callback        
      }
      };

获取位置功能

registerLocationCapabilitiesCallback(locationCapabilitiesCallback)

更新原生 NTRIP 客户端的 NTRIP GGA 许可(仅限 OEM 应用程序)

mPpeEdgnssManager.updateNTRIPGGAConsent(ntripGgaConsent);

如有需要,配置原生 NTRIP 客户端(仅限 OEM 应用程序)

// enable Native NTRIP client
mPpeEdgnssManager.enablePPENtripStream(
      hostNameOrIp, mountPoint,
      username, password, port,
      requiresNmeaLocation, useSSL,
      enableRTKEngine);
      
// Disable Native NTRIP client
mPpeEdgnssManager.disablePPENtripStream();

注册为校正数据提供程序

mPpeEdgnssManager.registerAsCorrectionDataSource(
correctionDataType, streamingControlCallback);

取消作为校正数据提供程序的注册

mPpeEdgnssManager.deRegisterAsCorrectionDataSource();

发送精确位置更新请求

mPpeEdgnssManager.requestPreciseLocationUpdates(
            minIntervalMillis, eDgnssLocationReportCallback);

mPpeRtkManager.requestPreciseLocationUpdates(
      minIntervalMillis, rtkLocationReportCallback);

删除精确位置更新请求

mPpeEdgnssManager.removePreciseLocationUpdates(eDgnssLocationReportCallback)

mPpeRtkManager.removePreciseLocationUpdates(rtkLocationReportCallback)

收到 StreamingControlCallback 以开始校正数据注入时,从应用程序 NTRIP 客户端下载校正数据然后注入。

mPpeEdgnssManager.injectCorrectionData(correctionData);

接收注册的 ILocationReportCallback 中的精确位置报告。

原生
需要包括的内容

#include "qesdk_ndk.h"
#include "qesdk_Location_PP_eDGNSS.h"
#include "qesdk_Location_PP_RTK.h"

初始化

qesdk_handle_t qesdk_handle = qesdk_init(nativeLicense, len, event_callback_handler);
PP_RTKManager *rtkManager = new PP_RTKManager();
PP_eDGNSSManager *edgnssManager = new PP_eDGNSSManager();
int ret = rtkManager->init(nativeLicense, len, event_callback_handler);
ret = edgnssManager->init(nativeLicense, len, event_callback_handler);

设置回调

void event_callback_handler(uint32_t opcode, uint32_t subsys[]) {
      // Callback to handle QESDK events
      }
      
      
void location_capabilities_callback(uint64_t capabilitiesMask){
      // Check precise positioning Capabilities
      }
      
void edgnss_CorrectionStreamingControlCallback(pp_edgnss_CorrectionStreamingState streamingState){
      // Start or Stop correction data streaming as requested
      }
      
void edgnss_LocationReportCallback(pp_edgnss_Location location){
      // Handle eDGNSS location report callback
      }
      
void rtk_LocationReportCallback(pp_rtk_Location location){
      // Handle RTK location report callback
      }

获取位置功能

ret = edgnssManager->registerLocationCapabilitiesCallback(location_capabilities_callback);

更新原生 NTRIP 客户端的 NTRIP GGA 许可(仅限 OEM 应用程序)

ret = edgnssManager->updateNTRIPGGAConsent(ntrip_gga_consent);

如有需要,配置原生 NTRIP 客户端(仅限 OEM 应用程序)

// enable Native NTRIP client
ret = edgnssManager->enablePPENtripStream(hostNameIP, mountPoint, userName, pass, server_port, require_nmealocation, use_ssl, enable_rtkengine);
// Disable Native NTRIP client
ret = edgnssManager->disablePPENtripStream();

注册为校正数据提供程序

ret = edgnssManager->registerAsCorrectionDataSource((pp_edgnss_CorrectionDataType)correction_data_type, edgnss_CorrectionStreamingControlCallback);

取消作为校正数据提供程序的注册

ret = edgnssManager->deRegisterAsCorrectionDataSource();

发送精确位置更新请求

ret = edgnssManager->requestPreciseLocationUpdates(min_interval_ms, edgnss_LocationReportCallback); 

ret = rtkManager->requestPreciseLocationUpdates(min_interval_ms, rtk_LocationReportCallback);

删除精确位置更新请求

ret = edgnssManager->removePreciseLocationUpdates(edgnss_LocationReportCallback);

ret = rtkManager->removePreciseLocationUpdates(rtk_LocationReportCallback);

收到 StreamingControlCallback 以开始校正数据注入时,从应用程序 NTRIP 客户端下载校正数据然后注入。

ret = edgnssManager->injectCorrectionData(corr_data);

接收注册的 ILocationReportCallback 中的精确位置报告。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值