{ "projectId": 75, "generationId": "codegen_dde59ff85c1e4e4797ab9a9c6483a125", "language": "C++", "status": "completed", "fileIds": [ 1076 ], "outputDir": "D:\\workspace\\agent\\DocumentGenerateAgent\\agents\\ai_agents\\project-files\\codegen-runs\\codegen_dde59ff85c1e4e4797ab9a9c6483a125", "relativeOutputDir": "codegen-runs/codegen_dde59ff85c1e4e4797ab9a9c6483a125", "generatedFiles": [ "CMakeLists.txt", "README.md", "events.ndjson", "include/app.hpp", "src/dau.cpp", "src/dsu.cpp", "src/main.cpp", "src/ppu.cpp", "tests/basic_test.cpp" ], "analysisSummary": "### **业务目标** \n构建一个高可靠、实时性强的机载系统网络通信环境,支持多协议总线(CAN/CANFD/Ethernet/RS422)的数据采集、协议转换、数据存储与回放、路由转发及故障注入功能。系统需满足军用标准要求,在Win11和Ubuntu 20.04双操作系统环境下稳定运行,服务于实验室测试与未来机载部署场景。\n\n---\n\n### **功能清单** \n1. **基础通用通讯功能**:接收并处理来自多种总线和信号类型的原始数据帧,完成ID过滤、波特率适配、错误处理及总线状态监控。 \n2. **协议兼容与互通信功能**:实现CAN2.0与CANFD之间的协议识别与转换,遵循ARINC825标准,确保跨协议设备间通信一致性。 \n3. **数据存储功能**:将实时总线数据流进行缓冲预处理后持久化写入高速存储介质,具备磁盘故障告警与路径切换能力。 \n4. **数据管理与回放功能**:支持基于时间戳或事件索引的存储数据查询检索,并按原始时序精准回放数据流。 \n\n---\n\n### **数据结构** \n- **原始数据帧**:字节数组(Byte Array),大小可变,范围0–64字节,来源于硬件平台,由DAU接收。 \n- **CAN报文结构体**:包含ID、数据域、时间戳等字段,格式为8–64字节Hex编码,用于总线收发。 \n- **控制指令与状态数据**:JSON字符串格式,通过TCP/IP传输,用于上位机与系统的双向交互。 \n- **配置信息表(SQLite)**:\n - `config_id` (int)\n - `config_name` (string)\n - `config_value` (string)\n - `create_time` (datetime) \n- **存储文件组织**:二进制文件存储原始报文,按时间戳+通道ID分类;索引信息存于SQLite数据库中供快速检索。\n\n---\n\n### **接口或命令** \n| 接口标识 | 类型 | 方向 | 数据类型 | 描述 |\n|--------|------|-------|----------|------|\n| IF-HW-001 | 物理信号接口 | 输入 | Byte Array / Integer | 接收硬件平台的原始数据帧和状态信号 |\n| IF-CTRL-001 | 网络套接字(TCP/IP) | 双向 | JSON String | 上位机发送控制指令,系统返回状态数据 |\n| IF-BUS-001 | CAN/CANFD总线接口 | 双向 | Struct (CAN Frame) | 与外部被测设备进行报文收发 |\n\n**关键内部接口**:\n- `RawDataIn`(输入):接收原始数据帧(Byte[])\n- `ValidDataOut`(输出):输出经过滤的有效数据(Struct)\n- `CanFrameIn`(输入):接收CAN/CANFD帧\n- `CompatibleFrameOut`(输出):输出兼容格式帧\n- `DataStreamIn`(输入):接收待存储的数据流\n- `StorageStatus`(输出):返回当前存储状态(Enum)\n- `QueryCmd`(输入):接收查询条件结构体\n- `ReplayData`(输出):输出用于回放的字节流\n\n---\n\n### **约束** \n1. 运行环境限定为 **Windows 11** 和 **Ubuntu 20.04** 双盘系统。 \n2. 必须符合 **GJB 2786A-2009**、**GJB 438C-2021** 等军用软件开发标准。 \n3. 存储使用本地NVMe SSD,不采用分布式存储方案。 \n4. 所有外部输入必须经过严格校验,防止注入攻击。 \n5. 软件模块必须支持独立测试与替换,耦合度低。 \n6. 关键操作需记录日志,支持审计追溯。 \n7. 支持宽温、抗振动、电磁兼容等机载环境适应性要求。\n\n---\n\n### **测试建议** \n1. **单元测试**:对每个软件单元(如DAU-001、PPU-001)编写测试用例,验证其输入输出行为是否符合设计说明。 \n2. **集成测试**:模拟完整数据流路径(采集→解析→存储/回放),检查各模块间接口协同是否正常。 \n3. **性能测试**:使用LoadRunner或自定义脚本施加高负载数据流,测量延迟、吞吐量、CPU/内存占用率;结合Wireshark分析网络报文。 \n4. **容错测试**:人为制造磁盘满、断网、错误帧等异常情况,验证系统告警、恢复机制是否有效。 \n5. **安全性测试**:尝试注入非法JSON指令或畸形CAN帧,确认系统具备输入验证和异常拦截能力。 \n6. **环境适应性测试**:在高低温、振动台、EMC实验室中运行系统,验证稳定性。 \n7. **回归测试**:每次版本变更后,执行全量自动化测试套件,确保已有功能不受影响。\n\n---\n\n### **需求可追踪性明细**\n\n| 需求标识 | 需求名称 | 需求描述 | 来源文档 | 实现/验证方法 |\n|--------|--------|---------|----------|----------------|\n| SRS-F-01-001 | 基础通用通讯功能 | 系统应能接收以太网、RS422、CAN总线、模拟量和离散量的基本通讯数据,并进行ID过滤、波特率适配、错误帧处理、睡眠/唤醒管理及总线负载监控。 | SRS-XXX-2026《XX机载系统网络通信环境软件需求规格说明书》 | 由 DAU-001 模块中的 `DAU_Process` 方法实现;通过注入多类型原始数据帧并观察ValidDataOut输出与ErrorLog日志进行验证。 |\n| SRS-F-01-002 | 协议兼容与互通信功能 | 系统应支持CAN2.0与CANFD设备间的互通信,依据ARINC825标准进行协议转换或适配,兼容标准帧与扩展帧格式;若格式不支持,则记录日志并丢弃。 | SRS-XXX-2026《XX机载系统网络通信环境软件需求规格说明书》 | 由 PPU-001 模块中的 `PPU_Convert` 和 `PPU_Check` 方法实现;通过输入不同协议类型的CAN帧并检测输出兼容性及日志记录情况进行验证。 |\n| SRS-F-02-001 | 数据存储功能 | 系统应能将总线数据持久化保存,接收实时数据流并进行缓冲预处理,按时间戳或事件索引写入存储介质;当发生磁盘故障时,应发出告警并尝试切换至备用存储路径。 | SRS-XXX-2026《XX机载系统网络通信环境软件需求规格说明书》 | 由 DSU-001 模块中的 `DSU_Write` 和 `DSU_CheckDisk` 方法实现;通过模拟大流量写入及磁盘拔出操作,验证数据完整性与故障切换机制。 |\n| SRS-F-02-002 | 数据管理与回放功能 | 系统应支持对已存储数据的查询、检索,并能够按照原始时序精确回放;若数据损坏,应跳过坏块并记录日志;回放过程需保持原始时间戳间隔。 | SRS-XXX-2026《XX机载系统网络通信环境软件需求规格说明书》 | 由 DSU-002 模块中的 `DSU_Query` 和 `DSU_Replay` 方法实现;通过界面触发回放请求,比对输出数据的时间戳序列与原始记录的一致性进行验证。 |", "eventLogFile": "D:\\workspace\\agent\\DocumentGenerateAgent\\agents\\ai_agents\\project-files\\codegen-runs\\codegen_dde59ff85c1e4e4797ab9a9c6483a125\\events.ndjson", "repoSettings": { "username": "root", "password": "pAssW0rd", "repoUrl": "http://47.108.255.216:3000/root/net_env_project.git", "branch": "main" }, "repoUrl": "http://47.108.255.216:3000/root/net_env_project.git", "branch": "main" }