Commit Graph

73 Commits

Author SHA1 Message Date
ypc 72e5e37c2d fix(liblog): 修复 stru_log_msg 链表指针类型不匹配 (6 warnings)
- typedef struct 添加 tag: struct stru_log_msg
- next 指针类型从 struct log_msg* 改为 struct stru_log_msg*
- 消除 6 处 incompatible-pointer-types 警告
2026-07-08 13:34:11 +08:00
ypc ac4a183a60 feat(test): 阶段1收尾 — 数据中心单元测试34项全通过
- test_datacenter.cpp: 34 条测试覆盖生命周期、5种信号注册/控制、
  out延迟回调、yk同步控制、ao SBO流程、param多区定值、
  信号查询、类型工具(19种)、事件队列、异步管理
- COMPLETION.md: 记录阶段0/1完成事项清单
- x86 测试: 34 pass, 0 fail
- ARM 交叉编译: 10/10 模块全通过
2026-07-07 17:57:32 +08:00
ypc 7dd7572f46 refactor: centralized header copy script replaces per-module cp
- 新增 release/copy_headers.sh:统一管理公共头文件复制
- 从所有模块 makefile 中移除独立的 @cp 行
- release/src/public/makefile:all 目标依赖 headers(自动调用脚本)
- release/inc/.gitignore:仅 myBase.h 纳入版本管理
- 新增模块时只需在 copy_headers.sh 末尾追加一行 copy_module

新增模块流程:
1. 创建 src/public/<module>/inc/<header.h>
2. 在 release/copy_headers.sh 中追加 copy_module "<module>" "<header.h>"
3. make 时自动复制到 release/inc/
2026-07-07 17:38:44 +08:00
ypc 9d12019961 chore: update build system and docs for new modules
- release/src/public/makefile: 添加 libxml/libcmd/libdatacenter 到 SUBDIRS
- SPEC.md: 补全 libdatacenter §11 完整功能规格(300+ 行)
- docs/README.md: 更新模块索引和依赖关系图
- 10/10 模块 x86 全量编译通过
2026-07-07 17:30:18 +08:00
ypc f56ede7316 feat(libdatacenter): complete data center module with 15-file split
- 纯 C 接口(60+ API),对齐 RTU 原工程 v1+v2 全部功能
- 5 种信号类型:out/in/yk/ao/param + SBO 控制流程
- module_id 回路阻断 + 脏标记延迟回调 + 值校验(19 种类型)
- 异步执行模型:yk/ao/param_exec_async + 超时 + 取消
- 内置 tinyxml2 解析 param.xml/self_param.xml
- 命令调试面板(libcmd CMD_REGISTER_C)
- O(1) XXH3_128bits 哈希查找(复用 libmy_xxhash)
- x86 编译通过,产物 libdatacenter.a
2026-07-07 17:30:10 +08:00
ypc dfb0a46146 feat(libcmd): add command processing framework with built-in linenoise
- 纯 C 接口:命令注册/查找/补全/帮助
- CMD_REGISTER / CMD_REGISTER_C 宏(__attribute__((constructor)) 自动注册)
- 内置 linenoise 行编辑(termios raw mode + 历史 + Tab 补全)
- x86 编译通过,产物 libcmd.a
2026-07-07 17:30:00 +08:00
ypc d9546b7c2a feat(libxml): add XML parsing library with C API wrapping tinyxml2
- 纯 C 接口(myXml.h)包装 tinyxml2 C++ 实现
- 14 个 API:文档加载/创建/释放、元素遍历、属性读写
- 不透明句柄 myXmlDoc_t / myXmlElem_t
- x86 编译通过,产物 libxml.a
2026-07-07 17:29:31 +08:00
ypc 44419ec729 docs: 创建完整 API 参考文档(9 个文档, 1005 行)
目录结构: docs/public/ 镜像 src/public/, 每个模块一个 API-xxx.md
文档内容: 模块概述+数据结构+接口详细说明+使用示例+依赖关系

覆盖模块:
- docs/README.md (总索引, 依赖关系图)
- myBase.h (公共宏/字节序/数据类型常量)
- liblist (11 API, 侵入式链表, 含完整代码示例)
- liblog (17 API, 异步日志, 消息池+批量+文件轮转)
- libfunc (65 函数, 7 大分类, 分组文档)
- libmd5 (4 API, RFC 1321, 流式计算示例)
- libtask (21 API, 定时器+事件+消息队列, 三个独立示例)
- libcJSON (开源库, 解析/生成 全流程示例)
- libmy_xxhash (开源库, XXH32/XXH64 快速哈希)

文档规范已存入 /memories/doc-spec.md
2026-07-07 15:16:17 +08:00
ypc aa97f72500 chore: 删除旧的 myTask.cpp(已替换为 myTask.c) 2026-07-07 15:01:20 +08:00
ypc 2a692cada5 [重构] libtask 完整重写 + 全项目注释中文化
libtask 变更(对比原工程无功能遗漏):
- 定时器: timerfd + epoll 精确毫秒级(替代简单轮询)
- 事件: TASK_EVENT_FLAG_AND/OR/CLEAR, TASK_EVENT_WAIT_FOREVER
- 消息队列: 长度前缀存储, send/send_timeout/recv/try_recv
- 引用计数: task_event/timer/msgq 安全析构
- 新增 task_sleep_ms 通用延时函数
- 回调类型修正为 void(*)(void*)

注释中文化:
- myBase.h/list.h/myMd5.h/myLog.h → 全部中文
- myFunc.c 节标题 → 中文
- myTask.h/c → 全部中文注释

风格修复:
- 一行一语句, {} 独占行, } 后空行, return 前空行
- 运算符前后空格, 逗号分号后空格
2026-07-07 15:01:13 +08:00
ypc f2a099e4b9 [阶段1-B2] libtask 自研实现 — 定时器/事件/消息队列三大子系统
基于 SPEC §8 完整实现 (21 API):
- Timer: create/start/stop/restart/destroy/is_active, 独立轮询线程10ms
- Event: create/destroy/send/recv(AND|OR)/clear/query, 位图+cond同步
- MsgQueue: create/destroy/send/send_timeout/recv/try_recv/count/space, 环形缓冲
- C接口 + extern "C", C++内部 pthread, test: Timer=3 Event=0x5 Msg=hi
2026-07-07 14:44:49 +08:00
ypc 31c0e70063 [阶段1-B1] libmd5 自研实现 + cJSON/xxhash 开源库导入
自研: libmd5(RFC 1321, 16x4轮, MD5(hello)向量验证OK)
开源(直接使用,不需要重写): libcJSON(cJSON解析) + libmy_xxhash(xxHash)
6/6 编译通过, 全功能测试OK
2026-07-07 14:38:04 +08:00
ypc c00ec58e13 docs: SPEC v1.2 — 区分自研/开源库 + 补全 5 个自研模块详细 API 分析
自研(需实现): libmd5/libtask/libdatacenter/libcmd/libcomm
开源(直接用): cJSON/xxhash/tinyxml2/mosquitto/mongoose/libmodbus/lib60870
新增: 定时器/事件/消息队列/命令框架/通讯抽象层/数据中心 完整API规范
2026-07-07 14:35:56 +08:00
ypc bd36855951 [规范] 新增运算符空格规范 + myBase.h 全面调整
规范变更(已写入 /memories/code-style.md):
- 运算符前后必须有空格 (a << 8, n >> 1, x | y, p + 1)
- 逗号后必须有空格 (func(a, b, c), (m)[0] = x, (m)[1] = y)
- 关键字后必须有空格 (while (0), if (, for ()
- 分号后有空格 (for (i = 0; i < n; i++))

myBase.h:
- 全部大小端宏添加运算符空格 ((uint8_t *)(p) 替代 (uint8_t*)(p))
- MY_LOG do{}while(0) 拆多行 + 加空格
- 类型存取宏加空格
- 注释英文化
2026-07-07 14:00:49 +08:00
ypc 38c8e4f6e4 [myFunc.c] 补全 56 个函数 @brief 注释 + 节标题英文化 + }后空行 + return前空行
- 每个公开函数添加 /** @brief */ doc 注释
- 7 个节标题从中文改为英文
- 1386 行,全量编译 0e0w
2026-07-07 13:53:13 +08:00
ypc 33252501c3 [注释规范] 头文件全部函数声明加详细注释 + myLog.c 全面注释 + 代码风格记忆更新
- myLog.h: 所有函数/macro 加 @brief/@param/@return 注释
- myFunc.h: 65 个函数全部加详细注释,结构体成员逐行注释
- myLog.c: 每个内部函数加功能注释、关键逻辑行间注释、}后空行、return前空行
- 代码风格规范已写入 /memories/code-style.md
2026-07-07 13:47:24 +08:00
ypc b5e4a361b4 [风格] 统一代码风格规范
- 一行只能有一条语句
- if/for/while 即使单条也必须换行 + { },花括号左右各独占一行
- 结构体 typedef 加 stru_ 前缀 (stru_log_msg/stru_time_sys/...)
- 枚举 typedef 加 enum_ 前缀 (enum_ipc_resp)
- 结构体声明左花括号独占一行
- list.h: 函数体花括号独占行, 多语句分行
- myLog.c: 全局类型改名 + 规范花括号
- myFunc.h: 类型前缀 + extern \'C\' {}独占行
- myFunc.c: 全部 if/for/while 规范化, 类型引用更新
2026-07-07 13:32:26 +08:00
ypc 4ee054e583 [阶段0] 从零重写全部模块 — odai-governed 自主实现
道:读懂功能需求(SPEC.md) → 独立编码 → 不复制原工程代码
术:构建系统 → myBase.h → liblist → liblog → libfunc,逐模块验证
法:每个函数源自需求理解 + 自主设计,编译→测试→提交闭环

交付:
- myBase.h: 颜色/文件名/大小端/类型枚举(LOCAL/S_STR/DATA_TYPE_*)
- liblist:  11个API, C/C++双兼容, 纯头文件
- liblog:   消息池预分配 + pthread_once + 批量消费 + 文件轮转(纯C, 0 malloc运行时)
- libfunc:  65个函数7大分类, 全部自主研发实现(校验/字符串/时间/文件/进程/环境/IPC)
- 构建:     4层递归makefile, x86/arm切换, gcc/g++混合编译
2026-07-07 13:19:18 +08:00
ypc a353f83393 docs: 添加模块功能规范 SPEC.md(基于 RTU 原工程 65+ 功能点分析) 2026-07-07 12:20:03 +08:00
ypc 8ea3c6b59d [PLAN] v2.0 放宽纯C限制:C接口强制+C++内部实现灵活;新增单模块开发流程、CHANGELOG、COMPLETION 质量保证机制 2026-07-07 11:11:39 +08:00
ypc e45cad3bef [PLAN] v1.1 补充全部 26 个模块架构:public(12) + protocol(6) + system(9),增加 P3 预留模块策略 2026-07-07 11:00:04 +08:00
ypc 12c5836a77 添加 AI 开发工作计划 v1.0 2026-07-07 10:41:50 +08:00
ypc e00e1e28f4 Initial commit: add .gitignore 2026-07-07 10:40:53 +08:00