Commit Graph
96 Commits
Author SHA1 Message Date
zjk 12f0dee86e 修复:跨线程数据竞争 + 协议字段越界 + UDP 发送失败吞错
- 并发安全:PowerManger 新增 m_stateMutex,保护 m_pmCurrentState /
  m_currentDisBreakerState / m_CcuColCmd / faultCode,并封装
  addFaultCode/clearFaultCodes/getFaultCodes 访问器
- SystemData 新增跨线程读访问器(getDynVoltageLink/getPowerBusStatus/
  getDcdcStatus/getDeviceCommonStatus 等)及配电故障码集合加锁访问
- upmsg buildMsg / httpserver pushSystemData / LowerCommManager 均改为
  持锁快照,避免 listen 线程与 comm 线程撕裂读写
- 修复析构顺序:先删 httpServer 再删其他对象,避免 use-after-free
- 修复 ccuState reserved2 越界读(协议预留 2 字节,结构体仅声明 1),
  修正 coutMsg 中 SOC 门限/功率限制字段打印
- udpComm::sendDisSysCmd 不再吞掉异常,返回 sendMsg 实际结果并记录 ERROR,
  新增 SendDisSysCmdFailsWithoutSocket 单测
- 新增 fullFeeder 全类型 UDP 集成仿真器与 fetch-data/clean-data 脚本,
  .gitignore 补充 SQLite 运行期文件与 fullFeeder 二进制
2026-08-21 11:36:19 +08:00
zjk 7819ea621f 基线:UDP 收包长度校验 + SQLite 表描述符重构 + 清理设计文档 2026-08-19 22:31:23 +08:00
zjk e455e2e9da 修复:编译告警(格式串不匹配、非 void 函数缺返回值、C++17 结构化绑定)
- 修复 LOG_F 格式串与参数类型/数量不匹配(udpComm.h、uPlan_taskStart.h、httpserver.cpp、PowerManagerFsm.cpp、WaterBasedReady.cpp、LowerCommManager.cpp)
- httpserver.cpp 中 mg_connection::fd 为 void*,打印时强转为 int
- uExternComm_setOpCondition.h / uPower_sysState.h 补齐返回值,消除 -Wreturn-type
- driver.cpp 移除结构化绑定(C++17),保持 -std=c++11
- PowerManagerFsm.hpp 为 class Lifting 补充 react(DevCmdExt) 声明,消除死代码编译错误
2026-08-19 21:52:29 +08:00
zjk f219b13a47 日志:日志文件路径支持 mission 配置 logpath
- 移除 main.cpp 中硬编码的 pPowerManger.log
- OnStartUp 读取 logpath 配置后调用 loguru::add_file
- 不配置则默认当前目录 pPowerManger.log,板上配置为 h100/data 目录
2026-08-19 16:54:31 +08:00
zjk f50c7bd612 数据库:下位机交互数据全量落库,SQLite 封装重构
- 新增 msg_log 原始帧表,RX/TX 双向记录原始字节与校验结果
- SQLite 封装改为描述符驱动的泛化 insert,删除 10 个手写 SQL
- 新增 ccuSetParmCmd/ccuSetParmFb 表,补齐 CCU 参数设定反馈落库
- 错误防崩溃:统一加锁、fail-open 降级、损坏自动重建、析构顺序修复
- WAL/迁移/预编译语句路径,数据库路径支持 mission 配置 dbpath
- 清理未使用的 shell.c/sqlite3ext.h/SQLite.zip
2026-08-19 16:28:41 +08:00
zjk 742f97c239 修复:pushMsgToQueue 缺少返回值导致 CCU 状态不更新
pushMsgToQueue 声明返回 bool,但成功路径 push 后仅 break,
函数末尾无 return,属未定义行为(返回值是垃圾寄存器值)。
导致 listenThreadFunc 中 if(pushMsgToQueue(Buff)) 判 false,
updatePoweSystemStates() 从不执行,CCU 状态消息入队后从不
处理(界面不显示)。

在函数末尾补 return true,并将各接收队列的 size() 检查
移入 lock_guard 内,消除与主线程 clear/pop 的 TOCTOU 竞争。
2026-08-19 14:31:15 +08:00
zjk da90f98fa9 修复:UDP 接收队列数据竞争导致 SIGSEGV 崩溃
pushMsgToQueue 在监听线程向各接收队列 push 时无锁,
而 clearMsgQueue/popMsgFormQueue 在 MOOS 主线程持锁 pop,
并发操作同一 deque 造成堆内存损坏,收到 140 CCU UDP 消息后崩溃。

为 6 处 push 补上与 clear/pop 对应的互斥锁
(m_mutexCcuState/CcuSetParm/DisHighVolBus/DisHighAVolBus/
 DisHighBVolBus/DisLowBus),修复数据竞争。
2026-08-19 14:06:03 +08:00
zjk f3dd9e2c5a 构建:修复 GTest 链接失败——显式指定 Linux GTest 配置,避免从 PATH 探测到 Windows Anaconda 的 .lib 2026-08-18 19:45:50 +08:00
zjk 8ef5de9944 修复 aarch64 编译:to_ulong()/size() 返回 unsigned long,赋给 Json::Value 产生歧义,改为显式转换
build-test-deploy / ci (push) Failing after 7m15s
2026-08-14 15:35:03 +08:00
zjk ea06a415a1 修复Web服务内存泄露、数据竞争与页面显示bug,适配x86编译
- 修复WebSocket推送无背压导致mongoose发送缓冲无限增长的内存泄露
- 为SystemData增加互斥锁,消除pushSystemData与主线程的数据竞争
- 修复网页状态文本判断反转、漏水告警阈值、FC状态、H2单位等显示bug
- 按协议修正电池紧急状态枚举解码(0x3A-0x3D为1-4级报警)
- 调整CMake适配系统安装的MOOS/IvP及jsoncpp,删除ARM专用build_debug.sh
2026-08-12 23:17:36 +08:00
zjk aa81980817 修复应急电池温度的问题 2026-02-26 13:42:15 +08:00
zjk 771b725634 增加开机闭合应急电断路器 2026-02-26 13:24:36 +08:00
zjk d5507b2e00 在故障模式下断开推进电机\舵机\启闭机构和敞水机构的电 2026-02-26 10:47:26 +08:00
zjk 987d8b3ce0 增加了info字段,增加了上电检测,调整了绝缘电阻上报逻辑 2026-02-09 14:48:58 +08:00
zjk e5193bd7f7 修复了程序在启动时偶尔崩溃的问题 2026-01-27 20:45:00 +08:00
zjk b5ca051831 为数据库插入增加保护 2026-01-19 21:52:26 +08:00
zjk 481171d9ea 增加了xc声纳的上电 2025-09-12 11:35:17 +08:00
zjk 6a78989fec 调试0723 2025-07-23 22:20:42 +08:00
zjk 5360521750 修复了艉舵忘记上电的问题 2025-07-12 15:57:21 +08:00
zjk 2ef5fd92ac 0712提交 2025-07-12 15:39:28 +08:00
zjk 4116397f3e 完善了次级配电的功能 2025-07-04 09:53:56 +08:00
zjk ba8cd0383a 0702调试 2025-07-02 16:20:36 +08:00
zjk 16d4c25c77 系修复了dcdc和冷却系统获取状态的bug,优化故障码变量 2025-06-30 18:49:16 +08:00
zjk 45fdc455e9 修改了上电操作 2025-06-24 10:45:37 +08:00
zjk 035205101b 0606 2025-06-06 13:28:05 +08:00
zjk 8fab3bdf06 完善了显示,修改了复合管控的通信协议 2025-06-03 20:05:08 +08:00
zjk 2be7ce203e 修复 2025-05-25 08:41:58 +08:00
zjk ee050bb58b 523调试 2025-05-23 15:38:23 +08:00
zjk 3a14a3cff8 修复了配电系统校验码的问题 2025-05-22 19:28:56 +08:00
zjk 3e38fca181 增加调试页面 2025-05-21 13:15:31 +08:00
zjk af8e7a1ed1 增加部分状态显示 2025-05-21 09:33:44 +08:00
zjk fea319d3bf 应急联调完成 2025-05-19 20:42:20 +08:00
zjk baa2e395fa 增加主页按钮 2025-05-19 02:36:10 +08:00
zjk 50a496e3e2 增加了日志功能,修复了bug 2025-05-19 02:14:11 +08:00
zjk 9e1819cd75 增加了log页面,但是没有后端 2025-05-19 01:48:25 +08:00
zjk d6e3d466b2 增加mooos信息 2025-05-19 01:02:33 +08:00
zjk f1a422e0c3 修正了状态页面的设备在线标志问题 2025-05-17 23:33:11 +08:00
zjk 2c6e0d2679 增加了操作时间内锁定按钮的功能 2025-05-17 23:27:36 +08:00
zjk d5df7d3bcc 修复了网页操作的功能,增加了时间操作显示 2025-05-17 23:21:45 +08:00
zjk ab803d8d7e 完成了网页控制断路器 2025-05-17 22:39:08 +08:00
zjk fb23554408 增加控制功能 2025-05-17 11:21:34 +08:00
zjk 8585f0dd51 解决了websock频繁连接的问题 2025-05-17 08:39:18 +08:00
zjk ac4301f99e 修复完成配电操作,且网页可用 2025-05-16 20:50:54 +08:00
zjk 70a077786f 完善了网页显示 2025-05-16 02:16:08 +08:00
zjk e0b3e986c7 增加了网页服务 2025-05-16 01:08:12 +08:00
zjk 47079f79df 增加了数据库功能,采用直接编译源码的方式,不使用动态库链接 2025-05-14 23:27:35 +08:00
zjk b7a624334e 已完成上位机通信代码结构优化 2025-05-14 21:01:57 +08:00
zjk 18f00d70d4 优化消息代码 2025-05-14 15:12:26 +08:00
zjk 476be20025 修改了次级配电协议,优化消息结构 2025-05-14 10:02:47 +08:00
zjk 3e33c95cb1 增加了配电app 2025-05-05 19:03:57 +08:00