xtos_ signal_ validate_ timestamps
检查纳秒时间戳的严格递增性和相邻间隔,并写入统计结果。
本页目录
声明
#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_ns | const uint64_t * | 非 NULL 时间戳数组,至少 count 项;单位纳秒。 |
| count | size_t | 元素数,必须大于 0。 |
| sample_rate_hz | uint32_t | 采样率,单位 Hz,必须大于 0。 |
| tolerance_ns | uint64_t | 允许的间隔绝对误差,单位纳秒。 |
| result | struct xtos_signal_validation * | 非 NULL 输出结构,由调用方提供。 |
输出字段
| 字段 | 类型 | 含义 |
|---|---|---|
| expected_interval_ns | uint64_t | 表示按采样率计算的期望相邻间隔,单位纳秒。 |
| min_interval_ns | uint64_t | 表示实际正向相邻间隔的最小值,单位纳秒;没有正向间隔时保持 UINT64_MAX。 |
| max_interval_ns | uint64_t | 表示实际正向相邻间隔的最大值,单位纳秒;没有正向间隔时为 0。 |
| interval_anomalies | size_t | 表示超过 tolerance_ns 的正向间隔数量。 |
| timestamp_anomalies | size_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 的头文件和实现编写。