net_env_project/include/app.hpp

240 lines
8.8 KiB
C++
Raw Normal View History

2026-06-18 05:01:37 +00:00
#ifndef AVIONICS_NETWORK_ENV_APP_HPP
#define AVIONICS_NETWORK_ENV_APP_HPP
#include <cstdint>
#include <string>
#include <vector>
#include <ctime>
// ═══════════════════════════════════════════════════════════════
// 公共类型定义
// ═══════════════════════════════════════════════════════════════
/// @brief 总线类型枚举
enum class BusType {
Ethernet,
RS422,
CAN,
CANFD,
Analog,
Discrete
};
/// @brief 存储状态枚举
enum class StorageStatus {
Healthy,
Warning,
Full,
DiskFailure,
PathSwitched
};
/// @brief CAN 报文结构体864 字节 Hex 编码)
struct CanFrame {
uint32_t id; ///< CAN ID标准帧 11 位 / 扩展帧 29 位)
bool isExtended; ///< true=扩展帧, false=标准帧
bool isCanFd; ///< true=CANFD, false=CAN2.0
uint8_t dataLen; ///< 数据长度0-64
uint8_t data[64]; ///< 数据域
time_t timestamp; ///< 时间戳
};
/// @brief 原始数据帧064 字节)
struct RawDataFrame {
BusType busType;
uint8_t len;
uint8_t data[64];
time_t timestamp;
};
/// @brief 过滤后的有效数据(结构体形式输出)
struct ValidData {
uint32_t id;
uint8_t dataLen;
uint8_t data[64];
time_t timestamp;
BusType sourceBus;
};
/// @brief 兼容格式帧PPU 转换后的输出)
struct CompatibleFrame {
uint32_t id;
bool isExtended;
uint8_t dataLen;
uint8_t data[64];
time_t timestamp;
};
/// @brief 查询条件结构体
struct QueryCondition {
time_t startTime;
time_t endTime;
uint32_t channelId;
uint32_t maxResults;
};
// ═══════════════════════════════════════════════════════════════
// DAU — 数据采集单元Data Acquisition Unit
// 职责:接收多总线原始数据,完成 ID 过滤、波特率适配、错误帧
// 处理、睡眠/唤醒管理及总线负载监控。
// ═══════════════════════════════════════════════════════════════
namespace dau {
/**
* @brief ID
*
* BusType 线 ID
*
*
* @requirement(name="基础通用通讯功能", id="SRS-F-01-001")
* RS422CAN ID
* /线
*
* @param input
* @param output [out]
* @param errorLog [out]
* @return true
* @return false
*/
bool DAU_Process(const RawDataFrame& input, ValidData& output, std::string& errorLog);
/**
* @brief /
*
* @param sleep true false
*/
void DAU_SetSleep(bool sleep);
/**
* @brief 线 0-100
*
* @return uint32_t 线
*/
uint32_t DAU_GetBusLoad();
} // namespace dau
// ═══════════════════════════════════════════════════════════════
// PPU — 协议处理单元Protocol Processing Unit
// 职责:实现 CAN2.0 ↔ CANFD 协议识别与转换,遵循 ARINC825 标准,
// 兼容标准帧与扩展帧格式;不支持格式记录日志并丢弃。
// ═══════════════════════════════════════════════════════════════
namespace ppu {
/**
* @brief CAN CAN2.0 CANFD
*
* ARINC825
* false
*
* @requirement(name="协议兼容与互通信功能", id="SRS-F-01-002")
* CAN2.0 CANFD ARINC825
*
*
* @param input CAN/CANFD
* @param output [out]
* @param log [out]
* @return true
* @return false
*/
bool PPU_Convert(const CanFrame& input, CompatibleFrame& output, std::string& log);
/**
* @brief CAN
*
* ID
*
* @requirement(name="协议兼容与互通信功能", id="SRS-F-01-002")
*
*
* @param frame CAN
* @param reason [out]
* @return true
* @return false
*/
bool PPU_Check(const CanFrame& frame, std::string& reason);
} // namespace ppu
// ═══════════════════════════════════════════════════════════════
// DSU — 数据存储单元Data Storage Unit
// 职责:实时总线数据流缓冲预处理、持久化写入、磁盘故障告警与
// 路径切换、数据查询检索按时序回放。
// ═══════════════════════════════════════════════════════════════
namespace dsu {
/**
* @brief
*
* +ID分类
*
*
* @requirement(name="数据存储功能", id="SRS-F-02-001")
* 线
*
*
* @param dataStream
* @param channelId
* @param timestamp
* @return true
* @return false
*/
bool DSU_Write(const std::vector<uint8_t>& dataStream, uint32_t channelId, time_t timestamp);
/**
* @brief
*
*
*
*
* @requirement(name="数据存储功能", id="SRS-F-02-001")
*
*
* @return StorageStatus
*/
StorageStatus DSU_CheckDisk();
/**
* @brief
*
*
*
* @requirement(name="数据管理与回放功能", id="SRS-F-02-002")
*
*
*
* @param condition
* @param results [out]
* @param log [out]
* @return true
* @return false
*/
bool DSU_Query(const QueryCondition& condition,
std::vector<std::vector<uint8_t>>& results,
std::string& log);
/**
* @brief
*
*
*
* @requirement(name="数据管理与回放功能", id="SRS-F-02-002")
*
*
* @param condition
* @param replayOutput [out]
* @param log [out]
* @return true
* @return false
*/
bool DSU_Replay(const QueryCondition& condition,
std::vector<uint8_t>& replayOutput,
std::string& log);
} // namespace dsu
#endif // AVIONICS_NETWORK_ENV_APP_HPP