task_plan_execute_2/include/distribution_monitor.hpp

87 lines
2.7 KiB
C++
Raw 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.

#ifndef TPS_DISTRIBUTION_MONITOR_HPP
#define TPS_DISTRIBUTION_MONITOR_HPP
#include "app.hpp"
#include <string>
#include <vector>
// ============================================================
// 方案分发与状态监控模块SU-07 方案分发单元 & SU-08 状态监控单元)
// ============================================================
/**
* 方案分发与状态监控处理器。
* 负责将任务方案分发至作战资产,以及接收遥测数据维护状态监控看板。
*/
class DistributionMonitor {
public:
DistributionMonitor() = default;
~DistributionMonitor() = default;
/**
* 将任务方案分发至指定的作战资产。
*
* @requirement(name="方案驱动分发与状态响应", id="SRS-F-06-001")
* 将任务方案分发至卫星、无人机、雷达等资产监听ACK信号
* 更新状态指示灯。
*
* @param planId 方案ID
* @param assetType 目标资产类型(如 "卫星" / "无人机" / "雷达"
* @return 分发日志记录
*/
DistributionLog distributePlan(const std::string& planId,
const std::string& assetType);
/**
* 处理接收到的 ACK 响应,更新分发状态。
*
* @param logId 分发日志ID
* @param ackCode 响应码("ACK" / "NACK"
*/
void receiveAck(uint64_t logId, const std::string& ackCode);
/**
* 实时接收资产遥测数据并解析。
*
* @requirement(name="驱动状态监控与异常信息展示", id="SRS-F-06-002")
* 实时接收资产遥测数据,解析后更新监控看板,
* 检测异常状态码时触发报警。
*
* @param rawData 原始遥测数据包
* @param source 数据来源标识
* @return 解析后的状态日志
*/
StatusLog receiveTelemetry(const std::string& rawData,
const std::string& source);
/**
* 检测状态码是否为异常,触发报警信号。
*
* @param statusCode 状态码
* @return true 表示检测到异常并已触发报警
*/
bool triggerAlarm(const std::string& statusCode);
/**
* 获取所有分发日志。
*/
std::vector<DistributionLog> getDistributionLogs() const;
/**
* 获取所有状态日志。
*/
std::vector<StatusLog> getStatusLogs() const;
private:
std::vector<DistributionLog> distLogs_; ///< 分发日志
std::vector<StatusLog> statusLogs_; ///< 状态日志
uint64_t nextLogId_{1}; ///< 自增日志ID
/**
* 模拟发送数据到目标资产。
*/
bool sendToAsset(const std::string& planId, const std::string& assetType);
};
#endif // TPS_DISTRIBUTION_MONITOR_HPP