FC协议(0827 docx): - 控制指令域:字节12,13/16,17由纵倾/横倾姿态数据2改为预留(编码恒0、解码忽略) - 状态反馈域:字节147,148由预留12改为剩余发电量(MWh),贯通JSON/网页显示 - PM→CCU链路:姿态字段4xuchar改为2xshort(数据1),结构体大小与线上布局不变 - 同步更新:CCU转发映射、SnapshotBuilder、pCCU网页、fuelcell网页、SQLite列描述、单测/模拟器 - 修正集成测试遗留断言(20B→24B、心跳d[19]→d[23])并增强预留字节校验 CCU地址可配置: - pPowerManger 支持 moos 配置项 ccuhost/ccuport(默认127.0.0.1:7000) - build-board.sh 增加 --ccu-host/--ccu-port 参数 文档:FC协议文档更新为0827版,清理过期协议docx
This commit is contained in:
@@ -52,8 +52,8 @@ static void testFrameLengths() {
|
||||
// 2. FC 控制指令编解码往返
|
||||
static void testFcControlRoundTrip() {
|
||||
FcControlValue v;
|
||||
v.mode = 2; v.cmd = 2; v.outputPower = 100; v.pitch1 = 35; v.pitch2 = -21;
|
||||
v.roll1 = -12; v.roll2 = 48;
|
||||
v.mode = 2; v.cmd = 2; v.outputPower = 100; v.pitch1 = 35;
|
||||
v.roll1 = -12;
|
||||
v.emergencyAllow = 0x03; v.depth = 150;
|
||||
v.supplyCmd = 1; v.reservedCmd5 = 5; v.reservedCmd6 = 6; v.heartbeat = 7;
|
||||
|
||||
@@ -64,11 +64,11 @@ static void testFcControlRoundTrip() {
|
||||
CHECK(frame[0] == 0x40 && frame[1] == 0x40);
|
||||
CHECK(frame[4] == 0x18 && frame[5] == 0x00); // 域字节数 0x0018 小端
|
||||
|
||||
// 字节位置校验(数据域起点=帧头6):姿态各 int16 小端
|
||||
// 字节位置校验(数据域起点=帧头6):姿态数据1 int16 小端,数据2字节预留恒0
|
||||
CHECK(frame[6 + 3] == 0x23 && frame[6 + 4] == 0x00); // 纵倾数据1 = 35
|
||||
CHECK(frame[6 + 5] == 0xEB && frame[6 + 6] == 0xFF); // 纵倾数据2 = -21 (0xFFEB)
|
||||
CHECK(frame[6 + 5] == 0x00 && frame[6 + 6] == 0x00); // 预留(0827协议,原纵倾数据2)
|
||||
CHECK(frame[6 + 7] == 0xF4 && frame[6 + 8] == 0xFF); // 横倾数据1 = -12 (0xFFF4)
|
||||
CHECK(frame[6 + 9] == 0x30 && frame[6 + 10] == 0x00); // 横倾数据2 = 48
|
||||
CHECK(frame[6 + 9] == 0x00 && frame[6 + 10] == 0x00); // 预留(0827协议,原横倾数据2)
|
||||
|
||||
FcControlValue out;
|
||||
CHECK(msg.decode(frame, static_cast<void*>(&out)));
|
||||
@@ -76,9 +76,7 @@ static void testFcControlRoundTrip() {
|
||||
CHECK(out.cmd == 2);
|
||||
CHECK(out.outputPower == 100);
|
||||
CHECK(out.pitch1 == 35);
|
||||
CHECK(out.pitch2 == -21);
|
||||
CHECK(out.roll1 == -12);
|
||||
CHECK(out.roll2 == 48);
|
||||
CHECK(out.emergencyAllow == 0x03);
|
||||
CHECK(out.depth == 150);
|
||||
CHECK(out.supplyCmd == 1);
|
||||
@@ -101,7 +99,7 @@ static void testFcStatusRoundTrip() {
|
||||
v.methanol_total_use = 100;
|
||||
v.cabin_temp1 = 25; v.h2_concentration1 = 500;
|
||||
v.heartbeat = 9; v.emergency_cmd = 0x01;
|
||||
v.reserved[0] = 0xAAAA; v.reserved[11] = 0xBBBB;
|
||||
v.reserved[0] = 0xAAAA; v.remaining_generation = 0xBBBB;
|
||||
|
||||
FcStatusMessage msg;
|
||||
std::vector<uint8_t> frame = msg.encode(v);
|
||||
@@ -125,7 +123,7 @@ static void testFcStatusRoundTrip() {
|
||||
CHECK(out.methanol_total_use == 100);
|
||||
CHECK(out.cabin_temp1 == 25 && out.h2_concentration1 == 500);
|
||||
CHECK(out.heartbeat == 9 && out.emergency_cmd == 0x01);
|
||||
CHECK(out.reserved[0] == 0xAAAA && out.reserved[11] == 0xBBBB);
|
||||
CHECK(out.reserved[0] == 0xAAAA && out.remaining_generation == 0xBBBB);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user