XTOS / OPEN SOURCE REAL-TIME SYSTEMOPEN SOURCE · VERSION 0.9.0 · BUILD FROM SOURCE
libxtos-signalxtos_signal_validate_timestamps

xtos_signal_validate_timestamps

检查纳秒时间戳的严格递增性和相邻间隔,并写入统计结果。

本页目录

声明

c
#include <xtos/signal.h>

int xtos_signal_validate_timestamps(const uint64_t *timestamps_ns,
                                    size_t count,
                                    uint32_t sample_rate_hz,
                                    uint64_t tolerance_ns,
                                    struct xtos_signal_validation *result);

参数

参数类型说明
timestamps_nsconst uint64_t *非 NULL 时间戳数组,至少 count 项;单位纳秒。
countsize_t元素数,必须大于 0。
sample_rate_hzuint32_t采样率,单位 Hz,必须大于 0。
tolerance_nsuint64_t允许的间隔绝对误差,单位纳秒。
resultstruct xtos_signal_validation *非 NULL 输出结构,由调用方提供。

输出字段

字段类型含义
expected_interval_nsuint64_t表示按采样率计算的期望相邻间隔,单位纳秒。
min_interval_nsuint64_t表示实际正向相邻间隔的最小值,单位纳秒;没有正向间隔时保持 UINT64_MAX。
max_interval_nsuint64_t表示实际正向相邻间隔的最大值,单位纳秒;没有正向间隔时为 0。
interval_anomaliessize_t表示超过 tolerance_ns 的正向间隔数量。
timestamp_anomaliessize_t表示重复或倒退的相邻时间戳数量。

返回值

返回 0 表示无检测异常,返回 1 表示检测到间隔或顺序异常,返回 -1 表示参数错误。

错误

errno条件
EINVAL数组、结果为空,count 为 0,或采样率为 0。

注意事项

  • 期望间隔按 llround(1000000000.0 / sample_rate_hz) 计算;未逐样本检查有限性,因为输入是 uint64。
  • 结果字段在参数有效时初始化;count=1 时 min_interval_ns 和 max_interval_ns 都为 0。count>1 且所有相邻时间戳都重复或倒退时,没有正向间隔可记录,因此 min_interval_ns 保持 UINT64_MAX、max_interval_ns 为 0。
  • 函数只读输入、不分配内存;result 由调用方拥有。

示例

源码

本文按 OpenXTOS 提交 dd313955ad57542bcd2af8827157d1bbd0cf5e83 的头文件和实现编写。