build-test-deploy / ci (push) Failing after 1h9m57s
协议层:
- 新增 protocol/CanBms.{h,cpp}:按 docs/BMS_协议字段定义.xlsx 解码
0x10010000(总电压/SOC/故障码/状态位)、0x10010005(最大电流限制/
总电流/最高单体电压)、0x10010006(总电压校验)。
缩放用除法保证与十进制字面量严格一致;总电流按 2 字节 s16 实现
(xlsx 标注 3 字节与其自身示例/实车帧矛盾,已在代码注释说明)。
- 删除 UDP 锂电池协议:protocol/BatProtocol.{h,cpp}、
comm/BatLinkManager.h(动力/仪表双链路、自检/接触器/功率指令)。
pCCU 主体:
- CCU 订阅 pCanBridge 发布的 CAN_0x* 二进制消息并解码 BMS 报文;
SystemData 双电池槽位改为单一 BmsStatusValue + CAN 帧计数;
PM 电池启停/功率指令改为告警忽略(BMS CAN 协议未定义控制报文)。
- 修复两个本地联调发现的阻断性 bug:
1) MOOS 通配订阅必须用三参数 Register("CAN_0x*","*",0),
单参数形式不做通配匹配;
2) 变量名前缀匹配偏移(compare 少比 1 字符 / sscanf +5 指向 'x'),
改为 rfind 前缀判断 + +6 偏移。
- PowerCoordinator/CoordFsm 剥离电池接触器/切换时序(依赖已删除的
UDP 指令),保留 FC 联动与协调策略占位(CoordSwitchingState 改为
通用的 CoordBusyState)。
网页:
- 动力/仪表锂电池两个标签页合并为"锂电池BMS(CAN)":总电压/总电流/
SOC/最大电流限制/最高单体电压/校验帧/故障码高亮/在线状态,
附报文来源说明;链路状态页改为 CAN 链路行(pCanBridge)。
配置与测试:
- pCCU.moos / missions/h100.moos 移除电池 UDP 配置;
- pccuTest:删除旧电池编解码用例,新增 testCanBmsDecode
(向量取自实车抓包:533.8V/20.1%/49/3.752V/-25.0A)103/103 通过;
- 集成测试改为纯 FC/PM 流程,本地实测 PASSED(含 Web 页面校验)。
163 lines
4.4 KiB
CMake
163 lines
4.4 KiB
CMake
cmake_minimum_required(VERSION 3.10)
|
||
project(H100PowerMangerTests)
|
||
|
||
# 设置 C++ 标准
|
||
set(CMAKE_CXX_STANDARD 11)
|
||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||
|
||
# 需要 GoogleTest(由 CI Dockerfile 或本地安装,提供 GTestConfig/库)
|
||
find_package(GTest REQUIRED)
|
||
|
||
################################################SQLiteTest(保留原有)#######
|
||
# 添加 SQLite 测试可执行文件(不使用第三方测试库)
|
||
add_executable(SQLiteTest
|
||
until/testSqlitdb.cpp
|
||
${CMAKE_SOURCE_DIR}/src/pPowerManger/sqlit3/SQLite.cpp
|
||
${CMAKE_SOURCE_DIR}/src/pPowerManger/sqlit3/sqlite3.c
|
||
${CMAKE_SOURCE_DIR}/src/pPowerManger/logc/loguru.cpp
|
||
)
|
||
|
||
# 包含目录
|
||
target_include_directories(SQLiteTest PRIVATE
|
||
${CMAKE_SOURCE_DIR}/src/pPowerManger
|
||
${CMAKE_SOURCE_DIR}/src/pPowerManger/sqlit3
|
||
)
|
||
|
||
# 链接库文件
|
||
target_link_libraries(SQLiteTest
|
||
pthread
|
||
dl
|
||
)
|
||
|
||
################################################PowerMangerTests(gtest)####
|
||
# 综合单元测试:Driver / SystemData / FaultMap / Upmsg / UdpComm /
|
||
# PmSysvariable / SQLite 读回。仅链接现有 src 源码,不改动生产代码。
|
||
set(PM_SRC_DIR ${CMAKE_SOURCE_DIR}/src/pPowerManger)
|
||
|
||
set(PM_TEST_SOURCES
|
||
until/DriverTest.cpp
|
||
until/SystemDataTest.cpp
|
||
until/FaultMapTest.cpp
|
||
until/UpmsgTest.cpp
|
||
until/UdpCommTest.cpp
|
||
until/PmSysvariableTest.cpp
|
||
until/SqliteTest.cpp
|
||
)
|
||
|
||
add_executable(PowerMangerTests ${PM_TEST_SOURCES}
|
||
${PM_SRC_DIR}/driver.cpp
|
||
${PM_SRC_DIR}/udpcomm/udpComm.cpp
|
||
${PM_SRC_DIR}/upmsg/upmsg_definitions.cpp
|
||
${PM_SRC_DIR}/sqlit3/SQLite.cpp
|
||
${PM_SRC_DIR}/sqlit3/sqlite3.c
|
||
${PM_SRC_DIR}/logc/loguru.cpp
|
||
)
|
||
|
||
target_include_directories(PowerMangerTests PRIVATE
|
||
${PM_SRC_DIR}
|
||
${PM_SRC_DIR}/sqlit3
|
||
${PM_SRC_DIR}/upmsg
|
||
${PM_SRC_DIR}/udpcomm
|
||
${PM_SRC_DIR}/logc
|
||
)
|
||
|
||
# gtest 需要 C++14+
|
||
set_target_properties(PowerMangerTests PROPERTIES
|
||
CXX_STANDARD 14
|
||
CXX_STANDARD_REQUIRED ON
|
||
)
|
||
|
||
# 兼容两种 gtest 安装方式:镜像安装(提供 GTest::gtest_main) 或 apt(仅 GTest_LIBRARIES)
|
||
if(TARGET GTest::gtest_main)
|
||
set(GTEST_LIBS GTest::gtest_main GTest::gtest)
|
||
else()
|
||
set(GTEST_LIBS ${GTest_LIBRARIES})
|
||
target_include_directories(PowerMangerTests PRIVATE ${GTest_INCLUDE_DIRS})
|
||
endif()
|
||
|
||
target_link_libraries(PowerMangerTests
|
||
${GTEST_LIBS}
|
||
${MOOS_LIBRARIES}
|
||
mbutil
|
||
jsoncpp
|
||
m
|
||
pthread
|
||
dl
|
||
)
|
||
|
||
################################################udpFeeder(集成测试用)#######
|
||
# 集成测试辅助:向 pPowerManger 发送真实 CCU 状态反馈 UDP 消息(字节级一致)
|
||
add_executable(udpFeeder
|
||
integration/udp_feeder.cpp
|
||
${PM_SRC_DIR}/udpcomm/udpComm.cpp
|
||
${PM_SRC_DIR}/logc/loguru.cpp
|
||
)
|
||
target_include_directories(udpFeeder PRIVATE
|
||
${PM_SRC_DIR}
|
||
${PM_SRC_DIR}/udpcomm
|
||
${PM_SRC_DIR}/logc
|
||
)
|
||
set_target_properties(udpFeeder PROPERTIES
|
||
CXX_STANDARD 11
|
||
CXX_STANDARD_REQUIRED ON
|
||
)
|
||
target_link_libraries(udpFeeder
|
||
${MOOS_LIBRARIES}
|
||
mbutil
|
||
m
|
||
pthread
|
||
dl
|
||
)
|
||
|
||
################################################fullFeeder(集成测试用)#######
|
||
# 全类型 UDP 仿真器:CCU 状态 + 4 路配电反馈(自包含,仅依赖协议结构体头文件)
|
||
add_executable(fullFeeder
|
||
integration/full_feeder.cpp
|
||
)
|
||
target_include_directories(fullFeeder PRIVATE
|
||
${PM_SRC_DIR}
|
||
${PM_SRC_DIR}/udpcomm
|
||
)
|
||
set_target_properties(fullFeeder PROPERTIES
|
||
CXX_STANDARD 11
|
||
CXX_STANDARD_REQUIRED ON
|
||
)
|
||
target_link_libraries(fullFeeder
|
||
pthread
|
||
)
|
||
|
||
################################################pccuTest(pCCU 单元测试)#####
|
||
# pCCU 协议编解码 / 校验和 / 链路分发 / 数据库 单元测试
|
||
set(CCU_DIR ${CMAKE_SOURCE_DIR}/src/pCCU)
|
||
|
||
add_executable(pccuTest
|
||
pccu/pccuTest.cpp
|
||
${CCU_DIR}/protocol/Frame.cpp
|
||
${CCU_DIR}/protocol/Message.cpp
|
||
${CCU_DIR}/protocol/MessageRegistry.cpp
|
||
${CCU_DIR}/protocol/FcProtocol.cpp
|
||
${CCU_DIR}/protocol/PmProtocol.cpp
|
||
${CCU_DIR}/protocol/CanBms.cpp
|
||
${CCU_DIR}/comm/UdpEndpoint.cpp
|
||
${CCU_DIR}/comm/LinkManager.cpp
|
||
${CCU_DIR}/store/DbStore.cpp
|
||
${PM_SRC_DIR}/sqlit3/sqlite3.c
|
||
${PM_SRC_DIR}/logc/loguru.cpp
|
||
)
|
||
target_include_directories(pccuTest PRIVATE
|
||
${CCU_DIR}
|
||
${PM_SRC_DIR}
|
||
${PM_SRC_DIR}/sqlit3
|
||
${PM_SRC_DIR}/logc
|
||
)
|
||
set_target_properties(pccuTest PROPERTIES
|
||
CXX_STANDARD 11
|
||
CXX_STANDARD_REQUIRED ON
|
||
)
|
||
target_link_libraries(pccuTest
|
||
${MOOS_LIBRARIES}
|
||
m
|
||
pthread
|
||
dl
|
||
)
|