紧接着上一篇(Android GNSS 模块分析(三)JNI 层),继续来分析下 Android GNSS HAL 层的功能,本篇准备先介绍下 HIDL 层的封装。至于后面的 HAL 层的功能,由于使用的厂商 Hal 实现,这里先不描述。后续可能更新(或者可以按照原生的先看看)。
下面的整理基于 GNSS HIDL 1.0 的分析
IGnss.hal
Hidl 接口 | 功能描述 | 参数 | 返回值 |
---|---|---|---|
setCallback(IGnssCallback callback) | 给 IGnss 服务添加回调,回调对象是 IGnssCallback | IGnssCallback | bool |
start() | 启动定位服务,使用 IGnssCallbck 的 gnssLocationCb() 的回调方法通知上层。定位服务的设置从 setPositionMode() 接口传下来 | 无 | bool |
stop() | 停止定位服务,停止 gnssLocationCb() 回调方法提供定位服务 | 无 | bool |
cleanup() | 关闭 芯片GNSS 服务,此时芯片可以选择掉电以节省电力 | 无 | 无 |
injectTime(GnssUtcTime timeMs, int64_t timeReferenceMs, int32_t uncertaintyMs) | 注入当前时间 | GnssUtcTime、int64_t、int32_t | bool |
injectLocation(double latitudeDegrees, double longitudeDegrees, float accuracyMeters) | 从另一个 location provider 中注入 location 到 Hal 层 | double、double、float | bool |
deleteAidingData(GnssAidingData aidingDataFlags) | 指定要启动的下一个调用将不使用标志中定义的信息 | GnssAidingData | 无 |
setPositionMode(GnssPositionMode mode, GnssPositionRecurrence recurrence, uint32_t minIntervalMs, uint32_t preferredAccuracyMeters, uint32_t preferredTimeMs) | 设置gnspositionmode参数、其关联的递归值、修复之间的时间、请求的修复精度和首次修复的时间 | GnssPositionMode、GnssPositionRecurrence、uint32_t、uint32_t、uint32_t | bool |
getExtensionAGnssRil() | 这个方法返回 IAGnssRil 接口 | 无 | IAGnssRil |
getExtensionGnssGeofencing() | 这个方法返回 IGnssGeofencing 接口 | 无 | IGnssGeofencing |
getExtensionAGnss() | 这个方法返回 IAGnss 接口 | 无 | IAGnss |
getExtensionGnssNi() | 这个方法返回 IGnssNi 接口 | 无 | IGnssNi |
getExtensionGnssMeasurement() | 这个方法返回 IGnssMeasurement 接口 | 无 | IGnssMeasurement |
getExtensionGnssNavigationMessage() | 这个方法返回 IGnssNavigationMessage 接口 | 无 | IGnssNavigationMessage |
getExtensionXtra() | 这个方法返回 IGnssXtra 接口 | 无 | IGnssXtra |
getExtensionGnssConfiguration() | 这个方法返回 IGnssConfiguration 接口 | 无 | IGnssConfiguration |
getExtensionGnssDebug() | 这个方法返回 IGnssDebug 接口 | 无 | IGnssDebug |
getExtensionGnssBatching() | 这个方法返回 IGnssBatching 接口 | 无 | IGnssBatching |
IGnssCallback.hal
Hidl 接口 | 功能描述 | 参数 | 返回值 |
---|---|---|---|
gnssLocationCb(GnssLocation location) | 通过此回调接口通知上层 Location 位置信息。以 GnssLocation 结构对象返回。其中数据包括:纬度、经度、高度、速度、航向、预期的水平位置精度、预期的垂直位置精度、预期速度精度、预期轴承精度、时间戳 | GnssLocation | 无 |
gnssStatusCb(GnssStatusValue status) | 调用该函数以通知GNSS底层服务的状态。 | GnssStatusValue | 无 |
gnssSvStatusCb(GnssSvStatus svInfo) | 调用该函数以通知GNSS可见卫星状态 | GnssSvStatus | 无 |
gnssNmeaCb(GnssUtcTime timestamp, string nmea) | 调用该函数以通知上层NMEA语句 | GnssUtcTime、string | 无 |
gnssSetCapabilitesCb(bitfield<Capabilities> capabilities) | 回调函数通知上层GNSS引擎的功能。@param capabilities能力参数是Capability枚举的位字段 | bitfield<Capabilities> capabilities) | 无 |
gnssAcquireWakelockCb() | 用于获取GNSS wakelock的回调实用程序。这可以用来防止CPU在处理GNSS事件时挂起。 | 无 | 无 |
gnssReleaseWakelockCb() | 用于释放GNSS wakelock的回调实用程序。 | 无 | 无 |
gnssRequestTimeCb() | 请求NTP时间的回调 | 无 | 无 |
gnssSetSystemInfoCb(Gnss |