GnssClock 结构体参考文档
#include <
gps.h
>
数据字段 |
|
size_t | 尺寸 |
GnssClockFlags | 标志 |
int16_t | leap_second |
int64_t | time_ns |
double | time_uncertainty_ns |
int64_t | full_bias_ns |
double | bias_ns |
double | bias_uncertainty_ns |
double | drift_nsps |
double | drift_uncertainty_nsps |
uint32_t | hw_clock_discontinuity_count |
详细说明
字段文档
double bias_ns |
double bias_uncertainty_ns |
double drift_nsps |
double drift_uncertainty_nsps |
int64_t full_bias_ns |
GPS 接收器内的硬件时钟(“time”字段)与自 1980 年 1 月 6 日 0000Z 以来的真实 GPS 时间之间的差值(以纳秒为单位)。
值的符号由以下等式定义:GPS 时间的本地估算值 = time_ns - (full_bias_ns + bias_ns)
如果接收器具有估算的 GPS 时间,则此值为必需值。如果计算的时间是针对非 GPS 星座,则必须应用该星座与 GPS 的时间偏移来填充此值。此值与偏差_ns 之和的误差估算值为偏差_不确定性_ns,调用方负责使用此不确定性(在求解 GPS 时间之前,此值可能非常大)。如果数据可用,“标志”必须包含 GNSS_CLOCK_HAS_FULL_BIAS。
uint32_t hw_clock_discontinuity_count |
如果硬件时钟存在任何不连续性,则此字段为必填字段。
“不连续”是指从一个时钟源切换到另一个时钟源的情况。单个自由运行晶体振荡器 (XO) 通常不应有任何不连续性,因此可以将其设置为 0 并保持不变。
不过,如果 time_ns 值(硬件时钟)是从多个来源派生的,并且不如典型 XO 那样平滑,或者以其他方式停止并重启,则每当出现不连续性时,此值都应递增。(例如,此值在设备启动时可能从 0 开始,并且每次时钟连续性发生变化时都会递增。如果此值达到满刻度(这种情况不太可能发生),则需要进行滚动(而非钳制),以便在后续断点事件期间此值继续发生变化。)
虽然此数字在 GnssClock 报告之间保持不变,但可以安全地假定 time_ns 值一直在运行,例如从单个高质量时钟派生(通常在连续 GNSS 信号采样期间使用,类似于 XO 或更高质量)。
预计,尤其是在可用的 GNSS 信号较少时,硬件时钟应尽可能保持连续性,因为这样可以避免在使用连续 GNSSData 报告中的随附测量值时,需要使用(浪费)GNSS 测量值来完全重新解算 GPS 时钟偏差和漂移。
int16_t leap_second |
int64_t time_ns |
double time_uncertainty_ns |
此结构体的文档是根据以下文件生成的:
- hardware/libhardware/include/hardware/ gps.h