Files
zjk 873a1a9b09
build-test-deploy / ci (push) Failing after 32m37s
新增 pMotor 推进电机操作程序:经 pCanBridge(CAN1) 与电机控制器交互
- 协议模块(protocol/MotorCan):12 条 CAN ID、指令帧 0x18EF2010 编码、
  状态帧(转速/母线电压/温度)与支路一/二故障报警帧解码,故障位按协议
  逐位映射中文描述(docs/推进电机通信协议20260321.docx)
- 主程序(MOOS 应用):订阅 pCanBridge 透传 CAN_0x* 解码电机状态;
  500ms 周期下发指令帧(CAN_TX_0x18EF2010,m_sSrcAux=CAN1),
  可选 red_channel 冗余下发 0x18EF2011;复位位保持 reset_hold_sec
- 网页(18081):按协议指令帧字段独立下发(使能命令 Byte0 bit0 /
  复位命令 Byte0 bit1 / 期望转速 Byte2/3,无联动按钮);
  WebSocket 1Hz 推送转速/电压/温度/故障告警/链路统计
- 配置接入:missions/h100.moos 增加 pMotor 配置块(can_channel=CAN1)
- 测试:pmotorTest 92 项(指令帧字节级对照协议示例、解码/故障表)
- 部署:scripts/build-board.sh 增加 pMotor 产物拷贝 + pMotor.service;
  .gitignore 补 bin/pMotor、bin/pmotorTest
- 联调验证:MOOSDB+pCanBridge+假CANET 全链路,下行帧 01 00 E8 03
  与协议文档示例一致,复位位 3s 保持行为正确
2026-09-02 10:50:28 +08:00

184 lines
4.9 KiB
CMake
Raw Permalink 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.
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/DisProtocol.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
)
################################################pmotorTest(pMotor 单元测试)####
# pMotor 推进电机 CAN 协议编解码单元测试(独立可执行,无 gtest 依赖)
set(MOTOR_DIR ${CMAKE_SOURCE_DIR}/src/pMotor)
add_executable(pmotorTest
pmotor/pmotorTest.cpp
${MOTOR_DIR}/protocol/MotorCan.cpp
)
target_include_directories(pmotorTest PRIVATE
${MOTOR_DIR}
)
set_target_properties(pmotorTest PROPERTIES
CXX_STANDARD 11
CXX_STANDARD_REQUIRED ON
)
target_link_libraries(pmotorTest
m
pthread
)