Files
STM32F4-Base/test/host/sntp/stub/net_socket.h
T
super_agent_bot c2dd6f34c0
CI / 静态门禁 (pre-commit) (push) Failing after 5m33s
CI / 主机侧单测 (MSVC) (push) Successful in 45s
CI / 静态门禁 (pre-commit) (pull_request) Failing after 5m20s
CI / 主机侧单测 (MSVC) (pull_request) Successful in 31s
feat(sntp): 板端 SNTP 校时接入——coreSNTP 序列化器 + [sntp] 段 + 设置页(#73)
- vendored coreSNTP v2.0.0 序列化器(MIT,仅 serializer+LICENSE,零堆),
  48 字节报文编解码在库,节奏与准入判据在本方(RFC 4330 §10 调研口径)
- App/sync/time_sntp.c 挂 timeSyncTask 的 8888 事件循环,等待切片 ≤50 ms,
  不饿任务狗与 IWDG;懒建 UDP socket,代际变化/禁用/死错误码即关闭归还
- 防伪 = OriginTimestamp 逐位等于发出时 T1(含低 16 位随机小数位);
  mode/stratum/闰秒指示/KoD 按 RFC 拒收;DENY·RSTR 换服务器、RATE 只退避
- 主备轮换 + 失败指数退避(5 s 起、60 s 封顶)+ 首轮 1~5 分钟随机错峰;
  成功恢复 poll_min 周期(1~1440 分,出厂默认 60,默认不启用不发包)
- 钟面 = 本地时间:UTC+8 固定偏移落 sys_clock_set_unix(§1.1 时基裁定,
  第三个写入口,装置仍不存时区);|offset|<2 s 只记日志不步进,冷启动或
  更大偏差步进并回写 SD2506,留痕 [SNTP] step 与 syslog OPER
- 首个校验通过的同步置 SYS_EVT_TIMESYNC_READY(就绪位,消费方按需 NoClear)
- [sntp] 配置段(enable/server1/server2/poll_min)属主 sntp_cfg.c,
  注册在 net_cfg_load();UI 页 31「SNTP 设置」(密码叶):启用开关 +
  主/备服务器 octet 编辑 + 周期(分) + 保存,复用 net_cfg_save_request 链
- 测试与门禁:test/host/sntp 新套件(报文/防伪/KoD/退避周期/阶跃域/配置
  注册表)、net_cfg 与 time_sync 套件补 fake、黄金参考 66→74 张零漂移、
  字符集 228 字、Keil 0 错 0 警(RO +5,848 B 含字体)、覆盖率基线回填
- 文档:墙钟维护说明 §16、网络配置说明 [sntp] 节、配置文件设计说明变更记录、
  产品需求 FR-TIME-3 与 8.3/9.1.2 台账、UI 补齐规划/UI补齐 31 叶口径、
  登记簿销项并登记「SNTP 校时真机判据」等台架(PC 时间源 192.168.31.161/.13)
2026-11-04 15:28:05 +08:00

28 lines
1.3 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* 主机测试固件(test/host/sntp):net_socket.h 替身——UDP 客户端最小子集。
* 合同与真机 Drivers/BSP/NET/net_socket.h(PR #74 后)一致:
* net_sendto 返回 >0 = 实发字节数(须恰等 48),-1 = 错误(net_get_errno 可查)
* net_recvfrom_to >0 交付 / -2 片内无数据(不置 errno)/ -1 错误 / 0 防御
* 载荷/源地址/返回值由测试脚本注入(sntp_test.c 的 fake 实现)。 */
#ifndef SNTP_TEST_NET_SOCKET_H
#define SNTP_TEST_NET_SOCKET_H
#include "task.h"
#include "net_types.h"
/* 脚本注入 token(fake 队列 kind 用):数值即 fake net_recvfrom_to 的返回值 */
#define NET_RECV_DATA 1
#define NET_RECV_TIMEOUT (-2)
#define NET_RECV_CONNCLOSE 0
#define NET_RECV_ERR (-1)
int net_socket(int domain, int type);
int net_bind(int sockfd, const struct net_sockaddr *addr, int addrlen);
int net_sendto(int sockfd, const void *buf, int len, int flags,
const struct net_sockaddr *dest, int addrlen);
int net_recvfrom_to(int sockfd, void *buf, int len, uint32_t timeout_ms,
struct net_sockaddr *src, int *addrlen);
int net_close(int sockfd);
int net_get_errno(void);
uint32_t net_get_generation(void);
#endif /* SNTP_TEST_NET_SOCKET_H */